@snagset/server 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- var K,S,we,F,$e,Se,Ce,ae,V,q,Te,ie,le,ce,G={},Y=[],ct=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Q=Array.isArray;function j(e,t){for(var n in t)e[n]=t[n];return e}function de(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function P(e,t,n){var o,s,r,l={};for(r in t)r=="key"?o=t[r]:r=="ref"?s=t[r]:l[r]=t[r];if(arguments.length>2&&(l.children=arguments.length>3?K.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(r in e.defaultProps)l[r]===void 0&&(l[r]=e.defaultProps[r]);return J(e,l,o,s,null)}function J(e,t,n,o,s){var r={type:e,props:t,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:s??++we,__i:-1,__u:0};return s==null&&S.vnode!=null&&S.vnode(r),r}function L(e){return e.children}function X(e,t){this.props=e,this.context=t}function U(e,t){if(t==null)return e.__?U(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?U(e):null}function dt(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,o=[],s=[],r=j({},t);r.__v=t.__v+1,S.vnode&&S.vnode(r),ue(e.__P,r,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,o,n??U(t),!!(32&t.__u),s),r.__v=t.__v,r.__.__k[r.__i]=r,Ne(o,r,s),t.__e=t.__=null,r.__e!=n&&Ee(r)}}function Ee(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),Ee(e)}function Ae(e){(!e.__d&&(e.__d=!0)&&F.push(e)&&!Z.__r++||$e!=S.debounceRendering)&&(($e=S.debounceRendering)||Se)(Z)}function Z(){try{for(var e,t=1;F.length;)F.length>t&&F.sort(Ce),e=F.shift(),t=F.length,dt(e)}finally{F.length=Z.__r=0}}function Me(e,t,n,o,s,r,l,d,p,u,f){var v,i,g,w,m,_,$=o&&o.__k||Y,x=t.length;for(p=ut(n,t,$,p,x),v=0;v<x;v++)(g=n.__k[v])!=null&&(i=g.__i!=-1&&$[g.__i]||G,g.__i=v,_=ue(e,g,i,s,r,l,d,p,u,f),w=g.__e,g.ref&&i.ref!=g.ref&&(i.ref&&pe(i.ref,null,g),f.push(g.ref,g.__c||w,g)),m==null&&w!=null&&(m=w),4&g.__u?(p=De(g,p,e),i.__e&&(i.__e=null)):typeof g.type=="function"&&_!==void 0?p=_:w&&(p=w.nextSibling),g.__u&=-7);return n.__e=m,p}function ut(e,t,n,o,s){var r,l,d,p,u,f=n.length,v=f,i=0;for(e.__k=new Array(s),r=0;r<s;r++)(l=t[r])!=null&&typeof l!="boolean"&&typeof l!="function"?(typeof l=="string"||typeof l=="number"||typeof l=="bigint"||l.constructor==String?l=e.__k[r]=J(null,l,null,null,null):Q(l)?l=e.__k[r]=J(L,{children:l},null,null,null):l.constructor===void 0&&l.__b>0?l=e.__k[r]=J(l.type,l.props,l.key,l.ref?l.ref:null,l.__v):e.__k[r]=l,p=r+i,l.__=e,l.__b=e.__b+1,d=null,(u=l.__i=pt(l,n,p,v))!=-1&&(v--,(d=n[u])&&(d.__u|=2)),d==null||d.__v==null?(u==-1&&(s>f?i--:s<f&&i++),typeof l.type!="function"&&(l.__u|=4)):u!=p&&(u==p-1?i--:u==p+1?i++:(u>p?i--:i++,l.__u|=4))):e.__k[r]=null;if(v)for(r=0;r<f;r++)(d=n[r])!=null&&(2&d.__u)==0&&(d.__e==o&&(o=U(d)),Oe(d,d));return o}function De(e,t,n){var o,s;if(typeof e.type=="function"){for(o=e.__k,s=0;o&&s<o.length;s++)o[s]&&(o[s].__=e,t=De(o[s],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=U(e)),t=n.insertBefore(e.__e,t||null));do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function pt(e,t,n,o){var s,r,l,d=e.key,p=e.type,u=t[n],f=u!=null&&(2&u.__u)==0;if(u===null&&d==null||f&&d==u.key&&p==u.type)return n;if(o>(f?1:0)){for(s=n-1,r=n+1;s>=0||r<t.length;)if((u=t[l=s>=0?s--:r++])!=null&&(2&u.__u)==0&&d==u.key&&p==u.type)return l}return-1}function Re(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||ct.test(t)?n:n+"px"}function ee(e,t,n,o,s){var r,l;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(t in o)n&&t in n||Re(e.style,t,"");if(n)for(t in n)o&&n[t]==o[t]||Re(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")r=t!=(t=t.replace(Te,"$1")),l=t.toLowerCase(),t=l in e||t=="onFocusOut"||t=="onFocusIn"?l.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+r]=n,n?o?n[q]=o[q]:(n[q]=ie,e.addEventListener(t,r?ce:le,r)):e.removeEventListener(t,r?ce:le,r);else{if(s=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Pe(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[V]==null)t[V]=ie++;else if(t[V]<n[q])return;return n(S.event?S.event(t):t)}}}function ue(e,t,n,o,s,r,l,d,p,u){var f,v,i,g,w,m,_,$,x,A,M,y,C,D,N,B,k=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(p=!!(32&n.__u),r=[d=t.__e=n.__e]),(f=S.__b)&&f(t);e:if(typeof k=="function"){v=l.length;try{if(x=t.props,A=k.prototype&&k.prototype.render,M=(f=k.contextType)&&o[f.__c],y=f?M?M.props.value:f.__:o,n.__c?$=(i=t.__c=n.__c).__=i.__E:(A?t.__c=i=new k(x,y):(t.__c=i=new X(x,y),i.constructor=k,i.render=gt),M&&M.sub(i),i.state||(i.state={}),i.__n=o,g=i.__d=!0,i.__h=[],i._sb=[]),A&&i.__s==null&&(i.__s=i.state),A&&k.getDerivedStateFromProps!=null&&(i.__s==i.state&&(i.__s=j({},i.__s)),j(i.__s,k.getDerivedStateFromProps(x,i.__s))),w=i.props,m=i.state,i.__v=t,g)A&&k.getDerivedStateFromProps==null&&i.componentWillMount!=null&&i.componentWillMount(),A&&i.componentDidMount!=null&&i.__h.push(i.componentDidMount);else{if(A&&k.getDerivedStateFromProps==null&&x!==w&&i.componentWillReceiveProps!=null&&i.componentWillReceiveProps(x,y),t.__v==n.__v||!i.__e&&i.shouldComponentUpdate!=null&&i.shouldComponentUpdate(x,i.__s,y)===!1){t.__v!=n.__v&&(i.props=x,i.state=i.__s,i.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(R){R&&(R.__=t)}),Y.push.apply(i.__h,i._sb),i._sb=[],i.__h.length&&l.push(i),d=U(n);break e}i.componentWillUpdate!=null&&i.componentWillUpdate(x,i.__s,y),A&&i.componentDidUpdate!=null&&i.__h.push(function(){i.componentDidUpdate(w,m,_)})}if(i.context=y,i.props=x,i.__P=e,i.__e=!1,C=S.__r,D=0,A)i.state=i.__s,i.__d=!1,C&&C(t),f=i.render(i.props,i.state,i.context),Y.push.apply(i.__h,i._sb),i._sb=[];else do i.__d=!1,C&&C(t),f=i.render(i.props,i.state,i.context),i.state=i.__s;while(i.__d&&++D<25);i.state=i.__s,i.getChildContext!=null&&(o=j(j({},o),i.getChildContext())),A&&!g&&i.getSnapshotBeforeUpdate!=null&&(_=i.getSnapshotBeforeUpdate(w,m)),N=f!=null&&f.type===L&&f.key==null?Le(f.props.children):f,d=Me(e,Q(N)?N:[N],t,n,o,s,r,l,d,p,u),i.base=t.__e,t.__u&=-161,i.__h.length&&l.push(i),$&&(i.__E=i.__=null)}catch(R){if(l.length=v,t.__v=null,p||r!=null){if(R.then){for(t.__u|=p?160:128;d&&d.nodeType==8&&d.nextSibling;)d=d.nextSibling;r!=null&&(r[r.indexOf(d)]=null),t.__e=d}else if(r!=null)for(B=r.length;B--;)de(r[B])}else t.__e=n.__e;t.__k==null&&(t.__k=n.__k||[]),R.then||ze(t),S.__e(R,t,n)}}else r==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):d=t.__e=ht(n.__e,t,n,o,s,r,l,p,u);return(f=S.diffed)&&f(t),128&t.__u?void 0:d}function ze(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(ze))}function Ne(e,t,n){for(var o=0;o<n.length;o++)pe(n[o],n[++o],n[++o]);S.__c&&S.__c(t,e),e.some(function(s){try{e=s.__h,s.__h=[],e.some(function(r){r.call(s)})}catch(r){S.__e(r,s.__v)}})}function Le(e){return typeof e!="object"||e==null||e.__b>0?e:Q(e)?e.map(Le):e.constructor!==void 0?null:j({},e)}function ht(e,t,n,o,s,r,l,d,p){var u,f,v,i,g,w,m,_=n.props||G,$=t.props,x=t.type;if(x=="svg"?s="http://www.w3.org/2000/svg":x=="math"?s="http://www.w3.org/1998/Math/MathML":s||(s="http://www.w3.org/1999/xhtml"),r!=null){for(u=0;u<r.length;u++)if((g=r[u])&&"setAttribute"in g==!!x&&(x?g.localName==x:g.nodeType==3)){e=g,r[u]=null;break}}if(e==null){if(x==null)return document.createTextNode($);e=document.createElementNS(s,x,$.is&&$),d&&(S.__m&&S.__m(t,r),d=!1),r=null}if(x==null)_===$||d&&e.data==$||(e.data=$);else{if(r=x=="textarea"&&$.defaultValue!=null?null:r&&K.call(e.childNodes),!d&&r!=null)for(_={},u=0;u<e.attributes.length;u++)_[(g=e.attributes[u]).name]=g.value;for(u in _)g=_[u],u=="dangerouslySetInnerHTML"?v=g:u=="children"||u in $||u=="value"&&"defaultValue"in $||u=="checked"&&"defaultChecked"in $||ee(e,u,null,g,s);for(u in $)g=$[u],u=="children"?i=g:u=="dangerouslySetInnerHTML"?f=g:u=="value"?w=g:u=="checked"?m=g:d&&typeof g!="function"||_[u]===g||ee(e,u,g,_[u],s);if(f)d||v&&(f.__html==v.__html||f.__html==e.innerHTML)||(e.innerHTML=f.__html),t.__k=[];else if(v&&(e.innerHTML=""),Me(t.type=="template"?e.content:e,Q(i)?i:[i],t,n,o,x=="foreignObject"?"http://www.w3.org/1999/xhtml":s,r,l,r?r[0]:n.__k&&U(n,0),d,p),r!=null)for(u=r.length;u--;)de(r[u]);d&&x!="textarea"||(u="value",x=="progress"&&w==null?e.removeAttribute("value"):w!=null&&(w!==e[u]||x=="progress"&&!w||x=="option"&&w!=_[u])&&ee(e,u,w,_[u],s),u="checked",m!=null&&m!=e[u]&&ee(e,u,m,_[u],s))}return e}function pe(e,t,n){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&t==null||(e.__u=e(t))}else e.current=t}catch(s){S.__e(s,n)}}function Oe(e,t,n){var o,s;if(S.unmount&&S.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||pe(o,null,t)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(r){S.__e(r,t)}o.base=o.__P=o.__n=null}if(o=e.__k)for(s=0;s<o.length;s++)o[s]&&Oe(o[s],t,n||typeof e.type!="function");n||de(e.__e),e.__c=e.__=e.__e=void 0}function gt(e,t,n){return this.constructor(e,n)}function He(e,t,n){var o,s,r,l;t==document&&(t=document.documentElement),S.__&&S.__(e,t),s=(o=!1)?null:t.__k,r=[],l=[],ue(t,e=t.__k=P(L,null,[e]),s||G,G,t.namespaceURI,s?null:t.firstChild?K.call(t.childNodes):null,r,s?s.__e:t.firstChild,o,l),Ne(r,e,l),e.props.children=null}K=Y.slice,S={__e:function(e,t,n,o){for(var s,r,l;t=t.__;)if((s=t.__c)&&!s.__)try{if((r=s.constructor)&&r.getDerivedStateFromError!=null&&(s.setState(r.getDerivedStateFromError(e)),l=s.__d),s.componentDidCatch!=null&&(s.componentDidCatch(e,o||{}),l=s.__d),l)return s.__E=s}catch(d){e=d}throw e}},we=0,X.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=j({},this.state),typeof e=="function"&&(e=e(j({},n),this.props)),e&&j(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ae(this))},X.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ae(this))},X.prototype.render=L,F=[],Se=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ce=function(e,t){return e.__v.__b-t.__v.__b},Z.__r=0,ae=Math.random().toString(8),V="__d"+ae,q="__a"+ae,Te=/(PointerCapture)$|Capture$/i,ie=0,le=Pe(!1),ce=Pe(!0);var ft=0;function a(e,t,n,o,s,r){t||(t={});var l,d,p=t;if("ref"in p)for(d in p={},t)d=="ref"?l=t[d]:p[d]=t[d];var u={type:e,props:p,key:n,ref:l,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--ft,__i:-1,__u:0,__source:s,__self:r};if(typeof e=="function"&&(l=e.defaultProps))for(d in l)p[d]===void 0&&(p[d]=l[d]);return S.vnode&&S.vnode(u),u}const _t="Snagset",mt="Snagset",kt="Snag",bt="Snags",b={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"},xt=e=>`var(${b[e]})`,yt=e=>"snag_"+e,Ie={query:["snag_t","snag_off","snag_debug","snag_theme"],fragment:["snag_k"]},vt="data-snag-theme";var W,T,he,je,te=0,Fe=[],E=S,Ue=E.__b,Be=E.__r,qe=E.diffed,We=E.__c,Ke=E.unmount,Ve=E.__;function ge(e,t){E.__h&&E.__h(T,e,te||t),te=0;var n=T.__H||(T.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function O(e){return te=1,wt(Qe,e)}function wt(e,t,n){var o=ge(W++,2);if(o.t=e,!o.__c&&(o.__=[Qe(void 0,t),function(d){var p=o.__N?o.__N[0]:o.__[0],u=o.t(p,d);p!==u&&(o.__N=[u,o.__[1]],o.__c.setState({}))}],o.__c=T,!T.__f)){var s=function(d,p,u){if(!o.__c.__H)return!0;var f=!1,v=o.__c.props!==d;if(o.__c.__H.__.some(function(g){if(g.__N){f=!0;var w=g.__[0];g.__=g.__N,g.__N=void 0,w!==g.__[0]&&(v=!0)}}),r){var i=r.call(this,d,p,u);return f?i||v:i}return!f||v};T.__f=!0;var r=T.shouldComponentUpdate,l=T.componentWillUpdate;T.componentWillUpdate=function(d,p,u){if(this.__e){var f=r;r=void 0,s(d,p,u),r=f}l&&l.call(this,d,p,u)},T.shouldComponentUpdate=s}return o.__N||o.__}function H(e,t){var n=ge(W++,3);!E.__s&&Ye(n.__H,t)&&(n.__=e,n.u=t,T.__H.__h.push(n))}function I(e){return te=5,$t(function(){return{current:e}},[])}function $t(e,t){var n=ge(W++,7);return Ye(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function St(){for(var e;e=Fe.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(ne),t.__h.some(fe),t.__h=[]}catch(n){t.__h=[],E.__e(n,e.__v)}}}E.__b=function(e){T=null,Ue&&Ue(e)},E.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Ve&&Ve(e,t)},E.__r=function(e){Be&&Be(e),W=0;var t=(T=e.__c).__H;t&&(he===T?(t.__h=[],T.__h=[],t.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.some(ne),t.__h.some(fe),t.__h=[],W=0)),he=T},E.diffed=function(e){qe&&qe(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Fe.push(t)!==1&&je===E.requestAnimationFrame||((je=E.requestAnimationFrame)||Ct)(St)),t.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),he=T=null},E.__c=function(e,t){t.some(function(n){try{n.__h.some(ne),n.__h=n.__h.filter(function(o){return!o.__||fe(o)})}catch(o){t.some(function(s){s.__h&&(s.__h=[])}),t=[],E.__e(o,n.__v)}}),We&&We(e,t)},E.unmount=function(e){Ke&&Ke(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(o){try{ne(o)}catch(s){t=s}}),n.__H=void 0,t&&E.__e(t,n.__v))};var Ge=typeof requestAnimationFrame=="function";function Ct(e){var t,n=function(){clearTimeout(o),Ge&&cancelAnimationFrame(t),setTimeout(e)},o=setTimeout(n,35);Ge&&(t=requestAnimationFrame(n))}function ne(e){var t=T,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),T=t}function fe(e){var t=T;e.__c=e.__(),T=t}function Ye(e,t){return!e||e.length!==t.length||t.some(function(n,o){return n!==e[o]})}function Qe(e,t){return typeof t=="function"?t(e):t}const Tt={product:_t,set:mt,item:kt,items:bt};function Je(e){return(t,n)=>(e[t]??"").replace(/\{(\w+)\}/g,(o,s)=>{const r=n?.[s]??Tt[s];return r===void 0?o:String(r)})}const z=e=>new Intl.NumberFormat().format(e),Xe={"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}"},Et=Je(Xe),oe={open:{colour:"#4F6EF7"},progress:{colour:"#F59E0B"},review:{colour:"#8B5CF6"},resolved:{colour:"#10B981"}},_e=e=>oe[e]?.colour??"#8a8f98",Ze=e=>e==="progress"||e==="resolved"?"#16161a":"#fff",me=e=>e in oe?Et(`status.${e}`):e,c=Object.fromEntries(Object.keys(b).map(e=>[e,xt(e)])),At=Object.entries(oe).map(([e,t])=>` ${b[`status${e[0].toUpperCase()}${e.slice(1)}`]}:${t.colour};`).join(`
2
- `);`${c.font}${c.fg}${b.font}${b.accent}${b.bg}${b.fg}${b.muted}${b.border}${b.radius}${b.shadow}${b.z}${b.motion}${b.surface}${c.fg}${c.bg}${b.sunken}${c.fg}${c.bg}${b.hover}${c.fg}${c.bg}${b.onAccent}${b.focus}${c.accent}${c.fg}${b.disabled}${c.muted}${c.bg}${At}${b.anchorOrphan}${vt}${b.accent}${b.onAccent}${b.bg}${b.fg}${b.muted}${b.border}${b.shadow}${b.motion}${b.bg}${b.fg}${b.muted}${b.border}${b.accent}${b.onAccent}${b.surface}${b.sunken}${b.hover}${b.focus}${b.disabled}${b.shadow}${b.anchorOrphan}`;const Mt={dock:5},et=new WeakMap;function tt(e,t,n){let o=et.get(e);if(o||et.set(e,o=new Set),o.has(t))return;o.add(t);try{const l=new CSSStyleSheet;l.replaceSync(n),e.adoptedStyleSheets=[...e.adoptedStyleSheets,l];return}catch{}const r=(e.ownerDocument??document).createElement("style");r.setAttribute(`data-snag-${t}`,""),r.textContent=n,e.appendChild(r)}const Dt=` .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 Rt(e,t,n){const[o,s]=O(!1);return H(()=>{if(!o)return;const r=setTimeout(()=>s(!1),3e3);return()=>clearTimeout(r)},[o]),{armed:o,press(){if(o||t){s(!1),e();return}s(!0)}}}function Pt(e){const t=window.visualViewport;if(!t)return;let n=0,o=0;const s=()=>{n=0;const d=Math.max(0,Math.round(window.innerHeight-t.height-t.offsetTop));e.style.setProperty(b.kb,`${d}px`)},r=()=>{n||(n=requestAnimationFrame(s))},l=()=>{clearTimeout(o),o=window.setTimeout(s,300)};return s(),t.addEventListener("resize",r),t.addEventListener("scroll",r),window.addEventListener("orientationchange",r),e.addEventListener("focusout",l),()=>{n&&cancelAnimationFrame(n),clearTimeout(o),t.removeEventListener("resize",r),t.removeEventListener("scroll",r),window.removeEventListener("orientationchange",r),e.removeEventListener("focusout",l)}}const zt="noreferrer nofollow";function Nt(e){const t=e.trim();if(!t||/[-]/.test(t)||t.startsWith("//"))return null;const n=/^([a-z][a-z0-9+.-]*):/i.exec(t);return n?/^(https?|mailto)$/i.test(n[1])?t:null:t}const Lt=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("|")),Ot=4;function re(e,t=0,n=0){const o=[];let s=e,r=t;if(n>=Ot)return e?[e]:[];for(;;){const l=Lt.exec(s);if(!l)return s&&o.push(s),o;l.index>0&&o.push(s.slice(0,l.index));const d=`i${r++}`,p=l.groups,u=p.bold??p.boldU,f=p.em??p.emU;if(u!==void 0)o.push(P("strong",{key:d},re(u,r,n+1)));else if(f!==void 0)o.push(P("em",{key:d},re(f,r,n+1)));else if(p.code!==void 0)o.push(P("code",{key:d},p.code));else{const v=Nt(p.href??"");o.push(v?P("a",{key:d,href:v,target:"_blank",rel:zt},p.label??""):l[0])}s=s.slice(l.index+l[0].length)}}const ke=/^```[^\n]*$/,be=/^[-*]\s+(.*)$/,xe=/^\d{1,9}[.)]\s+(.*)$/;function nt(e){const t=e.split(`
3
- `),n=[];let o=0,s=0;for(;o<t.length;){const r=t[o];if(ke.test(r)){const u=[];for(o++;o<t.length&&!ke.test(t[o]);)u.push(t[o++]);o++,n.push(P("pre",{key:`b${s++}`},P("code",null,u.join(`
4
- `))));continue}const l=be.exec(r),d=xe.exec(r);if(l||d){const u=l?be:xe,f=[];for(;o<t.length;){const v=u.exec(t[o]);if(!v)break;f.push(P("li",{key:`l${f.length}`},re(v[1]))),o++}n.push(P(l?"ul":"ol",{key:`b${s++}`},f));continue}const p=[];for(;o<t.length;){const u=t[o];if(!u.trim()||ke.test(u)||be.test(u)||xe.test(u))break;p.push(u),o++}p.length?n.push(P("p",{key:`b${s++}`},re(p.join(`
5
- `)))):o++}return P("div",{class:"snag-md"},n)}const Ht={"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}"},It={"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.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?"},jt={"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","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.here":"you\u2019re here","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","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.edit":"Edit","action.delete":"Delete","action.save":"Save","action.sure":"Sure?","export.md":"Export Markdown","export.json":"JSON"},Ft={...Xe,...Ht,...It,...jt},h=Je(Ft),Ut=[/^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$/],Bt=[...Ie.query,...Ie.fragment];function qt(e,t=[]){return Bt.includes(e)||t.includes(e)?!0:Ut.some(n=>n.test(e))}const se=["open","progress","review","resolved"];function Wt(e,t){const n=e.includes(t)?e.filter(o=>o!==t):[...e,t];return n.length>=se.length?[]:n}function Kt(e,t,n){return t.statuses.length>0&&se.includes(e.status)&&!t.statuses.includes(e.status)||t.by&&e.createdBy.id!==t.by||t.page&&e.route!==t.page?!1:(t.read,!0)}function Vt(e,t,n,o){let s=e;t.pageOnly&&(s=s.filter(l=>l.route===n)),t.newOnly;const r=t.q?.trim().toLowerCase();return r&&(s=s.filter(l=>l.comments.some(d=>(d.body??"").toLowerCase().includes(r)||d.author.name.toLowerCase().includes(r))||l.createdBy.name.toLowerCase().includes(r))),s}function Gt(e,t){if(t==="page")return e;const n=(s,r)=>Date.parse(s.createdAt)-Date.parse(r.createdAt),o=[...e].sort(n);return t==="oldest"?o:o.reverse()}function Yt(e){const t=new Map;for(const n of e)t.set(n.status,(t.get(n.status)??0)+1);return{all:e.length,byStatus:t}}function Qt(e){return(e.read!=="all"?1:0)+(e.by?1:0)+(e.page?1:0)}const ye=Object.keys(oe);function ot({label:e,title:t,cls:n,onConfirm:o}){const{armed:s,press:r}=Rt(o);return a("button",{type:"button",class:`${n}${s?" snag-dk-armed":""}`,"aria-label":s?`${h("action.sure")} ${t}`:t,title:t,onClick:r,children:s?h("action.sure"):e})}function Jt({snag:e}){const t=e.context?.derived?.device;if(!t)return null;const n=h(`device.${t}`);return a("span",{class:"snag-dk-dev",title:n,"aria-label":n,role:"img",children:t==="Mobile"?a("svg",{width:"11",height:"14",viewBox:"0 0 11 14",fill:"none","aria-hidden":"true",children:[a("rect",{x:".75",y:".75",width:"9.5",height:"12.5",rx:"1.75",stroke:"currentColor","stroke-width":"1.5"}),a("path",{d:"M4.5 11h2",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})]}):a("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none","aria-hidden":"true",children:[a("rect",{x:".75",y:"1.75",width:"12.5",height:"8.5",rx:"1.75",stroke:"currentColor","stroke-width":"1.5"}),a("path",{d:"M5 12.75h4",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})]})})}function Xt({anchor:e}){const t=[];if(e.testid&&t.push(["testid",e.testid]),e.domid&&t.push(["id",e.domid]),e.css&&t.push(["css",e.css]),e.hostPath?.length&&t.push(["shadow host",e.hostPath.join(" >> ")]),e.role&&t.push(["role",e.role]),e.accessibleName&&t.push(["name",e.accessibleName]),e.text?.exact&&t.push(["text",e.text.exact]),e.path?.length&&t.push(["path",e.path.join(" > ")]),e.rect){const n=e.rect;t.push(["rect",`${Math.round(n.x)}, ${Math.round(n.y)} \u2014 ${Math.round(n.w)} x ${Math.round(n.h)}`])}return e.breakpoint&&t.push(["breakpoint",`${e.breakpoint} at capture \xB7 you are at ${typeof window>"u"?"?":window.innerWidth}px`]),a("details",{class:"snag-dk-anchor",children:[a("summary",{children:h("detail.details")}),a("dl",{children:t.map(([n,o])=>a("div",{children:[a("dt",{children:n}),a("dd",{children:o})]},n))})]})}function rt({body:e,onEdit:t,deleteLabel:n,onDelete:o}){const s=e??"",[r,l]=O(!1),[d,p]=O(s),u=I(null);return H(()=>{r&&u.current?.focus()},[r]),r?a("div",{class:"snag-dk-editbox",children:[a("textarea",{ref:u,class:"snag-text",rows:3,"aria-label":h("comment.edit"),value:d,onInput:f=>p(f.target.value),onKeyDown:f=>{f.key==="Enter"&&(f.metaKey||f.ctrlKey)&&(f.preventDefault(),d.trim()&&(t(d.trim()),l(!1))),f.key==="Escape"&&(f.stopPropagation(),p(s),l(!1))}}),a("div",{class:"snag-actions",children:[a("button",{type:"button",class:"snag-cancel",onClick:()=>{p(s),l(!1)},children:h("action.cancel")}),a("button",{type:"button",class:"snag-send",disabled:!d.trim()||d.trim()===s,onClick:()=>{t(d.trim()),l(!1)},children:h("action.save")})]})]}):a("div",{class:"snag-dk-acts",children:[a("button",{type:"button",class:"snag-dk-act",title:h("comment.edit"),"aria-label":h("comment.edit"),onClick:()=>{p(s),l(!0)},children:h("action.edit")}),a(ot,{label:h("action.delete"),title:n,cls:"snag-dk-act snag-dk-act--danger",onConfirm:o})]})}function Zt({snag:e}){const t=e.anchorReasons?.includes("hidden")??!1;return a("span",{class:"snag-dk-dim snag-dk-where",children:[t&&a(L,{children:[a("span",{class:"snag-dk-moved",children:h("badge.hidden")})," "]}),e.anchorState!=="anchored"&&a(L,{children:[a("span",{class:"snag-dk-moved",children:h(`badge.${e.anchorState}`)})," "]}),e.anchor.label]})}function en(e){const t=new Map,n=new Map;for(const o of e){const s=(t.get(o.route)??0)+1;t.set(o.route,s),n.set(o.id,s)}return n}function tn(e,t){const n=new Map;for(const o of e){const s=n.get(o.route);s?s.push(o):n.set(o.route,[o])}return[...n.entries()].map(([o,s])=>({route:o,here:o===t,snags:s})).sort((o,s)=>o.route.localeCompare(s.route))}function nn({snag:e,n:t,here:n,onOpen:o,onHover:s}){const r=d=>s(n?d:null),l=n?"":h("dock.goto",{route:e.route});return a("li",{children:a("button",{type:"button",class:"snag-dk-item",onClick:()=>o(e.id),onPointerEnter:()=>r(e.id),onPointerLeave:()=>r(null),onFocus:()=>r(e.id),onBlur:()=>r(null),children:[a("span",{class:`snag-dk-num${e.anchorState==="anchored"?"":` snag-dk-num--${e.anchorState}`}`,style:{background:_e(e.status),color:Ze(e.status)},children:t}),a("span",{class:"snag-dk-main",children:[a("span",{class:`snag-dk-body${e.status==="resolved"?" snag-dk-done":""}`,children:e.comments[0]?.body??h("dock.row.empty")}),a("span",{class:"snag-dk-sub",children:a(Zt,{snag:e})})]}),a(Jt,{snag:e}),e.comments.length>1&&a("span",{class:"snag-dk-replies",role:"img","aria-label":h("dock.replies",{n:z(e.comments.length-1)}),children:z(e.comments.length-1)}),!n&&a("span",{class:"snag-dk-goto",role:"img",title:l,"aria-label":l,children:"\u2197"})]})})}function on({rounds:e,activeRound:t,onRound:n}){return a("label",{class:"snag-dk-round",children:[a("span",{class:"snag-dk-chiplabel",children:h("round.label")}),a("select",{class:"snag-input",value:String(t??""),onChange:o=>n(Number(o.currentTarget.value)),children:e.map(o=>a("option",{value:String(o.number),children:[o.name,o.closed?` ${h("round.closed")}`:""]},o.number))})]})}const st=e=>c[`status${e[0].toUpperCase()}${e.slice(1)}`]??c.muted;function rn({round:e,filter:t,onFilter:n}){const[o,s]=O(null),r=Yt(e),l=i=>{const g={...t};for(const[w,m]of Object.entries(i))m===void 0?delete g[w]:g[w]=m;n(g)},d=t.statuses.length>0,p=Qt(t),u=[...new Map(e.map(i=>[i.createdBy.id,i.createdBy.name]))],f=[...new Set(e.map(i=>i.route))].sort(),v=[...r.byStatus.keys()].filter(i=>!se.includes(i));return a("div",{class:"snag-dk-filters",children:[a("input",{class:"snag-input snag-dk-search",type:"search","aria-label":h("search.aria"),placeholder:h("search.placeholder",{n:z(e.length)}),value:t.q??"",onInput:i=>l({q:i.currentTarget.value||void 0})}),a("div",{class:"snag-dk-chiphead",children:[a("span",{class:"snag-dk-chiplabel",children:h("filter.status")}),a("button",{type:"button",class:"snag-dk-link",onClick:()=>l({statuses:[]}),children:h(d?"filter.selectall":"filter.clear")})]}),a("div",{class:"snag-dk-chips",role:"group","aria-label":h("filter.status"),children:[se.map(i=>{const g=t.statuses.includes(i);return a("button",{type:"button",class:"snag-dk-chip","aria-pressed":g,style:`border-color:color-mix(in srgb, ${st(i)} 60%, transparent);background:color-mix(in srgb, ${st(i)} ${g?28:10}%, transparent)`,onClick:()=>l({statuses:Wt(t.statuses,i)}),children:[me(i)," ",a("span",{class:"snag-dk-dim",children:z(r.byStatus.get(i)??0)})]})}),v.map(i=>a("span",{class:"snag-dk-chip snag-dk-chip-stray",children:[i," ",a("span",{class:"snag-dk-dim",children:z(r.byStatus.get(i)??0)})]}))]}),a("div",{class:"snag-dk-menus",children:[o&&a("div",{class:"snag-dk-menubg","aria-hidden":"true",onClick:()=>s(null)}),a("span",{class:"snag-dk-menuwrap",children:[a("button",{type:"button",class:"snag-dk-link","aria-expanded":o==="sort",onClick:()=>s(o==="sort"?null:"sort"),children:h("sort.button")}),o==="sort"&&a("div",{class:"snag-dk-menu",role:"menu",children:[["newest","sort.newest"],["oldest","sort.oldest"],["page","sort.page"]].map(([i,g])=>a("button",{type:"button",role:"menuitemradio","aria-checked":t.sort===i,onClick:()=>{l({sort:i}),s(null)},children:[a("span",{class:"snag-dk-tick","aria-hidden":"true",children:t.sort===i?"\u2713":"\xA0"}),h(g)]}))})]}),a("span",{class:"snag-dk-menuwrap",children:[a("button",{type:"button",class:"snag-dk-link","aria-expanded":o==="filter",onClick:()=>s(o==="filter"?null:"filter"),children:p>0?h("filter.button.n",{n:z(p)}):h("filter.button")}),o==="filter"&&a("div",{class:"snag-dk-menu snag-dk-menu-form",children:[a("label",{children:[h("filter.by"),a("select",{value:t.by??"",onChange:i=>l({by:i.currentTarget.value||void 0}),children:[a("option",{value:"",children:h("filter.by.anyone")}),u.map(([i,g])=>a("option",{value:i,children:g}))]})]}),a("label",{children:[h("filter.pages"),a("select",{value:t.page??"",onChange:i=>l({page:i.currentTarget.value||void 0}),children:[a("option",{value:"",children:h("filter.pages.all")}),f.map(i=>a("option",{value:i,children:i}))]})]})]})]})]}),a("label",{class:"snag-dk-pageonly",children:[a("input",{type:"checkbox",checked:t.pageOnly,onChange:i=>l({pageOnly:i.currentTarget.checked})})," ",h("filter.pageonly")]})]})}function sn({snags:e,groups:t,route:n,onOpen:o,onHover:s,onExport:r,onClearAll:l,clusterFilter:d,onClusterClear:p,filter:u,onFilter:f,hiddenNote:v,onHiddenShow:i,rounds:g,activeRound:w,onRound:m}){const _=en(e),$=t.flatMap(y=>y.snags),x=u.statuses.length>0||!!u.by||!!u.page||!!u.q?.trim()||u.pageOnly||u.newOnly||u.read!=="all",A=I(null),M=I(null);return H(()=>{const y=A.current,C=M.current;!y||!C||(y.scrollTop+=C.getBoundingClientRect().top-y.getBoundingClientRect().top)},[n,t.length]),a(L,{children:[g&&g.length>1&&m&&a(on,{rounds:g,...w===void 0?{}:{activeRound:w},onRound:m}),e.length>0&&a(rn,{round:e,filter:u,onFilter:f}),e.length===0?a("div",{class:"snag-dk-empty",children:a("p",{children:h("dock.empty")})}):$.length===0&&x?a("div",{class:"snag-dk-empty",children:u.pageOnly&&e.some(y=>y.route!==n)?a("p",{children:h("dock.empty.page",{n:z(e.filter(y=>y.route!==n).length),m:z(new Set(e.filter(y=>y.route!==n).map(y=>y.route)).size)})}):a("p",{children:h("dock.empty.filter")})}):a(L,{children:[v&&a("p",{class:"snag-dk-notice",children:[h("dock.hiddenrow")," ",a("button",{type:"button",class:"snag-dk-link",onClick:()=>i(v),children:h("dock.hiddenrow.show")})]}),d&&a("p",{class:"snag-dk-notice",children:[h("dock.cluster",{n:d.length})," ",a("button",{type:"button",class:"snag-dk-link",onClick:()=>p?.(),children:h("dock.cluster.clear")})]}),e.every(y=>y.anchorState==="orphaned")&&a("p",{class:"snag-dk-notice",children:h("dock.empty.orphans")}),a("div",{class:"snag-dk-scroll",ref:A,children:t.map(y=>a("section",{class:"snag-dk-group",ref:y.here?M:null,children:[y.route!==""&&a("h3",{class:"snag-dk-grouphd",children:[a("span",{class:"snag-dk-route",children:y.route}),y.here&&a("span",{class:"snag-dk-here",children:h("dock.here")}),a("span",{class:"snag-dk-dim",children:z(y.snags.length)})]}),a("ul",{class:"snag-dk-list",children:y.snags.map(C=>a(nn,{snag:C,n:_.get(C.id),here:y.here,onOpen:o,onHover:s},C.id))})]},y.route))})]}),a("div",{class:"snag-dk-foot",children:[a("button",{type:"button",class:"snag-dk-link",onClick:()=>r("md"),children:h("export.md")}),a("button",{type:"button",class:"snag-dk-link",onClick:()=>r("json"),children:h("export.json")}),e.length>0&&a(ot,{label:h("dock.clear"),title:h("dock.clear.aria"),cls:"snag-dk-link snag-dk-clear",onConfirm:l})]})]})}const ve=new Map;function an(e){const t=[];try{for(const[n,o]of new URL(e).searchParams)qt(n)||t.push(o&&o!=="[redacted]"?`${n}=${o}`:n)}catch{return null}return t.length?`?${t.join("&")}`:null}function ln({att:e,load:t}){const n=I(null),[o,s]=O(!1),[r,l]=O(null);return H(()=>{let d=!1;return t(e.id).then(async p=>{if(!p||d)return;const u=await createImageBitmap(p);d?u.close():l(u)}),()=>{d=!0}},[e.id]),H(()=>{const d=n.current;if(!d||!r)return;const p=142,u=p/r.width;d.width=p,d.height=Math.min(96,Math.round(r.height*u)),d.getContext("2d").drawImage(r,0,0,r.width,Math.round(d.height/u),0,0,d.width,d.height)},[r]),r?a(L,{children:[a("button",{type:"button",class:"snag-dk-shot",onClick:()=>s(!0),"aria-label":h("shot.open"),children:a("canvas",{ref:n})}),o&&a(cn,{bmp:r,onClose:()=>s(!1)})]}):null}function cn({bmp:e,onClose:t}){const n=I(null);return H(()=>{const o=n.current;o&&(o.width=e.width,o.height=e.height,o.getContext("2d").drawImage(e,0,0))},[e]),a("div",{class:"snag-dk-lightbox",role:"dialog","aria-modal":"true","aria-label":h("shot.aria"),tabIndex:-1,ref:o=>o?.focus(),onKeyDown:o=>{o.key==="Escape"&&(o.stopPropagation(),t())},onClick:t,children:[a("canvas",{ref:n}),a("button",{type:"button",class:"snag-dk-link snag-dk-lightclose",onClick:t,children:h("shot.close")})]})}function dn({snag:e,loadShot:t}){const n=e.context;if(!n)return null;const o=e.attachments?.find(d=>d.kind==="screenshot"),s=n.derived,r=n.viewport,l=r?Math.round(r.dpr*100)/100:1;return a("div",{class:"snag-dk-cap",children:[o&&t&&a(ln,{att:o,load:t}),a("p",{class:"snag-dk-caplabel",children:h("capture.label")}),n.page?.route!==void 0&&a("p",{children:h("capture.page",{route:n.page.route})}),s&&r&&a(L,{children:[a("p",{children:s.os?h("capture.agent",{browser:s.browser,os:s.os}):h("capture.agent.noos",{browser:s.browser})}),a("p",{children:l===1?h("capture.device.at1x",{device:s.device,w:r.w,h:r.h}):h("capture.device",{device:s.device,w:r.w,h:r.h,dpr:l})})]}),n.capture?.reasons?.map(d=>a("p",{class:"snag-dk-capwhy",children:d},d)),n.capture?.blindSpots?.map(d=>a("p",{class:"snag-dk-capwhy",children:d},d)),(()=>{const d=an(n.url);return d?a("p",{class:"snag-dk-capwhy",children:[h("detail.filedat",{query:d})," ",a("a",{class:"snag-dk-openq",href:n.url,target:"_blank",rel:"noreferrer",children:h("detail.openquery")})]}):null})()]})}function un({snag:e}){const[t,n]=O(!1),o=e.context?.url??e.route,s=`${o}${o.includes("?")?"&":"?"}${yt("t")}=${e.key}`;return navigator.clipboard?a("button",{type:"button",class:"snag-dk-link",onClick:()=>void navigator.clipboard.writeText(s).then(()=>{n(!0),setTimeout(()=>n(!1),1500)},()=>{}),children:h(t?"permalink.copied":"permalink.copy")}):a("input",{class:"snag-input snag-dk-permalink",readOnly:!0,value:s,"aria-label":h("permalink.copy"),onFocus:r=>r.currentTarget.select()})}function pn({snags:e,round:t,fallbackCursor:n,openId:o,onOpen:s,onStatus:r,onReply:l,onEdit:d,onDeleteComment:p,onDeleteThread:u,onShowAnyway:f,onAnnounce:v,loadShot:i}){const g=e.findIndex(k=>k.id===o),w=g>=0,m=w?g:Math.min(n,e.length),_=w?e[g]:t.find(k=>k.id===o),$=o?ve.get(o)??"":"",[x,A]=O($),[M,y]=O($.length>0),C=I(null);H(()=>{M&&C.current?.focus()},[M]);const D=k=>{A(k),o&&(k?ve.set(o,k):ve.delete(o))};if(!_)return null;const N=_.comments[0],B=t.filter(k=>k.route===_.route).findIndex(k=>k.id===_.id)+1;return a("div",{class:"snag-dk-detail",children:[a("div",{class:"snag-dk-detailhd",children:[a("button",{type:"button",class:"snag-dk-link",onClick:()=>s(null),"aria-label":h("dock.back.aria"),children:[a("span",{"aria-hidden":"true",children:"\u2190"})," ",h("dock.back")]}),a("span",{class:"snag-dk-dim",children:h("dock.position",{n:w?z(m+1):"\u2013",total:z(e.length)})}),a("span",{class:"snag-dk-nav",children:[a("button",{type:"button",class:"snag-dk-link",disabled:m<=0,"aria-label":h("dock.prev"),onClick:()=>s(e[m-1].id),children:"\u2191"}),a("button",{type:"button",class:"snag-dk-link",disabled:w?m>=e.length-1:m>=e.length,"aria-label":h("dock.next"),onClick:()=>s(e[w?m+1:m].id),children:"\u2193"})]})]}),a("div",{class:"snag-dk-card",children:[a("div",{class:"snag-dk-meta",children:[a("span",{class:"snag-dk-num",style:{background:_e(_.status),color:Ze(_.status)},children:B}),a("strong",{children:N?.author.name??h("author.unknown")}),a("span",{class:"snag-dk-dim",children:_.key}),a(un,{snag:_})]}),a("div",{class:"snag-dk-cardbody",children:nt(N?.body??"")}),N&&a(rt,{body:N.body,onEdit:k=>d(N.id,k),deleteLabel:h("comment.delete"),onDelete:()=>u(_.id)})]}),a("label",{class:"snag-dk-field",children:[a("span",{class:"snag-dk-dim",children:h("field.status")}),a("select",{class:"snag-dk-select",style:{borderColor:_e(_.status)},value:_.status,onChange:k=>{const R=k.target.value;r(_.id,R),v?.(h("announce.status",{key:_.key,status:me(R)}))},children:ye.map(k=>a("option",{value:k,children:me(k)},k))})]}),a(dn,{snag:_,...i?{loadShot:i}:{}}),_.anchorReasons?.includes("hidden")&&a("p",{class:"snag-dk-moved-note",children:[h("detail.hidden")," ",a("button",{type:"button",class:"snag-dk-link",onClick:()=>f?.(_),children:h("detail.hidden.show")})]}),_.anchorState!=="anchored"&&a("p",{class:"snag-dk-moved-note",children:[h(`detail.${_.anchorState}`,{label:_.anchor.label}),_.anchorReasons?.includes("budget-exceeded")&&` ${h("detail.unavailable")}`]}),_.anchorState!=="anchored"&&a(Xt,{anchor:_.anchor}),_.comments.length>1&&a("ul",{class:"snag-dk-replies-list",children:_.comments.slice(1).map(k=>a("li",{children:[a("strong",{children:k.author.name}),nt(k.body??""),a(rt,{body:k.body,onEdit:R=>d(k.id,R),deleteLabel:h("reply.delete"),onDelete:()=>p(k.id)})]},k.id))}),M?a("div",{class:"snag-dk-replybox",children:[a("textarea",{ref:C,class:"snag-text",rows:2,enterkeyhint:"enter","aria-label":h("reply.aria"),placeholder:h("reply.placeholder"),value:x,onInput:k=>D(k.target.value),onKeyDown:k=>{k.key==="Enter"&&(k.metaKey||k.ctrlKey)&&(k.preventDefault(),x.trim()&&(l(_.id,x.trim()),D(""),y(!1))),k.key==="Escape"&&(k.stopPropagation(),k.target.blur())}}),a("div",{class:"snag-actions",children:[a("button",{type:"button",class:"snag-cancel",onClick:()=>{D(""),y(!1)},children:h("action.cancel")}),a("button",{type:"button",class:"snag-send",disabled:!x.trim(),onClick:()=>{l(_.id,x.trim()),D(""),y(!1)},children:h("reply.send")})]})]}):a("button",{type:"button",class:"snag-dk-addreply",onClick:()=>y(!0),children:h("reply.add")})]})}function hn(e){const t=e.openId?e.snags.find(m=>m.id===e.openId):null,n=I(null),o=e.clusterFilter?e.snags.filter(m=>e.clusterFilter.includes(m.id)):e.snags,s=Vt(o.filter(m=>Kt(m,e.filter)),e.filter,e.route),r=Gt(s,e.filter.sort),l=e.filter.sort==="page"?tn(r,e.route):[{route:"",here:!1,snags:r}],d=l.flatMap(m=>m.snags),p=I(0),u=d.findIndex(m=>m.id===e.openId);u>=0&&(p.current=u);const f=I(null),[v,i]=O(null);e.openId?(f.current={id:e.openId,absent:u===-1},v&&i(null)):f.current?.absent&&v!==f.current.id&&(i(f.current.id),f.current=null),H(()=>{n.current?.focus()},[e.openId]),H(()=>{if(!(window.matchMedia?.("(pointer: coarse)").matches??!1))return;const m=n.current;return m?Pt(m):void 0},[]);const g=I({snag:t,onStatus:e.onStatus});g.current={snag:t,onStatus:e.onStatus},H(()=>{const m=_=>{const{snag:$,onStatus:x}=g.current;if(!$||_.metaKey||_.ctrlKey||_.altKey||_.composedPath().some(y=>{const C=y;if(!C?.tagName)return!1;const D=C.tagName.toLowerCase();return D==="textarea"||D==="select"?!0:D==="input"?!/^(button|submit|checkbox|radio)$/i.test(C.type):C.isContentEditable?!0:/^(textbox|searchbox|combobox)$/.test(C.getAttribute?.("role")??"")}))return;const M=Number(_.key);if(M>=1&&M<=ye.length){_.preventDefault(),x($.id,ye[M-1]);return}(_.key==="r"||_.key==="R")&&(_.preventDefault(),x($.id,$.status==="resolved"?"open":"resolved"))};return document.addEventListener("keydown",m),()=>document.removeEventListener("keydown",m)},[]);const w=window.matchMedia?.("(pointer: coarse)").matches??!1;return a("aside",{ref:n,class:"snag-dk",role:"complementary","aria-label":h("dock.aria"),tabIndex:-1,onKeyDown:m=>{m.key==="Escape"&&(m.stopPropagation(),e.openId?e.onOpen(null):e.onClose())},children:[w&&a("div",{class:"snag-dk-scrim","aria-hidden":"true",onClick:e.onClose}),w&&a("div",{class:"snag-dk-grab","aria-hidden":"true",onPointerDown:m=>{const _=m.clientY,$=m.currentTarget;try{$.setPointerCapture(m.pointerId)}catch{}$.onpointermove=x=>{x.clientY-_>56&&($.onpointermove=null,e.onClose())},$.onpointerup=()=>$.onpointermove=null},children:a("span",{})}),a("header",{class:"snag-dk-hd",children:[a("strong",{children:h(t?"dock.title.detail":"dock.title.list")}),a("button",{type:"button",class:"snag-dk-link",onClick:e.onClose,"aria-label":h("dock.close"),children:"\u2715"})]}),t?a(pn,{...e,snags:d,round:e.snags,fallbackCursor:p.current},t.id):a(sn,{...e,groups:l,hiddenNote:v,onHiddenShow:m=>{i(null),e.onOpen(m)}})]})}const at=360,gn=` .snag-dk{position:fixed;inset-block:0;inset-inline-end:0;width:${at}px;max-width:100vw;z-index:${Mt.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-round{display:flex;align-items:center;gap:8px;padding:8px 12px;border-block-end:1px solid ${c.border}}.snag-dk-round select{flex:1;min-width:0}.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}.snag-dk-chiplabel{font:600 10px/1 ${c.font};letter-spacing:.06em;text-transform:uppercase;color:${c.muted}}.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-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-menu-form{padding:8px;gap:6px;min-width:180px}.snag-dk-menu-form label{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-permalink{font-size:11px;padding:2px 6px;max-width:110px}.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(${b.tbH},68px),var(${b.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-here{color:${c.accent};font-weight:600;flex:0 0 auto}.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-num{flex:0 0 22px;height:22px;border-radius:50% 50% 50% 2px;color:${c.onAccent};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 ${c.anchorOrphan};box-shadow:inset 0 0 0 2px ${c.onAccent}}.snag-dk-num--approximate{border:2px dashed ${c.onAccent}}.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;opacity:0;transition:opacity ${c.motion}}.snag-dk-card:hover .snag-dk-acts,.snag-dk-replies-list li:hover .snag-dk-acts,.snag-dk-acts:focus-within{opacity:1}.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-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-armed{color:${c.anchorOrphan};font-weight:600}.snag-dk-clear{margin-inline-start:auto}.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}`;function fn(e,t,n){const o=e.ownerDocument??document;tt(e,"form",Dt),tt(e,"dock",gn);const s=o.createElement("div");(n??e).appendChild(s);const r=o.defaultView?.matchMedia?.("(pointer: coarse)").matches??!1,l=p=>{const u=e.host;p&&!r?u.style.setProperty(b.dockW,`${at}px`):u.style.removeProperty(b.dockW)};l(!0);const d=p=>{He(a(hn,{...p}),s)};return d(t),{update:d,close(){l(!1),He(null,s),s.remove()}}}const it=24;function lt(e,t){const n=e.innerHeight,o=t.querySelector(".snag-dk");if(!o)return{top:0,bottom:n};const s=o.getBoundingClientRect();return s.height>=n-1?{top:0,bottom:n}:{top:0,bottom:Math.max(0,s.top)}}function _n(e,t,n){const o=n.anchor.rect;if(!o)return;const s=n.anchor.offset??{fy:.5},r=o.y+o.h*s.fy,l=lt(e,t),d=r-e.scrollY;if(d>=l.top+it&&d<=l.bottom-it)return;const p=e.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1;e.scrollTo({top:Math.max(0,r-(l.top+l.bottom)/2),behavior:p?"auto":"smooth"})}export{fn as openDock,_n as scrollToSnag,lt as visibleStrip};
1
+ var W,S,$e,F,Ce,Se,Ee,ie,V,q,Te,le,de,ce,G={},Y=[],pn=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Q=Array.isArray;function U(e,n){for(var t in n)e[t]=n[t];return e}function ue(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function L(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?W.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 J(e,i,o,s,null)}function J(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??++$e,__i:-1,__u:0};return s==null&&S.vnode!=null&&S.vnode(a),a}function N(e){return e.children}function X(e,n){this.props=e,this.context=n}function B(e,n){if(n==null)return e.__?B(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"?B(e):null}function gn(e){if(e.__P&&e.__d){var n=e.__v,t=n.__e,o=[],s=[],a=U({},n);a.__v=n.__v+1,S.vnode&&S.vnode(a),pe(e.__P,a,n,e.__n,e.__P.namespaceURI,32&n.__u?[t]:null,o,t??B(n),!!(32&n.__u),s),a.__v=n.__v,a.__.__k[a.__i]=a,Le(o,a,s),n.__e=n.__=null,a.__e!=t&&Me(a)}}function Me(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}),Me(e)}function De(e){(!e.__d&&(e.__d=!0)&&F.push(e)&&!Z.__r++||Ce!=S.debounceRendering)&&((Ce=S.debounceRendering)||Se)(Z)}function Z(){try{for(var e,n=1;F.length;)F.length>n&&F.sort(Ee),e=F.shift(),n=F.length,gn(e)}finally{F.length=Z.__r=0}}function Ae(e,n,t,o,s,a,i,u,g,l,_){var y,c,h,$,b,m,w=o&&o.__k||Y,v=n.length;for(g=hn(t,n,w,g,v),y=0;y<v;y++)(h=t.__k[y])!=null&&(c=h.__i!=-1&&w[h.__i]||G,h.__i=y,m=pe(e,h,c,s,a,i,u,g,l,_),$=h.__e,h.ref&&c.ref!=h.ref&&(c.ref&&ge(c.ref,null,h),_.push(h.ref,h.__c||$,h)),b==null&&$!=null&&(b=$),4&h.__u?(g=Pe(h,g,e),c.__e&&(c.__e=null)):typeof h.type=="function"&&m!==void 0?g=m:$&&(g=$.nextSibling),h.__u&=-7);return t.__e=b,g}function hn(e,n,t,o,s){var a,i,u,g,l,_=t.length,y=_,c=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]=J(null,i,null,null,null):Q(i)?i=e.__k[a]=J(N,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[a]=J(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[a]=i,g=a+c,i.__=e,i.__b=e.__b+1,u=null,(l=i.__i=fn(i,t,g,y))!=-1&&(y--,(u=t[l])&&(u.__u|=2)),u==null||u.__v==null?(l==-1&&(s>_?c--:s<_&&c++),typeof i.type!="function"&&(i.__u|=4)):l!=g&&(l==g-1?c--:l==g+1?c++:(l>g?c--:c++,i.__u|=4))):e.__k[a]=null;if(y)for(a=0;a<_;a++)(u=t[a])!=null&&(2&u.__u)==0&&(u.__e==o&&(o=B(u)),He(u,u));return o}function Pe(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=Pe(o[s],n,t));return n}e.__e!=n&&(n&&e.type&&!n.parentNode&&(n=B(e)),n=t.insertBefore(e.__e,n||null));do n=n&&n.nextSibling;while(n!=null&&n.nodeType==8);return n}function fn(e,n,t,o){var s,a,i,u=e.key,g=e.type,l=n[t],_=l!=null&&(2&l.__u)==0;if(l===null&&u==null||_&&u==l.key&&g==l.type)return t;if(o>(_?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&&u==l.key&&g==l.type)return i}return-1}function Re(e,n,t){n[0]=="-"?e.setProperty(n,t??""):e[n]=t==null?"":typeof t!="number"||pn.test(n)?t:t+"px"}function ee(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||Re(e.style,n,"");if(t)for(n in t)o&&t[n]==o[n]||Re(e.style,n,t[n])}else if(n[0]=="o"&&n[1]=="n")a=n!=(n=n.replace(Te,"$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[q]=o[q]:(t[q]=le,e.addEventListener(n,a?ce:de,a)):e.removeEventListener(n,a?ce:de,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 ze(e){return function(n){if(this.l){var t=this.l[n.type+e];if(n[V]==null)n[V]=le++;else if(n[V]<t[q])return;return t(S.event?S.event(n):n)}}}function pe(e,n,t,o,s,a,i,u,g,l){var _,y,c,h,$,b,m,w,v,P,k,C,E,D,R,j,f=n.type;if(n.constructor!==void 0)return null;128&t.__u&&(g=!!(32&t.__u),a=[u=n.__e=t.__e]),(_=S.__b)&&_(n);e:if(typeof f=="function"){y=i.length;try{if(v=n.props,P=f.prototype&&f.prototype.render,k=(_=f.contextType)&&o[_.__c],C=_?k?k.props.value:_.__:o,t.__c?w=(c=n.__c=t.__c).__=c.__E:(P?n.__c=c=new f(v,C):(n.__c=c=new X(v,C),c.constructor=f,c.render=mn),k&&k.sub(c),c.state||(c.state={}),c.__n=o,h=c.__d=!0,c.__h=[],c._sb=[]),P&&c.__s==null&&(c.__s=c.state),P&&f.getDerivedStateFromProps!=null&&(c.__s==c.state&&(c.__s=U({},c.__s)),U(c.__s,f.getDerivedStateFromProps(v,c.__s))),$=c.props,b=c.state,c.__v=n,h)P&&f.getDerivedStateFromProps==null&&c.componentWillMount!=null&&c.componentWillMount(),P&&c.componentDidMount!=null&&c.__h.push(c.componentDidMount);else{if(P&&f.getDerivedStateFromProps==null&&v!==$&&c.componentWillReceiveProps!=null&&c.componentWillReceiveProps(v,C),n.__v==t.__v||!c.__e&&c.shouldComponentUpdate!=null&&c.shouldComponentUpdate(v,c.__s,C)===!1){n.__v!=t.__v&&(c.props=v,c.state=c.__s,c.__d=!1),n.__e=t.__e,n.__k=t.__k,n.__k.some(function(A){A&&(A.__=n)}),Y.push.apply(c.__h,c._sb),c._sb=[],c.__h.length&&i.push(c),u=B(t);break e}c.componentWillUpdate!=null&&c.componentWillUpdate(v,c.__s,C),P&&c.componentDidUpdate!=null&&c.__h.push(function(){c.componentDidUpdate($,b,m)})}if(c.context=C,c.props=v,c.__P=e,c.__e=!1,E=S.__r,D=0,P)c.state=c.__s,c.__d=!1,E&&E(n),_=c.render(c.props,c.state,c.context),Y.push.apply(c.__h,c._sb),c._sb=[];else do c.__d=!1,E&&E(n),_=c.render(c.props,c.state,c.context),c.state=c.__s;while(c.__d&&++D<25);c.state=c.__s,c.getChildContext!=null&&(o=U(U({},o),c.getChildContext())),P&&!h&&c.getSnapshotBeforeUpdate!=null&&(m=c.getSnapshotBeforeUpdate($,b)),R=_!=null&&_.type===N&&_.key==null?Ne(_.props.children):_,u=Ae(e,Q(R)?R:[R],n,t,o,s,a,i,u,g,l),c.base=n.__e,n.__u&=-161,c.__h.length&&i.push(c),w&&(c.__E=c.__=null)}catch(A){if(i.length=y,n.__v=null,g||a!=null){if(A.then){for(n.__u|=g?160:128;u&&u.nodeType==8&&u.nextSibling;)u=u.nextSibling;a!=null&&(a[a.indexOf(u)]=null),n.__e=u}else if(a!=null)for(j=a.length;j--;)ue(a[j])}else n.__e=t.__e;n.__k==null&&(n.__k=t.__k||[]),A.then||Oe(n),S.__e(A,n,t)}}else a==null&&n.__v==t.__v?(n.__k=t.__k,n.__e=t.__e):u=n.__e=_n(t.__e,n,t,o,s,a,i,g,l);return(_=S.diffed)&&_(n),128&n.__u?void 0:u}function Oe(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Oe))}function Le(e,n,t){for(var o=0;o<t.length;o++)ge(t[o],t[++o],t[++o]);S.__c&&S.__c(n,e),e.some(function(s){try{e=s.__h,s.__h=[],e.some(function(a){a.call(s)})}catch(a){S.__e(a,s.__v)}})}function Ne(e){return typeof e!="object"||e==null||e.__b>0?e:Q(e)?e.map(Ne):e.constructor!==void 0?null:U({},e)}function _n(e,n,t,o,s,a,i,u,g){var l,_,y,c,h,$,b,m=t.props||G,w=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((h=a[l])&&"setAttribute"in h==!!v&&(v?h.localName==v:h.nodeType==3)){e=h,a[l]=null;break}}if(e==null){if(v==null)return document.createTextNode(w);e=document.createElementNS(s,v,w.is&&w),u&&(S.__m&&S.__m(n,a),u=!1),a=null}if(v==null)m===w||u&&e.data==w||(e.data=w);else{if(a=v=="textarea"&&w.defaultValue!=null?null:a&&W.call(e.childNodes),!u&&a!=null)for(m={},l=0;l<e.attributes.length;l++)m[(h=e.attributes[l]).name]=h.value;for(l in m)h=m[l],l=="dangerouslySetInnerHTML"?y=h:l=="children"||l in w||l=="value"&&"defaultValue"in w||l=="checked"&&"defaultChecked"in w||ee(e,l,null,h,s);for(l in w)h=w[l],l=="children"?c=h:l=="dangerouslySetInnerHTML"?_=h:l=="value"?$=h:l=="checked"?b=h:u&&typeof h!="function"||m[l]===h||ee(e,l,h,m[l],s);if(_)u||y&&(_.__html==y.__html||_.__html==e.innerHTML)||(e.innerHTML=_.__html),n.__k=[];else if(y&&(e.innerHTML=""),Ae(n.type=="template"?e.content:e,Q(c)?c:[c],n,t,o,v=="foreignObject"?"http://www.w3.org/1999/xhtml":s,a,i,a?a[0]:t.__k&&B(t,0),u,g),a!=null)for(l=a.length;l--;)ue(a[l]);u&&v!="textarea"||(l="value",v=="progress"&&$==null?e.removeAttribute("value"):$!=null&&($!==e[l]||v=="progress"&&!$||v=="option"&&$!=m[l])&&ee(e,l,$,m[l],s),l="checked",b!=null&&b!=e[l]&&ee(e,l,b,m[l],s))}return e}function ge(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){S.__e(s,t)}}function He(e,n,t){var o,s;if(S.unmount&&S.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||ge(o,null,n)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(a){S.__e(a,n)}o.base=o.__P=o.__n=null}if(o=e.__k)for(s=0;s<o.length;s++)o[s]&&He(o[s],n,t||typeof e.type!="function");t||ue(e.__e),e.__c=e.__=e.__e=void 0}function mn(e,n,t){return this.constructor(e,t)}function Ie(e,n,t){var o,s,a,i;n==document&&(n=document.documentElement),S.__&&S.__(e,n),s=(o=!1)?null:n.__k,a=[],i=[],pe(n,e=n.__k=L(N,null,[e]),s||G,G,n.namespaceURI,s?null:n.firstChild?W.call(n.childNodes):null,a,s?s.__e:n.firstChild,o,i),Le(a,e,i),e.props.children=null}W=Y.slice,S={__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(u){e=u}throw e}},$e=0,X.prototype.setState=function(e,n){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=U({},this.state),typeof e=="function"&&(e=e(U({},t),this.props)),e&&U(t,e),e!=null&&this.__v&&(n&&this._sb.push(n),De(this))},X.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),De(this))},X.prototype.render=N,F=[],Se=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ee=function(e,n){return e.__v.__b-n.__v.__b},Z.__r=0,ie=Math.random().toString(8),V="__d"+ie,q="__a"+ie,Te=/(PointerCapture)$|Capture$/i,le=0,de=ze(!1),ce=ze(!0);var kn=0;function r(e,n,t,o,s,a){n||(n={});var i,u,g=n;if("ref"in g)for(u in g={},n)u=="ref"?i=n[u]:g[u]=n[u];var l={type:e,props:g,key:t,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--kn,__i:-1,__u:0,__source:s,__self:a};if(typeof e=="function"&&(i=e.defaultProps))for(u in i)g[u]===void 0&&(g[u]=i[u]);return S.vnode&&S.vnode(l),l}const bn="Snagset",xn="Snagset",yn="Snag",vn="Snags",x={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"},wn=e=>`var(${x[e]})`,$n=e=>"snag_"+e,Ue={query:["snag_t","snag_off","snag_debug","snag_theme"],fragment:["snag_k"]},Cn="data-snag-theme";var K,T,he,je,ne=0,Fe=[],M=S,Be=M.__b,qe=M.__r,Ke=M.diffed,We=M.__c,Ve=M.unmount,Ge=M.__;function fe(e,n){M.__h&&M.__h(T,e,ne||n),ne=0;var t=T.__H||(T.__H={__:[],__h:[]});return e>=t.__.length&&t.__.push({}),t.__[e]}function z(e){return ne=1,Sn(Je,e)}function Sn(e,n,t){var o=fe(K++,2);if(o.t=e,!o.__c&&(o.__=[Je(void 0,n),function(u){var g=o.__N?o.__N[0]:o.__[0],l=o.t(g,u);g!==l&&(o.__N=[l,o.__[1]],o.__c.setState({}))}],o.__c=T,!T.__f)){var s=function(u,g,l){if(!o.__c.__H)return!0;var _=!1,y=o.__c.props!==u;if(o.__c.__H.__.some(function(h){if(h.__N){_=!0;var $=h.__[0];h.__=h.__N,h.__N=void 0,$!==h.__[0]&&(y=!0)}}),a){var c=a.call(this,u,g,l);return _?c||y:c}return!_||y};T.__f=!0;var a=T.shouldComponentUpdate,i=T.componentWillUpdate;T.componentWillUpdate=function(u,g,l){if(this.__e){var _=a;a=void 0,s(u,g,l),a=_}i&&i.call(this,u,g,l)},T.shouldComponentUpdate=s}return o.__N||o.__}function H(e,n){var t=fe(K++,3);!M.__s&&Qe(t.__H,n)&&(t.__=e,t.u=n,T.__H.__h.push(t))}function I(e){return ne=5,En(function(){return{current:e}},[])}function En(e,n){var t=fe(K++,7);return Qe(t.__H,n)&&(t.__=e(),t.__H=n,t.__h=e),t.__}function Tn(){for(var e;e=Fe.shift();){var n=e.__H;if(e.__P&&n)try{n.__h.some(te),n.__h.some(_e),n.__h=[]}catch(t){n.__h=[],M.__e(t,e.__v)}}}M.__b=function(e){T=null,Be&&Be(e)},M.__=function(e,n){e&&n.__k&&n.__k.__m&&(e.__m=n.__k.__m),Ge&&Ge(e,n)},M.__r=function(e){qe&&qe(e),K=0;var n=(T=e.__c).__H;n&&(he===T?(n.__h=[],T.__h=[],n.__.some(function(t){t.__N&&(t.__=t.__N),t.u=t.__N=void 0})):(n.__h.some(te),n.__h.some(_e),n.__h=[],K=0)),he=T},M.diffed=function(e){Ke&&Ke(e);var n=e.__c;n&&n.__H&&(n.__H.__h.length&&(Fe.push(n)!==1&&je===M.requestAnimationFrame||((je=M.requestAnimationFrame)||Mn)(Tn)),n.__H.__.some(function(t){t.u&&(t.__H=t.u,t.u=void 0)})),he=T=null},M.__c=function(e,n){n.some(function(t){try{t.__h.some(te),t.__h=t.__h.filter(function(o){return!o.__||_e(o)})}catch(o){n.some(function(s){s.__h&&(s.__h=[])}),n=[],M.__e(o,t.__v)}}),We&&We(e,n)},M.unmount=function(e){Ve&&Ve(e);var n,t=e.__c;t&&t.__H&&(t.__H.__.some(function(o){try{te(o)}catch(s){n=s}}),t.__H=void 0,n&&M.__e(n,t.__v))};var Ye=typeof requestAnimationFrame=="function";function Mn(e){var n,t=function(){clearTimeout(o),Ye&&cancelAnimationFrame(n),setTimeout(e)},o=setTimeout(t,35);Ye&&(n=requestAnimationFrame(t))}function te(e){var n=T,t=e.__c;typeof t=="function"&&(e.__c=void 0,t()),T=n}function _e(e){var n=T;e.__c=e.__(),T=n}function Qe(e,n){return!e||e.length!==n.length||n.some(function(t,o){return t!==e[o]})}function Je(e,n){return typeof n=="function"?n(e):n}const Dn={product:bn,set:xn,item:yn,items:vn};function Xe(e){return(n,t)=>(e[n]??"").replace(/\{(\w+)\}/g,(o,s)=>{const a=t?.[s]??Dn[s];return a===void 0?o:String(a)})}const O=e=>new Intl.NumberFormat().format(e),Ze={"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=Xe(Ze),oe={open:{colour:"#009ed3"},progress:{colour:"#bd5000"},review:{colour:"#6700bf"},resolved:{colour:"#b2e3a3"}},me=e=>oe[e]?.colour??"#8a8f98",en=e=>e==="progress"||e==="review"?"#fff":"#16161a",ke=e=>e in oe?An(`status.${e}`):e,d=Object.fromEntries(Object.keys(x).map(e=>[e,wn(e)])),Pn=Object.entries(oe).map(([e,n])=>` ${x[`status${e[0].toUpperCase()}${e.slice(1)}`]}:${n.colour};`).join(`
2
+ `);`${d.font}${d.fg}${x.font}${x.accent}${x.bg}${x.fg}${x.muted}${x.border}${x.radius}${x.shadow}${x.z}${x.motion}${x.surface}${d.fg}${d.bg}${x.sunken}${d.fg}${d.bg}${x.hover}${d.fg}${d.bg}${x.onAccent}${x.focus}${d.accent}${d.fg}${x.disabled}${d.muted}${d.bg}${Pn}${x.anchorOrphan}${Cn}${x.accent}${x.onAccent}${x.bg}${x.fg}${x.muted}${x.border}${x.shadow}${x.motion}${x.bg}${x.fg}${x.muted}${x.border}${x.accent}${x.onAccent}${x.surface}${x.sunken}${x.hover}${x.focus}${x.disabled}${x.shadow}${x.anchorOrphan}`;const Rn={dock:5},nn=new WeakMap;function tn(e,n,t){let o=nn.get(e);if(o||nn.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 zn=` .snag-input,.snag-text{width:100%;box-sizing:border-box;background:${d.surface};color:inherit;border:1px solid ${d.border};border-radius:${d.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 ${d.focus};outline-offset:1px;border-color:transparent}.snag-input--bad{border-color:${d.anchorOrphan}}.snag-note{margin:-2px 0 0;color:${d.anchorOrphan};font-size:11px;line-height:1.35}.snag-note.snag-dim{color:${d.muted}}.snag-actions{display:flex;justify-content:flex-end;gap:6px}.snag-actions button{appearance:none;border:0;border-radius:calc(${d.radius} - 1px);padding:7px 13px;font:inherit;cursor:pointer;min-height:32px;transition:background ${d.motion}}.snag-cancel{background:transparent;color:${d.muted}}.snag-armed{color:${d.anchorOrphan};font-weight:600}.snag-cancel:hover{background:${d.hover};color:inherit}.snag-send{background:${d.accent};color:${d.onAccent};font-weight:600}.snag-send:disabled{opacity:.45;cursor:not-allowed}.snag-actions button:focus-visible{outline:2px solid ${d.focus};outline-offset:2px}`;function On(e,n,t){const[o,s]=z(!1);return H(()=>{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 Ln(e){const n=window.visualViewport;if(!n)return;let t=0,o=0;const s=()=>{t=0;const u=Math.max(0,Math.round(window.innerHeight-n.height-n.offsetTop));e.style.setProperty(x.kb,`${u}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 Nn="noreferrer nofollow";function Hn(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 In=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("|")),Un=4;function re(e,n=0,t=0){const o=[];let s=e,a=n;if(t>=Un)return e?[e]:[];for(;;){const i=In.exec(s);if(!i)return s&&o.push(s),o;i.index>0&&o.push(s.slice(0,i.index));const u=`i${a++}`,g=i.groups,l=g.bold??g.boldU,_=g.em??g.emU;if(l!==void 0)o.push(L("strong",{key:u},re(l,a,t+1)));else if(_!==void 0)o.push(L("em",{key:u},re(_,a,t+1)));else if(g.code!==void 0)o.push(L("code",{key:u},g.code));else{const y=Hn(g.href??"");o.push(y?L("a",{key:u,href:y,target:"_blank",rel:Nn},g.label??""):i[0])}s=s.slice(i.index+i[0].length)}}const be=/^```[^\n]*$/,xe=/^[-*]\s+(.*)$/,ye=/^\d{1,9}[.)]\s+(.*)$/;function on(e){const n=e.split(`
3
+ `),t=[];let o=0,s=0;for(;o<n.length;){const a=n[o];if(be.test(a)){const l=[];for(o++;o<n.length&&!be.test(n[o]);)l.push(n[o++]);o++,t.push(L("pre",{key:`b${s++}`},L("code",null,l.join(`
4
+ `))));continue}const i=xe.exec(a),u=ye.exec(a);if(i||u){const l=i?xe:ye,_=[];for(;o<n.length;){const y=l.exec(n[o]);if(!y)break;_.push(L("li",{key:`l${_.length}`},re(y[1]))),o++}t.push(L(i?"ul":"ol",{key:`b${s++}`},_));continue}const g=[];for(;o<n.length;){const l=n[o];if(!l.trim()||be.test(l)||xe.test(l)||ye.test(l))break;g.push(l),o++}g.length?t.push(L("p",{key:`b${s++}`},re(g.join(`
5
+ `)))):o++}return L("div",{class:"snag-md"},t)}const jn={"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}"},Fn={"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.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?"},Bn={"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","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"},qn={...Ze,...jn,...Fn,...Bn},p=Xe(qn),Kn=[/^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$/],Wn=[...Ue.query,...Ue.fragment];function Vn(e,n=[]){return Wn.includes(e)||n.includes(e)?!0:Kn.some(t=>t.test(e))}const ae=["open","progress","review","resolved"];function Gn(e,n){const t=e.includes(n)?e.filter(o=>o!==n):[...e,n];return t.length>=ae.length?[]:t}function Yn(e,n,t){if(n.statuses.length>0&&ae.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=se(e,t);if(n.read==="unread"&&!o||n.read==="read"&&o)return!1}return!0}function se(e,n){const t=n.get(e.id)??0;return Date.parse(e.updatedAt)>t}function Qn(e,n,t,o){let s=e;n.pageOnly&&(s=s.filter(i=>i.route===t)),n.newOnly&&o&&(s=s.filter(i=>se(i,o)));const a=n.q?.trim().toLowerCase();return a&&(s=s.filter(i=>i.comments.some(u=>(u.body??"").toLowerCase().includes(a)||u.author.name.toLowerCase().includes(a))||i.createdBy.name.toLowerCase().includes(a))),s}function Jn(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 Xn(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 Zn(e){return(e.read!=="all"?1:0)+(e.by?1:0)+(e.page?1:0)}const ve=Object.keys(oe);function rn({label:e,title:n,cls:t,role:o,onConfirm:s}){const{armed:a,press:i}=On(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 et({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 nt({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 an({body:e,onEdit:n,deleteLabel:t,onDelete:o}){const s=e??"",[a,i]=z(!1),[u,g]=z(!1),[l,_]=z(s),y=I(null),c=h=>{h.key!=="Escape"||!u||(h.stopPropagation(),g(!1))};return H(()=>{a&&y.current?.focus()},[a]),a?r("div",{class:"snag-dk-editbox",children:[r("textarea",{ref:y,class:"snag-text",rows:3,"aria-label":p("comment.edit"),value:l,onInput:h=>_(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(),_(s),i(!1))}}),r("div",{class:"snag-actions",children:[r("button",{type:"button",class:"snag-cancel",onClick:()=>{_(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:c,children:[u&&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":u,"aria-haspopup":"menu",title:p("action.more"),onClick:()=>g(!u),children:"\u22EF"}),u&&r("div",{class:"snag-dk-menu",role:"menu",children:[r("button",{type:"button",role:"menuitem",title:p("comment.edit"),"aria-label":p("comment.edit"),onClick:()=>{g(!1),_(s),i(!0)},children:p("action.edit")}),r(rn,{label:p("action.delete"),title:t,cls:"snag-dk-act--danger",role:"menuitem",onConfirm:o})]})]})]})}function tt({snag:e}){const n=e.anchorReasons?.includes("hidden")??!1;return r("span",{class:"snag-dk-dim snag-dk-where",children:[n&&r(N,{children:[r("span",{class:"snag-dk-moved",children:p("badge.hidden")})," "]}),e.anchorState!=="anchored"&&r(N,{children:[r("span",{class:"snag-dk-moved",children:p(`badge.${e.anchorState}`)})," "]}),e.anchor.label]})}function ot(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 rt(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 at({snag:e,n,here:t,unread:o,onOpen:s,onHover:a}){const i=g=>a(t?g:null),u=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:me(e.status),color:en(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(tt,{snag:e})})]}),r(et,{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:u,"aria-label":u,children:"\u2197"})]})})}const sn=e=>d[`status${e[0].toUpperCase()}${e.slice(1)}`]??d.muted;function st({round:e,filter:n,onFilter:t,rounds:o,activeRound:s,onRound:a,onClearAll:i,seenAt:u}){const g=!!o&&o.length>1&&!!a,l=e.length>0,[_,y]=z(null),c=Xn(e),h=k=>{const C={...n};for(const[E,D]of Object.entries(k))D===void 0?delete C[E]:C[E]=D;t(C)},$=n.statuses.length>0,b=Zn(n),m=[...new Map(e.map(k=>[k.createdBy.id,k.createdBy.name]))],w=[...new Set(e.map(k=>k.route))].sort(),v=[...c.byStatus.keys()].filter(k=>!ae.includes(k)),P=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($?"filter.selectall":"filter.clear")})]}),r("div",{class:"snag-dk-chips",role:"group","aria-label":p("filter.status"),children:[ae.map(k=>{const C=n.statuses.includes(k);return r("button",{type:"button",class:"snag-dk-chip","aria-pressed":C,style:`border-color:color-mix(in srgb, ${sn(k)} 60%, transparent);background:color-mix(in srgb, ${sn(k)} ${C?28:10}%, transparent)`,onClick:()=>h({statuses:Gn(n.statuses,k)}),children:[ke(k)," ",r("span",{class:"snag-dk-dim",children:O(c.byStatus.get(k)??0)})]})}),v.map(k=>r("span",{class:"snag-dk-chip snag-dk-chip-stray",children:[k," ",r("span",{class:"snag-dk-dim",children:O(c.byStatus.get(k)??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:k=>h({q:k.currentTarget.value||void 0})}),r("div",{class:"snag-dk-menus",onKeyDown:k=>{k.key!=="Escape"||!_||(k.stopPropagation(),y(null))},children:[_&&r("div",{class:"snag-dk-menubg","aria-hidden":"true",onClick:()=>y(null)}),r("span",{class:"snag-dk-menuwrap",children:[r("button",{type:"button",class:"snag-dk-link","aria-expanded":_==="filter",onClick:()=>y(_==="filter"?null:"filter"),children:b>0?p("filter.button.n",{n:O(b)}):p("filter.button")}),_==="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:k=>a(Number(k.currentTarget.value)),children:o.map(k=>r("option",{value:String(k.number),children:[k.name,k.closed?` ${p("round.closed")}`:""]},k.number))})]}),l&&r(rn,{label:p("dock.clear"),title:p("dock.clear.aria"),cls:"snag-dk-link snag-dk-clear",onConfirm:i})]}),l&&P,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(([k,C])=>r("button",{type:"button",role:"radio","aria-checked":n.sort===k,onClick:()=>h({sort:k}),children:[r("span",{class:"snag-dk-tick","aria-hidden":"true",children:n.sort===k?"\u2713":"\xA0"}),p(C)]}))]}),l&&r("div",{class:"snag-dk-menugroup snag-dk-menugroup-last",children:[u&&r("label",{children:[p("filter.read"),r("select",{value:n.read,onChange:k=>h({read:k.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:k=>h({by:k.currentTarget.value||void 0}),children:[r("option",{value:"",children:p("filter.by.anyone")}),m.map(([k,C])=>r("option",{value:k,children:C}))]})]}),r("label",{children:[p("filter.pages"),r("select",{value:n.page??"",onChange:k=>h({page:k.currentTarget.value||void 0}),children:[r("option",{value:"",children:p("filter.pages.all")}),w.map(k=>r("option",{value:k,children:k}))]})]}),r("label",{class:"snag-dk-pageonly",children:[r("input",{type:"checkbox",checked:n.pageOnly,onChange:k=>h({pageOnly:k.currentTarget.checked})})," ",p("filter.pageonly")]})]})]})]})]})]})}function it({snags:e,groups:n,route:t,onOpen:o,onHover:s,onExport:a,onClearAll:i,clusterFilter:u,onClusterClear:g,filter:l,onFilter:_,hiddenNote:y,onHiddenShow:c,rounds:h,activeRound:$,onRound:b,seenAt:m}){const w=ot(e),v=n.flatMap(f=>f.snags),P=l.statuses.length>0||!!l.by||!!l.page||!!l.q?.trim()||l.pageOnly||l.newOnly||l.read!=="all",k=m?e.filter(f=>se(f,m)).length:0,C=I(null),[E,D]=z(!1),R=f=>{f.key!=="Escape"||!E||(f.stopPropagation(),D(!1))},j=I(null);return H(()=>{const f=C.current,A=j.current;!f||!A||(f.scrollTop+=A.getBoundingClientRect().top-f.getBoundingClientRect().top)},[t,n.length]),r(N,{children:[(e.length>0||h&&h.length>1&&b)&&r(st,{round:e,filter:l,onFilter:_,onClearAll:i,...m===void 0?{}:{seenAt:m},...h===void 0?{}:{rounds:h},...$===void 0?{}:{activeRound:$},...b===void 0?{}:{onRound:b}}),m&&(k>0||l.newOnly)&&r("button",{type:"button",class:"snag-dk-newpill","aria-pressed":l.newOnly,onClick:()=>_({...l,newOnly:!l.newOnly}),children:l.newOnly?p(k===0?"filter.new.none":"filter.new.on"):p("filter.new",{n:O(k)})}),e.length===0?r("div",{class:"snag-dk-empty",children:r("p",{children:p("dock.empty")})}):v.length===0&&P?r("div",{class:"snag-dk-empty",children:l.pageOnly&&e.some(f=>f.route!==t)?r("p",{children:p("dock.empty.page",{n:O(e.filter(f=>f.route!==t).length),m:O(new Set(e.filter(f=>f.route!==t).map(f=>f.route)).size)})}):r("p",{children:p("dock.empty.filter")})}):r(N,{children:[y&&r("p",{class:"snag-dk-notice",children:[p("dock.hiddenrow")," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>c(y),children:p("dock.hiddenrow.show")})]}),u&&r("p",{class:"snag-dk-notice",children:[p("dock.cluster",{n:u.length})," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>g?.(),children:p("dock.cluster.clear")})]}),e.every(f=>f.anchorState==="orphaned")&&r("p",{class:"snag-dk-notice",children:p("dock.empty.orphans")}),r("div",{class:"snag-dk-scroll",ref:C,children:n.map(f=>r("section",{class:"snag-dk-group",ref:f.here?j:null,children:[f.route!==""&&r("h3",{class:"snag-dk-grouphd",children:[r("span",{class:"snag-dk-route",children:f.route}),r("span",{class:"snag-dk-dim",children:O(f.snags.length)})]}),r("ul",{class:"snag-dk-list",children:f.snags.map(A=>r(at,{snag:A,n:w.get(A.id),here:f.here,unread:!!m&&se(A,m),onOpen:o,onHover:s},A.id))})]},f.route))})]}),r("div",{class:"snag-dk-foot",children:r("div",{class:"snag-dk-menus snag-dk-menus-up",onKeyDown:R,children:[E&&r("div",{class:"snag-dk-menubg","aria-hidden":"true",onClick:()=>D(!1)}),r("span",{class:"snag-dk-menuwrap",children:[r("button",{type:"button",class:"snag-dk-link","aria-expanded":E,"aria-haspopup":"menu",onClick:()=>D(!E),children:p("export.button")}),E&&r("div",{class:"snag-dk-menu snag-dk-menu-up",role:"menu",children:["md","json"].map(f=>r("button",{type:"button",role:"menuitem",onClick:()=>{D(!1),a(f)},children:p(f==="md"?"export.md":"export.json")}))})]})]})})]})}const we=new Map;function lt(e){const n=[];try{for(const[t,o]of new URL(e).searchParams)Vn(t)||n.push(o&&o!=="[redacted]"?`${t}=${o}`:t)}catch{return null}return n.length?`?${n.join("&")}`:null}function dt({att:e,load:n}){const t=I(null),[o,s]=z(!1),[a,i]=z(null);return H(()=>{let u=!1;return n(e.id).then(async g=>{if(!g||u)return;const l=await createImageBitmap(g);u?l.close():i(l)}),()=>{u=!0}},[e.id]),H(()=>{const u=t.current;if(!u||!a)return;const g=142,l=g/a.width;u.width=g,u.height=Math.min(96,Math.round(a.height*l)),u.getContext("2d").drawImage(a,0,0,a.width,Math.round(u.height/l),0,0,u.width,u.height)},[a]),a?r(N,{children:[r("button",{type:"button",class:"snag-dk-shot",onClick:()=>s(!0),"aria-label":p("shot.open"),children:r("canvas",{ref:t})}),o&&r(ct,{bmp:a,onClose:()=>s(!1)})]}):null}function ct({bmp:e,onClose:n}){const t=I(null);return H(()=>{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 ut({snag:e,loadShot:n}){const t=e.context;if(!t)return null;const o=e.attachments?.find(u=>u.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(dt,{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(N,{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(u=>r("p",{class:"snag-dk-capwhy",children:u},u)),t.capture?.blindSpots?.map(u=>r("p",{class:"snag-dk-capwhy",children:u},u)),(()=>{const u=lt(t.url);return u?r("p",{class:"snag-dk-capwhy",children:[p("detail.filedat",{query:u})," ",r("a",{class:"snag-dk-openq",href:t.url,target:"_blank",rel:"noreferrer",children:p("detail.openquery")})]}):null})()]})}function ln(e){const n=e.context?.url??e.route;return`${n}${n.includes("?")?"&":"?"}${$n("t")}=${e.key}`}function pt({snag:e}){const[n,t]=z(!1),o=ln(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 gt({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:ln(e)})]})}function ht({snags:e,round:n,fallbackCursor:t,openId:o,onOpen:s,onStatus:a,onReply:i,onEdit:u,onDeleteComment:g,onDeleteThread:l,onShowAnyway:_,onAnnounce:y,loadShot:c}){const h=e.findIndex(f=>f.id===o),$=h>=0,b=$?h:Math.min(t,e.length),m=$?e[h]:n.find(f=>f.id===o),w=o?we.get(o)??"":"",[v,P]=z(w),[k,C]=z(w.length>0),E=I(null);H(()=>{k&&E.current?.focus()},[k]);const D=f=>{P(f),o&&(f?we.set(o,f):we.delete(o))};if(!m)return null;const R=m.comments[0],j=n.filter(f=>f.route===m.route).findIndex(f=>f.id===m.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(b+1):"\u2013",total:O(e.length)})}),r("span",{class:"snag-dk-nav",children:[r("button",{type:"button",class:"snag-dk-link",disabled:b<=0,"aria-label":p("dock.prev"),onClick:()=>s(e[b-1].id),children:"\u2191"}),r("button",{type:"button",class:"snag-dk-link",disabled:$?b>=e.length-1:b>=e.length,"aria-label":p("dock.next"),onClick:()=>s(e[$?b+1:b].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:me(m.status),color:en(m.status)},children:j}),r("strong",{children:R?.author.name??p("author.unknown")}),r("span",{class:"snag-dk-dim",children:m.key}),r(pt,{snag:m})]}),r("div",{class:"snag-dk-cardbody",children:on(R?.body??"")}),r(gt,{snag:m}),R&&r(an,{body:R.body,onEdit:f=>u(R.id,f),deleteLabel:p("comment.delete"),onDelete:()=>l(m.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:me(m.status)},value:m.status,onChange:f=>{const A=f.target.value;a(m.id,A),y?.(p("announce.status",{key:m.key,status:ke(A)}))},children:ve.map(f=>r("option",{value:f,children:ke(f)},f))})]}),r(ut,{snag:m,...c?{loadShot:c}:{}}),m.anchorReasons?.includes("hidden")&&r("p",{class:"snag-dk-moved-note",children:[p("detail.hidden")," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>_?.(m),children:p("detail.hidden.show")})]}),m.anchorState!=="anchored"&&r("p",{class:"snag-dk-moved-note",children:[p(`detail.${m.anchorState}`,{label:m.anchor.label}),m.anchorReasons?.includes("budget-exceeded")&&` ${p("detail.unavailable")}`]}),m.anchorState!=="anchored"&&r(nt,{anchor:m.anchor}),m.comments.length>1&&r("ul",{class:"snag-dk-replies-list",children:m.comments.slice(1).map(f=>r("li",{children:[r("strong",{children:f.author.name}),on(f.body??""),r(an,{body:f.body,onEdit:A=>u(f.id,A),deleteLabel:p("reply.delete"),onDelete:()=>g(f.id)})]},f.id))}),k?r("div",{class:"snag-dk-replybox",children:[r("textarea",{ref:E,class:"snag-text",rows:2,enterkeyhint:"enter","aria-label":p("reply.aria"),placeholder:p("reply.placeholder"),value:v,onInput:f=>D(f.target.value),onKeyDown:f=>{f.key==="Enter"&&(f.metaKey||f.ctrlKey)&&(f.preventDefault(),v.trim()&&(i(m.id,v.trim()),D(""),C(!1))),f.key==="Escape"&&(f.stopPropagation(),f.target.blur())}}),r("div",{class:"snag-actions",children:[r("button",{type:"button",class:"snag-cancel",onClick:()=>{D(""),C(!1)},children:p("action.cancel")}),r("button",{type:"button",class:"snag-send",disabled:!v.trim(),onClick:()=>{i(m.id,v.trim()),D(""),C(!1)},children:p("reply.send")})]})]}):r("button",{type:"button",class:"snag-dk-addreply",onClick:()=>C(!0),children:p("reply.add")})]})}function ft(e){const n=e.openId?e.snags.find(b=>b.id===e.openId):null,t=I(null),o=e.clusterFilter?e.snags.filter(b=>e.clusterFilter.includes(b.id)):e.snags,s=Qn(o.filter(b=>Yn(b,e.filter,e.seenAt)),e.filter,e.route,e.seenAt),a=Jn(s,e.filter.sort),i=e.filter.sort==="page"?rt(a,e.route):[{route:"",here:!1,snags:a}],u=i.flatMap(b=>b.snags),g=I(0),l=u.findIndex(b=>b.id===e.openId);l>=0&&(g.current=l);const _=I(null),[y,c]=z(null);e.openId?(_.current={id:e.openId,absent:l===-1},y&&c(null)):_.current?.absent&&y!==_.current.id&&(c(_.current.id),_.current=null),H(()=>{t.current?.focus()},[e.openId]),H(()=>{if(!(window.matchMedia?.("(pointer: coarse)").matches??!1))return;const b=t.current;return b?Ln(b):void 0},[]);const h=I({snag:n,onStatus:e.onStatus});h.current={snag:n,onStatus:e.onStatus},H(()=>{const b=m=>{const{snag:w,onStatus:v}=h.current;if(!w||m.metaKey||m.ctrlKey||m.altKey||m.composedPath().some(C=>{const E=C;if(!E?.tagName)return!1;const D=E.tagName.toLowerCase();return D==="textarea"||D==="select"?!0:D==="input"?!/^(button|submit|checkbox|radio)$/i.test(E.type):E.isContentEditable?!0:/^(textbox|searchbox|combobox)$/.test(E.getAttribute?.("role")??"")}))return;const k=Number(m.key);if(k>=1&&k<=ve.length){m.preventDefault(),v(w.id,ve[k-1]);return}(m.key==="r"||m.key==="R")&&(m.preventDefault(),v(w.id,w.status==="resolved"?"open":"resolved"))};return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[]);const $=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:[$&&r("div",{class:"snag-dk-scrim","aria-hidden":"true",onClick:e.onClose}),$&&r("div",{class:"snag-dk-grab","aria-hidden":"true",onPointerDown:b=>{const m=b.clientY,w=b.currentTarget;try{w.setPointerCapture(b.pointerId)}catch{}w.onpointermove=v=>{v.clientY-m>56&&(w.onpointermove=null,e.onClose())},w.onpointerup=()=>w.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(ht,{...e,snags:u,round:e.snags,fallbackCursor:g.current},n.id):r(it,{...e,groups:i,hiddenNote:y,onHiddenShow:b=>{c(null),e.onOpen(b)}})]})}const dn=360,_t=` .snag-dk{position:fixed;inset-block:0;inset-inline-end:0;width:${dn}px;max-width:100vw;z-index:${Rn.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(${x.tbH},68px),var(${x.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 mt(e,n,t){const o=e.ownerDocument??document;tn(e,"form",zn),tn(e,"dock",_t);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(x.dockW,`${dn}px`):l.style.removeProperty(x.dockW)};i(!0);const u=g=>{Ie(r(ft,{...g}),s)};return u(n),{update:u,close(){i(!1),Ie(null,s),s.remove()}}}const cn=24;function un(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 kt(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=un(e,n),u=a-e.scrollY;if(u>=i.top+cn&&u<=i.bottom-cn)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{mt as openDock,kt as scrollToSnag,un as visibleStrip};
@@ -1,5 +1,5 @@
1
- var __snagset_stub__=(function(A){"use strict";const v="Snagset",P="snagset:",g={api:"Snagset",config:"SnagsetConfig",disabled:"__SNAGSET_DISABLED__",assetBase:"__SNAGSET_ASSET_BASE__",collisionFallback:"__snagset__"},N={site:"data-snag-site",host:"data-snag-host",disabled:"data-snag-disabled",env:"data-snag-env",mode:"data-snag-mode",badge:"data-snag-badge",lang:"data-snag-lang",theme:"data-snag-theme",position:"data-snag-position",offset:"data-snag-offset",assetBase:"data-snag-asset-base",branch:"data-snag-branch",build:"data-snag-build",storage:"data-snag-storage",hotkey:"data-snag-hotkey",allowAutomation:"data-snag-allow-automation",screenshots:"data-snag-screenshots",maskSelectors:"data-snag-mask-selectors",nonce:"data-snag-nonce",autoMount:"data-snag-auto-mount"},w=e=>N[e],$=e=>"snag_"+e,I="snag:identity",R={off:"snag_off"},B={runtime:"snag.runtime.js"},E={original:"snagset.original",wrapped:"snagset.wrapped",instance:"snagset.instance"};function F(e){const{config:t}=e;if(e.globals[g.disabled])return{gate:"disabled-global",token:g.disabled,fix:`delete window.${g.disabled}`};if(e.configGlobal?.disabled===!0)return{gate:"disabled-config",token:`${g.config}.disabled`,fix:`set ${g.config}.disabled = false`};if("disabled"in t)return{gate:"disabled-attr",token:w("disabled"),fix:`remove ${w("disabled")} from the script tag`};if(new URLSearchParams(e.search).has($("off")))return{gate:"off-switch",token:$("off"),fix:`remove ?${$("off")} from the URL`};if(e.cookie.split("; ").some(c=>c.startsWith(R.off+"=")))return{gate:"off-switch",token:R.off,fix:`clear the ${R.off} cookie`};if((e.webdriver||"Cypress"in e.globals||U(e.globals.opener))&&!("allowAutomation"in t))return{gate:"automation",token:e.webdriver?"navigator.webdriver":"window.Cypress",fix:`add ${w("allowAutomation")} if this is deliberate`,silent:!0};const o=t.mode??"auto";if(o==="off")return{gate:"mode-off",token:`${w("mode")}="off"`,fix:`set ${w("mode")}="on"`};if(o==="auto"&&t.env==="production"&&!e.inReview)return{gate:"no-review-token",token:`${w("env")}="production"`,fix:`set ${w("mode")}="on" to review production deliberately`,silent:!0};if(e.configGlobal&&"enabled"in e.configGlobal){const c=e.configGlobal.enabled;let i=c===!1;if(typeof c=="function")try{i=c()===!1}catch{i=!1}if(i)return{gate:"config-disabled",token:`${g.config}.enabled`,fix:`set ${g.config}.enabled = true`}}const n=e.configGlobal?.allowedOrigins;return Array.isArray(n)&&!n.includes(e.origin??"")?{gate:"origin-not-allowed",token:`${g.config}.allowedOrigins`,fix:`add ${e.origin??"this origin"} to ${g.config}.allowedOrigins`}:null}function U(e){try{return!!e&&typeof e=="object"&&"Cypress"in e}catch{return!1}}function G(){let e=null;try{e=localStorage.getItem(I)}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 x(e){return G().projects?.[e]?.holderId}const D=Symbol.for(E.original),L=Symbol.for(E.wrapped),k=()=>{};function K(e,t,r){let o;try{o=e[t]}catch{return k}if(typeof o!="function"||o[L])return k;const n=o,c=r(n);let i=!1;const a=function(...s){return i?n.apply(this,s):c.apply(this,s)};try{const s=a;s[L]=!0,s[D]=n,Object.defineProperty(a,"name",{value:n.name,configurable:!0}),Object.defineProperty(a,"length",{value:n.length,configurable:!0})}catch{}try{e[t]=a}catch{return k}return e[t]!==a?k:()=>{let s;try{s=e[t]}catch{s=void 0}if(s===a)try{e[t]=n;return}catch{}i=!0}}function O(e){try{if(typeof e=="string")return e.slice(0,512);if(e==null||typeof e!="object")return typeof e=="function"?`[Function ${e.name??""}]`:String(e);const t=e;if(typeof t.name=="string"&&typeof t.message=="string"||e instanceof Error){const r=`${String(t.name)}: ${String(t.message)}`,o=typeof t.stack=="string"?t.stack.split(`
1
+ (function(){"use strict";const v="Snagset",O="snagset:",g={api:"Snagset",config:"SnagsetConfig",disabled:"__SNAGSET_DISABLED__",assetBase:"__SNAGSET_ASSET_BASE__",collisionFallback:"__snagset__"},M={site:"data-snag-site",host:"data-snag-host",disabled:"data-snag-disabled",env:"data-snag-env",mode:"data-snag-mode",badge:"data-snag-badge",lang:"data-snag-lang",theme:"data-snag-theme",position:"data-snag-position",offset:"data-snag-offset",assetBase:"data-snag-asset-base",branch:"data-snag-branch",build:"data-snag-build",storage:"data-snag-storage",hotkey:"data-snag-hotkey",allowAutomation:"data-snag-allow-automation",screenshots:"data-snag-screenshots",maskSelectors:"data-snag-mask-selectors",nonce:"data-snag-nonce",autoMount:"data-snag-auto-mount"},y=e=>M[e],$=e=>"snag_"+e,N="snag:identity",_={off:"snag_off"},T={runtime:"snag.runtime.js"},R={original:"snagset.original",wrapped:"snagset.wrapped",instance:"snagset.instance"};function I(e){const{config:t}=e;if(e.globals[g.disabled])return{gate:"disabled-global",token:g.disabled,fix:`delete window.${g.disabled}`};if(e.configGlobal?.disabled===!0)return{gate:"disabled-config",token:`${g.config}.disabled`,fix:`set ${g.config}.disabled = false`};if("disabled"in t)return{gate:"disabled-attr",token:y("disabled"),fix:`remove ${y("disabled")} from the script tag`};if(new URLSearchParams(e.search).has($("off")))return{gate:"off-switch",token:$("off"),fix:`remove ?${$("off")} from the URL`};if(e.cookie.split("; ").some(c=>c.startsWith(_.off+"=")))return{gate:"off-switch",token:_.off,fix:`clear the ${_.off} cookie`};if((e.webdriver||"Cypress"in e.globals||B(e.globals.opener))&&!("allowAutomation"in t))return{gate:"automation",token:e.webdriver?"navigator.webdriver":"window.Cypress",fix:`add ${y("allowAutomation")} if this is deliberate`,silent:!0};const o=t.mode??"auto";if(o==="off")return{gate:"mode-off",token:`${y("mode")}="off"`,fix:`set ${y("mode")}="on"`};if(o==="auto"&&t.env==="production"&&!e.inReview)return{gate:"no-review-token",token:`${y("env")}="production"`,fix:`set ${y("mode")}="on" to review production deliberately`,silent:!0};if(e.configGlobal&&"enabled"in e.configGlobal){const c=e.configGlobal.enabled;let i=c===!1;if(typeof c=="function")try{i=c()===!1}catch{i=!1}if(i)return{gate:"config-disabled",token:`${g.config}.enabled`,fix:`set ${g.config}.enabled = true`}}const n=e.configGlobal?.allowedOrigins;return Array.isArray(n)&&!n.includes(e.origin??"")?{gate:"origin-not-allowed",token:`${g.config}.allowedOrigins`,fix:`add ${e.origin??"this origin"} to ${g.config}.allowedOrigins`}:null}function B(e){try{return!!e&&typeof e=="object"&&"Cypress"in e}catch{return!1}}function F(e,t){if(!(e.host||!t))try{e.host=new URL(t,location.href).origin}catch{}}function U(){let e=null;try{e=localStorage.getItem(N)}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 x(e){return U().projects?.[e]?.holderId}const G=Symbol.for(R.original),L=Symbol.for(R.wrapped),k=()=>{};function D(e,t,r){let o;try{o=e[t]}catch{return k}if(typeof o!="function"||o[L])return k;const n=o,c=r(n);let i=!1;const a=function(...s){return i?n.apply(this,s):c.apply(this,s)};try{const s=a;s[L]=!0,s[G]=n,Object.defineProperty(a,"name",{value:n.name,configurable:!0}),Object.defineProperty(a,"length",{value:n.length,configurable:!0})}catch{}try{e[t]=a}catch{return k}return e[t]!==a?k:()=>{let s;try{s=e[t]}catch{s=void 0}if(s===a)try{e[t]=n;return}catch{}i=!0}}function E(e){try{if(typeof e=="string")return e.slice(0,512);if(e==null||typeof e!="object")return typeof e=="function"?`[Function ${e.name??""}]`:String(e);const t=e;if(typeof t.name=="string"&&typeof t.message=="string"||e instanceof Error){const r=`${String(t.name)}: ${String(t.message)}`,o=typeof t.stack=="string"?t.stack.split(`
2
2
  `).slice(0,10).join(`
3
3
  `):"";return(o?`${r}
4
- ${o}`:r).slice(0,1024)}return t.nodeType!==void 0?typeof t.tagName=="string"?`<${t.tagName.toLowerCase()}>`:"[Node]":Array.isArray(e)?`[Array(${e.length})]`:`[${Object.prototype.toString.call(e).slice(8,-1)}]`}catch{return"[unreadable]"}}function Y(e,t,r){const o=[];let n=0,c=0,i=0,a=0,s=null,d=0;const m=(f,p,u)=>{if(!(d>=3))try{const y=Date.now();if(y-c>250&&(a&&(o.push([y,"system","info",`${a} records suppressed (flood guard)`]),a=0),c=y,i=0),++i>50){a++;return}const h=[y,f,p,u];if(s){s(h);return}for(o.push(h);o.length>100;)o.shift(),n++;d=0}catch{d++}};m("navigation","info",e.location.href),e.addEventListener("error",f=>{try{const p=f.target;if(p&&p!==e&&typeof p.tagName=="string"){m("error","error",`Failed to load <${p.tagName.toLowerCase()}> ${p.src??p.href??""}`);return}const u=f,y=`${u.message??"Script error"} (${u.filename??""}:${u.lineno??0}:${u.colno??0})`,h=u.error?`
5
- ${O(u.error)}`:"";m("error","error",`${y}${h}`)}catch{d++}},{capture:!0,signal:r}),e.addEventListener("unhandledrejection",f=>{try{m("error","error",`Unhandled rejection: ${O(f.reason)}`)}catch{d++}},{signal:r});const l=[];if(t.early){let f=!1;for(const p of["error","warn"])l.push(K(e.console,p,u=>function(...y){const h=u.apply(this,y);return f||(f=!0,m("console",p,y.map(O).join(" ").slice(0,4096)),f=!1),h}))}const b=()=>{for(const f of l)f();l.length=0,s=null,o.length=0};return r.addEventListener("abort",b,{once:!0}),{drain(f){const u={records:o.slice(),dropped:n};return o.length=0,n=0,s=f,u},destroy:b}}const S="0.0.0",_=q();function q(){try{const e=location.hash.slice(1);if(!e.includes($("k")))return;const t=new URLSearchParams(e),r=t.get($("k"))??void 0;if(!r)return;t.delete($("k"));const o=t.toString(),n=location.pathname+location.search+(o?`#${o}`:"");return history.replaceState(history.state,"",n),r}catch{return}}const W=["site","host","disabled","env","mode","hotkey","allowAutomation","assetBase","theme","autoMount","storage"];function H(e){const t=e[g.config];return t&&typeof t=="object"?t:void 0}function V(e,t){const r={};for(const o of W){const n=t?.[o];(typeof n=="string"||typeof n=="number")&&(r[o]=String(n));const c=e?.getAttribute(w(o));c!=null&&(r[o]=c)}return r}function J(e,t){const r=new URL(e,t);return r.searchParams.set("cv",S),r.href}function j(e,t){if(!(e.host||!t))try{e.host=new URL(t,location.href).origin}catch{}}function X(e,t){const r=e.assetBase??window[g.assetBase];if(r)return new URL(r,location.href).href.replace(/\/?$/,"/");const o=t?.src;return o?new URL(".",o).href:new URL(".",location.href).href}function C(){const e=new Map,t=(r,o)=>void e.get(r)?.delete(o);return{on(r,o){let n=e.get(r);return n||e.set(r,n=new Set),n.add(o),()=>t(r,o)},off:t,emit(r,o){const n=e.get(r);if(n)for(const c of[...n])try{c(o)}catch(i){console.error(`[${v}] listener for "${r}" threw`,i)}document.dispatchEvent(new CustomEvent(`${P}${r}`,{detail:o,bubbles:!1,composed:!1}))}}}function z(e,t,r){let o=!1;const n=()=>{o||(o=!0,console.info(`[${v}] not activated: ${r}`))},c=C(),i={version:S,config:e,assetBase:t,state:"inert",pointerMode:"browse",activated:!1,init:()=>(n(),Promise.resolve(i)),activate:()=>(n(),Promise.resolve(null)),deactivate:()=>{},destroy:()=>{},setMode:n,setRoute:n,open:()=>(n(),Promise.resolve({ok:!1,reason:"inert"})),resync:()=>{},close:()=>{},on:c.on,off:c.off};return i}function M(e){const t=window.requestIdleCallback;typeof t=="function"?t(e,{timeout:2e3}):setTimeout(e,1)}function T(e){if(document.readyState==="complete"){M(e);return}window.addEventListener("load",()=>requestAnimationFrame(()=>requestAnimationFrame(()=>M(e))),{once:!0})}function Q(e,t,r){t.hotkey!=="off"&&document.addEventListener("keydown",o=>{if(!(!o.altKey||o.ctrlKey||o.metaKey)&&o.code==="KeyC"){if(o.preventDefault(),e.state==="active"){e.setMode(e.pointerMode==="add"?"comments":"add");return}e.activate().catch(()=>{})}},{capture:!0,signal:r})}function Z(e,t,r,o){let n=null,c,i="dormant",a=null,s=0;const d=C(),m={version:S,config:e,assetBase:t,get state(){return i},get pointerMode(){return i==="active"&&a?a.getState():"browse"},activated:!1,init(l){return l&&Object.assign(e,l),n?n.then(()=>m,()=>m):Promise.resolve(m)},activate(l){if(i==="destroyed")return Promise.resolve(null);if(a&&i!=="active"&&(i="active",d.emit("activated",{mode:a.getState()})),!n){const b=J(B.runtime,t);n=import(b).then(f=>i==="destroyed"?null:(m.activated=!0,i="active",a=f.mount(void 0,{assetBase:t,config:e,emit:d.emit,...o?{early:o}:{},..._?{reviewToken:_}:{}}),c!==void 0&&a.setRoute(c),d.emit("ready",{version:S,state:i}),d.emit("activated",{mode:a.getState()}),a)).catch(f=>{throw n=null,console.error(`[${v}] runtime failed to load from ${b}`,f),d.emit("error",{code:"runtime-load-failed",message:b,cause:f}),f})}return l?.mode?n.then(b=>(a?.setState(l.mode),b)):n},deactivate(){i!=="active"||!a||(a.closePanel(),a.setState("browse"),i="dormant",d.emit("deactivated",{}))},destroy(){if(i!=="destroyed"){r.abort(),s&&cancelAnimationFrame(s),s=0;try{a?.destroy()}catch(l){console.error(`[${v}] destroy failed`,l)}a=null,n=null,i="destroyed",m.activated=!1,d.emit("destroyed",{})}},setMode(l){if(i!=="destroyed"){if(i==="active"&&a){a.setState(l);return}m.activate({mode:l}).catch(()=>{})}},setRoute(l){c=l,a?.setRoute(l)},async open(l){return i==="destroyed"?{ok:!1,reason:"inert"}:await m.activate()?a.open(l):{ok:!1,reason:"inert"}},resync(){i!=="active"||s||(s=requestAnimationFrame(()=>{s=0,a?.refresh()}))},close(){a?.closePanel()},on:d.on,off:d.off};return Object.assign(m,{signal:r.signal})}const ee=`${P}stub-init`;function te(){if(typeof document>"u"||typeof window>"u")return;const e=performance.now(),t=document.currentScript,r=window,o=H(r),n=V(t,o),c=X(n,t);j(n,t?.src);let i="";try{i=document.cookie}catch{}const a=n.site?!!x(n.site):!1,s=F({config:n,search:location.search,cookie:i,webdriver:navigator.webdriver,globals:r,inReview:!!_||a,...o?{configGlobal:o}:{},origin:location.origin}),d=Symbol.for(E.instance),m=r[g.api];if(m?.[d]){(m.__duplicates??=[]).push({version:S,src:t?.src??""}),console.warn(`[${v}] a second copy of the script is on this page and was ignored; the first one is running. See window.${g.api}.__duplicates.`);return}const l=m===void 0?g.api:g.collisionFallback;if(l===g.collisionFallback&&console.warn(`[${v}] window.${g.api} is taken; installing at window.${g.collisionFallback}.`),s){const h=z(n,c,s.gate);h[d]=!0,r[l]=h,s.silent||console.info(`[${v}] not activated: ${s.gate} \u2014 ${s.fix}`);return}const b=new AbortController,f=o?.breadcrumbs,p=f===!1?void 0:Y(window,{early:f?.early!==!1},b.signal),u=Z(n,c,b,p);u[d]=!0,r[l]=u,ne(e),Q(u,n,u.signal);const y=new URLSearchParams(location.search).has($("t"));(n.mode==="on"||y||_||a)&&n.autoMount!=="false"?T(()=>void u.activate().catch(()=>{})):n.site&&n.host&&n.mode!=="off"&&n.autoMount!=="false"&&fetch(`${n.host.replace(/\/+$/,"")}/api/v1/projects/${n.site}/config`).then(h=>h.ok?h.json():null).then(h=>{h?.writeMode==="open"&&h.writable!==!1&&T(()=>void u.activate().catch(()=>{}))}).catch(()=>{})}function ne(e){try{performance.measure(ee,{start:e})}catch{}}return te(),A.inferHost=j,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),A})({});
4
+ ${o}`:r).slice(0,1024)}return t.nodeType!==void 0?typeof t.tagName=="string"?`<${t.tagName.toLowerCase()}>`:"[Node]":Array.isArray(e)?`[Array(${e.length})]`:`[${Object.prototype.toString.call(e).slice(8,-1)}]`}catch{return"[unreadable]"}}function K(e,t,r){const o=[];let n=0,c=0,i=0,a=0,s=null,d=0;const m=(f,p,u)=>{if(!(d>=3))try{const w=Date.now();if(w-c>250&&(a&&(o.push([w,"system","info",`${a} records suppressed (flood guard)`]),a=0),c=w,i=0),++i>50){a++;return}const h=[w,f,p,u];if(s){s(h);return}for(o.push(h);o.length>100;)o.shift(),n++;d=0}catch{d++}};m("navigation","info",e.location.href),e.addEventListener("error",f=>{try{const p=f.target;if(p&&p!==e&&typeof p.tagName=="string"){m("error","error",`Failed to load <${p.tagName.toLowerCase()}> ${p.src??p.href??""}`);return}const u=f,w=`${u.message??"Script error"} (${u.filename??""}:${u.lineno??0}:${u.colno??0})`,h=u.error?`
5
+ ${E(u.error)}`:"";m("error","error",`${w}${h}`)}catch{d++}},{capture:!0,signal:r}),e.addEventListener("unhandledrejection",f=>{try{m("error","error",`Unhandled rejection: ${E(f.reason)}`)}catch{d++}},{signal:r});const l=[];if(t.early){let f=!1;for(const p of["error","warn"])l.push(D(e.console,p,u=>function(...w){const h=u.apply(this,w);return f||(f=!0,m("console",p,w.map(E).join(" ").slice(0,4096)),f=!1),h}))}const b=()=>{for(const f of l)f();l.length=0,s=null,o.length=0};return r.addEventListener("abort",b,{once:!0}),{drain(f){const u={records:o.slice(),dropped:n};return o.length=0,n=0,s=f,u},destroy:b}}const S="0.0.0",A=Y();function Y(){try{const e=location.hash.slice(1);if(!e.includes($("k")))return;const t=new URLSearchParams(e),r=t.get($("k"))??void 0;if(!r)return;t.delete($("k"));const o=t.toString(),n=location.pathname+location.search+(o?`#${o}`:"");return history.replaceState(history.state,"",n),r}catch{return}}const q=["site","host","disabled","env","mode","hotkey","allowAutomation","assetBase","theme","autoMount","storage"];function W(e){const t=e[g.config];return t&&typeof t=="object"?t:void 0}function V(e,t){const r={};for(const o of q){const n=t?.[o];(typeof n=="string"||typeof n=="number")&&(r[o]=String(n));const c=e?.getAttribute(y(o));c!=null&&(r[o]=c)}return r}function H(e,t){const r=new URL(e,t);return r.searchParams.set("cv",S),r.href}function J(e,t){const r=e.assetBase??window[g.assetBase];if(r)return new URL(r,location.href).href.replace(/\/?$/,"/");const o=t?.src;return o?new URL(".",o).href:new URL(".",location.href).href}function P(){const e=new Map,t=(r,o)=>void e.get(r)?.delete(o);return{on(r,o){let n=e.get(r);return n||e.set(r,n=new Set),n.add(o),()=>t(r,o)},off:t,emit(r,o){const n=e.get(r);if(n)for(const c of[...n])try{c(o)}catch(i){console.error(`[${v}] listener for "${r}" threw`,i)}document.dispatchEvent(new CustomEvent(`${O}${r}`,{detail:o,bubbles:!1,composed:!1}))}}}function X(e,t,r){let o=!1;const n=()=>{o||(o=!0,console.info(`[${v}] not activated: ${r}`))},c=P(),i={version:S,config:e,assetBase:t,state:"inert",pointerMode:"browse",activated:!1,init:()=>(n(),Promise.resolve(i)),activate:()=>(n(),Promise.resolve(null)),deactivate:()=>{},destroy:()=>{},setMode:n,setRoute:n,open:()=>(n(),Promise.resolve({ok:!1,reason:"inert"})),resync:()=>{},close:()=>{},on:c.on,off:c.off};return i}function C(e){const t=window.requestIdleCallback;typeof t=="function"?t(e,{timeout:2e3}):setTimeout(e,1)}function j(e){if(document.readyState==="complete"){C(e);return}window.addEventListener("load",()=>requestAnimationFrame(()=>requestAnimationFrame(()=>C(e))),{once:!0})}function z(e,t,r){t.hotkey!=="off"&&document.addEventListener("keydown",o=>{if(!(!o.altKey||o.ctrlKey||o.metaKey)&&o.code==="KeyC"){if(o.preventDefault(),e.state==="active"){e.setMode(e.pointerMode==="add"?"comments":"add");return}e.activate().catch(()=>{})}},{capture:!0,signal:r})}function Q(e,t,r,o){let n=null,c,i="dormant",a=null,s=0;const d=P(),m={version:S,config:e,assetBase:t,get state(){return i},get pointerMode(){return i==="active"&&a?a.getState():"browse"},activated:!1,init(l){return l&&Object.assign(e,l),n?n.then(()=>m,()=>m):Promise.resolve(m)},activate(l){if(i==="destroyed")return Promise.resolve(null);if(a&&i!=="active"&&(i="active",d.emit("activated",{mode:a.getState()})),!n){const b=H(T.runtime,t);n=import(b).then(f=>i==="destroyed"?null:(m.activated=!0,i="active",a=f.mount(void 0,{assetBase:t,config:e,emit:d.emit,...o?{early:o}:{},...A?{reviewToken:A}:{}}),c!==void 0&&a.setRoute(c),d.emit("ready",{version:S,state:i}),d.emit("activated",{mode:a.getState()}),a)).catch(f=>{throw n=null,console.error(`[${v}] runtime failed to load from ${b}`,f),d.emit("error",{code:"runtime-load-failed",message:b,cause:f}),f})}return l?.mode?n.then(b=>(a?.setState(l.mode),b)):n},deactivate(){i!=="active"||!a||(a.closePanel(),a.setState("browse"),i="dormant",d.emit("deactivated",{}))},destroy(){if(i!=="destroyed"){r.abort(),s&&cancelAnimationFrame(s),s=0;try{a?.destroy()}catch(l){console.error(`[${v}] destroy failed`,l)}a=null,n=null,i="destroyed",m.activated=!1,d.emit("destroyed",{})}},setMode(l){if(i!=="destroyed"){if(i==="active"&&a){a.setState(l);return}m.activate({mode:l}).catch(()=>{})}},setRoute(l){c=l,a?.setRoute(l)},async open(l){return i==="destroyed"?{ok:!1,reason:"inert"}:await m.activate()?a.open(l):{ok:!1,reason:"inert"}},resync(){i!=="active"||s||(s=requestAnimationFrame(()=>{s=0,a?.refresh()}))},close(){a?.closePanel()},on:d.on,off:d.off};return Object.assign(m,{signal:r.signal})}const Z=`${O}stub-init`;function ee(){if(typeof document>"u"||typeof window>"u")return;const e=performance.now(),t=document.currentScript,r=window,o=W(r),n=V(t,o),c=J(n,t);F(n,t?.src);let i="";try{i=document.cookie}catch{}const a=n.site?!!x(n.site):!1,s=I({config:n,search:location.search,cookie:i,webdriver:navigator.webdriver,globals:r,inReview:!!A||a,...o?{configGlobal:o}:{},origin:location.origin}),d=Symbol.for(R.instance),m=r[g.api];if(m?.[d]){(m.__duplicates??=[]).push({version:S,src:t?.src??""}),console.warn(`[${v}] a second copy of the script is on this page and was ignored; the first one is running. See window.${g.api}.__duplicates.`);return}const l=m===void 0?g.api:g.collisionFallback;if(l===g.collisionFallback&&console.warn(`[${v}] window.${g.api} is taken; installing at window.${g.collisionFallback}.`),s){const h=X(n,c,s.gate);h[d]=!0,r[l]=h,s.silent||console.info(`[${v}] not activated: ${s.gate} \u2014 ${s.fix}`);return}const b=new AbortController,f=o?.breadcrumbs,p=f===!1?void 0:K(window,{early:f?.early!==!1},b.signal),u=Q(n,c,b,p);u[d]=!0,r[l]=u,te(e),z(u,n,u.signal);const w=new URLSearchParams(location.search).has($("t"));(n.mode==="on"||w||A||a)&&n.autoMount!=="false"?j(()=>void u.activate().catch(()=>{})):n.site&&n.host&&n.mode!=="off"&&n.autoMount!=="false"&&fetch(`${n.host.replace(/\/+$/,"")}/api/v1/projects/${n.site}/config`).then(h=>h.ok?h.json():null).then(h=>{h?.writeMode==="open"&&h.writable!==!1&&j(()=>void u.activate().catch(()=>{}))}).catch(()=>{})}function te(e){try{performance.measure(Z,{start:e})}catch{}}ee()})();
@@ -1,2 +1,2 @@
1
- var J,v,$e,D,we,ke,Se,ie,X,B,Ce,ce,le,_e,Q={},Z=[],it=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,ee=Array.isArray;function N(e,t){for(var n in t)e[n]=t[n];return e}function ue(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function ct(e,t,n){var r,a,o,c={};for(o in t)o=="key"?r=t[o]:o=="ref"?a=t[o]:c[o]=t[o];if(arguments.length>2&&(c.children=arguments.length>3?J.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(o in e.defaultProps)c[o]===void 0&&(c[o]=e.defaultProps[o]);return te(e,c,r,a,null)}function te(e,t,n,r,a){var o={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++$e,__i:-1,__u:0};return a==null&&v.vnode!=null&&v.vnode(o),o}function z(e){return e.children}function ne(e,t){this.props=e,this.context=t}function F(e,t){if(t==null)return e.__?F(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?F(e):null}function lt(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,r=[],a=[],o=N({},t);o.__v=t.__v+1,v.vnode&&v.vnode(o),de(e.__P,o,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,r,n??F(t),!!(32&t.__u),a),o.__v=t.__v,o.__.__k[o.__i]=o,Le(r,o,a),t.__e=t.__=null,o.__e!=n&&Te(o)}}function Te(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),Te(e)}function Ee(e){(!e.__d&&(e.__d=!0)&&D.push(e)&&!oe.__r++||we!=v.debounceRendering)&&((we=v.debounceRendering)||ke)(oe)}function oe(){try{for(var e,t=1;D.length;)D.length>t&&D.sort(Se),e=D.shift(),t=D.length,lt(e)}finally{D.length=oe.__r=0}}function Ae(e,t,n,r,a,o,c,l,p,i,d){var b,s,_,$,T,C,y=r&&r.__k||Z,m=t.length;for(p=_t(n,t,y,p,m),b=0;b<m;b++)(_=n.__k[b])!=null&&(s=_.__i!=-1&&y[_.__i]||Q,_.__i=b,C=de(e,_,s,a,o,c,l,p,i,d),$=_.__e,_.ref&&s.ref!=_.ref&&(s.ref&&pe(s.ref,null,_),d.push(_.ref,_.__c||$,_)),T==null&&$!=null&&(T=$),4&_.__u?(p=He(_,p,e),s.__e&&(s.__e=null)):typeof _.type=="function"&&C!==void 0?p=C:$&&(p=$.nextSibling),_.__u&=-7);return n.__e=T,p}function _t(e,t,n,r,a){var o,c,l,p,i,d=n.length,b=d,s=0;for(e.__k=new Array(a),o=0;o<a;o++)(c=t[o])!=null&&typeof c!="boolean"&&typeof c!="function"?(typeof c=="string"||typeof c=="number"||typeof c=="bigint"||c.constructor==String?c=e.__k[o]=te(null,c,null,null,null):ee(c)?c=e.__k[o]=te(z,{children:c},null,null,null):c.constructor===void 0&&c.__b>0?c=e.__k[o]=te(c.type,c.props,c.key,c.ref?c.ref:null,c.__v):e.__k[o]=c,p=o+s,c.__=e,c.__b=e.__b+1,l=null,(i=c.__i=ut(c,n,p,b))!=-1&&(b--,(l=n[i])&&(l.__u|=2)),l==null||l.__v==null?(i==-1&&(a>d?s--:a<d&&s++),typeof c.type!="function"&&(c.__u|=4)):i!=p&&(i==p-1?s--:i==p+1?s++:(i>p?s--:s++,c.__u|=4))):e.__k[o]=null;if(b)for(o=0;o<d;o++)(l=n[o])!=null&&(2&l.__u)==0&&(l.__e==r&&(r=F(l)),Ie(l,l));return r}function He(e,t,n){var r,a;if(typeof e.type=="function"){for(r=e.__k,a=0;r&&a<r.length;a++)r[a]&&(r[a].__=e,t=He(r[a],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=F(e)),t=n.insertBefore(e.__e,t||null));do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function ut(e,t,n,r){var a,o,c,l=e.key,p=e.type,i=t[n],d=i!=null&&(2&i.__u)==0;if(i===null&&l==null||d&&l==i.key&&p==i.type)return n;if(r>(d?1:0)){for(a=n-1,o=n+1;a>=0||o<t.length;)if((i=t[c=a>=0?a--:o++])!=null&&(2&i.__u)==0&&l==i.key&&p==i.type)return c}return-1}function Me(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||it.test(t)?n:n+"px"}function re(e,t,n,r,a){var o,c;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof r=="string"&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||Me(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||Me(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")o=t!=(t=t.replace(Ce,"$1")),c=t.toLowerCase(),t=c in e||t=="onFocusOut"||t=="onFocusIn"?c.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+o]=n,n?r?n[B]=r[B]:(n[B]=ce,e.addEventListener(t,o?_e:le,o)):e.removeEventListener(t,o?_e:le,o);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Pe(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[X]==null)t[X]=ce++;else if(t[X]<n[B])return;return n(v.event?v.event(t):t)}}}function de(e,t,n,r,a,o,c,l,p,i){var d,b,s,_,$,T,C,y,m,w,I,M,L,O,R,A,H=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(p=!!(32&n.__u),o=[l=t.__e=n.__e]),(d=v.__b)&&d(t);e:if(typeof H=="function"){b=c.length;try{if(m=t.props,w=H.prototype&&H.prototype.render,I=(d=H.contextType)&&r[d.__c],M=d?I?I.props.value:d.__:r,n.__c?y=(s=t.__c=n.__c).__=s.__E:(w?t.__c=s=new H(m,M):(t.__c=s=new ne(m,M),s.constructor=H,s.render=pt),I&&I.sub(s),s.state||(s.state={}),s.__n=r,_=s.__d=!0,s.__h=[],s._sb=[]),w&&s.__s==null&&(s.__s=s.state),w&&H.getDerivedStateFromProps!=null&&(s.__s==s.state&&(s.__s=N({},s.__s)),N(s.__s,H.getDerivedStateFromProps(m,s.__s))),$=s.props,T=s.state,s.__v=t,_)w&&H.getDerivedStateFromProps==null&&s.componentWillMount!=null&&s.componentWillMount(),w&&s.componentDidMount!=null&&s.__h.push(s.componentDidMount);else{if(w&&H.getDerivedStateFromProps==null&&m!==$&&s.componentWillReceiveProps!=null&&s.componentWillReceiveProps(m,M),t.__v==n.__v||!s.__e&&s.shouldComponentUpdate!=null&&s.shouldComponentUpdate(m,s.__s,M)===!1){t.__v!=n.__v&&(s.props=m,s.state=s.__s,s.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(P){P&&(P.__=t)}),Z.push.apply(s.__h,s._sb),s._sb=[],s.__h.length&&c.push(s),l=F(n);break e}s.componentWillUpdate!=null&&s.componentWillUpdate(m,s.__s,M),w&&s.componentDidUpdate!=null&&s.__h.push(function(){s.componentDidUpdate($,T,C)})}if(s.context=M,s.props=m,s.__P=e,s.__e=!1,L=v.__r,O=0,w)s.state=s.__s,s.__d=!1,L&&L(t),d=s.render(s.props,s.state,s.context),Z.push.apply(s.__h,s._sb),s._sb=[];else do s.__d=!1,L&&L(t),d=s.render(s.props,s.state,s.context),s.state=s.__s;while(s.__d&&++O<25);s.state=s.__s,s.getChildContext!=null&&(r=N(N({},r),s.getChildContext())),w&&!_&&s.getSnapshotBeforeUpdate!=null&&(C=s.getSnapshotBeforeUpdate($,T)),R=d!=null&&d.type===z&&d.key==null?De(d.props.children):d,l=Ae(e,ee(R)?R:[R],t,n,r,a,o,c,l,p,i),s.base=t.__e,t.__u&=-161,s.__h.length&&c.push(s),y&&(s.__E=s.__=null)}catch(P){if(c.length=b,t.__v=null,p||o!=null){if(P.then){for(t.__u|=p?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;o!=null&&(o[o.indexOf(l)]=null),t.__e=l}else if(o!=null)for(A=o.length;A--;)ue(o[A])}else t.__e=n.__e;t.__k==null&&(t.__k=n.__k||[]),P.then||Ne(t),v.__e(P,t,n)}}else o==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):l=t.__e=dt(n.__e,t,n,r,a,o,c,p,i);return(d=v.diffed)&&d(t),128&t.__u?void 0:l}function Ne(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Ne))}function Le(e,t,n){for(var r=0;r<n.length;r++)pe(n[r],n[++r],n[++r]);v.__c&&v.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(o){o.call(a)})}catch(o){v.__e(o,a.__v)}})}function De(e){return typeof e!="object"||e==null||e.__b>0?e:ee(e)?e.map(De):e.constructor!==void 0?null:N({},e)}function dt(e,t,n,r,a,o,c,l,p){var i,d,b,s,_,$,T,C=n.props||Q,y=t.props,m=t.type;if(m=="svg"?a="http://www.w3.org/2000/svg":m=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),o!=null){for(i=0;i<o.length;i++)if((_=o[i])&&"setAttribute"in _==!!m&&(m?_.localName==m:_.nodeType==3)){e=_,o[i]=null;break}}if(e==null){if(m==null)return document.createTextNode(y);e=document.createElementNS(a,m,y.is&&y),l&&(v.__m&&v.__m(t,o),l=!1),o=null}if(m==null)C===y||l&&e.data==y||(e.data=y);else{if(o=m=="textarea"&&y.defaultValue!=null?null:o&&J.call(e.childNodes),!l&&o!=null)for(C={},i=0;i<e.attributes.length;i++)C[(_=e.attributes[i]).name]=_.value;for(i in C)_=C[i],i=="dangerouslySetInnerHTML"?b=_:i=="children"||i in y||i=="value"&&"defaultValue"in y||i=="checked"&&"defaultChecked"in y||re(e,i,null,_,a);for(i in y)_=y[i],i=="children"?s=_:i=="dangerouslySetInnerHTML"?d=_:i=="value"?$=_:i=="checked"?T=_:l&&typeof _!="function"||C[i]===_||re(e,i,_,C[i],a);if(d)l||b&&(d.__html==b.__html||d.__html==e.innerHTML)||(e.innerHTML=d.__html),t.__k=[];else if(b&&(e.innerHTML=""),Ae(t.type=="template"?e.content:e,ee(s)?s:[s],t,n,r,m=="foreignObject"?"http://www.w3.org/1999/xhtml":a,o,c,o?o[0]:n.__k&&F(n,0),l,p),o!=null)for(i=o.length;i--;)ue(o[i]);l&&m!="textarea"||(i="value",m=="progress"&&$==null?e.removeAttribute("value"):$!=null&&($!==e[i]||m=="progress"&&!$||m=="option"&&$!=C[i])&&re(e,i,$,C[i],a),i="checked",T!=null&&T!=e[i]&&re(e,i,T,C[i],a))}return e}function pe(e,t,n){try{if(typeof e=="function"){var r=typeof e.__u=="function";r&&e.__u(),r&&t==null||(e.__u=e(t))}else e.current=t}catch(a){v.__e(a,n)}}function Ie(e,t,n){var r,a;if(v.unmount&&v.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||pe(r,null,t)),(r=e.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(o){v.__e(o,t)}r.base=r.__P=r.__n=null}if(r=e.__k)for(a=0;a<r.length;a++)r[a]&&Ie(r[a],t,n||typeof e.type!="function");n||ue(e.__e),e.__c=e.__=e.__e=void 0}function pt(e,t,n){return this.constructor(e,n)}function Re(e,t,n){var r,a,o,c;t==document&&(t=document.documentElement),v.__&&v.__(e,t),a=(r=!1)?null:t.__k,o=[],c=[],de(t,e=t.__k=ct(z,null,[e]),a||Q,Q,t.namespaceURI,a?null:t.firstChild?J.call(t.childNodes):null,o,a?a.__e:t.firstChild,r,c),Le(o,e,c),e.props.children=null}J=Z.slice,v={__e:function(e,t,n,r){for(var a,o,c;t=t.__;)if((a=t.__c)&&!a.__)try{if((o=a.constructor)&&o.getDerivedStateFromError!=null&&(a.setState(o.getDerivedStateFromError(e)),c=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,r||{}),c=a.__d),c)return a.__E=a}catch(l){e=l}throw e}},$e=0,ne.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=N({},this.state),typeof e=="function"&&(e=e(N({},n),this.props)),e&&N(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ee(this))},ne.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ee(this))},ne.prototype.render=z,D=[],ke=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Se=function(e,t){return e.__v.__b-t.__v.__b},oe.__r=0,ie=Math.random().toString(8),X="__d"+ie,B="__a"+ie,Ce=/(PointerCapture)$|Capture$/i,ce=0,le=Pe(!1),_e=Pe(!0);var ft=0;function g(e,t,n,r,a,o){t||(t={});var c,l,p=t;if("ref"in p)for(l in p={},t)l=="ref"?c=t[l]:p[l]=t[l];var i={type:e,props:p,key:n,ref:c,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--ft,__i:-1,__u:0,__source:a,__self:o};if(typeof e=="function"&&(c=e.defaultProps))for(l in c)p[l]===void 0&&(p[l]=c[l]);return v.vnode&&v.vnode(i),i}var Y,k,fe,Fe,se=0,Oe=[],S=v,ze=S.__b,Ue=S.__r,We=S.diffed,je=S.__c,qe=S.unmount,Be=S.__;function he(e,t){S.__h&&S.__h(k,e,se||t),se=0;var n=k.__H||(k.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function U(e){return se=1,ht(Ve,e)}function ht(e,t,n){var r=he(Y++,2);if(r.t=e,!r.__c&&(r.__=[Ve(void 0,t),function(l){var p=r.__N?r.__N[0]:r.__[0],i=r.t(p,l);p!==i&&(r.__N=[i,r.__[1]],r.__c.setState({}))}],r.__c=k,!k.__f)){var a=function(l,p,i){if(!r.__c.__H)return!0;var d=!1,b=r.__c.props!==l;if(r.__c.__H.__.some(function(_){if(_.__N){d=!0;var $=_.__[0];_.__=_.__N,_.__N=void 0,$!==_.__[0]&&(b=!0)}}),o){var s=o.call(this,l,p,i);return d?s||b:s}return!d||b};k.__f=!0;var o=k.shouldComponentUpdate,c=k.componentWillUpdate;k.componentWillUpdate=function(l,p,i){if(this.__e){var d=o;o=void 0,a(l,p,i),o=d}c&&c.call(this,l,p,i)},k.shouldComponentUpdate=a}return r.__N||r.__}function me(e,t){var n=he(Y++,3);!S.__s&&Ke(n.__H,t)&&(n.__=e,n.u=t,k.__H.__h.push(n))}function K(e){return se=5,mt(function(){return{current:e}},[])}function mt(e,t){var n=he(Y++,7);return Ke(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function gt(){for(var e;e=Oe.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(ae),t.__h.some(ge),t.__h=[]}catch(n){t.__h=[],S.__e(n,e.__v)}}}S.__b=function(e){k=null,ze&&ze(e)},S.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Be&&Be(e,t)},S.__r=function(e){Ue&&Ue(e),Y=0;var t=(k=e.__c).__H;t&&(fe===k?(t.__h=[],k.__h=[],t.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.some(ae),t.__h.some(ge),t.__h=[],Y=0)),fe=k},S.diffed=function(e){We&&We(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Oe.push(t)!==1&&Fe===S.requestAnimationFrame||((Fe=S.requestAnimationFrame)||vt)(gt)),t.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),fe=k=null},S.__c=function(e,t){t.some(function(n){try{n.__h.some(ae),n.__h=n.__h.filter(function(r){return!r.__||ge(r)})}catch(r){t.some(function(a){a.__h&&(a.__h=[])}),t=[],S.__e(r,n.__v)}}),je&&je(e,t)},S.unmount=function(e){qe&&qe(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(r){try{ae(r)}catch(a){t=a}}),n.__H=void 0,t&&S.__e(t,n.__v))};var Ye=typeof requestAnimationFrame=="function";function vt(e){var t,n=function(){clearTimeout(r),Ye&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Ye&&(t=requestAnimationFrame(n))}function ae(e){var t=k,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),k=t}function ge(e){var t=k;e.__c=e.__(),k=t}function Ke(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function Ve(e,t){return typeof t=="function"?t(e):t}const bt="Snagset",yt="Snagset",xt="Snag",$t="Snags",wt={anchor:"data-snag-anchor",ignore:"data-snag-ignore",mask:"data-snag-mask",nomask:"data-snag-nomask",src:"data-snag-src",component:"data-snag-component"},kt=e=>wt[e],f={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"},St=e=>`var(${f[e]})`,Ge="snag:disclosure:v1",Je="snag:identity",Ct="data-snag-theme";function Xe(){let e=null;try{e=localStorage.getItem(Je)}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 Tt(e){try{localStorage.setItem(Je,JSON.stringify(e))}catch{}}function Et(){const e=Xe();return{name:typeof e.name=="string"?e.name:"",...e.email?{email:e.email}:{}}}function At(e){const t=Xe();Tt({...t,name:e.name,...e.email?{email:e.email}:{}})}function Ht(e){const t=window.visualViewport;if(!t)return;let n=0,r=0;const a=()=>{n=0;const l=Math.max(0,Math.round(window.innerHeight-t.height-t.offsetTop));e.style.setProperty(f.kb,`${l}px`)},o=()=>{n||(n=requestAnimationFrame(a))},c=()=>{clearTimeout(r),r=window.setTimeout(a,300)};return a(),t.addEventListener("resize",o),t.addEventListener("scroll",o),window.addEventListener("orientationchange",o),e.addEventListener("focusout",c),()=>{n&&cancelAnimationFrame(n),clearTimeout(r),t.removeEventListener("resize",o),t.removeEventListener("scroll",o),window.removeEventListener("orientationchange",o),e.removeEventListener("focusout",c)}}const Mt={product:bt,set:yt,item:xt,items:$t};function Pt(e){return(t,n)=>(e[t]??"").replace(/\{(\w+)\}/g,(r,a)=>{const o=n?.[a]??Mt[a];return o===void 0?r:String(o)})}const Nt=e=>new Intl.NumberFormat().format(e),Lt={"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}"},Dt={open:{colour:"#4F6EF7"},progress:{colour:"#F59E0B"},review:{colour:"#8B5CF6"},resolved:{colour:"#10B981"}},u=Object.fromEntries(Object.keys(f).map(e=>[e,St(e)])),It=Object.entries(Dt).map(([e,t])=>` ${f[`status${e[0].toUpperCase()}${e.slice(1)}`]}:${t.colour};`).join(`
2
- `);`${u.font}${u.fg}${f.font}${f.accent}${f.bg}${f.fg}${f.muted}${f.border}${f.radius}${f.shadow}${f.z}${f.motion}${f.surface}${u.fg}${u.bg}${f.sunken}${u.fg}${u.bg}${f.hover}${u.fg}${u.bg}${f.onAccent}${f.focus}${u.accent}${u.fg}${f.disabled}${u.muted}${u.bg}${It}${f.anchorOrphan}${Ct}${f.accent}${f.onAccent}${f.bg}${f.fg}${f.muted}${f.border}${f.shadow}${f.motion}${f.bg}${f.fg}${f.muted}${f.border}${f.accent}${f.onAccent}${f.surface}${f.sunken}${f.hover}${f.focus}${f.disabled}${f.shadow}${f.anchorOrphan}`;const Rt={composer:8},Qe=new WeakMap;function Ze(e,t,n){let r=Qe.get(e);if(r||Qe.set(e,r=new Set),r.has(t))return;r.add(t);try{const c=new CSSStyleSheet;c.replaceSync(n),e.adoptedStyleSheets=[...e.adoptedStyleSheets,c];return}catch{}const o=(e.ownerDocument??document).createElement("style");o.setAttribute(`data-snag-${t}`,""),o.textContent=n,e.appendChild(o)}const Ft=` .snag-input,.snag-text{width:100%;box-sizing:border-box;background:${u.surface};color:inherit;border:1px solid ${u.border};border-radius:${u.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 ${u.focus};outline-offset:1px;border-color:transparent}.snag-input--bad{border-color:${u.anchorOrphan}}.snag-note{margin:-2px 0 0;color:${u.anchorOrphan};font-size:11px;line-height:1.35}.snag-note.snag-dim{color:${u.muted}}.snag-actions{display:flex;justify-content:flex-end;gap:6px}.snag-actions button{appearance:none;border:0;border-radius:calc(${u.radius} - 1px);padding:7px 13px;font:inherit;cursor:pointer;min-height:32px;transition:background ${u.motion}}.snag-cancel{background:transparent;color:${u.muted}}.snag-armed{color:${u.anchorOrphan};font-weight:600}.snag-cancel:hover{background:${u.hover};color:inherit}.snag-send{background:${u.accent};color:${u.onAccent};font-weight:600}.snag-send:disabled{opacity:.45;cursor:not-allowed}.snag-actions button:focus-visible{outline:2px solid ${u.focus};outline-offset:2px}`;function Ot(e,t,n){const[r,a]=U(!1);return me(()=>{if(!r)return;const o=setTimeout(()=>a(!1),3e3);return()=>clearTimeout(o)},[r]),{armed:r,press(){if(r||t&&!t()){a(!1),e();return}a(!0),n?.()}}}const zt={"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}"},Ut={"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.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?"},Wt={...Lt,...zt,...Ut},x=Pt(Wt),ve=1e4,jt=9e3,qt=e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim());let et=!1;function Bt(){if(et)return!0;try{return localStorage.getItem(Ge)==="1"}catch{return!1}}function Yt({at:e,label:t,onSend:n,onCancel:r,onRetarget:a,onShotOptIn:o,onDraft:c,initialBody:l,initialName:p,initialEmail:i,crumbsOn:d,quote:b,shotsOn:s,serverHost:_}){const $=Et(),[T,C]=U($.name||(p??"")),[y,m]=U($.email??i??""),[w,I]=U(l??""),M=K(null),L=K(null),O=K(null),[R]=U(!$.name),[A,H]=U(Bt),P=K(null),tt=()=>{et=!0;try{localStorage.setItem(Ge,"1")}catch{}H(!0)},W=window.matchMedia?.("(pointer: coarse)").matches??!1,nt=K(performance.now()).current;me(()=>{if(W)return;const h=O.current,E=h?.getBoundingClientRect();if(h&&E&&(E.bottom>innerHeight-8&&(h.style.top=`${Math.max(8,innerHeight-E.height-8)}px`),E.right>innerWidth-8&&(h.style.left=`${Math.max(8,innerWidth-E.width-8)}px`)),!A){P.current?.focus();return}(R?L:M).current?.focus()},[A]),me(()=>{const h=O.current;if(h)return Ht(h)},[]);const j=y.trim().length>0&&!qt(y),be=w.trim().length>0&&T.trim().length>0&&!j;function ye(){if(!be)return;const h={name:T.trim(),...y.trim()?{email:y.trim()}:{}};At(h),n(w.trim(),h.name,h.email)}const{armed:V,press:G}=Ot(r,()=>w.trim().length>0,()=>M.current?.focus()),ot=h=>{I(h),c?.(h,T,y)},xe=300,rt=Math.min(Math.max(8,e.x+14),innerWidth-xe-8),st=Math.min(Math.max(8,e.y+14),innerHeight-198);return g(z,{children:[W&&g("div",{class:"snag-scrim","aria-hidden":"true",onClick:()=>{performance.now()-nt>400&&G()}}),g("div",{ref:O,class:"snag-composer",role:"dialog","aria-label":x("composer.aria"),style:{left:`${rt}px`,top:`${st}px`,width:`${xe}px`},onKeyDown:h=>{h.key==="Escape"&&(h.stopPropagation(),G()),h.key==="Enter"&&(h.metaKey||h.ctrlKey)&&(h.preventDefault(),ye())},children:[W&&g("div",{class:"snag-grab","aria-hidden":"true",onPointerDown:h=>{const E=h.clientY,q=h.currentTarget;try{q.setPointerCapture(h.pointerId)}catch{}q.onpointermove=at=>{at.clientY-E>56&&(q.onpointermove=null,G())},q.onpointerup=()=>q.onpointermove=null}}),g("div",{class:"snag-head",children:[W&&a&&A&&g("span",{class:"snag-step",children:[g("button",{type:"button","aria-label":x("composer.parent"),onClick:()=>a("up"),children:"\u25B2"}),g("button",{type:"button","aria-label":x("composer.child"),onClick:()=>a("down"),children:"\u25BC"})]}),g("p",{class:"snag-target",title:t,children:t}),g("button",{type:"button",class:`snag-dismiss${V?" snag-armed":""}`,"aria-label":x(V?"composer.discard.sure":"action.cancel"),title:x(V?"composer.discard.sure":"action.cancel"),onClick:G,children:V?x("action.discard"):"\u2715"})]}),!A&&g("div",{class:"snag-disclose",children:[g("p",{class:"snag-disclose-title",children:x("disclosure.title")}),g("p",{children:x("disclosure.always")}),g("p",{children:x(d?"disclosure.crumbs.on":"disclosure.crumbs.off")}),g("p",{children:s?x("disclosure.screenshot.on",{maskAttr:kt("mask")}):x("disclosure.screenshot.off")}),g("p",{children:_?x("disclosure.retention.server",{host:_}):x("disclosure.retention")}),g("div",{class:"snag-actions",children:g("button",{type:"button",ref:P,class:"snag-send snag-primary",onClick:tt,children:x("disclosure.ack")})})]}),A&&R&&g(z,{children:[g("input",{ref:L,class:"snag-input",type:"text",placeholder:x("composer.name"),"aria-label":x("composer.name"),value:T,onInput:h=>{const E=h.target.value;C(E),w.trim()&&c?.(w,E,y)}}),g("input",{class:`snag-input${j?" snag-input--bad":""}`,type:"email",inputMode:"email",autocomplete:"email",placeholder:x("composer.email"),"aria-label":x("composer.email"),"aria-invalid":j?"true":void 0,"aria-describedby":j?"snag-email-note":void 0,value:y,onInput:h=>{const E=h.target.value;m(E),w.trim()&&c?.(w,T,E)}}),j&&g("p",{class:"snag-note",id:"snag-email-note",children:x("composer.email.bad")})]}),A&&b&&g("blockquote",{class:"snag-quote",children:b}),A&&g("textarea",{ref:M,class:"snag-text",placeholder:x("composer.body.placeholder"),"aria-label":x("composer.body"),maxLength:ve,rows:3,enterkeyhint:"enter",value:w,onInput:h=>{const E=h.target;E.style.height="auto",E.style.height=`${Math.min(E.scrollHeight,128)}px`,ot(E.value)}}),A&&w.length>=jt&&g("p",{class:`snag-note${w.length>=ve?"":" snag-dim"}`,"aria-live":"polite",children:x("composer.chars",{n:Nt(ve-w.length)})}),A&&W&&o&&g("label",{class:"snag-shotopt",children:[g("input",{type:"checkbox",onChange:h=>o(h.currentTarget.checked)})," ",x("composer.shot")]}),A&&g("div",{class:"snag-actions",children:g("button",{type:"button",class:"snag-send snag-primary",disabled:!be,onClick:ye,children:x("action.post")})})]})]})}const Kt=` .snag-composer{position:fixed;box-sizing:border-box;z-index:${Rt.composer};background:${u.bg};color:${u.fg};border:1px solid ${u.border};border-radius:calc(${u.radius} + 4px);padding:12px;box-shadow:${u.shadow};pointer-events:auto;font:400 13px/1.45 ${u.font};display:flex;flex-direction:column;gap:8px}.snag-head{display:flex;align-items:center;gap:8px}.snag-target{margin:0;flex:1 1 auto;min-width:0;color:${u.muted};font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.snag-dismiss{flex:0 0 auto;appearance:none;border:0;background:transparent;color:${u.muted};font:inherit;font-size:12px;line-height:1;padding:6px;margin:-6px -4px -6px 0;border-radius:calc(${u.radius} - 2px);cursor:pointer}.snag-dismiss:hover{color:${u.fg};background:${u.hover}}.snag-dismiss:focus-visible{outline:2px solid ${u.focus};outline-offset:1px}.snag-dismiss.snag-armed{color:${u.anchorOrphan};font-weight:600;font-size:11px}.snag-disclose{display:flex;flex-direction:column;gap:6px}.snag-disclose p{margin:0;font-size:12px;line-height:1.5;color:${u.fg}}.snag-disclose .snag-disclose-title{font-weight:600;font-size:12px}.snag-disclose p:not(.snag-disclose-title){color:${u.muted}}.snag-quote{margin:0;padding:6px 10px;border-inline-start:3px solid ${u.accent};background:${u.surface};font-size:12px;color:${u.muted}}.snag-actions .snag-primary{flex:1 1 auto;justify-content:center;padding-block:10px;font-weight:600}@media (pointer:coarse){.snag-composer{left:0!important;right:0;top:auto!important;width:auto!important;inset-block-end:max(var(${f.tbH},68px),var(${f.kb},0px));border-radius:14px 14px 0 0;border-inline:0;border-block-end:0;padding:14px 16px calc(16px + env(safe-area-inset-bottom));gap:10px;box-shadow:0 -8px 32px rgb(0 0 0 / 28%)}.snag-composer .snag-primary{min-height:48px;font-size:15px}.snag-composer .snag-dismiss{padding:10px;margin:-10px -6px -10px 0;font-size:14px}.snag-composer .snag-text{min-height:88px}.snag-composer{overscroll-behavior:contain;padding-inline:calc(16px + env(safe-area-inset-left)) calc(16px + env(safe-area-inset-right))}.snag-scrim{position:fixed;inset:0;background:#0005;touch-action:none;pointer-events:auto}.snag-grab{margin:-14px 0 -8px;padding:12px 0;touch-action:none;pointer-events:auto;background:linear-gradient(${u.border} 0 0) 50%/36px 4px no-repeat}.snag-step{display:flex;gap:2px}.snag-step button{min-width:44px;min-height:44px;background:none;border:1px solid ${u.border};border-radius:8px;color:${u.fg}}.snag-shotopt{display:flex;align-items:center;gap:8px;min-height:44px}}@keyframes snag-pulse{50%{transform:scale(1.04)}}.snag-pulse{animation:snag-pulse 500ms ease-in-out}@media (prefers-reduced-motion:reduce){.snag-pulse{animation:none;outline:2px solid ${u.focus};outline-offset:3px}}`;function Vt(e,t,n){const r=e.ownerDocument??document;Ze(e,"form",Ft),Ze(e,"composer",Kt);const a=r.createElement("div");(n??e).appendChild(a);const o=()=>{Re(null,a),a.remove()},c=()=>a.querySelector(".snag-text"),l=()=>(c()?.value??"").trim().length>0,p=()=>{const i=a.firstElementChild;i&&(i.classList.remove("snag-pulse"),i.offsetWidth,i.classList.add("snag-pulse"),setTimeout(()=>i.classList.remove("snag-pulse"),600))};return Re(g(Yt,{...t,onSend:(i,d,b)=>{t.onSend(i,d,b),o()},onCancel:()=>{t.onCancel(),o()}}),a),{close:o,hasText:l,pulse:p,setLabel(i){const d=a.querySelector(".snag-target");d&&(d.textContent=i,d.title=i)}}}export{Vt as openComposer};
1
+ var J,v,$e,D,we,ke,Se,ie,X,B,Ce,ce,le,_e,Q={},Z=[],it=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,ee=Array.isArray;function N(e,t){for(var n in t)e[n]=t[n];return e}function ue(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function ct(e,t,n){var r,a,o,c={};for(o in t)o=="key"?r=t[o]:o=="ref"?a=t[o]:c[o]=t[o];if(arguments.length>2&&(c.children=arguments.length>3?J.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(o in e.defaultProps)c[o]===void 0&&(c[o]=e.defaultProps[o]);return te(e,c,r,a,null)}function te(e,t,n,r,a){var o={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++$e,__i:-1,__u:0};return a==null&&v.vnode!=null&&v.vnode(o),o}function U(e){return e.children}function ne(e,t){this.props=e,this.context=t}function O(e,t){if(t==null)return e.__?O(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?O(e):null}function lt(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,r=[],a=[],o=N({},t);o.__v=t.__v+1,v.vnode&&v.vnode(o),de(e.__P,o,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,r,n??O(t),!!(32&t.__u),a),o.__v=t.__v,o.__.__k[o.__i]=o,Le(r,o,a),t.__e=t.__=null,o.__e!=n&&Te(o)}}function Te(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),Te(e)}function Ee(e){(!e.__d&&(e.__d=!0)&&D.push(e)&&!oe.__r++||we!=v.debounceRendering)&&((we=v.debounceRendering)||ke)(oe)}function oe(){try{for(var e,t=1;D.length;)D.length>t&&D.sort(Se),e=D.shift(),t=D.length,lt(e)}finally{D.length=oe.__r=0}}function Ae(e,t,n,r,a,o,c,l,p,i,d){var b,s,_,$,T,C,y=r&&r.__k||Z,m=t.length;for(p=_t(n,t,y,p,m),b=0;b<m;b++)(_=n.__k[b])!=null&&(s=_.__i!=-1&&y[_.__i]||Q,_.__i=b,C=de(e,_,s,a,o,c,l,p,i,d),$=_.__e,_.ref&&s.ref!=_.ref&&(s.ref&&pe(s.ref,null,_),d.push(_.ref,_.__c||$,_)),T==null&&$!=null&&(T=$),4&_.__u?(p=He(_,p,e),s.__e&&(s.__e=null)):typeof _.type=="function"&&C!==void 0?p=C:$&&(p=$.nextSibling),_.__u&=-7);return n.__e=T,p}function _t(e,t,n,r,a){var o,c,l,p,i,d=n.length,b=d,s=0;for(e.__k=new Array(a),o=0;o<a;o++)(c=t[o])!=null&&typeof c!="boolean"&&typeof c!="function"?(typeof c=="string"||typeof c=="number"||typeof c=="bigint"||c.constructor==String?c=e.__k[o]=te(null,c,null,null,null):ee(c)?c=e.__k[o]=te(U,{children:c},null,null,null):c.constructor===void 0&&c.__b>0?c=e.__k[o]=te(c.type,c.props,c.key,c.ref?c.ref:null,c.__v):e.__k[o]=c,p=o+s,c.__=e,c.__b=e.__b+1,l=null,(i=c.__i=ut(c,n,p,b))!=-1&&(b--,(l=n[i])&&(l.__u|=2)),l==null||l.__v==null?(i==-1&&(a>d?s--:a<d&&s++),typeof c.type!="function"&&(c.__u|=4)):i!=p&&(i==p-1?s--:i==p+1?s++:(i>p?s--:s++,c.__u|=4))):e.__k[o]=null;if(b)for(o=0;o<d;o++)(l=n[o])!=null&&(2&l.__u)==0&&(l.__e==r&&(r=O(l)),Ie(l,l));return r}function He(e,t,n){var r,a;if(typeof e.type=="function"){for(r=e.__k,a=0;r&&a<r.length;a++)r[a]&&(r[a].__=e,t=He(r[a],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=O(e)),t=n.insertBefore(e.__e,t||null));do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function ut(e,t,n,r){var a,o,c,l=e.key,p=e.type,i=t[n],d=i!=null&&(2&i.__u)==0;if(i===null&&l==null||d&&l==i.key&&p==i.type)return n;if(r>(d?1:0)){for(a=n-1,o=n+1;a>=0||o<t.length;)if((i=t[c=a>=0?a--:o++])!=null&&(2&i.__u)==0&&l==i.key&&p==i.type)return c}return-1}function Me(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||it.test(t)?n:n+"px"}function re(e,t,n,r,a){var o,c;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof r=="string"&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||Me(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||Me(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")o=t!=(t=t.replace(Ce,"$1")),c=t.toLowerCase(),t=c in e||t=="onFocusOut"||t=="onFocusIn"?c.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+o]=n,n?r?n[B]=r[B]:(n[B]=ce,e.addEventListener(t,o?_e:le,o)):e.removeEventListener(t,o?_e:le,o);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Pe(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[X]==null)t[X]=ce++;else if(t[X]<n[B])return;return n(v.event?v.event(t):t)}}}function de(e,t,n,r,a,o,c,l,p,i){var d,b,s,_,$,T,C,y,m,w,I,M,L,z,R,A,H=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(p=!!(32&n.__u),o=[l=t.__e=n.__e]),(d=v.__b)&&d(t);e:if(typeof H=="function"){b=c.length;try{if(m=t.props,w=H.prototype&&H.prototype.render,I=(d=H.contextType)&&r[d.__c],M=d?I?I.props.value:d.__:r,n.__c?y=(s=t.__c=n.__c).__=s.__E:(w?t.__c=s=new H(m,M):(t.__c=s=new ne(m,M),s.constructor=H,s.render=pt),I&&I.sub(s),s.state||(s.state={}),s.__n=r,_=s.__d=!0,s.__h=[],s._sb=[]),w&&s.__s==null&&(s.__s=s.state),w&&H.getDerivedStateFromProps!=null&&(s.__s==s.state&&(s.__s=N({},s.__s)),N(s.__s,H.getDerivedStateFromProps(m,s.__s))),$=s.props,T=s.state,s.__v=t,_)w&&H.getDerivedStateFromProps==null&&s.componentWillMount!=null&&s.componentWillMount(),w&&s.componentDidMount!=null&&s.__h.push(s.componentDidMount);else{if(w&&H.getDerivedStateFromProps==null&&m!==$&&s.componentWillReceiveProps!=null&&s.componentWillReceiveProps(m,M),t.__v==n.__v||!s.__e&&s.shouldComponentUpdate!=null&&s.shouldComponentUpdate(m,s.__s,M)===!1){t.__v!=n.__v&&(s.props=m,s.state=s.__s,s.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(P){P&&(P.__=t)}),Z.push.apply(s.__h,s._sb),s._sb=[],s.__h.length&&c.push(s),l=O(n);break e}s.componentWillUpdate!=null&&s.componentWillUpdate(m,s.__s,M),w&&s.componentDidUpdate!=null&&s.__h.push(function(){s.componentDidUpdate($,T,C)})}if(s.context=M,s.props=m,s.__P=e,s.__e=!1,L=v.__r,z=0,w)s.state=s.__s,s.__d=!1,L&&L(t),d=s.render(s.props,s.state,s.context),Z.push.apply(s.__h,s._sb),s._sb=[];else do s.__d=!1,L&&L(t),d=s.render(s.props,s.state,s.context),s.state=s.__s;while(s.__d&&++z<25);s.state=s.__s,s.getChildContext!=null&&(r=N(N({},r),s.getChildContext())),w&&!_&&s.getSnapshotBeforeUpdate!=null&&(C=s.getSnapshotBeforeUpdate($,T)),R=d!=null&&d.type===U&&d.key==null?De(d.props.children):d,l=Ae(e,ee(R)?R:[R],t,n,r,a,o,c,l,p,i),s.base=t.__e,t.__u&=-161,s.__h.length&&c.push(s),y&&(s.__E=s.__=null)}catch(P){if(c.length=b,t.__v=null,p||o!=null){if(P.then){for(t.__u|=p?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;o!=null&&(o[o.indexOf(l)]=null),t.__e=l}else if(o!=null)for(A=o.length;A--;)ue(o[A])}else t.__e=n.__e;t.__k==null&&(t.__k=n.__k||[]),P.then||Ne(t),v.__e(P,t,n)}}else o==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):l=t.__e=dt(n.__e,t,n,r,a,o,c,p,i);return(d=v.diffed)&&d(t),128&t.__u?void 0:l}function Ne(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Ne))}function Le(e,t,n){for(var r=0;r<n.length;r++)pe(n[r],n[++r],n[++r]);v.__c&&v.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(o){o.call(a)})}catch(o){v.__e(o,a.__v)}})}function De(e){return typeof e!="object"||e==null||e.__b>0?e:ee(e)?e.map(De):e.constructor!==void 0?null:N({},e)}function dt(e,t,n,r,a,o,c,l,p){var i,d,b,s,_,$,T,C=n.props||Q,y=t.props,m=t.type;if(m=="svg"?a="http://www.w3.org/2000/svg":m=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),o!=null){for(i=0;i<o.length;i++)if((_=o[i])&&"setAttribute"in _==!!m&&(m?_.localName==m:_.nodeType==3)){e=_,o[i]=null;break}}if(e==null){if(m==null)return document.createTextNode(y);e=document.createElementNS(a,m,y.is&&y),l&&(v.__m&&v.__m(t,o),l=!1),o=null}if(m==null)C===y||l&&e.data==y||(e.data=y);else{if(o=m=="textarea"&&y.defaultValue!=null?null:o&&J.call(e.childNodes),!l&&o!=null)for(C={},i=0;i<e.attributes.length;i++)C[(_=e.attributes[i]).name]=_.value;for(i in C)_=C[i],i=="dangerouslySetInnerHTML"?b=_:i=="children"||i in y||i=="value"&&"defaultValue"in y||i=="checked"&&"defaultChecked"in y||re(e,i,null,_,a);for(i in y)_=y[i],i=="children"?s=_:i=="dangerouslySetInnerHTML"?d=_:i=="value"?$=_:i=="checked"?T=_:l&&typeof _!="function"||C[i]===_||re(e,i,_,C[i],a);if(d)l||b&&(d.__html==b.__html||d.__html==e.innerHTML)||(e.innerHTML=d.__html),t.__k=[];else if(b&&(e.innerHTML=""),Ae(t.type=="template"?e.content:e,ee(s)?s:[s],t,n,r,m=="foreignObject"?"http://www.w3.org/1999/xhtml":a,o,c,o?o[0]:n.__k&&O(n,0),l,p),o!=null)for(i=o.length;i--;)ue(o[i]);l&&m!="textarea"||(i="value",m=="progress"&&$==null?e.removeAttribute("value"):$!=null&&($!==e[i]||m=="progress"&&!$||m=="option"&&$!=C[i])&&re(e,i,$,C[i],a),i="checked",T!=null&&T!=e[i]&&re(e,i,T,C[i],a))}return e}function pe(e,t,n){try{if(typeof e=="function"){var r=typeof e.__u=="function";r&&e.__u(),r&&t==null||(e.__u=e(t))}else e.current=t}catch(a){v.__e(a,n)}}function Ie(e,t,n){var r,a;if(v.unmount&&v.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||pe(r,null,t)),(r=e.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(o){v.__e(o,t)}r.base=r.__P=r.__n=null}if(r=e.__k)for(a=0;a<r.length;a++)r[a]&&Ie(r[a],t,n||typeof e.type!="function");n||ue(e.__e),e.__c=e.__=e.__e=void 0}function pt(e,t,n){return this.constructor(e,n)}function Re(e,t,n){var r,a,o,c;t==document&&(t=document.documentElement),v.__&&v.__(e,t),a=(r=!1)?null:t.__k,o=[],c=[],de(t,e=t.__k=ct(U,null,[e]),a||Q,Q,t.namespaceURI,a?null:t.firstChild?J.call(t.childNodes):null,o,a?a.__e:t.firstChild,r,c),Le(o,e,c),e.props.children=null}J=Z.slice,v={__e:function(e,t,n,r){for(var a,o,c;t=t.__;)if((a=t.__c)&&!a.__)try{if((o=a.constructor)&&o.getDerivedStateFromError!=null&&(a.setState(o.getDerivedStateFromError(e)),c=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,r||{}),c=a.__d),c)return a.__E=a}catch(l){e=l}throw e}},$e=0,ne.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=N({},this.state),typeof e=="function"&&(e=e(N({},n),this.props)),e&&N(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ee(this))},ne.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ee(this))},ne.prototype.render=U,D=[],ke=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Se=function(e,t){return e.__v.__b-t.__v.__b},oe.__r=0,ie=Math.random().toString(8),X="__d"+ie,B="__a"+ie,Ce=/(PointerCapture)$|Capture$/i,ce=0,le=Pe(!1),_e=Pe(!0);var ft=0;function g(e,t,n,r,a,o){t||(t={});var c,l,p=t;if("ref"in p)for(l in p={},t)l=="ref"?c=t[l]:p[l]=t[l];var i={type:e,props:p,key:n,ref:c,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--ft,__i:-1,__u:0,__source:a,__self:o};if(typeof e=="function"&&(c=e.defaultProps))for(l in c)p[l]===void 0&&(p[l]=c[l]);return v.vnode&&v.vnode(i),i}var Y,k,fe,Oe,se=0,ze=[],S=v,Ue=S.__b,Fe=S.__r,We=S.diffed,je=S.__c,qe=S.unmount,Be=S.__;function he(e,t){S.__h&&S.__h(k,e,se||t),se=0;var n=k.__H||(k.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function F(e){return se=1,ht(Ve,e)}function ht(e,t,n){var r=he(Y++,2);if(r.t=e,!r.__c&&(r.__=[Ve(void 0,t),function(l){var p=r.__N?r.__N[0]:r.__[0],i=r.t(p,l);p!==i&&(r.__N=[i,r.__[1]],r.__c.setState({}))}],r.__c=k,!k.__f)){var a=function(l,p,i){if(!r.__c.__H)return!0;var d=!1,b=r.__c.props!==l;if(r.__c.__H.__.some(function(_){if(_.__N){d=!0;var $=_.__[0];_.__=_.__N,_.__N=void 0,$!==_.__[0]&&(b=!0)}}),o){var s=o.call(this,l,p,i);return d?s||b:s}return!d||b};k.__f=!0;var o=k.shouldComponentUpdate,c=k.componentWillUpdate;k.componentWillUpdate=function(l,p,i){if(this.__e){var d=o;o=void 0,a(l,p,i),o=d}c&&c.call(this,l,p,i)},k.shouldComponentUpdate=a}return r.__N||r.__}function me(e,t){var n=he(Y++,3);!S.__s&&Ke(n.__H,t)&&(n.__=e,n.u=t,k.__H.__h.push(n))}function K(e){return se=5,mt(function(){return{current:e}},[])}function mt(e,t){var n=he(Y++,7);return Ke(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function gt(){for(var e;e=ze.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(ae),t.__h.some(ge),t.__h=[]}catch(n){t.__h=[],S.__e(n,e.__v)}}}S.__b=function(e){k=null,Ue&&Ue(e)},S.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Be&&Be(e,t)},S.__r=function(e){Fe&&Fe(e),Y=0;var t=(k=e.__c).__H;t&&(fe===k?(t.__h=[],k.__h=[],t.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.some(ae),t.__h.some(ge),t.__h=[],Y=0)),fe=k},S.diffed=function(e){We&&We(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(ze.push(t)!==1&&Oe===S.requestAnimationFrame||((Oe=S.requestAnimationFrame)||vt)(gt)),t.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),fe=k=null},S.__c=function(e,t){t.some(function(n){try{n.__h.some(ae),n.__h=n.__h.filter(function(r){return!r.__||ge(r)})}catch(r){t.some(function(a){a.__h&&(a.__h=[])}),t=[],S.__e(r,n.__v)}}),je&&je(e,t)},S.unmount=function(e){qe&&qe(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(r){try{ae(r)}catch(a){t=a}}),n.__H=void 0,t&&S.__e(t,n.__v))};var Ye=typeof requestAnimationFrame=="function";function vt(e){var t,n=function(){clearTimeout(r),Ye&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Ye&&(t=requestAnimationFrame(n))}function ae(e){var t=k,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),k=t}function ge(e){var t=k;e.__c=e.__(),k=t}function Ke(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function Ve(e,t){return typeof t=="function"?t(e):t}const bt="Snagset",yt="Snagset",xt="Snag",$t="Snags",wt={anchor:"data-snag-anchor",ignore:"data-snag-ignore",mask:"data-snag-mask",nomask:"data-snag-nomask",src:"data-snag-src",component:"data-snag-component"},kt=e=>wt[e],f={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"},St=e=>`var(${f[e]})`,Ge="snag:disclosure:v1",Je="snag:identity",Ct="data-snag-theme";function Xe(){let e=null;try{e=localStorage.getItem(Je)}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 Tt(e){try{localStorage.setItem(Je,JSON.stringify(e))}catch{}}function Et(){const e=Xe();return{name:typeof e.name=="string"?e.name:"",...e.email?{email:e.email}:{}}}function At(e){const t=Xe();Tt({...t,name:e.name,...e.email?{email:e.email}:{}})}function Ht(e){const t=window.visualViewport;if(!t)return;let n=0,r=0;const a=()=>{n=0;const l=Math.max(0,Math.round(window.innerHeight-t.height-t.offsetTop));e.style.setProperty(f.kb,`${l}px`)},o=()=>{n||(n=requestAnimationFrame(a))},c=()=>{clearTimeout(r),r=window.setTimeout(a,300)};return a(),t.addEventListener("resize",o),t.addEventListener("scroll",o),window.addEventListener("orientationchange",o),e.addEventListener("focusout",c),()=>{n&&cancelAnimationFrame(n),clearTimeout(r),t.removeEventListener("resize",o),t.removeEventListener("scroll",o),window.removeEventListener("orientationchange",o),e.removeEventListener("focusout",c)}}const Mt={product:bt,set:yt,item:xt,items:$t};function Pt(e){return(t,n)=>(e[t]??"").replace(/\{(\w+)\}/g,(r,a)=>{const o=n?.[a]??Mt[a];return o===void 0?r:String(o)})}const Nt=e=>new Intl.NumberFormat().format(e),Lt={"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}"},Dt={open:{colour:"#009ed3"},progress:{colour:"#bd5000"},review:{colour:"#6700bf"},resolved:{colour:"#b2e3a3"}},u=Object.fromEntries(Object.keys(f).map(e=>[e,St(e)])),It=Object.entries(Dt).map(([e,t])=>` ${f[`status${e[0].toUpperCase()}${e.slice(1)}`]}:${t.colour};`).join(`
2
+ `);`${u.font}${u.fg}${f.font}${f.accent}${f.bg}${f.fg}${f.muted}${f.border}${f.radius}${f.shadow}${f.z}${f.motion}${f.surface}${u.fg}${u.bg}${f.sunken}${u.fg}${u.bg}${f.hover}${u.fg}${u.bg}${f.onAccent}${f.focus}${u.accent}${u.fg}${f.disabled}${u.muted}${u.bg}${It}${f.anchorOrphan}${Ct}${f.accent}${f.onAccent}${f.bg}${f.fg}${f.muted}${f.border}${f.shadow}${f.motion}${f.bg}${f.fg}${f.muted}${f.border}${f.accent}${f.onAccent}${f.surface}${f.sunken}${f.hover}${f.focus}${f.disabled}${f.shadow}${f.anchorOrphan}`;const Rt={composer:8},Qe=new WeakMap;function Ze(e,t,n){let r=Qe.get(e);if(r||Qe.set(e,r=new Set),r.has(t))return;r.add(t);try{const c=new CSSStyleSheet;c.replaceSync(n),e.adoptedStyleSheets=[...e.adoptedStyleSheets,c];return}catch{}const o=(e.ownerDocument??document).createElement("style");o.setAttribute(`data-snag-${t}`,""),o.textContent=n,e.appendChild(o)}const Ot=` .snag-input,.snag-text{width:100%;box-sizing:border-box;background:${u.surface};color:inherit;border:1px solid ${u.border};border-radius:${u.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 ${u.focus};outline-offset:1px;border-color:transparent}.snag-input--bad{border-color:${u.anchorOrphan}}.snag-note{margin:-2px 0 0;color:${u.anchorOrphan};font-size:11px;line-height:1.35}.snag-note.snag-dim{color:${u.muted}}.snag-actions{display:flex;justify-content:flex-end;gap:6px}.snag-actions button{appearance:none;border:0;border-radius:calc(${u.radius} - 1px);padding:7px 13px;font:inherit;cursor:pointer;min-height:32px;transition:background ${u.motion}}.snag-cancel{background:transparent;color:${u.muted}}.snag-armed{color:${u.anchorOrphan};font-weight:600}.snag-cancel:hover{background:${u.hover};color:inherit}.snag-send{background:${u.accent};color:${u.onAccent};font-weight:600}.snag-send:disabled{opacity:.45;cursor:not-allowed}.snag-actions button:focus-visible{outline:2px solid ${u.focus};outline-offset:2px}`;function zt(e,t,n){const[r,a]=F(!1);return me(()=>{if(!r)return;const o=setTimeout(()=>a(!1),3e3);return()=>clearTimeout(o)},[r]),{armed:r,press(){if(r||t&&!t()){a(!1),e();return}a(!0),n?.()}}}const Ut={"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}"},Ft={"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.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?"},Wt={...Lt,...Ut,...Ft},x=Pt(Wt),ve=1e4,jt=9e3,qt=e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim());let et=!1;function Bt(){if(et)return!0;try{return localStorage.getItem(Ge)==="1"}catch{return!1}}function Yt({at:e,label:t,onSend:n,onCancel:r,onRetarget:a,onShotOptIn:o,onDraft:c,initialBody:l,initialName:p,initialEmail:i,crumbsOn:d,quote:b,shotsOn:s,serverHost:_}){const $=Et(),[T,C]=F($.name||(p??"")),[y,m]=F($.email??i??""),[w,I]=F(l??""),M=K(null),L=K(null),z=K(null),[R]=F(!$.name),[A,H]=F(Bt),P=K(null),tt=()=>{et=!0;try{localStorage.setItem(Ge,"1")}catch{}H(!0)},W=window.matchMedia?.("(pointer: coarse)").matches??!1,nt=K(performance.now()).current;me(()=>{if(W)return;const h=z.current,E=h?.getBoundingClientRect();if(h&&E&&(E.bottom>innerHeight-8&&(h.style.top=`${Math.max(8,innerHeight-E.height-8)}px`),E.right>innerWidth-8&&(h.style.left=`${Math.max(8,innerWidth-E.width-8)}px`)),!A){P.current?.focus();return}(R?L:M).current?.focus()},[A]),me(()=>{const h=z.current;if(h)return Ht(h)},[]);const j=y.trim().length>0&&!qt(y),be=w.trim().length>0&&T.trim().length>0&&!j;function ye(){if(!be)return;const h={name:T.trim(),...y.trim()?{email:y.trim()}:{}};At(h),n(w.trim(),h.name,h.email)}const{armed:V,press:G}=zt(r,()=>w.trim().length>0,()=>M.current?.focus()),ot=h=>{I(h),c?.(h,T,y)},xe=300,rt=Math.min(Math.max(8,e.x+14),innerWidth-xe-8),st=Math.min(Math.max(8,e.y+14),innerHeight-198);return g(U,{children:[W&&g("div",{class:"snag-scrim","aria-hidden":"true",onClick:()=>{performance.now()-nt>400&&G()}}),g("div",{ref:z,class:"snag-composer",role:"dialog","aria-label":x("composer.aria"),style:{left:`${rt}px`,top:`${st}px`,width:`${xe}px`},onKeyDown:h=>{h.key==="Escape"&&(h.stopPropagation(),G()),h.key==="Enter"&&(h.metaKey||h.ctrlKey)&&(h.preventDefault(),ye())},children:[W&&g("div",{class:"snag-grab","aria-hidden":"true",onPointerDown:h=>{const E=h.clientY,q=h.currentTarget;try{q.setPointerCapture(h.pointerId)}catch{}q.onpointermove=at=>{at.clientY-E>56&&(q.onpointermove=null,G())},q.onpointerup=()=>q.onpointermove=null}}),g("div",{class:"snag-head",children:[W&&a&&A&&g("span",{class:"snag-step",children:[g("button",{type:"button","aria-label":x("composer.parent"),onClick:()=>a("up"),children:"\u25B2"}),g("button",{type:"button","aria-label":x("composer.child"),onClick:()=>a("down"),children:"\u25BC"})]}),g("p",{class:"snag-target",title:t,children:t}),g("button",{type:"button",class:`snag-dismiss${V?" snag-armed":""}`,"aria-label":x(V?"composer.discard.sure":"action.cancel"),title:x(V?"composer.discard.sure":"action.cancel"),onClick:G,children:V?x("action.discard"):"\u2715"})]}),!A&&g("div",{class:"snag-disclose",children:[g("p",{class:"snag-disclose-title",children:x("disclosure.title")}),g("p",{children:x("disclosure.always")}),g("p",{children:x(d?"disclosure.crumbs.on":"disclosure.crumbs.off")}),g("p",{children:s?x("disclosure.screenshot.on",{maskAttr:kt("mask")}):x("disclosure.screenshot.off")}),g("p",{children:_?x("disclosure.retention.server",{host:_}):x("disclosure.retention")}),g("div",{class:"snag-actions",children:g("button",{type:"button",ref:P,class:"snag-send snag-primary",onClick:tt,children:x("disclosure.ack")})})]}),A&&R&&g(U,{children:[g("input",{ref:L,class:"snag-input",type:"text",placeholder:x("composer.name"),"aria-label":x("composer.name"),value:T,onInput:h=>{const E=h.target.value;C(E),w.trim()&&c?.(w,E,y)}}),g("input",{class:`snag-input${j?" snag-input--bad":""}`,type:"email",inputMode:"email",autocomplete:"email",placeholder:x("composer.email"),"aria-label":x("composer.email"),"aria-invalid":j?"true":void 0,"aria-describedby":j?"snag-email-note":void 0,value:y,onInput:h=>{const E=h.target.value;m(E),w.trim()&&c?.(w,T,E)}}),j&&g("p",{class:"snag-note",id:"snag-email-note",children:x("composer.email.bad")})]}),A&&b&&g("blockquote",{class:"snag-quote",children:b}),A&&g("textarea",{ref:M,class:"snag-text",placeholder:x("composer.body.placeholder"),"aria-label":x("composer.body"),maxLength:ve,rows:3,enterkeyhint:"enter",value:w,onInput:h=>{const E=h.target;E.style.height="auto",E.style.height=`${Math.min(E.scrollHeight,128)}px`,ot(E.value)}}),A&&w.length>=jt&&g("p",{class:`snag-note${w.length>=ve?"":" snag-dim"}`,"aria-live":"polite",children:x("composer.chars",{n:Nt(ve-w.length)})}),A&&W&&o&&g("label",{class:"snag-shotopt",children:[g("input",{type:"checkbox",onChange:h=>o(h.currentTarget.checked)})," ",x("composer.shot")]}),A&&g("div",{class:"snag-actions",children:g("button",{type:"button",class:"snag-send snag-primary",disabled:!be,onClick:ye,children:x("action.post")})})]})]})}const Kt=` .snag-composer{position:fixed;box-sizing:border-box;z-index:${Rt.composer};background:${u.bg};color:${u.fg};border:1px solid ${u.border};border-radius:calc(${u.radius} + 4px);padding:12px;box-shadow:${u.shadow};pointer-events:auto;font:400 13px/1.45 ${u.font};display:flex;flex-direction:column;gap:8px}.snag-head{display:flex;align-items:center;gap:8px}.snag-target{margin:0;flex:1 1 auto;min-width:0;color:${u.muted};font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.snag-dismiss{flex:0 0 auto;appearance:none;border:0;background:transparent;color:${u.muted};font:inherit;font-size:12px;line-height:1;padding:6px;margin:-6px -4px -6px 0;border-radius:calc(${u.radius} - 2px);cursor:pointer}.snag-dismiss:hover{color:${u.fg};background:${u.hover}}.snag-dismiss:focus-visible{outline:2px solid ${u.focus};outline-offset:1px}.snag-dismiss.snag-armed{color:${u.anchorOrphan};font-weight:600;font-size:11px}.snag-disclose{display:flex;flex-direction:column;gap:6px}.snag-disclose p{margin:0;font-size:12px;line-height:1.5;color:${u.fg}}.snag-disclose .snag-disclose-title{font-weight:600;font-size:12px}.snag-disclose p:not(.snag-disclose-title){color:${u.muted}}.snag-quote{margin:0;padding:6px 10px;border-inline-start:3px solid ${u.accent};background:${u.surface};font-size:12px;color:${u.muted}}.snag-actions .snag-primary{flex:1 1 auto;justify-content:center;padding-block:10px;font-weight:600}@media (pointer:coarse){.snag-composer{left:0!important;right:0;top:auto!important;width:auto!important;inset-block-end:max(var(${f.tbH},68px),var(${f.kb},0px));border-radius:14px 14px 0 0;border-inline:0;border-block-end:0;padding:14px 16px calc(16px + env(safe-area-inset-bottom));gap:10px;box-shadow:0 -8px 32px rgb(0 0 0 / 28%)}.snag-composer .snag-primary{min-height:48px;font-size:15px}.snag-composer .snag-dismiss{padding:10px;margin:-10px -6px -10px 0;font-size:14px}.snag-composer .snag-text{min-height:88px}.snag-composer{overscroll-behavior:contain;padding-inline:calc(16px + env(safe-area-inset-left)) calc(16px + env(safe-area-inset-right))}.snag-scrim{position:fixed;inset:0;background:#0005;touch-action:none;pointer-events:auto}.snag-grab{margin:-14px 0 -8px;padding:12px 0;touch-action:none;pointer-events:auto;background:linear-gradient(${u.border} 0 0) 50%/36px 4px no-repeat}.snag-step{display:flex;gap:2px}.snag-step button{min-width:44px;min-height:44px;background:none;border:1px solid ${u.border};border-radius:8px;color:${u.fg}}.snag-shotopt{display:flex;align-items:center;gap:8px;min-height:44px}}@keyframes snag-pulse{50%{transform:scale(1.04)}}.snag-pulse{animation:snag-pulse 500ms ease-in-out}@media (prefers-reduced-motion:reduce){.snag-pulse{animation:none;outline:2px solid ${u.focus};outline-offset:3px}}`;function Vt(e,t,n){const r=e.ownerDocument??document;Ze(e,"form",Ot),Ze(e,"composer",Kt);const a=r.createElement("div");(n??e).appendChild(a);const o=()=>{Re(null,a),a.remove()},c=()=>a.querySelector(".snag-text"),l=()=>(c()?.value??"").trim().length>0,p=()=>{const i=a.firstElementChild;i&&(i.classList.remove("snag-pulse"),i.offsetWidth,i.classList.add("snag-pulse"),setTimeout(()=>i.classList.remove("snag-pulse"),600))};return Re(g(Yt,{...t,onSend:(i,d,b)=>{t.onSend(i,d,b),o()},onCancel:()=>{t.onCancel(),o()}}),a),{close:o,hasText:l,pulse:p,setLabel(i){const d=a.querySelector(".snag-target");d&&(d.textContent=i,d.title=i)}}}export{Vt as openComposer};