@snagset/server 0.1.18 → 0.1.20

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.
Files changed (81) hide show
  1. package/dist/db/migrations/0010_round_archive.sql +23 -0
  2. package/dist/db/migrations/0011_guest_status.sql +24 -0
  3. package/dist/projectCache.js +1 -1
  4. package/dist/projectCache.js.map +1 -1
  5. package/dist/routes/owner.js +5 -2
  6. package/dist/routes/owner.js.map +1 -1
  7. package/dist/routes/rounds.js +130 -37
  8. package/dist/routes/rounds.js.map +1 -1
  9. package/dist/routes/sessions.js +26 -7
  10. package/dist/routes/sessions.js.map +1 -1
  11. package/dist/routes/sites.js +24 -3
  12. package/dist/routes/sites.js.map +1 -1
  13. package/dist/routes/threads.js +224 -53
  14. package/dist/routes/threads.js.map +1 -1
  15. package/package.json +1 -1
  16. package/static/dashboard/assets/{CompositeItem-D1SCvKo_.js → CompositeItem-DFk-PY9L.js} +1 -1
  17. package/static/dashboard/assets/{ConfirmDialog-DdUOWt96.js → ConfirmDialog-COCFkJPd.js} +1 -1
  18. package/static/dashboard/assets/{CopyButton-DX7vax3M.js → CopyButton-BSZUdGOe.js} +1 -1
  19. package/static/dashboard/assets/{FieldItemContext-CMpCHNX8.js → FieldItemContext-B1tO9RIm.js} +1 -1
  20. package/static/dashboard/assets/{InstallTag-DkYPsEI0.js → InstallTag-C-bSYUSW.js} +1 -1
  21. package/static/dashboard/assets/{SaveState-D0Hl8cny.js → SaveState-9-TiAnKs.js} +1 -1
  22. package/static/dashboard/assets/{_app-CnG-wKIX.js → _app-B6Dr81cl.js} +1 -1
  23. package/static/dashboard/assets/{_app-CcUZ9WT2.js → _app-dK3H_NFl.js} +1 -1
  24. package/static/dashboard/assets/{activity-DnvsedIb.js → activity-B-4_ONuX.js} +1 -1
  25. package/static/dashboard/assets/{arrow-left-4jbTF1bA.js → arrow-left-et5uGMTY.js} +1 -1
  26. package/static/dashboard/assets/{avatar-BKSc7tnv.js → avatar-BYKf3ktl.js} +1 -1
  27. package/static/dashboard/assets/{badge-aWVtPffe.js → badge-DRNYZLcD.js} +1 -1
  28. package/static/dashboard/assets/{card-Bz0VdsxC.js → card-DktMrBl6.js} +1 -1
  29. package/static/dashboard/assets/{check-Ti2IOlgc.js → check-BeXhTRNQ.js} +1 -1
  30. package/static/dashboard/assets/{chevron-right-g-zbIopD.js → chevron-right-BoL12ADN.js} +1 -1
  31. package/static/dashboard/assets/{copy-BwBuD0FO.js → copy-0Bxto2zb.js} +1 -1
  32. package/static/dashboard/assets/{dialog-DdpHZobU.js → dialog-CNPOwLFE.js} +2 -2
  33. package/static/dashboard/assets/{dropdown-menu-CB2L3nig.js → dropdown-menu-QyfFmK0B.js} +1 -1
  34. package/static/dashboard/assets/{image-off-w_ej9pIJ.js → image-off-1l9j0o-Y.js} +1 -1
  35. package/static/dashboard/assets/index-BzWDSuyB.css +1 -0
  36. package/static/dashboard/assets/{index-DtF8YHqn.js → index-C9T0i6pH.js} +18 -18
  37. package/static/dashboard/assets/{invite-Dy3iQjzf.js → invite-B3ovcCvz.js} +1 -1
  38. package/static/dashboard/assets/{label-Dj8L94iS.js → label-CgEiXFTT.js} +1 -1
  39. package/static/dashboard/assets/{layout-grid-DuweH0Vl.js → layout-grid-CFk40Q2_.js} +1 -1
  40. package/static/dashboard/assets/me-DnFJ72fX.js +1 -0
  41. package/static/dashboard/assets/{parts-CA4cbfy3.js → parts-BGzYN_gW.js} +1 -1
  42. package/static/dashboard/assets/{plus-CEWgXDLj.js → plus-D5bA9-ud.js} +1 -1
  43. package/static/dashboard/assets/s._site-BU8qgyq7.js +1 -0
  44. package/static/dashboard/assets/s._site.comments-DPD4knbJ.js +54 -0
  45. package/static/dashboard/assets/s._site.reviewers-cXimPkop.js +1 -0
  46. package/static/dashboard/assets/s._site.settings-S8ZkUOGQ.js +1 -0
  47. package/static/dashboard/assets/{setup-DcjjtB3g.js → setup-ytPE-o-a.js} +1 -1
  48. package/static/dashboard/assets/{sign-in-gfvOs6Jw.js → sign-in-CApTsuZI.js} +1 -1
  49. package/static/dashboard/assets/{sign-up-CFJt7ibH.js → sign-up-DV3c0gT-.js} +1 -1
  50. package/static/dashboard/assets/{sites-DbB5cjz5.js → sites-DpoUZ8eC.js} +1 -1
  51. package/static/dashboard/assets/studio-CFiRRKhi.js +1 -0
  52. package/static/dashboard/assets/{studio-D9GxJaSF.js → studio-Cd2-mZl3.js} +1 -1
  53. package/static/dashboard/assets/{studio.index-DktAxIPT.js → studio.index-CdwWnkIX.js} +1 -1
  54. package/static/dashboard/assets/{studio.integrations-CbLyqPLX.js → studio.integrations-Bwi2ns8H.js} +1 -1
  55. package/static/dashboard/assets/{studio.members-DFtIL3JS.js → studio.members-DwvB-uiz.js} +1 -1
  56. package/static/dashboard/assets/{sun-Bg7U-6Y0.js → sun-DYPmuuya.js} +1 -1
  57. package/static/dashboard/assets/{switch-CTN6hIca.js → switch-C4MjDp48.js} +1 -1
  58. package/static/dashboard/assets/{table-zQ3pj50_.js → table-CoSJYMlW.js} +1 -1
  59. package/static/dashboard/assets/{useAriaLabelledBy-BsNncGbx.js → useAriaLabelledBy-CVMe8zQw.js} +1 -1
  60. package/static/dashboard/assets/{useBaseQuery-DSqwWD_O.js → useBaseQuery-BNAoRl4M.js} +1 -1
  61. package/static/dashboard/assets/useQuery-D4G3Az8s.js +1 -0
  62. package/static/dashboard/assets/useRender-BIly5s7F.js +1 -0
  63. package/static/dashboard/assets/{useValueChanged-B9k7l-mp.js → useValueChanged-BzSqaaKy.js} +1 -1
  64. package/static/dashboard/assets/{users-CRiOyD0f.js → users-CxehfZhl.js} +1 -1
  65. package/static/dashboard/assets/{welcome-DT2DB4jN.js → welcome-B0Xqk_GB.js} +1 -1
  66. package/static/dashboard/assets/{widget-signin-CC9owVvs.js → widget-signin-BaYrguyh.js} +1 -1
  67. package/static/dashboard/assets/{you-CtcXklc_.js → you-CYkvyH8i.js} +1 -1
  68. package/static/dashboard/assets/{zod-CLxHj89d.js → zod-CYYNMx2f.js} +1 -1
  69. package/static/dashboard/index.html +2 -2
  70. package/static/widget/snag.dock.js +5 -5
  71. package/static/widget/snag.panels.js +2 -2
  72. package/static/widget/snag.runtime.js +2 -2
  73. package/static/dashboard/assets/index-DAgnfv_E.css +0 -1
  74. package/static/dashboard/assets/me-7-r9OeMR.js +0 -1
  75. package/static/dashboard/assets/s._site-D69M50OI.js +0 -1
  76. package/static/dashboard/assets/s._site.comments-DNJ2SE5c.js +0 -54
  77. package/static/dashboard/assets/s._site.reviewers-B07NzSWj.js +0 -1
  78. package/static/dashboard/assets/s._site.settings-B577G5iG.js +0 -1
  79. package/static/dashboard/assets/studio-BO-MHFqc.js +0 -1
  80. package/static/dashboard/assets/useQuery-OgrKuHbc.js +0 -1
  81. package/static/dashboard/assets/useRender-DOFVvGfR.js +0 -1
@@ -1,5 +1,5 @@
1
- var X,T,He,K,Fe,Be,Ke,be,Z,G,qe,xe,ye,ve,ee={},ne=[],Ln=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,te=Array.isArray;function B(e,n){for(var t in n)e[t]=n[t];return e}function we(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function O(e,n,t){var o,s,a,i={};for(a in n)a=="key"?o=n[a]:a=="ref"?s=n[a]:i[a]=n[a];if(arguments.length>2&&(i.children=arguments.length>3?X.call(arguments,2):t),typeof e=="function"&&e.defaultProps!=null)for(a in e.defaultProps)i[a]===void 0&&(i[a]=e.defaultProps[a]);return oe(e,i,o,s,null)}function oe(e,n,t,o,s){var a={type:e,props:n,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:s??++He,__i:-1,__u:0};return s==null&&T.vnode!=null&&T.vnode(a),a}function L(e){return e.children}function re(e,n){this.props=e,this.context=n}function q(e,n){if(n==null)return e.__?q(e.__,e.__i+1):null;for(var t;n<e.__k.length;n++)if((t=e.__k[n])!=null&&t.__e!=null)return t.__e;return typeof e.type=="function"?q(e):null}function zn(e){if(e.__P&&e.__d){var n=e.__v,t=n.__e,o=[],s=[],a=B({},n);a.__v=n.__v+1,T.vnode&&T.vnode(a),$e(e.__P,a,n,e.__n,e.__P.namespaceURI,32&n.__u?[t]:null,o,t??q(n),!!(32&n.__u),s),a.__v=n.__v,a.__.__k[a.__i]=a,Ze(o,a,s),n.__e=n.__=null,a.__e!=t&&We(a)}}function We(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}),We(e)}function Ye(e){(!e.__d&&(e.__d=!0)&&K.push(e)&&!ae.__r++||Fe!=T.debounceRendering)&&((Fe=T.debounceRendering)||Be)(ae)}function ae(){try{for(var e,n=1;K.length;)K.length>n&&K.sort(Ke),e=K.shift(),n=K.length,zn(e)}finally{K.length=ae.__r=0}}function Ge(e,n,t,o,s,a,i,l,g,d,f){var v,u,h,C,k,w,S=o&&o.__k||ne,$=n.length;for(g=Un(t,n,S,g,$),v=0;v<$;v++)(h=t.__k[v])!=null&&(u=h.__i!=-1&&S[h.__i]||ee,h.__i=v,w=$e(e,h,u,s,a,i,l,g,d,f),C=h.__e,h.ref&&u.ref!=h.ref&&(u.ref&&Se(u.ref,null,h),f.push(h.ref,h.__c||C,h)),k==null&&C!=null&&(k=C),4&h.__u?(g=Ve(h,g,e),u.__e&&(u.__e=null)):typeof h.type=="function"&&w!==void 0?g=w:C&&(g=C.nextSibling),h.__u&=-7);return t.__e=k,g}function Un(e,n,t,o,s){var a,i,l,g,d,f=t.length,v=f,u=0;for(e.__k=new Array(s),a=0;a<s;a++)(i=n[a])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[a]=oe(null,i,null,null,null):te(i)?i=e.__k[a]=oe(L,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[a]=oe(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[a]=i,g=a+u,i.__=e,i.__b=e.__b+1,l=null,(d=i.__i=jn(i,t,g,v))!=-1&&(v--,(l=t[d])&&(l.__u|=2)),l==null||l.__v==null?(d==-1&&(s>f?u--:s<f&&u++),typeof i.type!="function"&&(i.__u|=4)):d!=g&&(d==g-1?u--:d==g+1?u++:(d>g?u--:u++,i.__u|=4))):e.__k[a]=null;if(v)for(a=0;a<f;a++)(l=t[a])!=null&&(2&l.__u)==0&&(l.__e==o&&(o=q(l)),nn(l,l));return o}function Ve(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=Ve(o[s],n,t));return n}e.__e!=n&&(n&&e.type&&!n.parentNode&&(n=q(e)),n=t.insertBefore(e.__e,n||null));do n=n&&n.nextSibling;while(n!=null&&n.nodeType==8);return n}function jn(e,n,t,o){var s,a,i,l=e.key,g=e.type,d=n[t],f=d!=null&&(2&d.__u)==0;if(d===null&&l==null||f&&l==d.key&&g==d.type)return t;if(o>(f?1:0)){for(s=t-1,a=t+1;s>=0||a<n.length;)if((d=n[i=s>=0?s--:a++])!=null&&(2&d.__u)==0&&l==d.key&&g==d.type)return i}return-1}function Je(e,n,t){n[0]=="-"?e.setProperty(n,t??""):e[n]=t==null?"":typeof t!="number"||Ln.test(n)?t:t+"px"}function se(e,n,t,o,s){var a,i;e:if(n=="style")if(typeof t=="string")e.style.cssText=t;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(n in o)t&&n in t||Je(e.style,n,"");if(t)for(n in t)o&&t[n]==o[n]||Je(e.style,n,t[n])}else if(n[0]=="o"&&n[1]=="n")a=n!=(n=n.replace(qe,"$1")),i=n.toLowerCase(),n=i in e||n=="onFocusOut"||n=="onFocusIn"?i.slice(2):n.slice(2),e.l||(e.l={}),e.l[n+a]=t,t?o?t[G]=o[G]:(t[G]=xe,e.addEventListener(n,a?ve:ye,a)):e.removeEventListener(n,a?ve:ye,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 Qe(e){return function(n){if(this.l){var t=this.l[n.type+e];if(n[Z]==null)n[Z]=xe++;else if(n[Z]<t[G])return;return t(T.event?T.event(n):n)}}}function $e(e,n,t,o,s,a,i,l,g,d){var f,v,u,h,C,k,w,S,$,P,m,E,M,x,H,U,y=n.type;if(n.constructor!==void 0)return null;128&t.__u&&(g=!!(32&t.__u),a=[l=n.__e=t.__e]),(f=T.__b)&&f(n);e:if(typeof y=="function"){v=i.length;try{if($=n.props,P=y.prototype&&y.prototype.render,m=(f=y.contextType)&&o[f.__c],E=f?m?m.props.value:f.__:o,t.__c?S=(u=n.__c=t.__c).__=u.__E:(P?n.__c=u=new y($,E):(n.__c=u=new re($,E),u.constructor=y,u.render=Fn),m&&m.sub(u),u.state||(u.state={}),u.__n=o,h=u.__d=!0,u.__h=[],u._sb=[]),P&&u.__s==null&&(u.__s=u.state),P&&y.getDerivedStateFromProps!=null&&(u.__s==u.state&&(u.__s=B({},u.__s)),B(u.__s,y.getDerivedStateFromProps($,u.__s))),C=u.props,k=u.state,u.__v=n,h)P&&y.getDerivedStateFromProps==null&&u.componentWillMount!=null&&u.componentWillMount(),P&&u.componentDidMount!=null&&u.__h.push(u.componentDidMount);else{if(P&&y.getDerivedStateFromProps==null&&$!==C&&u.componentWillReceiveProps!=null&&u.componentWillReceiveProps($,E),n.__v==t.__v||!u.__e&&u.shouldComponentUpdate!=null&&u.shouldComponentUpdate($,u.__s,E)===!1){n.__v!=t.__v&&(u.props=$,u.state=u.__s,u.__d=!1),n.__e=t.__e,n.__k=t.__k,n.__k.some(function(R){R&&(R.__=n)}),ne.push.apply(u.__h,u._sb),u._sb=[],u.__h.length&&i.push(u),l=q(t);break e}u.componentWillUpdate!=null&&u.componentWillUpdate($,u.__s,E),P&&u.componentDidUpdate!=null&&u.__h.push(function(){u.componentDidUpdate(C,k,w)})}if(u.context=E,u.props=$,u.__P=e,u.__e=!1,M=T.__r,x=0,P)u.state=u.__s,u.__d=!1,M&&M(n),f=u.render(u.props,u.state,u.context),ne.push.apply(u.__h,u._sb),u._sb=[];else do u.__d=!1,M&&M(n),f=u.render(u.props,u.state,u.context),u.state=u.__s;while(u.__d&&++x<25);u.state=u.__s,u.getChildContext!=null&&(o=B(B({},o),u.getChildContext())),P&&!h&&u.getSnapshotBeforeUpdate!=null&&(w=u.getSnapshotBeforeUpdate(C,k)),H=f!=null&&f.type===L&&f.key==null?en(f.props.children):f,l=Ge(e,te(H)?H:[H],n,t,o,s,a,i,l,g,d),u.base=n.__e,n.__u&=-161,u.__h.length&&i.push(u),S&&(u.__E=u.__=null)}catch(R){if(i.length=v,n.__v=null,g||a!=null){if(R.then){for(n.__u|=g?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;a!=null&&(a[a.indexOf(l)]=null),n.__e=l}else if(a!=null)for(U=a.length;U--;)we(a[U])}else n.__e=t.__e;n.__k==null&&(n.__k=t.__k||[]),R.then||Xe(n),T.__e(R,n,t)}}else a==null&&n.__v==t.__v?(n.__k=t.__k,n.__e=t.__e):l=n.__e=Hn(t.__e,n,t,o,s,a,i,g,d);return(f=T.diffed)&&f(n),128&n.__u?void 0:l}function Xe(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Xe))}function Ze(e,n,t){for(var o=0;o<t.length;o++)Se(t[o],t[++o],t[++o]);T.__c&&T.__c(n,e),e.some(function(s){try{e=s.__h,s.__h=[],e.some(function(a){a.call(s)})}catch(a){T.__e(a,s.__v)}})}function en(e){return typeof e!="object"||e==null||e.__b>0?e:te(e)?e.map(en):e.constructor!==void 0?null:B({},e)}function Hn(e,n,t,o,s,a,i,l,g){var d,f,v,u,h,C,k,w=t.props||ee,S=n.props,$=n.type;if($=="svg"?s="http://www.w3.org/2000/svg":$=="math"?s="http://www.w3.org/1998/Math/MathML":s||(s="http://www.w3.org/1999/xhtml"),a!=null){for(d=0;d<a.length;d++)if((h=a[d])&&"setAttribute"in h==!!$&&($?h.localName==$:h.nodeType==3)){e=h,a[d]=null;break}}if(e==null){if($==null)return document.createTextNode(S);e=document.createElementNS(s,$,S.is&&S),l&&(T.__m&&T.__m(n,a),l=!1),a=null}if($==null)w===S||l&&e.data==S||(e.data=S);else{if(a=$=="textarea"&&S.defaultValue!=null?null:a&&X.call(e.childNodes),!l&&a!=null)for(w={},d=0;d<e.attributes.length;d++)w[(h=e.attributes[d]).name]=h.value;for(d in w)h=w[d],d=="dangerouslySetInnerHTML"?v=h:d=="children"||d in S||d=="value"&&"defaultValue"in S||d=="checked"&&"defaultChecked"in S||se(e,d,null,h,s);for(d in S)h=S[d],d=="children"?u=h:d=="dangerouslySetInnerHTML"?f=h:d=="value"?C=h:d=="checked"?k=h:l&&typeof h!="function"||w[d]===h||se(e,d,h,w[d],s);if(f)l||v&&(f.__html==v.__html||f.__html==e.innerHTML)||(e.innerHTML=f.__html),n.__k=[];else if(v&&(e.innerHTML=""),Ge(n.type=="template"?e.content:e,te(u)?u:[u],n,t,o,$=="foreignObject"?"http://www.w3.org/1999/xhtml":s,a,i,a?a[0]:t.__k&&q(t,0),l,g),a!=null)for(d=a.length;d--;)we(a[d]);l&&$!="textarea"||(d="value",$=="progress"&&C==null?e.removeAttribute("value"):C!=null&&(C!==e[d]||$=="progress"&&!C||$=="option"&&C!=w[d])&&se(e,d,C,w[d],s),d="checked",k!=null&&k!=e[d]&&se(e,d,k,w[d],s))}return e}function Se(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){T.__e(s,t)}}function nn(e,n,t){var o,s;if(T.unmount&&T.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||Se(o,null,n)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(a){T.__e(a,n)}o.base=o.__P=o.__n=null}if(o=e.__k)for(s=0;s<o.length;s++)o[s]&&nn(o[s],n,t||typeof e.type!="function");t||we(e.__e),e.__c=e.__=e.__e=void 0}function Fn(e,n,t){return this.constructor(e,t)}function tn(e,n,t){var o,s,a,i;n==document&&(n=document.documentElement),T.__&&T.__(e,n),s=(o=!1)?null:n.__k,a=[],i=[],$e(n,e=n.__k=O(L,null,[e]),s||ee,ee,n.namespaceURI,s?null:n.firstChild?X.call(n.childNodes):null,a,s?s.__e:n.firstChild,o,i),Ze(a,e,i),e.props.children=null}X=ne.slice,T={__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(l){e=l}throw e}},He=0,re.prototype.setState=function(e,n){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=B({},this.state),typeof e=="function"&&(e=e(B({},t),this.props)),e&&B(t,e),e!=null&&this.__v&&(n&&this._sb.push(n),Ye(this))},re.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ye(this))},re.prototype.render=L,K=[],Be=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ke=function(e,n){return e.__v.__b-n.__v.__b},ae.__r=0,be=Math.random().toString(8),Z="__d"+be,G="__a"+be,qe=/(PointerCapture)$|Capture$/i,xe=0,ye=Qe(!1),ve=Qe(!0);var Bn=0;function r(e,n,t,o,s,a){n||(n={});var i,l,g=n;if("ref"in g)for(l in g={},n)l=="ref"?i=n[l]:g[l]=n[l];var d={type:e,props:g,key:t,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Bn,__i:-1,__u:0,__source:s,__self:a};if(typeof e=="function"&&(i=e.defaultProps))for(l in i)g[l]===void 0&&(g[l]=i[l]);return T.vnode&&T.vnode(d),d}const Kn="Snagset",qn="snagset",Wn="snagset:",Yn="Snagset",Gn="Snag",Vn="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"},Jn=e=>`var(${b[e]})`,Qn=e=>"snag_"+e,on={query:["snag_t","snag_off","snag_debug","snag_theme"],fragment:["snag_k"]},rn="snag:identity",Xn="data-snag-theme";var V,D,Ce,an,ie=0,sn=[],A=T,ln=A.__b,dn=A.__r,cn=A.diffed,un=A.__c,pn=A.unmount,gn=A.__;function Ee(e,n){A.__h&&A.__h(D,e,ie||n),ie=0;var t=D.__H||(D.__H={__:[],__h:[]});return e>=t.__.length&&t.__.push({}),t.__[e]}function N(e){return ie=1,Zn(mn,e)}function Zn(e,n,t){var o=Ee(V++,2);if(o.t=e,!o.__c&&(o.__=[mn(void 0,n),function(l){var g=o.__N?o.__N[0]:o.__[0],d=o.t(g,l);g!==d&&(o.__N=[d,o.__[1]],o.__c.setState({}))}],o.__c=D,!D.__f)){var s=function(l,g,d){if(!o.__c.__H)return!0;var f=!1,v=o.__c.props!==l;if(o.__c.__H.__.some(function(h){if(h.__N){f=!0;var C=h.__[0];h.__=h.__N,h.__N=void 0,C!==h.__[0]&&(v=!0)}}),a){var u=a.call(this,l,g,d);return f?u||v:u}return!f||v};D.__f=!0;var a=D.shouldComponentUpdate,i=D.componentWillUpdate;D.componentWillUpdate=function(l,g,d){if(this.__e){var f=a;a=void 0,s(l,g,d),a=f}i&&i.call(this,l,g,d)},D.shouldComponentUpdate=s}return o.__N||o.__}function z(e,n){var t=Ee(V++,3);!A.__s&&fn(t.__H,n)&&(t.__=e,t.u=n,D.__H.__h.push(t))}function j(e){return ie=5,et(function(){return{current:e}},[])}function et(e,n){var t=Ee(V++,7);return fn(t.__H,n)&&(t.__=e(),t.__H=n,t.__h=e),t.__}function nt(){for(var e;e=sn.shift();){var n=e.__H;if(e.__P&&n)try{n.__h.some(le),n.__h.some(Me),n.__h=[]}catch(t){n.__h=[],A.__e(t,e.__v)}}}A.__b=function(e){D=null,ln&&ln(e)},A.__=function(e,n){e&&n.__k&&n.__k.__m&&(e.__m=n.__k.__m),gn&&gn(e,n)},A.__r=function(e){dn&&dn(e),V=0;var n=(D=e.__c).__H;n&&(Ce===D?(n.__h=[],D.__h=[],n.__.some(function(t){t.__N&&(t.__=t.__N),t.u=t.__N=void 0})):(n.__h.some(le),n.__h.some(Me),n.__h=[],V=0)),Ce=D},A.diffed=function(e){cn&&cn(e);var n=e.__c;n&&n.__H&&(n.__H.__h.length&&(sn.push(n)!==1&&an===A.requestAnimationFrame||((an=A.requestAnimationFrame)||tt)(nt)),n.__H.__.some(function(t){t.u&&(t.__H=t.u,t.u=void 0)})),Ce=D=null},A.__c=function(e,n){n.some(function(t){try{t.__h.some(le),t.__h=t.__h.filter(function(o){return!o.__||Me(o)})}catch(o){n.some(function(s){s.__h&&(s.__h=[])}),n=[],A.__e(o,t.__v)}}),un&&un(e,n)},A.unmount=function(e){pn&&pn(e);var n,t=e.__c;t&&t.__H&&(t.__H.__.some(function(o){try{le(o)}catch(s){n=s}}),t.__H=void 0,n&&A.__e(n,t.__v))};var hn=typeof requestAnimationFrame=="function";function tt(e){var n,t=function(){clearTimeout(o),hn&&cancelAnimationFrame(n),setTimeout(e)},o=setTimeout(t,35);hn&&(n=requestAnimationFrame(t))}function le(e){var n=D,t=e.__c;typeof t=="function"&&(e.__c=void 0,t()),D=n}function Me(e){var n=D;e.__c=e.__(),D=n}function fn(e,n){return!e||e.length!==n.length||n.some(function(t,o){return t!==e[o]})}function mn(e,n){return typeof n=="function"?n(e):n}const ot={product:Kn,set:Yn,item:Gn,items:Vn};function _n(e){return(n,t)=>(e[n]??"").replace(/\{(\w+)\}/g,(o,s)=>{const a=t?.[s]??ot[s];return a===void 0?o:String(a)})}const I=e=>new Intl.NumberFormat().format(e),kn={"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}"},rt=_n(kn),de={open:{colour:"#4f6ef7"},progress:{colour:"#f59e0b"},review:{colour:"#8b5cf6"},resolved:{colour:"#10b981"}},Te=e=>de[e]?.colour??"#8a8f98",bn=e=>e==="open"||e==="review"?"#fff":"#16161a",De=e=>e in de?rt(`status.${e}`):e,c=Object.fromEntries(Object.keys(b).map(e=>[e,Jn(e)])),at=Object.entries(de).map(([e,n])=>` ${b[`status${e[0].toUpperCase()}${e.slice(1)}`]}:${n.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}${Xn}${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 st={dock:5},xn=new WeakMap;function yn(e,n,t){let o=xn.get(e);if(o||xn.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 it=` .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 lt(e,n,t){const[o,s]=N(!1);return z(()=>{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 dt(e){const n=window.visualViewport;if(!n)return;let t=0,o=0;const s=()=>{t=0;const l=Math.max(0,Math.round(window.innerHeight-n.height-n.offsetTop));e.style.setProperty(b.kb,`${l}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 ct="noreferrer nofollow";function ut(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 pt=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("|")),gt=4;function ce(e,n=0,t=0){const o=[];let s=e,a=n;if(t>=gt)return e?[e]:[];for(;;){const i=pt.exec(s);if(!i)return s&&o.push(s),o;i.index>0&&o.push(s.slice(0,i.index));const l=`i${a++}`,g=i.groups,d=g.bold??g.boldU,f=g.em??g.emU;if(d!==void 0)o.push(O("strong",{key:l},ce(d,a,t+1)));else if(f!==void 0)o.push(O("em",{key:l},ce(f,a,t+1)));else if(g.code!==void 0)o.push(O("code",{key:l},g.code));else{const v=ut(g.href??"");o.push(v?O("a",{key:l,href:v,target:"_blank",rel:ct},g.label??""):i[0])}s=s.slice(i.index+i[0].length)}}const Ae=/^```[^\n]*$/,Pe=/^[-*]\s+(.*)$/,Re=/^\d{1,9}[.)]\s+(.*)$/;function vn(e){const n=e.split(`
3
- `),t=[];let o=0,s=0;for(;o<n.length;){const a=n[o];if(Ae.test(a)){const d=[];for(o++;o<n.length&&!Ae.test(n[o]);)d.push(n[o++]);o++,t.push(O("pre",{key:`b${s++}`},O("code",null,d.join(`
4
- `))));continue}const i=Pe.exec(a),l=Re.exec(a);if(i||l){const d=i?Pe:Re,f=[];for(;o<n.length;){const v=d.exec(n[o]);if(!v)break;f.push(O("li",{key:`l${f.length}`},ce(v[1]))),o++}t.push(O(i?"ul":"ol",{key:`b${s++}`},f));continue}const g=[];for(;o<n.length;){const d=n[o];if(!d.trim()||Ae.test(d)||Pe.test(d)||Re.test(d))break;g.push(d),o++}g.length?t.push(O("p",{key:`b${s++}`},ce(g.join(`
5
- `)))):o++}return O("div",{class:"snag-md"},t)}const ht=`${Wn}session`;function ft(e,n,t){if(e.origin!==n||!t||e.source!==t)return!1;const o=e.data;return!!o&&o.type===ht&&typeof o.session?.sessionToken=="string"&&typeof o.session.reviewer?.name=="string"}function mt(e,n,t,o){const s=new URLSearchParams({project:n,origin:t});return o&&s.set("env",o),`${new URL(e).origin}/widget-signin?${s}`}function _t(e,n,t){const o=new URL(e).origin,s=window.open(mt(e,n,location.origin,t),`${qn}-signin`,"popup,width=480,height=600");return s?new Promise(a=>{let i=0;const l=f=>{removeEventListener("message",g),clearInterval(d),a(f)},g=f=>{ft(f,o,s)&&l(f.data.session)};addEventListener("message",g);const d=setInterval(()=>{s.closed&&++i>1&&l(null)},400)}):Promise.resolve("blocked")}function wn(){let e=null;try{e=localStorage.getItem(rn)}catch{return{}}if(!e)return{};if(e[0]!=="{")return{name:e};try{const n=JSON.parse(e);return n&&typeof n=="object"?n:{}}catch{return{}}}function kt(e){try{localStorage.setItem(rn,JSON.stringify(e))}catch{}}function bt(){const e=wn();return{name:typeof e.name=="string"?e.name:"",...e.email?{email:e.email}:{}}}function xt(e){const n=wn();kt({...n,name:e.name,...e.email?{email:e.email}:{}})}const yt={"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}"},vt={"disclosure.title":"Before your first comment","disclosure.always":"Each comment carries the page address, viewport size and browser make.","disclosure.crumbs.on":"Recent console messages and network results ride along, recognisable secrets redacted first.","disclosure.crumbs.off":"Console and network capture is off here.","disclosure.screenshot.off":"Screenshots are off for this project.","disclosure.screenshot.on":"{product} never reads what you type. Screenshots are pictures of the page, so anything visible on screen is in the picture \u2014 mark sensitive regions with {maskAttr} and they are blurred before the screenshot leaves your browser.","disclosure.retention":"Everything stays in this browser until someone exports it \u2014 the privacy notes list what can still leak.","disclosure.retention.server":"Your comment, the page address and the details above are sent to {host} when you post \u2014 the privacy notes list what can still leak.","disclosure.ack":"Got it","composer.aria":"New comment","composer.parent":"Pin the parent","composer.child":"Pin the first child","composer.shot":"Add a screenshot","composer.name":"Your name","composer.email":"Email, so we can reply","composer.email.bad":"Check the address \u2014 or leave it blank.","composer.signin":"Studio member? Sign in","composer.signin.blocked":"Allow pop-ups for this page to sign in.","composer.member":"Commenting as {name}","composer.signout":"Not you? Sign out","composer.chars":"{n} characters left","composer.body":"Comment","composer.body.placeholder":"What's the {item}?","action.cancel":"Cancel","action.post":"Post comment","composer.discard.sure":"Sure? Discard this comment","action.discard":"Discard?"},wt={"shot.open":"See the screenshot","shot.aria":"Screenshot","shot.close":"Close","announce.status":"Comment {key} set to {status}.","search.placeholder":"Search {n} comments\u2026","search.aria":"Search comments","round.label":"Round","round.closed":"(closed)","filter.status":"Status","filter.clear":"Clear","filter.selectall":"Select all","sort.button":"Sort","sort.newest":"Newest first","sort.oldest":"Oldest first","sort.page":"By page","filter.button":"Filter","filter.button.n":"Filter \xB7 {n}","filter.by":"Comments by","filter.by.anyone":"Anyone","filter.pages":"Pages","filter.pages.all":"All pages","filter.pageonly":"Show comments on this page only","filter.new":"See new activity \xB7 {n}","filter.new.on":"Showing new activity \u2014 show all","filter.new.none":"You\u2019re caught up \u2014 show all","filter.read":"Marked as","filter.read.all":"Anyone\u2019s, read or not","filter.read.unread":"Unread","filter.read.read":"Read","dock.unread":"Unread","badge.anchored":"","badge.approximate":"~","badge.orphaned":"moved","badge.hidden":"hidden","capture.label":"Comment left on","capture.page":"{route}","device.Mobile":"Mobile","device.Desktop":"Desktop","dock.aria":"All comments","dock.title.list":"All comments","dock.title.detail":"Comment","dock.close":"Close all comments","dock.empty":"No comments yet. Press +, then click anything on the page.","dock.empty.filter":"Nothing matches that filter.","dock.empty.orphans":"Every comment here lost its element \u2014 but what each one pointed at is still recorded.","dock.empty.page":"Nothing on this page. {n} comments on {m} other pages.","dock.row.empty":"(no comment)","dock.replies":"{n} replies","dock.goto":"Go to {route}","dock.cluster":"{n} comments in this cluster","dock.cluster.clear":"Show all","dock.hiddenrow":"That comment is now hidden by your filter","dock.hiddenrow.show":"Show","dock.back":"All","dock.back.aria":"Back to all comments","dock.position":"{n} of {total}","dock.prev":"Previous comment","dock.next":"Next comment","dock.clear":"Clear all","dock.clear.aria":"Delete every comment in this review","comment.edit":"Edit this comment","comment.delete":"Delete this comment and its pin","reply.delete":"Delete this reply","time.now":"just now","who.name":"Your name","who.email":"Email, so we can reply","who.email.bad":"Check the address \u2014 or leave it blank.","who.signin":"Studio member? Sign in","who.signin.blocked":"Allow pop-ups for this page to sign in.","who.member":"Replying as {name}","who.signout":"Not you? Sign out","detail.hidden.show":"Show anyway","field.status":"Status","field.assignee":"Assigned to","assignee.none":"Unassigned","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"},$t={...kn,...yt,...vt,...wt},p=_n($t),St=[/^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$/],Ct=[...on.query,...on.fragment];function Et(e,n=[]){return Ct.includes(e)||n.includes(e)?!0:St.some(t=>t.test(e))}const ue=["open","progress","review","resolved"];function Mt(e,n){const t=e.includes(n)?e.filter(o=>o!==n):[...e,n];return t.length>=ue.length?[]:t}function Tt(e,n,t){if(n.statuses.length>0&&ue.includes(e.status)&&!n.statuses.includes(e.status)||n.by&&e.createdBy.id!==n.by||n.page&&e.route!==n.page)return!1;if(n.read!=="all"&&t){const o=pe(e,t);if(n.read==="unread"&&!o||n.read==="read"&&o)return!1}return!0}function pe(e,n){const t=n.get(e.id)??0;return Date.parse(e.updatedAt)>t}function Dt(e,n,t,o){let s=e;n.pageOnly&&(s=s.filter(i=>i.route===t)),n.newOnly&&o&&(s=s.filter(i=>pe(i,o)));const a=n.q?.trim().toLowerCase();return a&&(s=s.filter(i=>i.comments.some(l=>(l.body??"").toLowerCase().includes(a)||l.author.name.toLowerCase().includes(a))||i.createdBy.name.toLowerCase().includes(a))),s}function At(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 Pt(e){const n=new Map;for(const t of e)n.set(t.status,(n.get(t.status)??0)+1);return{all:e.length,byStatus:n}}function Rt(e){return(e.read!=="all"?1:0)+(e.by?1:0)+(e.page?1:0)}const Ne=Object.keys(de);function $n({label:e,title:n,cls:t,role:o,onConfirm:s}){const{armed:a,press:i}=lt(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 Nt({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 It({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 Sn({iso:e}){const n=Date.parse(e);if(!Number.isFinite(n))return null;const t=new Date(n),o=Math.round((n-Date.now())/1e3);let s;if(Math.abs(o)<45)s=p("time.now");else if(Math.abs(o)<7*86400){const a=new Intl.RelativeTimeFormat(void 0,{numeric:"auto",style:"short"}),[i,l]=Math.abs(o)<3600?[Math.round(o/60),"minute"]:Math.abs(o)<86400?[Math.round(o/3600),"hour"]:[Math.round(o/86400),"day"];s=a.format(i,l)}else s=t.toLocaleDateString(void 0,{day:"numeric",month:"short",...t.getFullYear()===new Date().getFullYear()?{}:{year:"numeric"}});return r("time",{class:"snag-dk-dim snag-dk-when",dateTime:t.toISOString(),title:t.toLocaleString(),children:s})}function Cn({body:e,onEdit:n,deleteLabel:t,onDelete:o}){const s=e??"",[a,i]=N(!1),[l,g]=N(!1),[d,f]=N(s),v=j(null),u=h=>{h.key!=="Escape"||!l||(h.stopPropagation(),g(!1))};return z(()=>{a&&v.current?.focus()},[a]),a&&n?r("div",{class:"snag-dk-editbox",children:[r("textarea",{ref:v,class:"snag-text",rows:3,"aria-label":p("comment.edit"),value:d,onInput:h=>f(h.target.value),onKeyDown:h=>{h.key==="Enter"&&(h.metaKey||h.ctrlKey)&&(h.preventDefault(),d.trim()&&(n(d.trim()),i(!1))),h.key==="Escape"&&(h.stopPropagation(),f(s),i(!1))}}),r("div",{class:"snag-actions",children:[r("button",{type:"button",class:"snag-cancel",onClick:()=>{f(s),i(!1)},children:p("action.cancel")}),r("button",{type:"button",class:"snag-send",disabled:!d.trim()||d.trim()===s,onClick:()=>{n(d.trim()),i(!1)},children:p("action.save")})]})]}):r("div",{class:"snag-dk-acts snag-dk-menus",onKeyDown:u,children:[l&&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":l,"aria-haspopup":"menu",title:p("action.more"),onClick:()=>g(!l),children:"\u22EF"}),l&&r("div",{class:"snag-dk-menu",role:"menu",children:[n&&r("button",{type:"button",role:"menuitem",title:p("comment.edit"),"aria-label":p("comment.edit"),onClick:()=>{g(!1),f(s),i(!0)},children:p("action.edit")}),o&&r($n,{label:p("action.delete"),title:t,cls:"snag-dk-act--danger",role:"menuitem",onConfirm:o})]})]})]})}function Ot({snag:e}){const n=e.anchorReasons?.includes("hidden")??!1;return r("span",{class:"snag-dk-dim snag-dk-where",children:[n&&r(L,{children:[r("span",{class:"snag-dk-moved",children:p("badge.hidden")})," "]}),e.anchorState!=="anchored"&&r(L,{children:[r("span",{class:"snag-dk-moved",children:p(`badge.${e.anchorState}`)})," "]}),e.anchor.label]})}function Lt(e){const n=new Map,t=new Map;for(const o of e){const s=(n.get(o.route)??0)+1;n.set(o.route,s),t.set(o.id,s)}return t}function zt(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 Ut({snag:e,n,here:t,unread:o,onOpen:s,onHover:a}){const i=g=>a(t?g:null),l=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:Te(e.status),color:bn(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(Ot,{snag:e})})]}),r(Nt,{snag:e}),e.comments.length>1&&r("span",{class:"snag-dk-replies",role:"img","aria-label":p("dock.replies",{n:I(e.comments.length-1)}),children:I(e.comments.length-1)}),!t&&r("span",{class:"snag-dk-goto",role:"img",title:l,"aria-label":l,children:"\u2197"})]})})}const En=e=>c[`status${e[0].toUpperCase()}${e.slice(1)}`]??c.muted;function jt({round:e,filter:n,onFilter:t,rounds:o,activeRound:s,onRound:a,onClearAll:i,seenAt:l}){const g=!!o&&o.length>1&&!!a,d=e.length>0,[f,v]=N(null),u=Pt(e),h=m=>{const E={...n};for(const[M,x]of Object.entries(m))x===void 0?delete E[M]:E[M]=x;t(E)},C=n.statuses.length>0,k=Rt(n),w=[...new Map(e.map(m=>[m.createdBy.id,m.createdBy.name]))],S=[...new Set(e.map(m=>m.route))].sort(),$=[...u.byStatus.keys()].filter(m=>!ue.includes(m)),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(C?"filter.selectall":"filter.clear")})]}),r("div",{class:"snag-dk-chips",role:"group","aria-label":p("filter.status"),children:[ue.map(m=>{const E=n.statuses.includes(m);return r("button",{type:"button",class:"snag-dk-chip","aria-pressed":E,style:`border-color:color-mix(in srgb, ${En(m)} 60%, transparent);background:color-mix(in srgb, ${En(m)} ${E?28:10}%, transparent)`,onClick:()=>h({statuses:Mt(n.statuses,m)}),children:[De(m)," ",r("span",{class:"snag-dk-dim",children:I(u.byStatus.get(m)??0)})]})}),$.map(m=>r("span",{class:"snag-dk-chip snag-dk-chip-stray",children:[m," ",r("span",{class:"snag-dk-dim",children:I(u.byStatus.get(m)??0)})]}))]})]});return r("div",{class:"snag-dk-filters",children:[d&&r("input",{class:"snag-input snag-dk-search",type:"search","aria-label":p("search.aria"),placeholder:p("search.placeholder",{n:I(e.length)}),value:n.q??"",onInput:m=>h({q:m.currentTarget.value||void 0})}),r("div",{class:"snag-dk-menus",onKeyDown:m=>{m.key!=="Escape"||!f||(m.stopPropagation(),v(null))},children:[f&&r("div",{class:"snag-dk-menubg","aria-hidden":"true",onClick:()=>v(null)}),r("span",{class:"snag-dk-menuwrap",children:[r("button",{type:"button",class:"snag-dk-link","aria-expanded":f==="filter",onClick:()=>v(f==="filter"?null:"filter"),children:k>0?p("filter.button.n",{n:I(k)}):p("filter.button")}),f==="filter"&&r("div",{class:"snag-dk-menu snag-dk-menu-form",role:"group","aria-label":p("filter.button"),children:[(g||d)&&r("div",{class:"snag-dk-menugroup",children:[!g&&r("span",{class:"snag-dk-menutitle",children:p("round.label")}),g&&r("label",{class:"snag-dk-round",children:[r("span",{class:"snag-dk-menutitle",children:p("round.label")}),r("select",{class:"snag-input",value:String(s??""),onChange:m=>a(Number(m.currentTarget.value)),children:o.map(m=>r("option",{value:String(m.number),children:[m.name,m.closed?` ${p("round.closed")}`:""]},m.number))})]}),d&&r($n,{label:p("dock.clear"),title:p("dock.clear.aria"),cls:"snag-dk-link snag-dk-clear",onConfirm:i})]}),d&&P,d&&r("div",{class:"snag-dk-menugroup",role:"radiogroup","aria-label":p("sort.button"),children:[r("span",{class:"snag-dk-menutitle","aria-hidden":"true",children:p("sort.button")}),[["newest","sort.newest"],["oldest","sort.oldest"],["page","sort.page"]].map(([m,E])=>r("button",{type:"button",role:"radio","aria-checked":n.sort===m,onClick:()=>h({sort:m}),children:[r("span",{class:"snag-dk-tick","aria-hidden":"true",children:n.sort===m?"\u2713":"\xA0"}),p(E)]}))]}),d&&r("div",{class:"snag-dk-menugroup snag-dk-menugroup-last",children:[l&&r("label",{children:[p("filter.read"),r("select",{value:n.read,onChange:m=>h({read:m.currentTarget.value}),children:[r("option",{value:"all",children:p("filter.read.all")}),r("option",{value:"unread",children:p("filter.read.unread")}),r("option",{value:"read",children:p("filter.read.read")})]})]}),r("label",{children:[p("filter.by"),r("select",{value:n.by??"",onChange:m=>h({by:m.currentTarget.value||void 0}),children:[r("option",{value:"",children:p("filter.by.anyone")}),w.map(([m,E])=>r("option",{value:m,children:E}))]})]}),r("label",{children:[p("filter.pages"),r("select",{value:n.page??"",onChange:m=>h({page:m.currentTarget.value||void 0}),children:[r("option",{value:"",children:p("filter.pages.all")}),S.map(m=>r("option",{value:m,children:m}))]})]}),r("label",{class:"snag-dk-pageonly",children:[r("input",{type:"checkbox",checked:n.pageOnly,onChange:m=>h({pageOnly:m.currentTarget.checked})})," ",p("filter.pageonly")]})]})]})]})]})]})}function Ht({snags:e,groups:n,route:t,onOpen:o,onHover:s,onExport:a,onClearAll:i,clusterFilter:l,onClusterClear:g,filter:d,onFilter:f,hiddenNote:v,onHiddenShow:u,rounds:h,activeRound:C,onRound:k,seenAt:w}){const S=Lt(e),$=n.flatMap(y=>y.snags),P=d.statuses.length>0||!!d.by||!!d.page||!!d.q?.trim()||d.pageOnly||d.newOnly||d.read!=="all",m=w?e.filter(y=>pe(y,w)).length:0,E=j(null),[M,x]=N(!1),H=y=>{y.key!=="Escape"||!M||(y.stopPropagation(),x(!1))},U=j(null);return z(()=>{const y=E.current,R=U.current;!y||!R||(y.scrollTop+=R.getBoundingClientRect().top-y.getBoundingClientRect().top)},[t,n.length]),r(L,{children:[(e.length>0||h&&h.length>1&&k)&&r(jt,{round:e,filter:d,onFilter:f,onClearAll:i,...w===void 0?{}:{seenAt:w},...h===void 0?{}:{rounds:h},...C===void 0?{}:{activeRound:C},...k===void 0?{}:{onRound:k}}),w&&(m>0||d.newOnly)&&r("button",{type:"button",class:"snag-dk-newpill","aria-pressed":d.newOnly,onClick:()=>f({...d,newOnly:!d.newOnly}),children:d.newOnly?p(m===0?"filter.new.none":"filter.new.on"):p("filter.new",{n:I(m)})}),e.length===0?r("div",{class:"snag-dk-empty",children:r("p",{children:p("dock.empty")})}):$.length===0&&P?r("div",{class:"snag-dk-empty",children:d.pageOnly&&e.some(y=>y.route!==t)?r("p",{children:p("dock.empty.page",{n:I(e.filter(y=>y.route!==t).length),m:I(new Set(e.filter(y=>y.route!==t).map(y=>y.route)).size)})}):r("p",{children:p("dock.empty.filter")})}):r(L,{children:[v&&r("p",{class:"snag-dk-notice",children:[p("dock.hiddenrow")," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>u(v),children:p("dock.hiddenrow.show")})]}),l&&r("p",{class:"snag-dk-notice",children:[p("dock.cluster",{n:l.length})," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>g?.(),children:p("dock.cluster.clear")})]}),e.every(y=>y.anchorState==="orphaned")&&r("p",{class:"snag-dk-notice",children:p("dock.empty.orphans")}),r("div",{class:"snag-dk-scroll",ref:E,children:n.map(y=>r("section",{class:"snag-dk-group",ref:y.here?U:null,children:[y.route!==""&&r("h3",{class:"snag-dk-grouphd",children:[r("span",{class:"snag-dk-route",children:y.route}),r("span",{class:"snag-dk-dim",children:I(y.snags.length)})]}),r("ul",{class:"snag-dk-list",children:y.snags.map(R=>r(Ut,{snag:R,n:S.get(R.id),here:y.here,unread:!!w&&pe(R,w),onOpen:o,onHover:s},R.id))})]},y.route))})]}),r("div",{class:"snag-dk-foot",children:r("div",{class:"snag-dk-menus snag-dk-menus-up",onKeyDown:H,children:[M&&r("div",{class:"snag-dk-menubg","aria-hidden":"true",onClick:()=>x(!1)}),r("span",{class:"snag-dk-menuwrap",children:[r("button",{type:"button",class:"snag-dk-link","aria-expanded":M,"aria-haspopup":"menu",onClick:()=>x(!M),children:p("export.button")}),M&&r("div",{class:"snag-dk-menu snag-dk-menu-up",role:"menu",children:["md","json"].map(y=>r("button",{type:"button",role:"menuitem",onClick:()=>{x(!1),a(y)},children:p(y==="md"?"export.md":"export.json")}))})]})]})})]})}const Ie=new Map;function Ft(e){const n=[];try{for(const[t,o]of new URL(e).searchParams)Et(t)||n.push(o&&o!=="[redacted]"?`${t}=${o}`:t)}catch{return null}return n.length?`?${n.join("&")}`:null}function Bt({att:e,load:n}){const t=j(null),[o,s]=N(!1),[a,i]=N(null);return z(()=>{let l=!1;return n(e).then(async g=>{if(!g||l)return;const d=await createImageBitmap(g);l?d.close():i(d)}).catch(()=>{}),()=>{l=!0}},[e.id,e.url]),z(()=>{const l=t.current;if(!l||!a)return;const g=142,d=g/a.width;l.width=g,l.height=Math.min(96,Math.round(a.height*d)),l.getContext("2d").drawImage(a,0,0,a.width,Math.round(l.height/d),0,0,l.width,l.height)},[a]),a?r(L,{children:[r("button",{type:"button",class:"snag-dk-shot",onClick:()=>s(!0),"aria-label":p("shot.open"),children:r("canvas",{ref:t,width:142,height:Math.min(96,Math.round(a.height*(142/a.width)))})}),o&&r(Kt,{bmp:a,onClose:()=>s(!1)})]}):null}function Kt({bmp:e,onClose:n}){const t=j(null);return z(()=>{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 qt({snag:e,loadShot:n}){const t=e.context;if(!t)return null;const o=e.attachments?.find(l=>l.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(Bt,{att:o,load:n}),r("p",{class:"snag-dk-caplabel",children:p("capture.label")}),t.page?.route!==void 0&&r("p",{children:p("capture.page",{route:t.page.route})}),s&&a&&r(L,{children:[r("p",{children:s.os?p("capture.agent",{browser:s.browser,os:s.os}):p("capture.agent.noos",{browser:s.browser})}),r("p",{children:i===1?p("capture.device.at1x",{device:s.device,w:a.w,h:a.h}):p("capture.device",{device:s.device,w:a.w,h:a.h,dpr:i})})]}),t.capture?.reasons?.map(l=>r("p",{class:"snag-dk-capwhy",children:l},l)),t.capture?.blindSpots?.map(l=>r("p",{class:"snag-dk-capwhy",children:l},l)),(()=>{const l=Ft(t.url);return l?r("p",{class:"snag-dk-capwhy",children:[p("detail.filedat",{query:l})," ",r("a",{class:"snag-dk-openq",href:t.url,target:"_blank",rel:"noreferrer",children:p("detail.openquery")})]}):null})()]})}function Mn(e){const n=e.context?.url??e.route;return`${n}${n.includes("?")?"&":"?"}${Qn("t")}=${e.key}`}function Wt({snag:e}){const[n,t]=N(!1),o=Mn(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 Yt({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:Mn(e)})]})}let Oe=null;function Gt({snag:e,list:n,onAssign:t}){const[o,s]=N([]);z(()=>{n&&(Oe??=n().catch(()=>(Oe=null,[])),Oe.then(s))},[n]);const a=e.assignee??null;if(!n||!t)return a?r("p",{class:"snag-dk-field",children:[r("span",{class:"snag-dk-dim",children:p("field.assignee")})," ",r("strong",{children:a.name})]}):null;const i=a&&!o.some(l=>l.id===a.id)?[a,...o]:o;return r("label",{class:"snag-dk-field",children:[r("span",{class:"snag-dk-dim",children:p("field.assignee")}),r("select",{class:"snag-dk-select",value:a?.id??"",onChange:l=>{const g=l.target.value;t(e.id,i.find(d=>d.id===g)??null)},children:[r("option",{value:"",children:p("assignee.none")}),i.map(l=>r("option",{value:l.id,children:l.name},l.id))]})]})}function Vt({snags:e,round:n,fallbackCursor:t,openId:o,onOpen:s,onStatus:a,onReply:i,onEdit:l,onDeleteComment:g,onDeleteThread:d,isMine:f,canDeleteOwnThread:v=!0,canModerate:u=!1,studio:h,assignees:C,onAssign:k,onShowAnyway:w,onAnnounce:S,loadShot:$}){const P=e.findIndex(_=>_.id===o),m=P>=0,E=_=>f?f(_):!0,M=m?P:Math.min(t,e.length),x=m?e[P]:n.find(_=>_.id===o),H=o?Ie.get(o)??"":"",[U,y]=N(H),[R,ge]=N(H.length>0),he=j(null);z(()=>{R&&he.current?.focus()},[R]);const fe=_=>{y(_),o&&(_?Ie.set(o,_):Ie.delete(o))},me=bt(),[_e]=N(!me.name),[W,Le]=N(h?.member??null),[ke,Pn]=N(me.name??""),[Y,Rn]=N(me.email??""),[Nn,ze]=N(!1),J=Y.trim().length>0&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(Y.trim()),Ue=!!U.trim()&&(!!W||!_e||!!ke.trim()&&!J),In=()=>{h&&(ze(!1),_t(h.host,h.uid,h.env).then(_=>{if(_==="blocked")return ze(!0);_&&(h.adopt(_),Le(_.reviewer.name),he.current?.focus())}))},je=()=>{if(!x||!Ue)return;let _;W?_=W:_e&&(_=ke.trim(),xt({name:_,...Y.trim()?{email:Y.trim()}:{}})),i(x.id,U.trim(),_),fe(""),ge(!1)};if(!x)return null;const F=x.comments[0],On=n.filter(_=>_.route===x.route).findIndex(_=>_.id===x.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:m?I(M+1):"\u2013",total:I(e.length)})}),r("span",{class:"snag-dk-nav",children:[r("button",{type:"button",class:"snag-dk-link",disabled:M<=0,"aria-label":p("dock.prev"),onClick:()=>s(e[M-1].id),children:"\u2191"}),r("button",{type:"button",class:"snag-dk-link",disabled:m?M>=e.length-1:M>=e.length,"aria-label":p("dock.next"),onClick:()=>s(e[m?M+1:M].id),children:"\u2193"})]})]}),r("div",{class:"snag-dk-card",children:[r("div",{class:"snag-dk-meta",children:[r("span",{class:"snag-dk-num",style:{background:Te(x.status),color:bn(x.status)},children:On}),r("strong",{children:F?.author.name??p("author.unknown")}),r("span",{class:"snag-dk-dim",children:x.key}),F&&r(Sn,{iso:F.createdAt}),r(Wt,{snag:x})]}),r("div",{class:"snag-dk-cardbody",children:vn(F?.body??"")}),r(Yt,{snag:x}),F&&(E(F.author)||u)&&r(Cn,{body:F.body,...E(F.author)?{onEdit:_=>l(F.id,_)}:{},deleteLabel:p("comment.delete"),...u||v&&x.comments.every(_=>E(_.author))?{onDelete:()=>d(x.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:Te(x.status)},value:x.status,onChange:_=>{const Q=_.target.value;a(x.id,Q),S?.(p("announce.status",{key:x.key,status:De(Q)}))},children:Ne.map(_=>r("option",{value:_,children:De(_)},_))})]}),r(Gt,{snag:x,...C&&k?{list:C,onAssign:k}:{}}),r(qt,{snag:x,...$?{loadShot:$}:{}}),x.anchorReasons?.includes("hidden")&&r("p",{class:"snag-dk-moved-note",children:[p("detail.hidden")," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>w?.(x),children:p("detail.hidden.show")})]}),x.anchorState!=="anchored"&&r("p",{class:"snag-dk-moved-note",children:[p(`detail.${x.anchorState}`,{label:x.anchor.label}),x.anchorReasons?.includes("budget-exceeded")&&` ${p("detail.unavailable")}`]}),x.anchorState!=="anchored"&&r(It,{anchor:x.anchor}),x.comments.length>1&&r("ul",{class:"snag-dk-replies-list",children:x.comments.slice(1).map(_=>r("li",{children:[r("strong",{children:_.author.name})," ",r(Sn,{iso:_.createdAt}),vn(_.body??""),(E(_.author)||u)&&r(Cn,{body:_.body,...E(_.author)?{onEdit:Q=>l(_.id,Q)}:{},deleteLabel:p("reply.delete"),onDelete:()=>g(_.id)})]},_.id))}),R?r("div",{class:"snag-dk-replybox",children:[W?r("p",{class:"snag-dk-who",children:[p("who.member",{name:W})," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>{h?.signOut(),Le(null)},children:p("who.signout")})]}):_e&&r(L,{children:[r("input",{class:"snag-input",type:"text",autocomplete:"name",placeholder:p("who.name"),"aria-label":p("who.name"),value:ke,onInput:_=>Pn(_.target.value)}),r("input",{class:`snag-input${J?" snag-input--bad":""}`,type:"email",inputMode:"email",autocomplete:"email",placeholder:p("who.email"),"aria-label":p("who.email"),"aria-invalid":J?"true":void 0,value:Y,onInput:_=>Rn(_.target.value)}),J&&r("p",{class:"snag-dk-who",children:p("who.email.bad")})]}),h&&!W&&r("p",{class:"snag-dk-who",children:[r("button",{type:"button",class:"snag-dk-link",onClick:In,children:p("who.signin")}),Nn&&r("span",{role:"status",children:[" ",p("who.signin.blocked")]})]}),r("textarea",{ref:he,class:"snag-text",rows:2,enterkeyhint:"enter","aria-label":p("reply.aria"),placeholder:p("reply.placeholder"),value:U,onInput:_=>fe(_.target.value),onKeyDown:_=>{_.key==="Enter"&&(_.metaKey||_.ctrlKey)&&(_.preventDefault(),je()),_.key==="Escape"&&(_.stopPropagation(),_.target.blur())}}),r("div",{class:"snag-actions",children:[r("button",{type:"button",class:"snag-cancel",onClick:()=>{fe(""),ge(!1)},children:p("action.cancel")}),r("button",{type:"button",class:"snag-send",disabled:!Ue,onClick:je,children:p("reply.send")})]})]}):r("button",{type:"button",class:"snag-dk-addreply",onClick:()=>ge(!0),children:p("reply.add")})]})}function Jt(e){const n=e.openId?e.snags.find(k=>k.id===e.openId):null,t=j(null),o=e.clusterFilter?e.snags.filter(k=>e.clusterFilter.includes(k.id)):e.snags,s=Dt(o.filter(k=>Tt(k,e.filter,e.seenAt)),e.filter,e.route,e.seenAt),a=At(s,e.filter.sort),i=e.filter.sort==="page"?zt(a,e.route):[{route:"",here:!1,snags:a}],l=i.flatMap(k=>k.snags),g=j(0),d=l.findIndex(k=>k.id===e.openId);d>=0&&(g.current=d);const f=j(null),[v,u]=N(null);e.openId?(f.current={id:e.openId,absent:d===-1},v&&u(null)):f.current?.absent&&v!==f.current.id&&(u(f.current.id),f.current=null),z(()=>{t.current?.focus()},[e.openId]),z(()=>{if(!(window.matchMedia?.("(pointer: coarse)").matches??!1))return;const k=t.current;return k?dt(k):void 0},[]);const h=j({snag:n,onStatus:e.onStatus});h.current={snag:n,onStatus:e.onStatus},z(()=>{const k=w=>{const{snag:S,onStatus:$}=h.current;if(!S||w.metaKey||w.ctrlKey||w.altKey||w.composedPath().some(E=>{const M=E;if(!M?.tagName)return!1;const x=M.tagName.toLowerCase();return x==="textarea"||x==="select"?!0:x==="input"?!/^(button|submit|checkbox|radio)$/i.test(M.type):M.isContentEditable?!0:/^(textbox|searchbox|combobox)$/.test(M.getAttribute?.("role")??"")}))return;const m=Number(w.key);if(m>=1&&m<=Ne.length){w.preventDefault(),$(S.id,Ne[m-1]);return}(w.key==="r"||w.key==="R")&&(w.preventDefault(),$(S.id,S.status==="resolved"?"open":"resolved"))};return document.addEventListener("keydown",k),()=>document.removeEventListener("keydown",k)},[]);const C=window.matchMedia?.("(pointer: coarse)").matches??!1;return r("aside",{ref:t,class:"snag-dk",role:"complementary","aria-label":p("dock.aria"),tabIndex:-1,onKeyDown:k=>{k.key==="Escape"&&(k.stopPropagation(),e.openId?e.onOpen(null):e.onClose())},children:[C&&r("div",{class:"snag-dk-scrim","aria-hidden":"true",onClick:e.onClose}),C&&r("div",{class:"snag-dk-grab","aria-hidden":"true",onPointerDown:k=>{const w=k.clientY,S=k.currentTarget;try{S.setPointerCapture(k.pointerId)}catch{}S.onpointermove=$=>{$.clientY-w>56&&(S.onpointermove=null,e.onClose())},S.onpointerup=()=>S.onpointermove=null},children:r("span",{})}),r("header",{class:"snag-dk-hd",children:[r("strong",{children:p(n?"dock.title.detail":"dock.title.list")}),r("button",{type:"button",class:"snag-dk-link",onClick:e.onClose,"aria-label":p("dock.close"),children:"\u2715"})]}),n?r(Vt,{...e,snags:l,round:e.snags,fallbackCursor:g.current},n.id):r(Ht,{...e,groups:i,hiddenNote:v,onHiddenShow:k=>{u(null),e.onOpen(k)}})]})}const Tn=360,Qt=` .snag-dk{position:fixed;inset-block:0;inset-inline-end:0;width:${Tn}px;max-width:100vw;z-index:${st.dock};background:${c.bg};color:${c.fg};display:flex;flex-direction:column;font:400 13px/1.45 ${c.font};box-shadow:${c.shadow};border-inline-start:1px solid ${c.border};pointer-events:auto;overscroll-behavior:contain}.snag-dk-filters{padding:8px 12px 6px;border-block-end:1px solid ${c.border};display:grid;gap:6px}.snag-dk-search{width:100%;box-sizing:border-box;font-size:12px;padding:5px 8px}.snag-dk-chiphead{display:flex;justify-content:space-between;align-items:center;padding-inline-end:8px}.snag-dk-chips{display:grid;grid-template-columns:1fr 1fr;gap:4px}.snag-dk-chip{font:500 11px/1.2 ${c.font};color:${c.fg};padding:5px 8px;border-radius:6px;border:1px solid ${c.border};background:none;cursor:pointer;text-align:start;display:flex;justify-content:space-between;align-items:center;gap:4px}.snag-dk-chip[aria-pressed="true"]{font-weight:600}.snag-dk-chip-stray{color:${c.muted};cursor:default}.snag-dk-menus{display:flex;gap:10px;position:relative}.snag-dk-menuwrap{position:relative}.snag-dk-menugroup{display:flex;flex-direction:column;gap:1px;padding-bottom:6px;margin-bottom:6px;border-bottom:1px solid ${c.border}}.snag-dk-menugroup-last{padding-bottom:0;margin-bottom:0;border-bottom:0}.snag-dk-menutitle{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:${c.muted};padding:2px 8px 4px}.snag-dk-menubg{position:absolute;inset:-200px -20px -2000px;background:transparent;z-index:2}.snag-dk-menu{position:absolute;inset-block-start:100%;inset-inline-start:0;z-index:3;min-width:150px;background:${c.bg};border:1px solid ${c.border};border-radius:6px;box-shadow:${c.shadow};display:grid;padding:4px}.snag-dk-menu button{font:400 12px/1.3 ${c.font};color:${c.fg};background:none;border:0;text-align:start;padding:5px 8px;border-radius:4px;cursor:pointer;display:flex;gap:4px}.snag-dk-menu button:hover{background:color-mix(in srgb,${c.fg} 8%,transparent)}.snag-dk-menus-up{position:relative}.snag-dk-menu-up{inset-block-start:auto;inset-block-end:100%;margin-block-end:4px}.snag-dk-menu-form{padding:8px;gap:6px;min-width:224px}.snag-dk-menu-form label:not(.snag-dk-pageonly){display:grid;gap:2px;font:600 10px/1.4 ${c.font};letter-spacing:.05em;text-transform:uppercase;color:${c.muted}}.snag-dk-menu-form select{font:400 12px/1.3 ${c.font};color:${c.fg};background:${c.bg};border:1px solid ${c.border};border-radius:4px;padding:4px}.snag-dk-pageonly{display:flex;align-items:center;gap:6px;font-size:12px;color:${c.fg};cursor:pointer}.snag-dk-permaline{margin:6px 0 0;font-size:11px;color:${c.muted};overflow-wrap:anywhere}.snag-dk-permalabel{font-weight:600}.snag-dk-permaurl{user-select:all}.snag-dk:focus{outline:none}@media (pointer:coarse){.snag-dk{inset-block-start:auto;inset-inline-start:0;width:auto;height:82vh;border-radius:14px 14px 0 0;box-sizing:border-box;padding-bottom:max(var(${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-grouphd .snag-dk-dim{margin-inline-start:auto;font-weight:400;flex:0 0 auto}.snag-dk-goto{flex:0 0 auto;color:${c.muted};font-size:13px;line-height:1}.snag-dk-dev{flex:0 0 auto;color:${c.muted};display:flex;align-items:center}.snag-dk-item:hover .snag-dk-goto,.snag-dk-item:focus-visible .snag-dk-goto{color:${c.accent}}.snag-dk-item{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:start;background:transparent;border:0;border-bottom:1px solid ${c.border};color:inherit;font:inherit;padding:11px 14px;cursor:pointer;transition:background ${c.motion}}.snag-dk-item:hover{background:${c.hover}}.snag-dk-item:focus-visible{outline:2px solid ${c.focus};outline-offset:-2px}.snag-dk-dot{flex:0 0 7px;width:7px;height:7px;border-radius:50%;margin-block-start:8px;background:transparent}.snag-dk-dot--on{background:${c.accent}}.snag-dk-newpill{display:block;width:100%;box-sizing:border-box;text-align:start;background:${c.sunken};border:0;border-block-end:1px solid ${c.border};color:${c.accent};font:600 12px/1.45 ${c.font};padding:8px 14px;cursor:pointer;flex:0 0 auto}.snag-dk-newpill:hover{background:${c.hover}}.snag-dk-newpill:focus-visible{outline:2px solid ${c.focus};outline-offset:-2px}.snag-dk-num{flex:0 0 22px;height:22px;border-radius:50% 50% 50% 2px;font-weight:600;font-size:11px;line-height:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.snag-dk-num--orphaned{border:2px solid currentColor;box-shadow:inset 0 0 0 2px currentColor}.snag-dk-num--approximate{border:2px dashed currentColor}.snag-dk-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}.snag-dk-body,.snag-dk-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.snag-dk-sub{font-size:11px}.snag-dk-dim{color:${c.muted}}.snag-dk-moved{color:${c.anchorOrphan};font-weight:600}.snag-dk-replies{background:${c.surface};border-radius:999px;padding:1px 7px;font-size:11px;flex:0 0 auto}.snag-dk-empty{padding:28px 16px;text-align:center;flex:1 1 auto}.snag-dk-empty p{margin:0 0 4px}.snag-dk-notice{margin:0;padding:11px 14px;font-size:12px;color:${c.muted};border-bottom:1px solid ${c.border};flex:0 0 auto}.snag-dk-foot{display:flex;gap:6px;padding:10px 14px;border-top:1px solid ${c.border};flex:0 0 auto}.snag-dk-link{background:transparent;border:0;color:${c.accent};font:inherit;cursor:pointer;padding:4px 6px;border-radius:calc(${c.radius} - 2px);transition:background ${c.motion}}.snag-dk-link:hover:not(:disabled){background:${c.hover}}.snag-dk-link:disabled{color:${c.disabled};cursor:not-allowed}.snag-dk-link:focus-visible{outline:2px solid ${c.focus};outline-offset:1px}.snag-dk-detail{padding:12px 14px;overflow-y:auto;flex:1 1 auto;display:flex;flex-direction:column;gap:12px}.snag-dk-detailhd{display:flex;align-items:center;justify-content:space-between;gap:8px}.snag-dk-nav{display:flex;gap:2px}.snag-dk-card{background:${c.surface};border-radius:${c.radius};padding:11px}.snag-dk-meta{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin-bottom:6px}.snag-md{overflow-wrap:anywhere}.snag-md>*{margin:0}.snag-md>*+*{margin-block-start:6px}.snag-md p{white-space:pre-wrap}.snag-md ul,.snag-md ol{padding-inline-start:20px}.snag-md li+li{margin-block-start:2px}.snag-md code{background:${c.sunken};border-radius:3px;padding:1px 4px;font-size:.92em;font-family:ui-monospace,monospace}.snag-md pre{background:${c.sunken};border-radius:${c.radius};padding:8px 10px;overflow-x:auto}.snag-md pre code{background:none;padding:0;font-size:.92em}.snag-md a{color:${c.accent}}.snag-dk-field{display:flex;flex-direction:column;gap:4px;font-size:12px}.snag-dk-select{background:${c.surface};color:inherit;border:2px solid;border-radius:${c.radius};padding:7px 9px;font:inherit;min-height:34px}.snag-dk-done{color:${c.muted};text-decoration:line-through}.snag-dk-meta .snag-dk-num{margin-inline-end:2px}.snag-dk-cap{background:${c.sunken};border-radius:${c.radius};padding:9px 11px;display:flex;flex-direction:column;gap:1px;font-size:12px;overflow-wrap:anywhere}.snag-dk-cap p{margin:0}.snag-dk-shot{padding:0;border:1px solid ${c.border};border-radius:calc(${c.radius} - 2px);background:none;cursor:zoom-in;overflow:hidden;line-height:0;align-self:flex-start;margin-block-end:6px}.snag-dk-shot canvas{display:block;max-width:100%}.snag-dk-lightbox{position:fixed;inset:0;z-index:1;background:#000c;display:flex;align-items:center;justify-content:center;padding:24px;cursor:zoom-out}.snag-dk-lightbox canvas{max-width:100%;max-height:100%;object-fit:contain;box-shadow:${c.shadow};background:${c.bg}}.snag-dk-lightclose{position:absolute;inset-block-start:12px;inset-inline-end:16px;color:#fff}.snag-dk-caplabel{font-weight:600;font-size:11px;letter-spacing:.02em;margin-bottom:3px!important}.snag-dk-capwhy{color:${c.muted};font-size:11px;margin-top:5px!important}.snag-dk-moved-note{margin:0;padding:8px 10px;font-size:12px;background:${c.sunken};border-inline-start:3px solid ${c.anchorOrphan};border-radius:${c.radius}}.snag-dk-anchor{font-size:12px;border:1px solid ${c.border};border-radius:${c.radius};padding:6px 10px;background:${c.sunken}}.snag-dk-anchor summary{cursor:pointer;color:${c.muted};font-weight:600;list-style:revert}.snag-dk-anchor dl{margin:8px 0 2px;display:grid;gap:6px}.snag-dk-anchor dt{color:${c.muted};font-size:11px;letter-spacing:.03em;text-transform:uppercase}.snag-dk-anchor dd{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere;user-select:text}.snag-dk-replies-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.snag-dk-replies-list li{background:${c.sunken};border-radius:${c.radius};padding:9px;overflow-wrap:anywhere}.snag-dk-acts{display:flex;gap:2px;margin-top:6px}.snag-dk-act{background:transparent;border:0;color:${c.muted};font:inherit;font-size:11px;cursor:pointer;padding:3px 6px;border-radius:calc(${c.radius} - 3px);transition:background ${c.motion},color ${c.motion}}.snag-dk-more{font-size:14px;line-height:1;letter-spacing:1px}.snag-dk-act:hover{background:${c.hover};color:inherit}.snag-dk-act:focus-visible{outline:2px solid ${c.focus};outline-offset:1px}.snag-dk-act--danger:hover{color:${c.anchorOrphan}}.snag-dk-menu .snag-dk-act--danger{color:${c.fg}}.snag-dk-menu .snag-dk-act--danger:hover{color:${c.anchorOrphan}}.snag-dk-armed{color:${c.anchorOrphan};font-weight:600}.snag-dk-clear{margin-inline-start:auto}.snag-dk-menu .snag-dk-clear{margin-inline-start:0}.snag-dk-editbox{display:flex;flex-direction:column;gap:8px;margin-top:8px}.snag-dk-addreply{background:transparent;border:1px dashed ${c.border};color:${c.muted};border-radius:${c.radius};padding:9px;font:inherit;cursor:pointer;text-align:start;transition:border-color ${c.motion},color ${c.motion}}.snag-dk-addreply:hover{border-color:${c.accent};color:inherit}.snag-dk-replybox{display:flex;flex-direction:column;gap:8px}.snag-dk-who{margin:0;font-size:11px;color:${c.muted}}.snag-dk-who .snag-dk-link{padding:0;font-size:inherit;text-decoration:underline}`;function Xt(e,n,t){const o=e.ownerDocument??document;yn(e,"form",it),yn(e,"dock",Qt);const s=o.createElement("div");(t??e).appendChild(s);const a=o.defaultView?.matchMedia?.("(pointer: coarse)").matches??!1,i=g=>{const d=e.host;g&&!a?d.style.setProperty(b.dockW,`${Tn}px`):d.style.removeProperty(b.dockW)};i(!0);const l=g=>{tn(r(Jt,{...g}),s)};return l(n),{update:l,close(){i(!1),tn(null,s),s.remove()}}}const Dn=24;function An(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 Zt(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=An(e,n),l=a-e.scrollY;if(l>=i.top+Dn&&l<=i.bottom-Dn)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{Xt as openDock,Zt as scrollToSnag,An as visibleStrip};
1
+ var X,T,Fe,K,Be,Ke,qe,ye,Z,G,We,ve,we,$e,ee={},ne=[],zn=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,te=Array.isArray;function B(e,n){for(var t in n)e[t]=n[t];return e}function Se(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?X.call(arguments,2):t),typeof e=="function"&&e.defaultProps!=null)for(a in e.defaultProps)i[a]===void 0&&(i[a]=e.defaultProps[a]);return oe(e,i,o,s,null)}function oe(e,n,t,o,s){var a={type:e,props:n,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:s??++Fe,__i:-1,__u:0};return s==null&&T.vnode!=null&&T.vnode(a),a}function z(e){return e.children}function re(e,n){this.props=e,this.context=n}function q(e,n){if(n==null)return e.__?q(e.__,e.__i+1):null;for(var t;n<e.__k.length;n++)if((t=e.__k[n])!=null&&t.__e!=null)return t.__e;return typeof e.type=="function"?q(e):null}function Un(e){if(e.__P&&e.__d){var n=e.__v,t=n.__e,o=[],s=[],a=B({},n);a.__v=n.__v+1,T.vnode&&T.vnode(a),Ce(e.__P,a,n,e.__n,e.__P.namespaceURI,32&n.__u?[t]:null,o,t??q(n),!!(32&n.__u),s),a.__v=n.__v,a.__.__k[a.__i]=a,en(o,a,s),n.__e=n.__=null,a.__e!=t&&Ye(a)}}function Ye(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}),Ye(e)}function Ge(e){(!e.__d&&(e.__d=!0)&&K.push(e)&&!ae.__r++||Be!=T.debounceRendering)&&((Be=T.debounceRendering)||Ke)(ae)}function ae(){try{for(var e,n=1;K.length;)K.length>n&&K.sort(qe),e=K.shift(),n=K.length,Un(e)}finally{K.length=ae.__r=0}}function Ve(e,n,t,o,s,a,i,l,g,d,f){var y,u,h,S,b,v,C=o&&o.__k||ne,$=n.length;for(g=jn(t,n,C,g,$),y=0;y<$;y++)(h=t.__k[y])!=null&&(u=h.__i!=-1&&C[h.__i]||ee,h.__i=y,v=Ce(e,h,u,s,a,i,l,g,d,f),S=h.__e,h.ref&&u.ref!=h.ref&&(u.ref&&Ee(u.ref,null,h),f.push(h.ref,h.__c||S,h)),b==null&&S!=null&&(b=S),4&h.__u?(g=Je(h,g,e),u.__e&&(u.__e=null)):typeof h.type=="function"&&v!==void 0?g=v:S&&(g=S.nextSibling),h.__u&=-7);return t.__e=b,g}function jn(e,n,t,o,s){var a,i,l,g,d,f=t.length,y=f,u=0;for(e.__k=new Array(s),a=0;a<s;a++)(i=n[a])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[a]=oe(null,i,null,null,null):te(i)?i=e.__k[a]=oe(z,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[a]=oe(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[a]=i,g=a+u,i.__=e,i.__b=e.__b+1,l=null,(d=i.__i=Hn(i,t,g,y))!=-1&&(y--,(l=t[d])&&(l.__u|=2)),l==null||l.__v==null?(d==-1&&(s>f?u--:s<f&&u++),typeof i.type!="function"&&(i.__u|=4)):d!=g&&(d==g-1?u--:d==g+1?u++:(d>g?u--:u++,i.__u|=4))):e.__k[a]=null;if(y)for(a=0;a<f;a++)(l=t[a])!=null&&(2&l.__u)==0&&(l.__e==o&&(o=q(l)),tn(l,l));return o}function Je(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=Je(o[s],n,t));return n}e.__e!=n&&(n&&e.type&&!n.parentNode&&(n=q(e)),n=t.insertBefore(e.__e,n||null));do n=n&&n.nextSibling;while(n!=null&&n.nodeType==8);return n}function Hn(e,n,t,o){var s,a,i,l=e.key,g=e.type,d=n[t],f=d!=null&&(2&d.__u)==0;if(d===null&&l==null||f&&l==d.key&&g==d.type)return t;if(o>(f?1:0)){for(s=t-1,a=t+1;s>=0||a<n.length;)if((d=n[i=s>=0?s--:a++])!=null&&(2&d.__u)==0&&l==d.key&&g==d.type)return i}return-1}function Qe(e,n,t){n[0]=="-"?e.setProperty(n,t??""):e[n]=t==null?"":typeof t!="number"||zn.test(n)?t:t+"px"}function se(e,n,t,o,s){var a,i;e:if(n=="style")if(typeof t=="string")e.style.cssText=t;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(n in o)t&&n in t||Qe(e.style,n,"");if(t)for(n in t)o&&t[n]==o[n]||Qe(e.style,n,t[n])}else if(n[0]=="o"&&n[1]=="n")a=n!=(n=n.replace(We,"$1")),i=n.toLowerCase(),n=i in e||n=="onFocusOut"||n=="onFocusIn"?i.slice(2):n.slice(2),e.l||(e.l={}),e.l[n+a]=t,t?o?t[G]=o[G]:(t[G]=ve,e.addEventListener(n,a?$e:we,a)):e.removeEventListener(n,a?$e:we,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 Xe(e){return function(n){if(this.l){var t=this.l[n.type+e];if(n[Z]==null)n[Z]=ve++;else if(n[Z]<t[G])return;return t(T.event?T.event(n):n)}}}function Ce(e,n,t,o,s,a,i,l,g,d){var f,y,u,h,S,b,v,C,$,P,m,E,D,M,w,H,k=n.type;if(n.constructor!==void 0)return null;128&t.__u&&(g=!!(32&t.__u),a=[l=n.__e=t.__e]),(f=T.__b)&&f(n);e:if(typeof k=="function"){y=i.length;try{if($=n.props,P=k.prototype&&k.prototype.render,m=(f=k.contextType)&&o[f.__c],E=f?m?m.props.value:f.__:o,t.__c?C=(u=n.__c=t.__c).__=u.__E:(P?n.__c=u=new k($,E):(n.__c=u=new re($,E),u.constructor=k,u.render=Bn),m&&m.sub(u),u.state||(u.state={}),u.__n=o,h=u.__d=!0,u.__h=[],u._sb=[]),P&&u.__s==null&&(u.__s=u.state),P&&k.getDerivedStateFromProps!=null&&(u.__s==u.state&&(u.__s=B({},u.__s)),B(u.__s,k.getDerivedStateFromProps($,u.__s))),S=u.props,b=u.state,u.__v=n,h)P&&k.getDerivedStateFromProps==null&&u.componentWillMount!=null&&u.componentWillMount(),P&&u.componentDidMount!=null&&u.__h.push(u.componentDidMount);else{if(P&&k.getDerivedStateFromProps==null&&$!==S&&u.componentWillReceiveProps!=null&&u.componentWillReceiveProps($,E),n.__v==t.__v||!u.__e&&u.shouldComponentUpdate!=null&&u.shouldComponentUpdate($,u.__s,E)===!1){n.__v!=t.__v&&(u.props=$,u.state=u.__s,u.__d=!1),n.__e=t.__e,n.__k=t.__k,n.__k.some(function(O){O&&(O.__=n)}),ne.push.apply(u.__h,u._sb),u._sb=[],u.__h.length&&i.push(u),l=q(t);break e}u.componentWillUpdate!=null&&u.componentWillUpdate($,u.__s,E),P&&u.componentDidUpdate!=null&&u.__h.push(function(){u.componentDidUpdate(S,b,v)})}if(u.context=E,u.props=$,u.__P=e,u.__e=!1,D=T.__r,M=0,P)u.state=u.__s,u.__d=!1,D&&D(n),f=u.render(u.props,u.state,u.context),ne.push.apply(u.__h,u._sb),u._sb=[];else do u.__d=!1,D&&D(n),f=u.render(u.props,u.state,u.context),u.state=u.__s;while(u.__d&&++M<25);u.state=u.__s,u.getChildContext!=null&&(o=B(B({},o),u.getChildContext())),P&&!h&&u.getSnapshotBeforeUpdate!=null&&(v=u.getSnapshotBeforeUpdate(S,b)),w=f!=null&&f.type===z&&f.key==null?nn(f.props.children):f,l=Ve(e,te(w)?w:[w],n,t,o,s,a,i,l,g,d),u.base=n.__e,n.__u&=-161,u.__h.length&&i.push(u),C&&(u.__E=u.__=null)}catch(O){if(i.length=y,n.__v=null,g||a!=null){if(O.then){for(n.__u|=g?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;a!=null&&(a[a.indexOf(l)]=null),n.__e=l}else if(a!=null)for(H=a.length;H--;)Se(a[H])}else n.__e=t.__e;n.__k==null&&(n.__k=t.__k||[]),O.then||Ze(n),T.__e(O,n,t)}}else a==null&&n.__v==t.__v?(n.__k=t.__k,n.__e=t.__e):l=n.__e=Fn(t.__e,n,t,o,s,a,i,g,d);return(f=T.diffed)&&f(n),128&n.__u?void 0:l}function Ze(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Ze))}function en(e,n,t){for(var o=0;o<t.length;o++)Ee(t[o],t[++o],t[++o]);T.__c&&T.__c(n,e),e.some(function(s){try{e=s.__h,s.__h=[],e.some(function(a){a.call(s)})}catch(a){T.__e(a,s.__v)}})}function nn(e){return typeof e!="object"||e==null||e.__b>0?e:te(e)?e.map(nn):e.constructor!==void 0?null:B({},e)}function Fn(e,n,t,o,s,a,i,l,g){var d,f,y,u,h,S,b,v=t.props||ee,C=n.props,$=n.type;if($=="svg"?s="http://www.w3.org/2000/svg":$=="math"?s="http://www.w3.org/1998/Math/MathML":s||(s="http://www.w3.org/1999/xhtml"),a!=null){for(d=0;d<a.length;d++)if((h=a[d])&&"setAttribute"in h==!!$&&($?h.localName==$:h.nodeType==3)){e=h,a[d]=null;break}}if(e==null){if($==null)return document.createTextNode(C);e=document.createElementNS(s,$,C.is&&C),l&&(T.__m&&T.__m(n,a),l=!1),a=null}if($==null)v===C||l&&e.data==C||(e.data=C);else{if(a=$=="textarea"&&C.defaultValue!=null?null:a&&X.call(e.childNodes),!l&&a!=null)for(v={},d=0;d<e.attributes.length;d++)v[(h=e.attributes[d]).name]=h.value;for(d in v)h=v[d],d=="dangerouslySetInnerHTML"?y=h:d=="children"||d in C||d=="value"&&"defaultValue"in C||d=="checked"&&"defaultChecked"in C||se(e,d,null,h,s);for(d in C)h=C[d],d=="children"?u=h:d=="dangerouslySetInnerHTML"?f=h:d=="value"?S=h:d=="checked"?b=h:l&&typeof h!="function"||v[d]===h||se(e,d,h,v[d],s);if(f)l||y&&(f.__html==y.__html||f.__html==e.innerHTML)||(e.innerHTML=f.__html),n.__k=[];else if(y&&(e.innerHTML=""),Ve(n.type=="template"?e.content:e,te(u)?u:[u],n,t,o,$=="foreignObject"?"http://www.w3.org/1999/xhtml":s,a,i,a?a[0]:t.__k&&q(t,0),l,g),a!=null)for(d=a.length;d--;)Se(a[d]);l&&$!="textarea"||(d="value",$=="progress"&&S==null?e.removeAttribute("value"):S!=null&&(S!==e[d]||$=="progress"&&!S||$=="option"&&S!=v[d])&&se(e,d,S,v[d],s),d="checked",b!=null&&b!=e[d]&&se(e,d,b,v[d],s))}return e}function Ee(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){T.__e(s,t)}}function tn(e,n,t){var o,s;if(T.unmount&&T.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||Ee(o,null,n)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(a){T.__e(a,n)}o.base=o.__P=o.__n=null}if(o=e.__k)for(s=0;s<o.length;s++)o[s]&&tn(o[s],n,t||typeof e.type!="function");t||Se(e.__e),e.__c=e.__=e.__e=void 0}function Bn(e,n,t){return this.constructor(e,t)}function on(e,n,t){var o,s,a,i;n==document&&(n=document.documentElement),T.__&&T.__(e,n),s=(o=!1)?null:n.__k,a=[],i=[],Ce(n,e=n.__k=L(z,null,[e]),s||ee,ee,n.namespaceURI,s?null:n.firstChild?X.call(n.childNodes):null,a,s?s.__e:n.firstChild,o,i),en(a,e,i),e.props.children=null}X=ne.slice,T={__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(l){e=l}throw e}},Fe=0,re.prototype.setState=function(e,n){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=B({},this.state),typeof e=="function"&&(e=e(B({},t),this.props)),e&&B(t,e),e!=null&&this.__v&&(n&&this._sb.push(n),Ge(this))},re.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ge(this))},re.prototype.render=z,K=[],Ke=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,qe=function(e,n){return e.__v.__b-n.__v.__b},ae.__r=0,ye=Math.random().toString(8),Z="__d"+ye,G="__a"+ye,We=/(PointerCapture)$|Capture$/i,ve=0,we=Xe(!1),$e=Xe(!0);var Kn=0;function r(e,n,t,o,s,a){n||(n={});var i,l,g=n;if("ref"in g)for(l in g={},n)l=="ref"?i=n[l]:g[l]=n[l];var d={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(l in i)g[l]===void 0&&(g[l]=i[l]);return T.vnode&&T.vnode(d),d}const qn="Snagset",Wn="snagset",Yn="snagset:",Gn="Snagset",Vn="Snag",Jn="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"},Qn=e=>`var(${x[e]})`,Xn=e=>"snag_"+e,rn={query:["snag_t","snag_off","snag_debug","snag_theme"],fragment:["snag_k"]},an="snag:identity",Zn="data-snag-theme";var V,R,Te,sn,ie=0,ln=[],A=T,dn=A.__b,cn=A.__r,un=A.diffed,pn=A.__c,gn=A.unmount,hn=A.__;function Me(e,n){A.__h&&A.__h(R,e,ie||n),ie=0;var t=R.__H||(R.__H={__:[],__h:[]});return e>=t.__.length&&t.__.push({}),t.__[e]}function N(e){return ie=1,et(_n,e)}function et(e,n,t){var o=Me(V++,2);if(o.t=e,!o.__c&&(o.__=[_n(void 0,n),function(l){var g=o.__N?o.__N[0]:o.__[0],d=o.t(g,l);g!==d&&(o.__N=[d,o.__[1]],o.__c.setState({}))}],o.__c=R,!R.__f)){var s=function(l,g,d){if(!o.__c.__H)return!0;var f=!1,y=o.__c.props!==l;if(o.__c.__H.__.some(function(h){if(h.__N){f=!0;var S=h.__[0];h.__=h.__N,h.__N=void 0,S!==h.__[0]&&(y=!0)}}),a){var u=a.call(this,l,g,d);return f?u||y:u}return!f||y};R.__f=!0;var a=R.shouldComponentUpdate,i=R.componentWillUpdate;R.componentWillUpdate=function(l,g,d){if(this.__e){var f=a;a=void 0,s(l,g,d),a=f}i&&i.call(this,l,g,d)},R.shouldComponentUpdate=s}return o.__N||o.__}function U(e,n){var t=Me(V++,3);!A.__s&&mn(t.__H,n)&&(t.__=e,t.u=n,R.__H.__h.push(t))}function j(e){return ie=5,nt(function(){return{current:e}},[])}function nt(e,n){var t=Me(V++,7);return mn(t.__H,n)&&(t.__=e(),t.__H=n,t.__h=e),t.__}function tt(){for(var e;e=ln.shift();){var n=e.__H;if(e.__P&&n)try{n.__h.some(le),n.__h.some(De),n.__h=[]}catch(t){n.__h=[],A.__e(t,e.__v)}}}A.__b=function(e){R=null,dn&&dn(e)},A.__=function(e,n){e&&n.__k&&n.__k.__m&&(e.__m=n.__k.__m),hn&&hn(e,n)},A.__r=function(e){cn&&cn(e),V=0;var n=(R=e.__c).__H;n&&(Te===R?(n.__h=[],R.__h=[],n.__.some(function(t){t.__N&&(t.__=t.__N),t.u=t.__N=void 0})):(n.__h.some(le),n.__h.some(De),n.__h=[],V=0)),Te=R},A.diffed=function(e){un&&un(e);var n=e.__c;n&&n.__H&&(n.__H.__h.length&&(ln.push(n)!==1&&sn===A.requestAnimationFrame||((sn=A.requestAnimationFrame)||ot)(tt)),n.__H.__.some(function(t){t.u&&(t.__H=t.u,t.u=void 0)})),Te=R=null},A.__c=function(e,n){n.some(function(t){try{t.__h.some(le),t.__h=t.__h.filter(function(o){return!o.__||De(o)})}catch(o){n.some(function(s){s.__h&&(s.__h=[])}),n=[],A.__e(o,t.__v)}}),pn&&pn(e,n)},A.unmount=function(e){gn&&gn(e);var n,t=e.__c;t&&t.__H&&(t.__H.__.some(function(o){try{le(o)}catch(s){n=s}}),t.__H=void 0,n&&A.__e(n,t.__v))};var fn=typeof requestAnimationFrame=="function";function ot(e){var n,t=function(){clearTimeout(o),fn&&cancelAnimationFrame(n),setTimeout(e)},o=setTimeout(t,35);fn&&(n=requestAnimationFrame(t))}function le(e){var n=R,t=e.__c;typeof t=="function"&&(e.__c=void 0,t()),R=n}function De(e){var n=R;e.__c=e.__(),R=n}function mn(e,n){return!e||e.length!==n.length||n.some(function(t,o){return t!==e[o]})}function _n(e,n){return typeof n=="function"?n(e):n}const rt={product:qn,set:Gn,item:Vn,items:Jn};function kn(e){return(n,t)=>(e[n]??"").replace(/\{(\w+)\}/g,(o,s)=>{const a=t?.[s]??rt[s];return a===void 0?o:String(a)})}const I=e=>new Intl.NumberFormat().format(e),bn={"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}"},at=kn(bn),de={open:{colour:"#4f6ef7"},progress:{colour:"#f59e0b"},review:{colour:"#8b5cf6"},resolved:{colour:"#10b981"}},Re=e=>de[e]?.colour??"#8a8f98",xn=e=>e==="open"||e==="review"?"#fff":"#16161a",ce=e=>e in de?at(`status.${e}`):e,c=Object.fromEntries(Object.keys(x).map(e=>[e,Qn(e)])),st=Object.entries(de).map(([e,n])=>` ${x[`status${e[0].toUpperCase()}${e.slice(1)}`]}:${n.colour};`).join(`
2
+ `);`${c.font}${c.fg}${x.font}${x.accent}${x.bg}${x.fg}${x.muted}${x.border}${x.radius}${x.shadow}${x.z}${x.motion}${x.surface}${c.fg}${c.bg}${x.sunken}${c.fg}${c.bg}${x.hover}${c.fg}${c.bg}${x.onAccent}${x.focus}${c.accent}${c.fg}${x.disabled}${c.muted}${c.bg}${st}${x.anchorOrphan}${Zn}${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 it={dock:5},yn=new WeakMap;function vn(e,n,t){let o=yn.get(e);if(o||yn.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 lt=` .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 dt(e,n,t){const[o,s]=N(!1);return U(()=>{if(!o)return;const a=setTimeout(()=>s(!1),3e3);return()=>clearTimeout(a)},[o]),{armed:o,press(){if(o||n){s(!1),e();return}s(!0)}}}function ct(e){const n=window.visualViewport;if(!n)return;let t=0,o=0;const s=()=>{t=0;const l=Math.max(0,Math.round(window.innerHeight-n.height-n.offsetTop));e.style.setProperty(x.kb,`${l}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 ut="noreferrer nofollow";function pt(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 gt=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("|")),ht=4;function ue(e,n=0,t=0){const o=[];let s=e,a=n;if(t>=ht)return e?[e]:[];for(;;){const i=gt.exec(s);if(!i)return s&&o.push(s),o;i.index>0&&o.push(s.slice(0,i.index));const l=`i${a++}`,g=i.groups,d=g.bold??g.boldU,f=g.em??g.emU;if(d!==void 0)o.push(L("strong",{key:l},ue(d,a,t+1)));else if(f!==void 0)o.push(L("em",{key:l},ue(f,a,t+1)));else if(g.code!==void 0)o.push(L("code",{key:l},g.code));else{const y=pt(g.href??"");o.push(y?L("a",{key:l,href:y,target:"_blank",rel:ut},g.label??""):i[0])}s=s.slice(i.index+i[0].length)}}const Ae=/^```[^\n]*$/,Pe=/^[-*]\s+(.*)$/,Ne=/^\d{1,9}[.)]\s+(.*)$/;function wn(e){const n=e.split(`
3
+ `),t=[];let o=0,s=0;for(;o<n.length;){const a=n[o];if(Ae.test(a)){const d=[];for(o++;o<n.length&&!Ae.test(n[o]);)d.push(n[o++]);o++,t.push(L("pre",{key:`b${s++}`},L("code",null,d.join(`
4
+ `))));continue}const i=Pe.exec(a),l=Ne.exec(a);if(i||l){const d=i?Pe:Ne,f=[];for(;o<n.length;){const y=d.exec(n[o]);if(!y)break;f.push(L("li",{key:`l${f.length}`},ue(y[1]))),o++}t.push(L(i?"ul":"ol",{key:`b${s++}`},f));continue}const g=[];for(;o<n.length;){const d=n[o];if(!d.trim()||Ae.test(d)||Pe.test(d)||Ne.test(d))break;g.push(d),o++}g.length?t.push(L("p",{key:`b${s++}`},ue(g.join(`
5
+ `)))):o++}return L("div",{class:"snag-md"},t)}const ft=`${Yn}session`;function mt(e,n,t){if(e.origin!==n||!t||e.source!==t)return!1;const o=e.data;return!!o&&o.type===ft&&typeof o.session?.sessionToken=="string"&&typeof o.session.reviewer?.name=="string"}function _t(e,n,t,o){const s=new URLSearchParams({project:n,origin:t});return o&&s.set("env",o),`${new URL(e).origin}/widget-signin?${s}`}function kt(e,n,t){const o=new URL(e).origin,s=window.open(_t(e,n,location.origin,t),`${Wn}-signin`,"popup,width=480,height=600");return s?new Promise(a=>{let i=0;const l=f=>{removeEventListener("message",g),clearInterval(d),a(f)},g=f=>{mt(f,o,s)&&l(f.data.session)};addEventListener("message",g);const d=setInterval(()=>{s.closed&&++i>1&&l(null)},400)}):Promise.resolve("blocked")}function $n(){let e=null;try{e=localStorage.getItem(an)}catch{return{}}if(!e)return{};if(e[0]!=="{")return{name:e};try{const n=JSON.parse(e);return n&&typeof n=="object"?n:{}}catch{return{}}}function bt(e){try{localStorage.setItem(an,JSON.stringify(e))}catch{}}function xt(){const e=$n();return{name:typeof e.name=="string"?e.name:"",...e.email?{email:e.email}:{}}}function yt(e){const n=$n();bt({...n,name:e.name,...e.email?{email:e.email}:{}})}const vt={"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}"},wt={"disclosure.title":"Before your first comment","disclosure.always":"Each comment carries the page address, viewport size and browser make.","disclosure.crumbs.on":"Recent console messages and network results ride along, recognisable secrets redacted first.","disclosure.crumbs.off":"Console and network capture is off here.","disclosure.screenshot.off":"Screenshots are off for this project.","disclosure.screenshot.on":"{product} never reads what you type. Screenshots are pictures of the page, so anything visible on screen is in the picture \u2014 mark sensitive regions with {maskAttr} and they are blurred before the screenshot leaves your browser.","disclosure.retention":"Everything stays in this browser until someone exports it \u2014 the privacy notes list what can still leak.","disclosure.retention.server":"Your comment, the page address and the details above are sent to {host} when you post \u2014 the privacy notes list what can still leak.","disclosure.ack":"Got it","composer.aria":"New comment","composer.parent":"Pin the parent","composer.child":"Pin the first child","composer.shot":"Add a screenshot","composer.name":"Your name","composer.email":"Email, so we can reply","composer.email.bad":"Check the address \u2014 or leave it blank.","composer.signin":"Studio member? Sign in","composer.signin.blocked":"Allow pop-ups for this page to sign in.","composer.member":"Commenting as {name}","composer.signout":"Not you? Sign out","composer.round.closed":"This round is closed \u2014 your comment goes to {round}.","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?"},$t={"shot.open":"See the screenshot","shot.aria":"Screenshot","shot.close":"Close","announce.status":"Comment {key} set to {status}.","search.placeholder":"Search {n} comments\u2026","search.aria":"Search comments","round.label":"Round","round.closed":"(closed)","filter.status":"Status","filter.clear":"Clear","filter.selectall":"Select all","sort.button":"Sort","sort.newest":"Newest first","sort.oldest":"Oldest first","sort.page":"By page","filter.button":"Filter","filter.button.n":"Filter \xB7 {n}","filter.by":"Comments by","filter.by.anyone":"Anyone","filter.pages":"Pages","filter.pages.all":"All pages","filter.pageonly":"Show comments on this page only","filter.new":"See new activity \xB7 {n}","filter.new.on":"Showing new activity \u2014 show all","filter.new.none":"You\u2019re caught up \u2014 show all","filter.read":"Marked as","filter.read.all":"Anyone\u2019s, read or not","filter.read.unread":"Unread","filter.read.read":"Read","dock.unread":"Unread","badge.anchored":"","badge.approximate":"~","badge.orphaned":"moved","badge.hidden":"hidden","capture.label":"Comment left on","capture.page":"{route}","device.Mobile":"Mobile","device.Desktop":"Desktop","dock.aria":"All comments","dock.title.list":"All comments","dock.title.detail":"Comment","dock.close":"Close all comments","dock.empty":"No comments yet. Press +, then click anything on the page.","dock.empty.filter":"Nothing matches that filter.","dock.empty.orphans":"Every comment here lost its element \u2014 but what each one pointed at is still recorded.","dock.empty.page":"Nothing on this page. {n} comments on {m} other pages.","dock.row.empty":"(no comment)","dock.replies":"{n} replies","dock.goto":"Go to {route}","dock.cluster":"{n} comments in this cluster","dock.cluster.clear":"Show all","dock.hiddenrow":"That comment is now hidden by your filter","dock.hiddenrow.show":"Show","dock.back":"All","dock.back.aria":"Back to all comments","dock.position":"{n} of {total}","dock.prev":"Previous comment","dock.next":"Next comment","dock.clear":"Clear all","dock.clear.aria":"Delete every comment in this review","comment.edit":"Edit this comment","comment.delete":"Delete this comment and its pin","reply.delete":"Delete this reply","time.now":"just now","who.name":"Your name","who.email":"Email, so we can reply","who.email.bad":"Check the address \u2014 or leave it blank.","who.signin":"Studio member? Sign in","who.signin.blocked":"Allow pop-ups for this page to sign in.","who.member":"Replying as {name}","who.signout":"Not you? Sign out","detail.hidden.show":"Show anyway","field.status":"Status","field.status.locked":"Only the studio can change status here.","field.assignee":"Assigned to","assignee.none":"Unassigned","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"},St={...bn,...vt,...wt,...$t},p=kn(St),Ct=[/^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$/],Et=[...rn.query,...rn.fragment];function Tt(e,n=[]){return Et.includes(e)||n.includes(e)?!0:Ct.some(t=>t.test(e))}const pe=["open","progress","review","resolved"];function Mt(e,n){const t=e.includes(n)?e.filter(o=>o!==n):[...e,n];return t.length>=pe.length?[]:t}function Dt(e,n,t){if(n.statuses.length>0&&pe.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=ge(e,t);if(n.read==="unread"&&!o||n.read==="read"&&o)return!1}return!0}function ge(e,n){const t=n.get(e.id)??0;return Date.parse(e.updatedAt)>t}function Rt(e,n,t,o){let s=e;n.pageOnly&&(s=s.filter(i=>i.route===t)),n.newOnly&&o&&(s=s.filter(i=>ge(i,o)));const a=n.q?.trim().toLowerCase();return a&&(s=s.filter(i=>i.comments.some(l=>(l.body??"").toLowerCase().includes(a)||l.author.name.toLowerCase().includes(a))||i.createdBy.name.toLowerCase().includes(a))),s}function At(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 Pt(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 Nt(e){return(e.read!=="all"?1:0)+(e.by?1:0)+(e.page?1:0)}const Oe=Object.keys(de);function Sn({label:e,title:n,cls:t,role:o,onConfirm:s}){const{armed:a,press:i}=dt(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 Ot({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 It({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 Cn({iso:e}){const n=Date.parse(e);if(!Number.isFinite(n))return null;const t=new Date(n),o=Math.round((n-Date.now())/1e3);let s;if(Math.abs(o)<45)s=p("time.now");else if(Math.abs(o)<7*86400){const a=new Intl.RelativeTimeFormat(void 0,{numeric:"auto",style:"short"}),[i,l]=Math.abs(o)<3600?[Math.round(o/60),"minute"]:Math.abs(o)<86400?[Math.round(o/3600),"hour"]:[Math.round(o/86400),"day"];s=a.format(i,l)}else s=t.toLocaleDateString(void 0,{day:"numeric",month:"short",...t.getFullYear()===new Date().getFullYear()?{}:{year:"numeric"}});return r("time",{class:"snag-dk-dim snag-dk-when",dateTime:t.toISOString(),title:t.toLocaleString(),children:s})}function En({body:e,onEdit:n,deleteLabel:t,onDelete:o}){const s=e??"",[a,i]=N(!1),[l,g]=N(!1),[d,f]=N(s),y=j(null),u=h=>{h.key!=="Escape"||!l||(h.stopPropagation(),g(!1))};return U(()=>{a&&y.current?.focus()},[a]),a&&n?r("div",{class:"snag-dk-editbox",children:[r("textarea",{ref:y,class:"snag-text",rows:3,"aria-label":p("comment.edit"),value:d,onInput:h=>f(h.target.value),onKeyDown:h=>{h.key==="Enter"&&(h.metaKey||h.ctrlKey)&&(h.preventDefault(),d.trim()&&(n(d.trim()),i(!1))),h.key==="Escape"&&(h.stopPropagation(),f(s),i(!1))}}),r("div",{class:"snag-actions",children:[r("button",{type:"button",class:"snag-cancel",onClick:()=>{f(s),i(!1)},children:p("action.cancel")}),r("button",{type:"button",class:"snag-send",disabled:!d.trim()||d.trim()===s,onClick:()=>{n(d.trim()),i(!1)},children:p("action.save")})]})]}):r("div",{class:"snag-dk-acts snag-dk-menus",onKeyDown:u,children:[l&&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":l,"aria-haspopup":"menu",title:p("action.more"),onClick:()=>g(!l),children:"\u22EF"}),l&&r("div",{class:"snag-dk-menu",role:"menu",children:[n&&r("button",{type:"button",role:"menuitem",title:p("comment.edit"),"aria-label":p("comment.edit"),onClick:()=>{g(!1),f(s),i(!0)},children:p("action.edit")}),o&&r(Sn,{label:p("action.delete"),title:t,cls:"snag-dk-act--danger",role:"menuitem",onConfirm:o})]})]})]})}function Lt({snag:e}){const n=e.anchorReasons?.includes("hidden")??!1;return r("span",{class:"snag-dk-dim snag-dk-where",children:[n&&r(z,{children:[r("span",{class:"snag-dk-moved",children:p("badge.hidden")})," "]}),e.anchorState!=="anchored"&&r(z,{children:[r("span",{class:"snag-dk-moved",children:p(`badge.${e.anchorState}`)})," "]}),e.anchor.label]})}function zt(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 Ut(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 jt({snag:e,n,here:t,unread:o,onOpen:s,onHover:a}){const i=g=>a(t?g:null),l=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:Re(e.status),color:xn(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(Lt,{snag:e})})]}),r(Ot,{snag:e}),e.comments.length>1&&r("span",{class:"snag-dk-replies",role:"img","aria-label":p("dock.replies",{n:I(e.comments.length-1)}),children:I(e.comments.length-1)}),!t&&r("span",{class:"snag-dk-goto",role:"img",title:l,"aria-label":l,children:"\u2197"})]})})}const Tn=e=>c[`status${e[0].toUpperCase()}${e.slice(1)}`]??c.muted;function Ht({round:e,filter:n,onFilter:t,rounds:o,activeRound:s,onRound:a,onClearAll:i,seenAt:l}){const g=!!o&&o.length>1&&!!a,d=e.length>0,[f,y]=N(null),u=Pt(e),h=m=>{const E={...n};for(const[D,M]of Object.entries(m))M===void 0?delete E[D]:E[D]=M;t(E)},S=n.statuses.length>0,b=Nt(n),v=[...new Map(e.map(m=>[m.createdBy.id,m.createdBy.name]))],C=[...new Set(e.map(m=>m.route))].sort(),$=[...u.byStatus.keys()].filter(m=>!pe.includes(m)),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(S?"filter.selectall":"filter.clear")})]}),r("div",{class:"snag-dk-chips",role:"group","aria-label":p("filter.status"),children:[pe.map(m=>{const E=n.statuses.includes(m);return r("button",{type:"button",class:"snag-dk-chip","aria-pressed":E,style:`border-color:color-mix(in srgb, ${Tn(m)} 60%, transparent);background:color-mix(in srgb, ${Tn(m)} ${E?28:10}%, transparent)`,onClick:()=>h({statuses:Mt(n.statuses,m)}),children:[ce(m)," ",r("span",{class:"snag-dk-dim",children:I(u.byStatus.get(m)??0)})]})}),$.map(m=>r("span",{class:"snag-dk-chip snag-dk-chip-stray",children:[m," ",r("span",{class:"snag-dk-dim",children:I(u.byStatus.get(m)??0)})]}))]})]});return r("div",{class:"snag-dk-filters",children:[d&&r("input",{class:"snag-input snag-dk-search",type:"search","aria-label":p("search.aria"),placeholder:p("search.placeholder",{n:I(e.length)}),value:n.q??"",onInput:m=>h({q:m.currentTarget.value||void 0})}),r("div",{class:"snag-dk-menus",onKeyDown:m=>{m.key!=="Escape"||!f||(m.stopPropagation(),y(null))},children:[f&&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":f==="filter",onClick:()=>y(f==="filter"?null:"filter"),children:b>0?p("filter.button.n",{n:I(b)}):p("filter.button")}),f==="filter"&&r("div",{class:"snag-dk-menu snag-dk-menu-form",role:"group","aria-label":p("filter.button"),children:[(g||d)&&r("div",{class:"snag-dk-menugroup",children:[!g&&r("span",{class:"snag-dk-menutitle",children:p("round.label")}),g&&r("label",{class:"snag-dk-round",children:[r("span",{class:"snag-dk-menutitle",children:p("round.label")}),r("select",{class:"snag-input",value:String(s??""),onChange:m=>a(Number(m.currentTarget.value)),children:o.map(m=>r("option",{value:String(m.number),children:[m.name,m.closed?` ${p("round.closed")}`:""]},m.number))})]}),d&&r(Sn,{label:p("dock.clear"),title:p("dock.clear.aria"),cls:"snag-dk-link snag-dk-clear",onConfirm:i})]}),d&&P,d&&r("div",{class:"snag-dk-menugroup",role:"radiogroup","aria-label":p("sort.button"),children:[r("span",{class:"snag-dk-menutitle","aria-hidden":"true",children:p("sort.button")}),[["newest","sort.newest"],["oldest","sort.oldest"],["page","sort.page"]].map(([m,E])=>r("button",{type:"button",role:"radio","aria-checked":n.sort===m,onClick:()=>h({sort:m}),children:[r("span",{class:"snag-dk-tick","aria-hidden":"true",children:n.sort===m?"\u2713":"\xA0"}),p(E)]}))]}),d&&r("div",{class:"snag-dk-menugroup snag-dk-menugroup-last",children:[l&&r("label",{children:[p("filter.read"),r("select",{value:n.read,onChange:m=>h({read:m.currentTarget.value}),children:[r("option",{value:"all",children:p("filter.read.all")}),r("option",{value:"unread",children:p("filter.read.unread")}),r("option",{value:"read",children:p("filter.read.read")})]})]}),r("label",{children:[p("filter.by"),r("select",{value:n.by??"",onChange:m=>h({by:m.currentTarget.value||void 0}),children:[r("option",{value:"",children:p("filter.by.anyone")}),v.map(([m,E])=>r("option",{value:m,children:E}))]})]}),r("label",{children:[p("filter.pages"),r("select",{value:n.page??"",onChange:m=>h({page:m.currentTarget.value||void 0}),children:[r("option",{value:"",children:p("filter.pages.all")}),C.map(m=>r("option",{value:m,children:m}))]})]}),r("label",{class:"snag-dk-pageonly",children:[r("input",{type:"checkbox",checked:n.pageOnly,onChange:m=>h({pageOnly:m.currentTarget.checked})})," ",p("filter.pageonly")]})]})]})]})]})]})}function Ft({snags:e,groups:n,route:t,onOpen:o,onHover:s,onExport:a,onClearAll:i,clusterFilter:l,onClusterClear:g,filter:d,onFilter:f,hiddenNote:y,onHiddenShow:u,rounds:h,activeRound:S,onRound:b,seenAt:v}){const C=zt(e),$=n.flatMap(k=>k.snags),P=d.statuses.length>0||!!d.by||!!d.page||!!d.q?.trim()||d.pageOnly||d.newOnly||d.read!=="all",m=v?e.filter(k=>ge(k,v)).length:0,E=j(null),[D,M]=N(!1),w=k=>{k.key!=="Escape"||!D||(k.stopPropagation(),M(!1))},H=j(null);return U(()=>{const k=E.current,O=H.current;!k||!O||(k.scrollTop+=O.getBoundingClientRect().top-k.getBoundingClientRect().top)},[t,n.length]),r(z,{children:[h&&h.length>1&&b&&r("label",{class:"snag-dk-roundbar",children:[r("span",{class:"snag-dk-dim",children:p("round.label")}),r("select",{class:"snag-input",value:String(S??""),onChange:k=>b(Number(k.currentTarget.value)),children:h.map(k=>r("option",{value:String(k.number),children:[k.name,k.closed?` ${p("round.closed")}`:""]},k.number))})]}),e.length>0&&r(Ht,{round:e,filter:d,onFilter:f,onClearAll:i,...v===void 0?{}:{seenAt:v}}),v&&(m>0||d.newOnly)&&r("button",{type:"button",class:"snag-dk-newpill","aria-pressed":d.newOnly,onClick:()=>f({...d,newOnly:!d.newOnly}),children:d.newOnly?p(m===0?"filter.new.none":"filter.new.on"):p("filter.new",{n:I(m)})}),e.length===0?r("div",{class:"snag-dk-empty",children:r("p",{children:p("dock.empty")})}):$.length===0&&P?r("div",{class:"snag-dk-empty",children:d.pageOnly&&e.some(k=>k.route!==t)?r("p",{children:p("dock.empty.page",{n:I(e.filter(k=>k.route!==t).length),m:I(new Set(e.filter(k=>k.route!==t).map(k=>k.route)).size)})}):r("p",{children:p("dock.empty.filter")})}):r(z,{children:[y&&r("p",{class:"snag-dk-notice",children:[p("dock.hiddenrow")," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>u(y),children:p("dock.hiddenrow.show")})]}),l&&r("p",{class:"snag-dk-notice",children:[p("dock.cluster",{n:l.length})," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>g?.(),children:p("dock.cluster.clear")})]}),e.every(k=>k.anchorState==="orphaned")&&r("p",{class:"snag-dk-notice",children:p("dock.empty.orphans")}),r("div",{class:"snag-dk-scroll",ref:E,children:n.map(k=>r("section",{class:"snag-dk-group",ref:k.here?H:null,children:[k.route!==""&&r("h3",{class:"snag-dk-grouphd",children:[r("span",{class:"snag-dk-route",children:k.route}),r("span",{class:"snag-dk-dim",children:I(k.snags.length)})]}),r("ul",{class:"snag-dk-list",children:k.snags.map(O=>r(jt,{snag:O,n:C.get(O.id),here:k.here,unread:!!v&&ge(O,v),onOpen:o,onHover:s},O.id))})]},k.route))})]}),a&&r("div",{class:"snag-dk-foot",children:r("div",{class:"snag-dk-menus snag-dk-menus-up",onKeyDown:w,children:[D&&r("div",{class:"snag-dk-menubg","aria-hidden":"true",onClick:()=>M(!1)}),r("span",{class:"snag-dk-menuwrap",children:[r("button",{type:"button",class:"snag-dk-link","aria-expanded":D,"aria-haspopup":"menu",onClick:()=>M(!D),children:p("export.button")}),D&&r("div",{class:"snag-dk-menu snag-dk-menu-up",role:"menu",children:["md","json"].map(k=>r("button",{type:"button",role:"menuitem",onClick:()=>{M(!1),a(k)},children:p(k==="md"?"export.md":"export.json")}))})]})]})})]})}const Ie=new Map;function Bt(e){const n=[];try{for(const[t,o]of new URL(e).searchParams)Tt(t)||n.push(o&&o!=="[redacted]"?`${t}=${o}`:t)}catch{return null}return n.length?`?${n.join("&")}`:null}function Kt({att:e,load:n}){const t=j(null),[o,s]=N(!1),[a,i]=N(null);return U(()=>{let l=!1;return n(e).then(async g=>{if(!g||l)return;const d=await createImageBitmap(g);l?d.close():i(d)}).catch(()=>{}),()=>{l=!0}},[e.id,e.url]),U(()=>{const l=t.current;if(!l||!a)return;const g=142,d=g/a.width;l.width=g,l.height=Math.min(96,Math.round(a.height*d)),l.getContext("2d").drawImage(a,0,0,a.width,Math.round(l.height/d),0,0,l.width,l.height)},[a]),a?r(z,{children:[r("button",{type:"button",class:"snag-dk-shot",onClick:()=>s(!0),"aria-label":p("shot.open"),children:r("canvas",{ref:t,width:142,height:Math.min(96,Math.round(a.height*(142/a.width)))})}),o&&r(qt,{bmp:a,onClose:()=>s(!1)})]}):null}function qt({bmp:e,onClose:n}){const t=j(null);return U(()=>{const o=t.current;o&&(o.width=e.width,o.height=e.height,o.getContext("2d").drawImage(e,0,0))},[e]),r("div",{class:"snag-dk-lightbox",role:"dialog","aria-modal":"true","aria-label":p("shot.aria"),tabIndex:-1,ref:o=>o?.focus(),onKeyDown:o=>{o.key==="Escape"&&(o.stopPropagation(),n())},onClick:n,children:[r("canvas",{ref:t}),r("button",{type:"button",class:"snag-dk-link snag-dk-lightclose",onClick:n,children:p("shot.close")})]})}function Wt({snag:e,loadShot:n}){const t=e.context;if(!t)return null;const o=e.attachments?.find(l=>l.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(Kt,{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(z,{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(l=>r("p",{class:"snag-dk-capwhy",children:l},l)),t.capture?.blindSpots?.map(l=>r("p",{class:"snag-dk-capwhy",children:l},l)),(()=>{const l=Bt(t.url);return l?r("p",{class:"snag-dk-capwhy",children:[p("detail.filedat",{query:l})," ",r("a",{class:"snag-dk-openq",href:t.url,target:"_blank",rel:"noreferrer",children:p("detail.openquery")})]}):null})()]})}function Mn(e){const n=e.context?.url??e.route;return`${n}${n.includes("?")?"&":"?"}${Xn("t")}=${e.key}`}function Yt({snag:e}){const[n,t]=N(!1),o=Mn(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:Mn(e)})]})}let Le=null;function Vt({snag:e,list:n,onAssign:t}){const[o,s]=N([]);U(()=>{n&&(Le??=n().catch(()=>(Le=null,[])),Le.then(s))},[n]);const a=e.assignee??null;if(!n||!t)return a?r("p",{class:"snag-dk-field",children:[r("span",{class:"snag-dk-dim",children:p("field.assignee")})," ",r("strong",{children:a.name})]}):null;const i=a&&!o.some(l=>l.id===a.id)?[a,...o]:o;return r("label",{class:"snag-dk-field",children:[r("span",{class:"snag-dk-dim",children:p("field.assignee")}),r("select",{class:"snag-dk-select",value:a?.id??"",onChange:l=>{const g=l.target.value;t(e.id,i.find(d=>d.id===g)??null)},children:[r("option",{value:"",children:p("assignee.none")}),i.map(l=>r("option",{value:l.id,children:l.name},l.id))]})]})}function Jt({snags:e,round:n,fallbackCursor:t,openId:o,onOpen:s,onStatus:a,onReply:i,onEdit:l,onDeleteComment:g,onDeleteThread:d,isMine:f,canDeleteOwnThread:y=!0,canModerate:u=!1,canStatus:h=!0,studio:S,assignees:b,onAssign:v,onShowAnyway:C,onAnnounce:$,loadShot:P}){const m=e.findIndex(_=>_.id===o),E=m>=0,D=_=>f?f(_):!0,M=E?m:Math.min(t,e.length),w=E?e[m]:n.find(_=>_.id===o),H=o?Ie.get(o)??"":"",[k,O]=N(H),[he,fe]=N(H.length>0),me=j(null);U(()=>{he&&me.current?.focus()},[he]);const _e=_=>{O(_),o&&(_?Ie.set(o,_):Ie.delete(o))},ke=xt(),[be]=N(!ke.name),[W,ze]=N(S?.member??null),[xe,Pn]=N(ke.name??""),[Y,Nn]=N(ke.email??""),[On,Ue]=N(!1),J=Y.trim().length>0&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(Y.trim()),je=!!k.trim()&&(!!W||!be||!!xe.trim()&&!J),In=()=>{S&&(Ue(!1),kt(S.host,S.uid,S.env).then(_=>{if(_==="blocked")return Ue(!0);_&&(S.adopt(_),ze(_.reviewer.name),me.current?.focus())}))},He=()=>{if(!w||!je)return;let _;W?_=W:be&&(_=xe.trim(),yt({name:_,...Y.trim()?{email:Y.trim()}:{}})),i(w.id,k.trim(),_),_e(""),fe(!1)};if(!w)return null;const F=w.comments[0],Ln=n.filter(_=>_.route===w.route).findIndex(_=>_.id===w.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:E?I(M+1):"\u2013",total:I(e.length)})}),r("span",{class:"snag-dk-nav",children:[r("button",{type:"button",class:"snag-dk-link",disabled:M<=0,"aria-label":p("dock.prev"),onClick:()=>s(e[M-1].id),children:"\u2191"}),r("button",{type:"button",class:"snag-dk-link",disabled:E?M>=e.length-1:M>=e.length,"aria-label":p("dock.next"),onClick:()=>s(e[E?M+1:M].id),children:"\u2193"})]})]}),r("div",{class:"snag-dk-card",children:[r("div",{class:"snag-dk-meta",children:[r("span",{class:"snag-dk-num",style:{background:Re(w.status),color:xn(w.status)},children:Ln}),r("strong",{children:F?.author.name??p("author.unknown")}),r("span",{class:"snag-dk-dim",children:w.key}),F&&r(Cn,{iso:F.createdAt}),r(Yt,{snag:w})]}),r("div",{class:"snag-dk-cardbody",children:wn(F?.body??"")}),r(Gt,{snag:w}),F&&(D(F.author)||u)&&r(En,{body:F.body,...D(F.author)?{onEdit:_=>l(F.id,_)}:{},deleteLabel:p("comment.delete"),...u||y&&w.comments.every(_=>D(_.author))?{onDelete:()=>d(w.id)}:{}})]}),h?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:Re(w.status)},value:w.status,onChange:_=>{const Q=_.target.value;a(w.id,Q),$?.(p("announce.status",{key:w.key,status:ce(Q)}))},children:Oe.map(_=>r("option",{value:_,children:ce(_)},_))})]}):r("p",{class:"snag-dk-field","data-status-locked":!0,children:[r("span",{class:"snag-dk-dim",children:p("field.status")}),r("strong",{children:ce(w.status)}),r("span",{class:"snag-dk-dim",children:p("field.status.locked")})]}),r(Vt,{snag:w,...b&&v?{list:b,onAssign:v}:{}}),r(Wt,{snag:w,...P?{loadShot:P}:{}}),w.anchorReasons?.includes("hidden")&&r("p",{class:"snag-dk-moved-note",children:[p("detail.hidden")," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>C?.(w),children:p("detail.hidden.show")})]}),w.anchorState!=="anchored"&&r("p",{class:"snag-dk-moved-note",children:[p(`detail.${w.anchorState}`,{label:w.anchor.label}),w.anchorReasons?.includes("budget-exceeded")&&` ${p("detail.unavailable")}`]}),w.anchorState!=="anchored"&&r(It,{anchor:w.anchor}),w.comments.length>1&&r("ul",{class:"snag-dk-replies-list",children:w.comments.slice(1).map(_=>r("li",{children:[r("strong",{children:_.author.name})," ",r(Cn,{iso:_.createdAt}),wn(_.body??""),(D(_.author)||u)&&r(En,{body:_.body,...D(_.author)?{onEdit:Q=>l(_.id,Q)}:{},deleteLabel:p("reply.delete"),onDelete:()=>g(_.id)})]},_.id))}),he?r("div",{class:"snag-dk-replybox",children:[W?r("p",{class:"snag-dk-who",children:[p("who.member",{name:W})," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>{S?.signOut(),ze(null)},children:p("who.signout")})]}):be&&r(z,{children:[r("input",{class:"snag-input",type:"text",autocomplete:"name",placeholder:p("who.name"),"aria-label":p("who.name"),value:xe,onInput:_=>Pn(_.target.value)}),r("input",{class:`snag-input${J?" snag-input--bad":""}`,type:"email",inputMode:"email",autocomplete:"email",placeholder:p("who.email"),"aria-label":p("who.email"),"aria-invalid":J?"true":void 0,value:Y,onInput:_=>Nn(_.target.value)}),J&&r("p",{class:"snag-dk-who",children:p("who.email.bad")})]}),S&&!W&&r("p",{class:"snag-dk-who",children:[r("button",{type:"button",class:"snag-dk-link",onClick:In,children:p("who.signin")}),On&&r("span",{role:"status",children:[" ",p("who.signin.blocked")]})]}),r("textarea",{ref:me,class:"snag-text",rows:2,enterkeyhint:"enter","aria-label":p("reply.aria"),placeholder:p("reply.placeholder"),value:k,onInput:_=>_e(_.target.value),onKeyDown:_=>{_.key==="Enter"&&(_.metaKey||_.ctrlKey)&&(_.preventDefault(),He()),_.key==="Escape"&&(_.stopPropagation(),_.target.blur())}}),r("div",{class:"snag-actions",children:[r("button",{type:"button",class:"snag-cancel",onClick:()=>{_e(""),fe(!1)},children:p("action.cancel")}),r("button",{type:"button",class:"snag-send",disabled:!je,onClick:He,children:p("reply.send")})]})]}):r("button",{type:"button",class:"snag-dk-addreply",onClick:()=>fe(!0),children:p("reply.add")})]})}function Qt(e){const n=e.openId?e.snags.find(b=>b.id===e.openId):null,t=j(null),o=e.clusterFilter?e.snags.filter(b=>e.clusterFilter.includes(b.id)):e.snags,s=Rt(o.filter(b=>Dt(b,e.filter,e.seenAt)),e.filter,e.route,e.seenAt),a=At(s,e.filter.sort),i=e.filter.sort==="page"?Ut(a,e.route):[{route:"",here:!1,snags:a}],l=i.flatMap(b=>b.snags),g=j(0),d=l.findIndex(b=>b.id===e.openId);d>=0&&(g.current=d);const f=j(null),[y,u]=N(null);e.openId?(f.current={id:e.openId,absent:d===-1},y&&u(null)):f.current?.absent&&y!==f.current.id&&(u(f.current.id),f.current=null),U(()=>{t.current?.focus()},[e.openId]),U(()=>{if(!(window.matchMedia?.("(pointer: coarse)").matches??!1))return;const b=t.current;return b?ct(b):void 0},[]);const h=j({snag:n,onStatus:e.onStatus,can:e.canStatus!==!1});h.current={snag:n,onStatus:e.onStatus,can:e.canStatus!==!1},U(()=>{const b=v=>{const{snag:C,onStatus:$,can:P}=h.current;if(!C||!P||v.metaKey||v.ctrlKey||v.altKey||v.composedPath().some(D=>{const M=D;if(!M?.tagName)return!1;const w=M.tagName.toLowerCase();return w==="textarea"||w==="select"?!0:w==="input"?!/^(button|submit|checkbox|radio)$/i.test(M.type):M.isContentEditable?!0:/^(textbox|searchbox|combobox)$/.test(M.getAttribute?.("role")??"")}))return;const E=Number(v.key);if(E>=1&&E<=Oe.length){v.preventDefault(),$(C.id,Oe[E-1]);return}(v.key==="r"||v.key==="R")&&(v.preventDefault(),$(C.id,C.status==="resolved"?"open":"resolved"))};return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[]);const S=window.matchMedia?.("(pointer: coarse)").matches??!1;return r("aside",{ref:t,class:"snag-dk",role:"complementary","aria-label":p("dock.aria"),tabIndex:-1,onKeyDown:b=>{b.key==="Escape"&&(b.stopPropagation(),e.openId?e.onOpen(null):e.onClose())},children:[S&&r("div",{class:"snag-dk-scrim","aria-hidden":"true",onClick:e.onClose}),S&&r("div",{class:"snag-dk-grab","aria-hidden":"true",onPointerDown:b=>{const v=b.clientY,C=b.currentTarget;try{C.setPointerCapture(b.pointerId)}catch{}C.onpointermove=$=>{$.clientY-v>56&&(C.onpointermove=null,e.onClose())},C.onpointerup=()=>C.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(Jt,{...e,snags:l,round:e.snags,fallbackCursor:g.current},n.id):r(Ft,{...e,groups:i,hiddenNote:y,onHiddenShow:b=>{u(null),e.onOpen(b)}})]})}const Dn=360,Xt=` .snag-dk{position:fixed;inset-block:0;inset-inline-end:0;width:${Dn}px;max-width:100vw;z-index:${it.dock};background:${c.bg};color:${c.fg};display:flex;flex-direction:column;font:400 13px/1.45 ${c.font};box-shadow:${c.shadow};border-inline-start:1px solid ${c.border};pointer-events:auto;overscroll-behavior:contain}.snag-dk-filters{padding:8px 12px 6px;border-block-end:1px solid ${c.border};display:grid;gap:6px}.snag-dk-search{width:100%;box-sizing:border-box;font-size:12px;padding:5px 8px}.snag-dk-chiphead{display:flex;justify-content:space-between;align-items:center;padding-inline-end:8px}.snag-dk-chips{display:grid;grid-template-columns:1fr 1fr;gap:4px}.snag-dk-chip{font:500 11px/1.2 ${c.font};color:${c.fg};padding:5px 8px;border-radius:6px;border:1px solid ${c.border};background:none;cursor:pointer;text-align:start;display:flex;justify-content:space-between;align-items:center;gap:4px}.snag-dk-chip[aria-pressed="true"]{font-weight:600}.snag-dk-chip-stray{color:${c.muted};cursor:default}.snag-dk-menus{display:flex;gap:10px;position:relative}.snag-dk-menuwrap{position:relative}.snag-dk-menugroup{display:flex;flex-direction:column;gap:1px;padding-bottom:6px;margin-bottom:6px;border-bottom:1px solid ${c.border}}.snag-dk-menugroup-last{padding-bottom:0;margin-bottom:0;border-bottom:0}.snag-dk-menutitle{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:${c.muted};padding:2px 8px 4px}.snag-dk-menubg{position:absolute;inset:-200px -20px -2000px;background:transparent;z-index:2}.snag-dk-menu{position:absolute;inset-block-start:100%;inset-inline-start:0;z-index:3;min-width:150px;background:${c.bg};border:1px solid ${c.border};border-radius:6px;box-shadow:${c.shadow};display:grid;padding:4px}.snag-dk-menu button{font:400 12px/1.3 ${c.font};color:${c.fg};background:none;border:0;text-align:start;padding:5px 8px;border-radius:4px;cursor:pointer;display:flex;gap:4px}.snag-dk-menu button:hover{background:color-mix(in srgb,${c.fg} 8%,transparent)}.snag-dk-menus-up{position:relative}.snag-dk-menu-up{inset-block-start:auto;inset-block-end:100%;margin-block-end:4px}.snag-dk-menu-form{padding:8px;gap:6px;min-width:224px}.snag-dk-menu-form label:not(.snag-dk-pageonly){display:grid;gap:2px;font:600 10px/1.4 ${c.font};letter-spacing:.05em;text-transform:uppercase;color:${c.muted}}.snag-dk-menu-form select{font:400 12px/1.3 ${c.font};color:${c.fg};background:${c.bg};border:1px solid ${c.border};border-radius:4px;padding:4px}.snag-dk-pageonly{display:flex;align-items:center;gap:6px;font-size:12px;color:${c.fg};cursor:pointer}.snag-dk-permaline{margin:6px 0 0;font-size:11px;color:${c.muted};overflow-wrap:anywhere}.snag-dk-permalabel{font-weight:600}.snag-dk-permaurl{user-select:all}.snag-dk:focus{outline:none}@media (pointer:coarse){.snag-dk{inset-block-start:auto;inset-inline-start:0;width:auto;height:82vh;border-radius:14px 14px 0 0;box-sizing:border-box;padding-bottom:max(var(${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:${c.border}}.snag-dk-item{min-height:56px}.snag-dk-link{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}.snag-dk-select{min-height:44px}.snag-dk-chip{min-height:44px}.snag-dk-search{min-height:44px}}@media (pointer:fine){.snag-dk-scrim,.snag-dk-grab{display:none}}.snag-dk-hd{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid ${c.border};flex:0 0 auto}.snag-dk-scroll{overflow-y:auto;flex:1 1 auto}.snag-dk-list{list-style:none;margin:0;padding:0}.snag-dk-grouphd{position:sticky;top:0;z-index:1;margin:0;display:flex;align-items:center;gap:8px;padding:7px 14px;font:600 11px/1.45 ${c.font};letter-spacing:.02em;background:${c.sunken};border-bottom:1px solid ${c.border}}.snag-dk-route{color:${c.fg};overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;direction:ltr;unicode-bidi:isolate}.snag-dk-grouphd .snag-dk-dim{margin-inline-start:auto;font-weight:400;flex:0 0 auto}.snag-dk-goto{flex:0 0 auto;color:${c.muted};font-size:13px;line-height:1}.snag-dk-dev{flex:0 0 auto;color:${c.muted};display:flex;align-items:center}.snag-dk-item:hover .snag-dk-goto,.snag-dk-item:focus-visible .snag-dk-goto{color:${c.accent}}.snag-dk-item{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:start;background:transparent;border:0;border-bottom:1px solid ${c.border};color:inherit;font:inherit;padding:11px 14px;cursor:pointer;transition:background ${c.motion}}.snag-dk-item:hover{background:${c.hover}}.snag-dk-item:focus-visible{outline:2px solid ${c.focus};outline-offset:-2px}.snag-dk-dot{flex:0 0 7px;width:7px;height:7px;border-radius:50%;margin-block-start:8px;background:transparent}.snag-dk-dot--on{background:${c.accent}}.snag-dk-newpill{display:block;width:100%;box-sizing:border-box;text-align:start;background:${c.sunken};border:0;border-block-end:1px solid ${c.border};color:${c.accent};font:600 12px/1.45 ${c.font};padding:8px 14px;cursor:pointer;flex:0 0 auto}.snag-dk-newpill:hover{background:${c.hover}}.snag-dk-newpill:focus-visible{outline:2px solid ${c.focus};outline-offset:-2px}.snag-dk-num{flex:0 0 22px;height:22px;border-radius:50% 50% 50% 2px;font-weight:600;font-size:11px;line-height:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.snag-dk-num--orphaned{border:2px solid currentColor;box-shadow:inset 0 0 0 2px currentColor}.snag-dk-num--approximate{border:2px dashed currentColor}.snag-dk-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}.snag-dk-body,.snag-dk-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.snag-dk-sub{font-size:11px}.snag-dk-dim{color:${c.muted}}.snag-dk-moved{color:${c.anchorOrphan};font-weight:600}.snag-dk-replies{background:${c.surface};border-radius:999px;padding:1px 7px;font-size:11px;flex:0 0 auto}.snag-dk-empty{padding:28px 16px;text-align:center;flex:1 1 auto}.snag-dk-empty p{margin:0 0 4px}.snag-dk-notice{margin:0;padding:11px 14px;font-size:12px;color:${c.muted};border-bottom:1px solid ${c.border};flex:0 0 auto}.snag-dk-roundbar{display:flex;align-items:center;gap:8px;padding:8px 14px;border-bottom:1px solid ${c.border};flex:0 0 auto}.snag-dk-roundbar .snag-input{flex:1;min-width:0}.snag-dk-foot{display:flex;gap:6px;padding:10px 14px;border-top:1px solid ${c.border};flex:0 0 auto}.snag-dk-link{background:transparent;border:0;color:${c.accent};font:inherit;cursor:pointer;padding:4px 6px;border-radius:calc(${c.radius} - 2px);transition:background ${c.motion}}.snag-dk-link:hover:not(:disabled){background:${c.hover}}.snag-dk-link:disabled{color:${c.disabled};cursor:not-allowed}.snag-dk-link:focus-visible{outline:2px solid ${c.focus};outline-offset:1px}.snag-dk-detail{padding:12px 14px;overflow-y:auto;flex:1 1 auto;display:flex;flex-direction:column;gap:12px}.snag-dk-detailhd{display:flex;align-items:center;justify-content:space-between;gap:8px}.snag-dk-nav{display:flex;gap:2px}.snag-dk-card{background:${c.surface};border-radius:${c.radius};padding:11px}.snag-dk-meta{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin-bottom:6px}.snag-md{overflow-wrap:anywhere}.snag-md>*{margin:0}.snag-md>*+*{margin-block-start:6px}.snag-md p{white-space:pre-wrap}.snag-md ul,.snag-md ol{padding-inline-start:20px}.snag-md li+li{margin-block-start:2px}.snag-md code{background:${c.sunken};border-radius:3px;padding:1px 4px;font-size:.92em;font-family:ui-monospace,monospace}.snag-md pre{background:${c.sunken};border-radius:${c.radius};padding:8px 10px;overflow-x:auto}.snag-md pre code{background:none;padding:0;font-size:.92em}.snag-md a{color:${c.accent}}.snag-dk-field{display:flex;flex-direction:column;gap:4px;font-size:12px}.snag-dk-select{background:${c.surface};color:inherit;border:2px solid;border-radius:${c.radius};padding:7px 9px;font:inherit;min-height:34px}.snag-dk-done{color:${c.muted};text-decoration:line-through}.snag-dk-meta .snag-dk-num{margin-inline-end:2px}.snag-dk-cap{background:${c.sunken};border-radius:${c.radius};padding:9px 11px;display:flex;flex-direction:column;gap:1px;font-size:12px;overflow-wrap:anywhere}.snag-dk-cap p{margin:0}.snag-dk-shot{padding:0;border:1px solid ${c.border};border-radius:calc(${c.radius} - 2px);background:none;cursor:zoom-in;overflow:hidden;line-height:0;align-self:flex-start;margin-block-end:6px}.snag-dk-shot canvas{display:block;max-width:100%}.snag-dk-lightbox{position:fixed;inset:0;z-index:1;background:#000c;display:flex;align-items:center;justify-content:center;padding:24px;cursor:zoom-out}.snag-dk-lightbox canvas{max-width:100%;max-height:100%;object-fit:contain;box-shadow:${c.shadow};background:${c.bg}}.snag-dk-lightclose{position:absolute;inset-block-start:12px;inset-inline-end:16px;color:#fff}.snag-dk-caplabel{font-weight:600;font-size:11px;letter-spacing:.02em;margin-bottom:3px!important}.snag-dk-capwhy{color:${c.muted};font-size:11px;margin-top:5px!important}.snag-dk-moved-note{margin:0;padding:8px 10px;font-size:12px;background:${c.sunken};border-inline-start:3px solid ${c.anchorOrphan};border-radius:${c.radius}}.snag-dk-anchor{font-size:12px;border:1px solid ${c.border};border-radius:${c.radius};padding:6px 10px;background:${c.sunken}}.snag-dk-anchor summary{cursor:pointer;color:${c.muted};font-weight:600;list-style:revert}.snag-dk-anchor dl{margin:8px 0 2px;display:grid;gap:6px}.snag-dk-anchor dt{color:${c.muted};font-size:11px;letter-spacing:.03em;text-transform:uppercase}.snag-dk-anchor dd{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere;user-select:text}.snag-dk-replies-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.snag-dk-replies-list li{background:${c.sunken};border-radius:${c.radius};padding:9px;overflow-wrap:anywhere}.snag-dk-acts{display:flex;gap:2px;margin-top:6px}.snag-dk-act{background:transparent;border:0;color:${c.muted};font:inherit;font-size:11px;cursor:pointer;padding:3px 6px;border-radius:calc(${c.radius} - 3px);transition:background ${c.motion},color ${c.motion}}.snag-dk-more{font-size:14px;line-height:1;letter-spacing:1px}.snag-dk-act:hover{background:${c.hover};color:inherit}.snag-dk-act:focus-visible{outline:2px solid ${c.focus};outline-offset:1px}.snag-dk-act--danger:hover{color:${c.anchorOrphan}}.snag-dk-menu .snag-dk-act--danger{color:${c.fg}}.snag-dk-menu .snag-dk-act--danger:hover{color:${c.anchorOrphan}}.snag-dk-armed{color:${c.anchorOrphan};font-weight:600}.snag-dk-clear{margin-inline-start:auto}.snag-dk-menu .snag-dk-clear{margin-inline-start:0}.snag-dk-editbox{display:flex;flex-direction:column;gap:8px;margin-top:8px}.snag-dk-addreply{background:transparent;border:1px dashed ${c.border};color:${c.muted};border-radius:${c.radius};padding:9px;font:inherit;cursor:pointer;text-align:start;transition:border-color ${c.motion},color ${c.motion}}.snag-dk-addreply:hover{border-color:${c.accent};color:inherit}.snag-dk-replybox{display:flex;flex-direction:column;gap:8px}.snag-dk-who{margin:0;font-size:11px;color:${c.muted}}.snag-dk-who .snag-dk-link{padding:0;font-size:inherit;text-decoration:underline}`;function Zt(e,n,t){const o=e.ownerDocument??document;vn(e,"form",lt),vn(e,"dock",Xt);const s=o.createElement("div");(t??e).appendChild(s);const a=o.defaultView?.matchMedia?.("(pointer: coarse)").matches??!1,i=g=>{const d=e.host;g&&!a?d.style.setProperty(x.dockW,`${Dn}px`):d.style.removeProperty(x.dockW)};i(!0);const l=g=>{on(r(Qt,{...g}),s)};return l(n),{update:l,close(){i(!1),on(null,s),s.remove()}}}const Rn=24;function An(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 eo(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=An(e,n),l=a-e.scrollY;if(l>=i.top+Rn&&l<=i.bottom-Rn)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{Zt as openDock,eo as scrollToSnag,An as visibleStrip};
@@ -1,2 +1,2 @@
1
- var X,y,Te,R,Ee,Ae,Me,le,Q,Y,Pe,_e,ue,de,Z={},ee=[],fn=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,ne=Array.isArray;function L(e,n){for(var t in n)e[t]=n[t];return e}function pe(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function hn(e,n,t){var o,s,r,c={};for(r in n)r=="key"?o=n[r]:r=="ref"?s=n[r]:c[r]=n[r];if(arguments.length>2&&(c.children=arguments.length>3?X.call(arguments,2):t),typeof e=="function"&&e.defaultProps!=null)for(r in e.defaultProps)c[r]===void 0&&(c[r]=e.defaultProps[r]);return te(e,c,o,s,null)}function te(e,n,t,o,s){var r={type:e,props:n,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:s??++Te,__i:-1,__u:0};return s==null&&y.vnode!=null&&y.vnode(r),r}function W(e){return e.children}function oe(e,n){this.props=e,this.context=n}function z(e,n){if(n==null)return e.__?z(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"?z(e):null}function mn(e){if(e.__P&&e.__d){var n=e.__v,t=n.__e,o=[],s=[],r=L({},n);r.__v=n.__v+1,y.vnode&&y.vnode(r),fe(e.__P,r,n,e.__n,e.__P.namespaceURI,32&n.__u?[t]:null,o,t??z(n),!!(32&n.__u),s),r.__v=n.__v,r.__.__k[r.__i]=r,Oe(o,r,s),n.__e=n.__=null,r.__e!=t&&He(r)}}function He(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}),He(e)}function Ie(e){(!e.__d&&(e.__d=!0)&&R.push(e)&&!re.__r++||Ee!=y.debounceRendering)&&((Ee=y.debounceRendering)||Ae)(re)}function re(){try{for(var e,n=1;R.length;)R.length>n&&R.sort(Me),e=R.shift(),n=R.length,mn(e)}finally{R.length=re.__r=0}}function Ne(e,n,t,o,s,r,c,l,p,a,u){var x,i,d,v,T,$,w=o&&o.__k||ee,m=n.length;for(p=gn(t,n,w,p,m),x=0;x<m;x++)(d=t.__k[x])!=null&&(i=d.__i!=-1&&w[d.__i]||Z,d.__i=x,$=fe(e,d,i,s,r,c,l,p,a,u),v=d.__e,d.ref&&i.ref!=d.ref&&(i.ref&&he(i.ref,null,d),u.push(d.ref,d.__c||v,d)),T==null&&v!=null&&(T=v),4&d.__u?(p=Le(d,p,e),i.__e&&(i.__e=null)):typeof d.type=="function"&&$!==void 0?p=$:v&&(p=v.nextSibling),d.__u&=-7);return t.__e=T,p}function gn(e,n,t,o,s){var r,c,l,p,a,u=t.length,x=u,i=0;for(e.__k=new Array(s),r=0;r<s;r++)(c=n[r])!=null&&typeof c!="boolean"&&typeof c!="function"?(typeof c=="string"||typeof c=="number"||typeof c=="bigint"||c.constructor==String?c=e.__k[r]=te(null,c,null,null,null):ne(c)?c=e.__k[r]=te(W,{children:c},null,null,null):c.constructor===void 0&&c.__b>0?c=e.__k[r]=te(c.type,c.props,c.key,c.ref?c.ref:null,c.__v):e.__k[r]=c,p=r+i,c.__=e,c.__b=e.__b+1,l=null,(a=c.__i=vn(c,t,p,x))!=-1&&(x--,(l=t[a])&&(l.__u|=2)),l==null||l.__v==null?(a==-1&&(s>u?i--:s<u&&i++),typeof c.type!="function"&&(c.__u|=4)):a!=p&&(a==p-1?i--:a==p+1?i++:(a>p?i--:i++,c.__u|=4))):e.__k[r]=null;if(x)for(r=0;r<u;r++)(l=t[r])!=null&&(2&l.__u)==0&&(l.__e==o&&(o=z(l)),Fe(l,l));return o}function Le(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=Le(o[s],n,t));return n}e.__e!=n&&(n&&e.type&&!n.parentNode&&(n=z(e)),n=t.insertBefore(e.__e,n||null));do n=n&&n.nextSibling;while(n!=null&&n.nodeType==8);return n}function vn(e,n,t,o){var s,r,c,l=e.key,p=e.type,a=n[t],u=a!=null&&(2&a.__u)==0;if(a===null&&l==null||u&&l==a.key&&p==a.type)return t;if(o>(u?1:0)){for(s=t-1,r=t+1;s>=0||r<n.length;)if((a=n[c=s>=0?s--:r++])!=null&&(2&a.__u)==0&&l==a.key&&p==a.type)return c}return-1}function Re(e,n,t){n[0]=="-"?e.setProperty(n,t??""):e[n]=t==null?"":typeof t!="number"||fn.test(n)?t:t+"px"}function se(e,n,t,o,s){var r,c;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")r=n!=(n=n.replace(Pe,"$1")),c=n.toLowerCase(),n=c in e||n=="onFocusOut"||n=="onFocusIn"?c.slice(2):n.slice(2),e.l||(e.l={}),e.l[n+r]=t,t?o?t[Y]=o[Y]:(t[Y]=_e,e.addEventListener(n,r?de:ue,r)):e.removeEventListener(n,r?de:ue,r);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 De(e){return function(n){if(this.l){var t=this.l[n.type+e];if(n[Q]==null)n[Q]=_e++;else if(n[Q]<t[Y])return;return t(y.event?y.event(n):n)}}}function fe(e,n,t,o,s,r,c,l,p,a){var u,x,i,d,v,T,$,w,m,A,U,I,O,N,F,E,M=n.type;if(n.constructor!==void 0)return null;128&t.__u&&(p=!!(32&t.__u),r=[l=n.__e=t.__e]),(u=y.__b)&&u(n);e:if(typeof M=="function"){x=c.length;try{if(m=n.props,A=M.prototype&&M.prototype.render,U=(u=M.contextType)&&o[u.__c],I=u?U?U.props.value:u.__:o,t.__c?w=(i=n.__c=t.__c).__=i.__E:(A?n.__c=i=new M(m,I):(n.__c=i=new oe(m,I),i.constructor=M,i.render=yn),U&&U.sub(i),i.state||(i.state={}),i.__n=o,d=i.__d=!0,i.__h=[],i._sb=[]),A&&i.__s==null&&(i.__s=i.state),A&&M.getDerivedStateFromProps!=null&&(i.__s==i.state&&(i.__s=L({},i.__s)),L(i.__s,M.getDerivedStateFromProps(m,i.__s))),v=i.props,T=i.state,i.__v=n,d)A&&M.getDerivedStateFromProps==null&&i.componentWillMount!=null&&i.componentWillMount(),A&&i.componentDidMount!=null&&i.__h.push(i.componentDidMount);else{if(A&&M.getDerivedStateFromProps==null&&m!==v&&i.componentWillReceiveProps!=null&&i.componentWillReceiveProps(m,I),n.__v==t.__v||!i.__e&&i.shouldComponentUpdate!=null&&i.shouldComponentUpdate(m,i.__s,I)===!1){n.__v!=t.__v&&(i.props=m,i.state=i.__s,i.__d=!1),n.__e=t.__e,n.__k=t.__k,n.__k.some(function(H){H&&(H.__=n)}),ee.push.apply(i.__h,i._sb),i._sb=[],i.__h.length&&c.push(i),l=z(t);break e}i.componentWillUpdate!=null&&i.componentWillUpdate(m,i.__s,I),A&&i.componentDidUpdate!=null&&i.__h.push(function(){i.componentDidUpdate(v,T,$)})}if(i.context=I,i.props=m,i.__P=e,i.__e=!1,O=y.__r,N=0,A)i.state=i.__s,i.__d=!1,O&&O(n),u=i.render(i.props,i.state,i.context),ee.push.apply(i.__h,i._sb),i._sb=[];else do i.__d=!1,O&&O(n),u=i.render(i.props,i.state,i.context),i.state=i.__s;while(i.__d&&++N<25);i.state=i.__s,i.getChildContext!=null&&(o=L(L({},o),i.getChildContext())),A&&!d&&i.getSnapshotBeforeUpdate!=null&&($=i.getSnapshotBeforeUpdate(v,T)),F=u!=null&&u.type===W&&u.key==null?ze(u.props.children):u,l=Ne(e,ne(F)?F:[F],n,t,o,s,r,c,l,p,a),i.base=n.__e,n.__u&=-161,i.__h.length&&c.push(i),w&&(i.__E=i.__=null)}catch(H){if(c.length=x,n.__v=null,p||r!=null){if(H.then){for(n.__u|=p?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;r!=null&&(r[r.indexOf(l)]=null),n.__e=l}else if(r!=null)for(E=r.length;E--;)pe(r[E])}else n.__e=t.__e;n.__k==null&&(n.__k=t.__k||[]),H.then||Ue(n),y.__e(H,n,t)}}else r==null&&n.__v==t.__v?(n.__k=t.__k,n.__e=t.__e):l=n.__e=bn(t.__e,n,t,o,s,r,c,p,a);return(u=y.diffed)&&u(n),128&n.__u?void 0:l}function Ue(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Ue))}function Oe(e,n,t){for(var o=0;o<t.length;o++)he(t[o],t[++o],t[++o]);y.__c&&y.__c(n,e),e.some(function(s){try{e=s.__h,s.__h=[],e.some(function(r){r.call(s)})}catch(r){y.__e(r,s.__v)}})}function ze(e){return typeof e!="object"||e==null||e.__b>0?e:ne(e)?e.map(ze):e.constructor!==void 0?null:L({},e)}function bn(e,n,t,o,s,r,c,l,p){var a,u,x,i,d,v,T,$=t.props||Z,w=n.props,m=n.type;if(m=="svg"?s="http://www.w3.org/2000/svg":m=="math"?s="http://www.w3.org/1998/Math/MathML":s||(s="http://www.w3.org/1999/xhtml"),r!=null){for(a=0;a<r.length;a++)if((d=r[a])&&"setAttribute"in d==!!m&&(m?d.localName==m:d.nodeType==3)){e=d,r[a]=null;break}}if(e==null){if(m==null)return document.createTextNode(w);e=document.createElementNS(s,m,w.is&&w),l&&(y.__m&&y.__m(n,r),l=!1),r=null}if(m==null)$===w||l&&e.data==w||(e.data=w);else{if(r=m=="textarea"&&w.defaultValue!=null?null:r&&X.call(e.childNodes),!l&&r!=null)for($={},a=0;a<e.attributes.length;a++)$[(d=e.attributes[a]).name]=d.value;for(a in $)d=$[a],a=="dangerouslySetInnerHTML"?x=d:a=="children"||a in w||a=="value"&&"defaultValue"in w||a=="checked"&&"defaultChecked"in w||se(e,a,null,d,s);for(a in w)d=w[a],a=="children"?i=d:a=="dangerouslySetInnerHTML"?u=d:a=="value"?v=d:a=="checked"?T=d:l&&typeof d!="function"||$[a]===d||se(e,a,d,$[a],s);if(u)l||x&&(u.__html==x.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),n.__k=[];else if(x&&(e.innerHTML=""),Ne(n.type=="template"?e.content:e,ne(i)?i:[i],n,t,o,m=="foreignObject"?"http://www.w3.org/1999/xhtml":s,r,c,r?r[0]:t.__k&&z(t,0),l,p),r!=null)for(a=r.length;a--;)pe(r[a]);l&&m!="textarea"||(a="value",m=="progress"&&v==null?e.removeAttribute("value"):v!=null&&(v!==e[a]||m=="progress"&&!v||m=="option"&&v!=$[a])&&se(e,a,v,$[a],s),a="checked",T!=null&&T!=e[a]&&se(e,a,T,$[a],s))}return e}function he(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){y.__e(s,t)}}function Fe(e,n,t){var o,s;if(y.unmount&&y.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||he(o,null,n)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(r){y.__e(r,n)}o.base=o.__P=o.__n=null}if(o=e.__k)for(s=0;s<o.length;s++)o[s]&&Fe(o[s],n,t||typeof e.type!="function");t||pe(e.__e),e.__c=e.__=e.__e=void 0}function yn(e,n,t){return this.constructor(e,t)}function We(e,n,t){var o,s,r,c;n==document&&(n=document.documentElement),y.__&&y.__(e,n),s=(o=!1)?null:n.__k,r=[],c=[],fe(n,e=n.__k=hn(W,null,[e]),s||Z,Z,n.namespaceURI,s?null:n.firstChild?X.call(n.childNodes):null,r,s?s.__e:n.firstChild,o,c),Oe(r,e,c),e.props.children=null}X=ee.slice,y={__e:function(e,n,t,o){for(var s,r,c;n=n.__;)if((s=n.__c)&&!s.__)try{if((r=s.constructor)&&r.getDerivedStateFromError!=null&&(s.setState(r.getDerivedStateFromError(e)),c=s.__d),s.componentDidCatch!=null&&(s.componentDidCatch(e,o||{}),c=s.__d),c)return s.__E=s}catch(l){e=l}throw e}},Te=0,oe.prototype.setState=function(e,n){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=L({},this.state),typeof e=="function"&&(e=e(L({},t),this.props)),e&&L(t,e),e!=null&&this.__v&&(n&&this._sb.push(n),Ie(this))},oe.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ie(this))},oe.prototype.render=W,R=[],Ae=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Me=function(e,n){return e.__v.__b-n.__v.__b},re.__r=0,le=Math.random().toString(8),Q="__d"+le,Y="__a"+le,Pe=/(PointerCapture)$|Capture$/i,_e=0,ue=De(!1),de=De(!0);var xn=0;function g(e,n,t,o,s,r){n||(n={});var c,l,p=n;if("ref"in p)for(l in p={},n)l=="ref"?c=n[l]:p[l]=n[l];var a={type:e,props:p,key:t,ref:c,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--xn,__i:-1,__u:0,__source:s,__self:r};if(typeof e=="function"&&(c=e.defaultProps))for(l in c)p[l]===void 0&&(p[l]=c[l]);return y.vnode&&y.vnode(a),a}var K,k,me,je,ie=0,qe=[],S=y,Be=S.__b,Ye=S.__r,Ke=S.diffed,Ge=S.__c,Ve=S.unmount,Je=S.__;function ge(e,n){S.__h&&S.__h(k,e,ie||n),ie=0;var t=k.__H||(k.__H={__:[],__h:[]});return e>=t.__.length&&t.__.push({}),t.__[e]}function D(e){return ie=1,$n(Ze,e)}function $n(e,n,t){var o=ge(K++,2);if(o.t=e,!o.__c&&(o.__=[Ze(void 0,n),function(l){var p=o.__N?o.__N[0]:o.__[0],a=o.t(p,l);p!==a&&(o.__N=[a,o.__[1]],o.__c.setState({}))}],o.__c=k,!k.__f)){var s=function(l,p,a){if(!o.__c.__H)return!0;var u=!1,x=o.__c.props!==l;if(o.__c.__H.__.some(function(d){if(d.__N){u=!0;var v=d.__[0];d.__=d.__N,d.__N=void 0,v!==d.__[0]&&(x=!0)}}),r){var i=r.call(this,l,p,a);return u?i||x:i}return!u||x};k.__f=!0;var r=k.shouldComponentUpdate,c=k.componentWillUpdate;k.componentWillUpdate=function(l,p,a){if(this.__e){var u=r;r=void 0,s(l,p,a),r=u}c&&c.call(this,l,p,a)},k.shouldComponentUpdate=s}return o.__N||o.__}function ve(e,n){var t=ge(K++,3);!S.__s&&Qe(t.__H,n)&&(t.__=e,t.u=n,k.__H.__h.push(t))}function G(e){return ie=5,kn(function(){return{current:e}},[])}function kn(e,n){var t=ge(K++,7);return Qe(t.__H,n)&&(t.__=e(),t.__H=n,t.__h=e),t.__}function wn(){for(var e;e=qe.shift();){var n=e.__H;if(e.__P&&n)try{n.__h.some(ae),n.__h.some(be),n.__h=[]}catch(t){n.__h=[],S.__e(t,e.__v)}}}S.__b=function(e){k=null,Be&&Be(e)},S.__=function(e,n){e&&n.__k&&n.__k.__m&&(e.__m=n.__k.__m),Je&&Je(e,n)},S.__r=function(e){Ye&&Ye(e),K=0;var n=(k=e.__c).__H;n&&(me===k?(n.__h=[],k.__h=[],n.__.some(function(t){t.__N&&(t.__=t.__N),t.u=t.__N=void 0})):(n.__h.some(ae),n.__h.some(be),n.__h=[],K=0)),me=k},S.diffed=function(e){Ke&&Ke(e);var n=e.__c;n&&n.__H&&(n.__H.__h.length&&(qe.push(n)!==1&&je===S.requestAnimationFrame||((je=S.requestAnimationFrame)||Sn)(wn)),n.__H.__.some(function(t){t.u&&(t.__H=t.u,t.u=void 0)})),me=k=null},S.__c=function(e,n){n.some(function(t){try{t.__h.some(ae),t.__h=t.__h.filter(function(o){return!o.__||be(o)})}catch(o){n.some(function(s){s.__h&&(s.__h=[])}),n=[],S.__e(o,t.__v)}}),Ge&&Ge(e,n)},S.unmount=function(e){Ve&&Ve(e);var n,t=e.__c;t&&t.__H&&(t.__H.__.some(function(o){try{ae(o)}catch(s){n=s}}),t.__H=void 0,n&&S.__e(n,t.__v))};var Xe=typeof requestAnimationFrame=="function";function Sn(e){var n,t=function(){clearTimeout(o),Xe&&cancelAnimationFrame(n),setTimeout(e)},o=setTimeout(t,35);Xe&&(n=requestAnimationFrame(t))}function ae(e){var n=k,t=e.__c;typeof t=="function"&&(e.__c=void 0,t()),k=n}function be(e){var n=k;e.__c=e.__(),k=n}function Qe(e,n){return!e||e.length!==n.length||n.some(function(t,o){return t!==e[o]})}function Ze(e,n){return typeof n=="function"?n(e):n}const Cn="Snagset",Tn="snagset",En="snagset:",An="Snagset",Mn="Snag",Pn="Snags",Hn={anchor:"data-snag-anchor",ignore:"data-snag-ignore",mask:"data-snag-mask",nomask:"data-snag-nomask",src:"data-snag-src",component:"data-snag-component"},In=e=>Hn[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"},Nn=e=>`var(${f[e]})`,en="snag:disclosure:v1",nn="snag:identity",Ln="data-snag-theme";function tn(){let e=null;try{e=localStorage.getItem(nn)}catch{return{}}if(!e)return{};if(e[0]!=="{")return{name:e};try{const n=JSON.parse(e);return n&&typeof n=="object"?n:{}}catch{return{}}}function Rn(e){try{localStorage.setItem(nn,JSON.stringify(e))}catch{}}function Dn(){const e=tn();return{name:typeof e.name=="string"?e.name:"",...e.email?{email:e.email}:{}}}function Un(e){const n=tn();Rn({...n,name:e.name,...e.email?{email:e.email}:{}})}function On(e){const n=window.visualViewport;if(!n)return;let t=0,o=0;const s=()=>{t=0;const l=Math.max(0,Math.round(window.innerHeight-n.height-n.offsetTop));e.style.setProperty(f.kb,`${l}px`)},r=()=>{t||(t=requestAnimationFrame(s))},c=()=>{clearTimeout(o),o=window.setTimeout(s,300)};return s(),n.addEventListener("resize",r),n.addEventListener("scroll",r),window.addEventListener("orientationchange",r),e.addEventListener("focusout",c),()=>{t&&cancelAnimationFrame(t),clearTimeout(o),n.removeEventListener("resize",r),n.removeEventListener("scroll",r),window.removeEventListener("orientationchange",r),e.removeEventListener("focusout",c)}}const zn={product:Cn,set:An,item:Mn,items:Pn};function Fn(e){return(n,t)=>(e[n]??"").replace(/\{(\w+)\}/g,(o,s)=>{const r=t?.[s]??zn[s];return r===void 0?o:String(r)})}const Wn=e=>new Intl.NumberFormat().format(e),jn={"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}"},qn={open:{colour:"#4f6ef7"},progress:{colour:"#f59e0b"},review:{colour:"#8b5cf6"},resolved:{colour:"#10b981"}},_=Object.fromEntries(Object.keys(f).map(e=>[e,Nn(e)])),Bn=Object.entries(qn).map(([e,n])=>` ${f[`status${e[0].toUpperCase()}${e.slice(1)}`]}:${n.colour};`).join(`
2
- `);`${_.font}${_.fg}${f.font}${f.accent}${f.bg}${f.fg}${f.muted}${f.border}${f.radius}${f.shadow}${f.z}${f.motion}${f.surface}${_.fg}${_.bg}${f.sunken}${_.fg}${_.bg}${f.hover}${_.fg}${_.bg}${f.onAccent}${f.focus}${_.accent}${_.fg}${f.disabled}${_.muted}${_.bg}${Bn}${f.anchorOrphan}${Ln}${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 Yn={composer:8},on=new WeakMap;function rn(e,n,t){let o=on.get(e);if(o||on.set(e,o=new Set),o.has(n))return;o.add(n);try{const c=new CSSStyleSheet;c.replaceSync(t),e.adoptedStyleSheets=[...e.adoptedStyleSheets,c];return}catch{}const r=(e.ownerDocument??document).createElement("style");r.setAttribute(`data-snag-${n}`,""),r.textContent=t,e.appendChild(r)}const Kn=` .snag-input,.snag-text{width:100%;box-sizing:border-box;background:${_.surface};color:inherit;border:1px solid ${_.border};border-radius:${_.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 ${_.focus};outline-offset:1px;border-color:transparent}.snag-input--bad{border-color:${_.anchorOrphan}}.snag-note{margin:-2px 0 0;color:${_.anchorOrphan};font-size:11px;line-height:1.35}.snag-note.snag-dim{color:${_.muted}}.snag-actions{display:flex;justify-content:flex-end;gap:6px}.snag-actions button{appearance:none;border:0;border-radius:calc(${_.radius} - 1px);padding:7px 13px;font:inherit;cursor:pointer;min-height:32px;transition:background ${_.motion}}.snag-cancel{background:transparent;color:${_.muted}}.snag-armed{color:${_.anchorOrphan};font-weight:600}.snag-cancel:hover{background:${_.hover};color:inherit}.snag-send{background:${_.accent};color:${_.onAccent};font-weight:600}.snag-send:disabled{opacity:.45;cursor:not-allowed}.snag-actions button:focus-visible{outline:2px solid ${_.focus};outline-offset:2px}`;function Gn(e,n,t){const[o,s]=D(!1);return ve(()=>{if(!o)return;const r=setTimeout(()=>s(!1),3e3);return()=>clearTimeout(r)},[o]),{armed:o,press(){if(o||n&&!n()){s(!1),e();return}s(!0),t?.()}}}const Vn={"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}"},Jn={"disclosure.title":"Before your first comment","disclosure.always":"Each comment carries the page address, viewport size and browser make.","disclosure.crumbs.on":"Recent console messages and network results ride along, recognisable secrets redacted first.","disclosure.crumbs.off":"Console and network capture is off here.","disclosure.screenshot.off":"Screenshots are off for this project.","disclosure.screenshot.on":"{product} never reads what you type. Screenshots are pictures of the page, so anything visible on screen is in the picture \u2014 mark sensitive regions with {maskAttr} and they are blurred before the screenshot leaves your browser.","disclosure.retention":"Everything stays in this browser until someone exports it \u2014 the privacy notes list what can still leak.","disclosure.retention.server":"Your comment, the page address and the details above are sent to {host} when you post \u2014 the privacy notes list what can still leak.","disclosure.ack":"Got it","composer.aria":"New comment","composer.parent":"Pin the parent","composer.child":"Pin the first child","composer.shot":"Add a screenshot","composer.name":"Your name","composer.email":"Email, so we can reply","composer.email.bad":"Check the address \u2014 or leave it blank.","composer.signin":"Studio member? Sign in","composer.signin.blocked":"Allow pop-ups for this page to sign in.","composer.member":"Commenting as {name}","composer.signout":"Not you? Sign out","composer.chars":"{n} characters left","composer.body":"Comment","composer.body.placeholder":"What's the {item}?","action.cancel":"Cancel","action.post":"Post comment","composer.discard.sure":"Sure? Discard this comment","action.discard":"Discard?"},Xn={...jn,...Vn,...Jn},b=Fn(Xn),Qn=`${En}session`;function Zn(e,n,t){if(e.origin!==n||!t||e.source!==t)return!1;const o=e.data;return!!o&&o.type===Qn&&typeof o.session?.sessionToken=="string"&&typeof o.session.reviewer?.name=="string"}function et(e,n,t,o){const s=new URLSearchParams({project:n,origin:t});return o&&s.set("env",o),`${new URL(e).origin}/widget-signin?${s}`}function nt(e,n,t){const o=new URL(e).origin,s=window.open(et(e,n,location.origin,t),`${Tn}-signin`,"popup,width=480,height=600");return s?new Promise(r=>{let c=0;const l=u=>{removeEventListener("message",p),clearInterval(a),r(u)},p=u=>{Zn(u,o,s)&&l(u.data.session)};addEventListener("message",p);const a=setInterval(()=>{s.closed&&++c>1&&l(null)},400)}):Promise.resolve("blocked")}const ye=1e4,tt=9e3,ot=e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim());let sn=!1;function rt(){if(sn)return!0;try{return localStorage.getItem(en)==="1"}catch{return!1}}function st({at:e,label:n,onSend:t,onCancel:o,onRetarget:s,onShotOptIn:r,onDraft:c,initialBody:l,initialName:p,initialEmail:a,crumbsOn:u,quote:x,shotsOn:i,serverHost:d,studio:v}){const T=Dn(),[$,w]=D(T.name||(p??"")),[m,A]=D(v?.member??null),[U,I]=D(!1),O=()=>{v&&(I(!1),nt(v.host,v.uid,v.env).then(h=>{if(h==="blocked")return I(!0);h&&(v.adopt(h),A(h.reviewer.name),H.current?.focus())}))},[N,F]=D(T.email??a??""),[E,M]=D(l??""),H=G(null),xe=G(null),ce=G(null),[$e]=D(!T.name),[P,an]=D(rt),ke=G(null),cn=()=>{sn=!0;try{localStorage.setItem(en,"1")}catch{}an(!0)},j=window.matchMedia?.("(pointer: coarse)").matches??!1,ln=G(performance.now()).current;ve(()=>{if(j)return;const h=ce.current,C=h?.getBoundingClientRect();if(h&&C&&(C.bottom>innerHeight-8&&(h.style.top=`${Math.max(8,innerHeight-C.height-8)}px`),C.right>innerWidth-8&&(h.style.left=`${Math.max(8,innerWidth-C.width-8)}px`)),!P){ke.current?.focus();return}($e&&!m?xe:H).current?.focus()},[P]),ve(()=>{const h=ce.current;if(h)return On(h)},[]);const q=N.trim().length>0&&!ot(N),we=E.trim().length>0&&(!!m||$.trim().length>0&&!q);function Se(){if(!we)return;if(m)return t(E.trim(),m);const h={name:$.trim(),...N.trim()?{email:N.trim()}:{}};Un(h),t(E.trim(),h.name,h.email)}const{armed:V,press:J}=Gn(o,()=>E.trim().length>0,()=>H.current?.focus()),_n=h=>{M(h),c?.(h,$,N)},Ce=300,un=Math.min(Math.max(8,e.x+14),innerWidth-Ce-8),dn=Math.min(Math.max(8,e.y+14),innerHeight-198);return g(W,{children:[j&&g("div",{class:"snag-scrim","aria-hidden":"true",onClick:()=>{performance.now()-ln>400&&J()}}),g("div",{ref:ce,class:"snag-composer",role:"dialog","aria-label":b("composer.aria"),style:{left:`${un}px`,top:`${dn}px`,width:`${Ce}px`},onKeyDown:h=>{h.key==="Escape"&&(h.stopPropagation(),J()),h.key==="Enter"&&(h.metaKey||h.ctrlKey)&&(h.preventDefault(),Se())},children:[j&&g("div",{class:"snag-grab","aria-hidden":"true",onPointerDown:h=>{const C=h.clientY,B=h.currentTarget;try{B.setPointerCapture(h.pointerId)}catch{}B.onpointermove=pn=>{pn.clientY-C>56&&(B.onpointermove=null,J())},B.onpointerup=()=>B.onpointermove=null}}),g("div",{class:"snag-head",children:[j&&s&&P&&g("span",{class:"snag-step",children:[g("button",{type:"button","aria-label":b("composer.parent"),onClick:()=>s("up"),children:"\u25B2"}),g("button",{type:"button","aria-label":b("composer.child"),onClick:()=>s("down"),children:"\u25BC"})]}),g("p",{class:"snag-target",title:n,children:n}),g("button",{type:"button",class:`snag-dismiss${V?" snag-armed":""}`,"aria-label":b(V?"composer.discard.sure":"action.cancel"),title:b(V?"composer.discard.sure":"action.cancel"),onClick:J,children:V?b("action.discard"):"\u2715"})]}),!P&&g("div",{class:"snag-disclose",children:[g("p",{class:"snag-disclose-title",children:b("disclosure.title")}),g("p",{children:b("disclosure.always")}),g("p",{children:b(u?"disclosure.crumbs.on":"disclosure.crumbs.off")}),g("p",{children:i?b("disclosure.screenshot.on",{maskAttr:In("mask")}):b("disclosure.screenshot.off")}),g("p",{children:d?b("disclosure.retention.server",{host:d}):b("disclosure.retention")}),g("div",{class:"snag-actions",children:g("button",{type:"button",ref:ke,class:"snag-send snag-primary",onClick:cn,children:b("disclosure.ack")})})]}),P&&m&&g("p",{class:"snag-member",children:[b("composer.member",{name:m})," ",g("button",{type:"button",class:"snag-link",onClick:()=>{v?.signOut(),A(null)},children:b("composer.signout")})]}),P&&$e&&!m&&g(W,{children:[g("input",{ref:xe,class:"snag-input",type:"text",placeholder:b("composer.name"),"aria-label":b("composer.name"),value:$,onInput:h=>{const C=h.target.value;w(C),E.trim()&&c?.(E,C,N)}}),g("input",{class:`snag-input${q?" snag-input--bad":""}`,type:"email",inputMode:"email",autocomplete:"email",placeholder:b("composer.email"),"aria-label":b("composer.email"),"aria-invalid":q?"true":void 0,"aria-describedby":q?"snag-email-note":void 0,value:N,onInput:h=>{const C=h.target.value;F(C),E.trim()&&c?.(E,$,C)}}),q&&g("p",{class:"snag-note",id:"snag-email-note",children:b("composer.email.bad")})]}),P&&v&&!m&&g("p",{class:"snag-member",children:[g("button",{type:"button",class:"snag-link",onClick:O,children:b("composer.signin")}),U&&g("span",{role:"status",children:[" ",b("composer.signin.blocked")]})]}),P&&x&&g("blockquote",{class:"snag-quote",children:x}),P&&g("textarea",{ref:H,class:"snag-text",placeholder:b("composer.body.placeholder"),"aria-label":b("composer.body"),maxLength:ye,rows:3,enterkeyhint:"enter",value:E,onInput:h=>{const C=h.target;C.style.height="auto",C.style.height=`${Math.min(C.scrollHeight,128)}px`,_n(C.value)}}),P&&E.length>=tt&&g("p",{class:`snag-note${E.length>=ye?"":" snag-dim"}`,"aria-live":"polite",children:b("composer.chars",{n:Wn(ye-E.length)})}),P&&j&&r&&g("label",{class:"snag-shotopt",children:[g("input",{type:"checkbox",onChange:h=>r(h.currentTarget.checked)})," ",b("composer.shot")]}),P&&g("div",{class:"snag-actions",children:g("button",{type:"button",class:"snag-send snag-primary",disabled:!we,onClick:Se,children:b("action.post")})})]})]})}const it=` .snag-composer{position:fixed;box-sizing:border-box;z-index:${Yn.composer};background:${_.bg};color:${_.fg};border:1px solid ${_.border};border-radius:calc(${_.radius} + 4px);padding:12px;box-shadow:${_.shadow};pointer-events:auto;font:400 13px/1.45 ${_.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:${_.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:${_.muted};font:inherit;font-size:12px;line-height:1;padding:6px;margin:-6px -4px -6px 0;border-radius:calc(${_.radius} - 2px);cursor:pointer}.snag-dismiss:hover{color:${_.fg};background:${_.hover}}.snag-dismiss:focus-visible{outline:2px solid ${_.focus};outline-offset:1px}.snag-dismiss.snag-armed{color:${_.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:${_.fg}}.snag-disclose .snag-disclose-title{font-weight:600;font-size:12px}.snag-disclose p:not(.snag-disclose-title){color:${_.muted}}.snag-member{margin:0;font-size:11px;color:${_.muted}}.snag-link{appearance:none;border:0;background:none;padding:0;font:inherit;color:${_.fg};text-decoration:underline;text-underline-offset:2px;cursor:pointer}.snag-link:focus-visible{outline:2px solid ${_.focus};outline-offset:1px}.snag-quote{margin:0;padding:6px 10px;border-inline-start:3px solid ${_.accent};background:${_.surface};font-size:12px;color:${_.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(${_.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 ${_.border};border-radius:8px;color:${_.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 ${_.focus};outline-offset:3px}}`;function at(e,n,t){const o=e.ownerDocument??document;rn(e,"form",Kn),rn(e,"composer",it);const s=o.createElement("div");(t??e).appendChild(s);const r=()=>{We(null,s),s.remove()},c=()=>s.querySelector(".snag-text"),l=()=>(c()?.value??"").trim().length>0,p=()=>{const a=s.firstElementChild;a&&(a.classList.remove("snag-pulse"),a.offsetWidth,a.classList.add("snag-pulse"),setTimeout(()=>a.classList.remove("snag-pulse"),600))};return We(g(st,{...n,onSend:(a,u,x)=>{n.onSend(a,u,x),r()},onCancel:()=>{n.onCancel(),r()}}),s),{close:r,hasText:l,pulse:p,setLabel(a){const u=s.querySelector(".snag-target");u&&(u.textContent=a,u.title=a)}}}export{at as openComposer};
1
+ var Q,b,Ee,D,Ae,Me,Pe,_e,Z,B,He,ue,de,pe,ee={},ne=[],hn=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,te=Array.isArray;function I(e,n){for(var t in n)e[t]=n[t];return e}function fe(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function mn(e,n,t){var o,s,r,c={};for(r in n)r=="key"?o=n[r]:r=="ref"?s=n[r]:c[r]=n[r];if(arguments.length>2&&(c.children=arguments.length>3?Q.call(arguments,2):t),typeof e=="function"&&e.defaultProps!=null)for(r in e.defaultProps)c[r]===void 0&&(c[r]=e.defaultProps[r]);return oe(e,c,o,s,null)}function oe(e,n,t,o,s){var r={type:e,props:n,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:s??++Ee,__i:-1,__u:0};return s==null&&b.vnode!=null&&b.vnode(r),r}function z(e){return e.children}function re(e,n){this.props=e,this.context=n}function O(e,n){if(n==null)return e.__?O(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"?O(e):null}function gn(e){if(e.__P&&e.__d){var n=e.__v,t=n.__e,o=[],s=[],r=I({},n);r.__v=n.__v+1,b.vnode&&b.vnode(r),he(e.__P,r,n,e.__n,e.__P.namespaceURI,32&n.__u?[t]:null,o,t??O(n),!!(32&n.__u),s),r.__v=n.__v,r.__.__k[r.__i]=r,ze(o,r,s),n.__e=n.__=null,r.__e!=t&&Ie(r)}}function Ie(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}),Ie(e)}function Ne(e){(!e.__d&&(e.__d=!0)&&D.push(e)&&!se.__r++||Ae!=b.debounceRendering)&&((Ae=b.debounceRendering)||Me)(se)}function se(){try{for(var e,n=1;D.length;)D.length>n&&D.sort(Pe),e=D.shift(),n=D.length,gn(e)}finally{D.length=se.__r=0}}function Le(e,n,t,o,s,r,c,l,d,a,u){var y,i,p,x,w,S,$=o&&o.__k||ne,v=n.length;for(d=vn(t,n,$,d,v),y=0;y<v;y++)(p=t.__k[y])!=null&&(i=p.__i!=-1&&$[p.__i]||ee,p.__i=y,S=he(e,p,i,s,r,c,l,d,a,u),x=p.__e,p.ref&&i.ref!=p.ref&&(i.ref&&me(i.ref,null,p),u.push(p.ref,p.__c||x,p)),w==null&&x!=null&&(w=x),4&p.__u?(d=Re(p,d,e),i.__e&&(i.__e=null)):typeof p.type=="function"&&S!==void 0?d=S:x&&(d=x.nextSibling),p.__u&=-7);return t.__e=w,d}function vn(e,n,t,o,s){var r,c,l,d,a,u=t.length,y=u,i=0;for(e.__k=new Array(s),r=0;r<s;r++)(c=n[r])!=null&&typeof c!="boolean"&&typeof c!="function"?(typeof c=="string"||typeof c=="number"||typeof c=="bigint"||c.constructor==String?c=e.__k[r]=oe(null,c,null,null,null):te(c)?c=e.__k[r]=oe(z,{children:c},null,null,null):c.constructor===void 0&&c.__b>0?c=e.__k[r]=oe(c.type,c.props,c.key,c.ref?c.ref:null,c.__v):e.__k[r]=c,d=r+i,c.__=e,c.__b=e.__b+1,l=null,(a=c.__i=bn(c,t,d,y))!=-1&&(y--,(l=t[a])&&(l.__u|=2)),l==null||l.__v==null?(a==-1&&(s>u?i--:s<u&&i++),typeof c.type!="function"&&(c.__u|=4)):a!=d&&(a==d-1?i--:a==d+1?i++:(a>d?i--:i++,c.__u|=4))):e.__k[r]=null;if(y)for(r=0;r<u;r++)(l=t[r])!=null&&(2&l.__u)==0&&(l.__e==o&&(o=O(l)),We(l,l));return o}function Re(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=Re(o[s],n,t));return n}e.__e!=n&&(n&&e.type&&!n.parentNode&&(n=O(e)),n=t.insertBefore(e.__e,n||null));do n=n&&n.nextSibling;while(n!=null&&n.nodeType==8);return n}function bn(e,n,t,o){var s,r,c,l=e.key,d=e.type,a=n[t],u=a!=null&&(2&a.__u)==0;if(a===null&&l==null||u&&l==a.key&&d==a.type)return t;if(o>(u?1:0)){for(s=t-1,r=t+1;s>=0||r<n.length;)if((a=n[c=s>=0?s--:r++])!=null&&(2&a.__u)==0&&l==a.key&&d==a.type)return c}return-1}function De(e,n,t){n[0]=="-"?e.setProperty(n,t??""):e[n]=t==null?"":typeof t!="number"||hn.test(n)?t:t+"px"}function ie(e,n,t,o,s){var r,c;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||De(e.style,n,"");if(t)for(n in t)o&&t[n]==o[n]||De(e.style,n,t[n])}else if(n[0]=="o"&&n[1]=="n")r=n!=(n=n.replace(He,"$1")),c=n.toLowerCase(),n=c in e||n=="onFocusOut"||n=="onFocusIn"?c.slice(2):n.slice(2),e.l||(e.l={}),e.l[n+r]=t,t?o?t[B]=o[B]:(t[B]=ue,e.addEventListener(n,r?pe:de,r)):e.removeEventListener(n,r?pe:de,r);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 Ue(e){return function(n){if(this.l){var t=this.l[n.type+e];if(n[Z]==null)n[Z]=ue++;else if(n[Z]<t[B])return;return t(b.event?b.event(n):n)}}}function he(e,n,t,o,s,r,c,l,d,a){var u,y,i,p,x,w,S,$,v,E,N,H,L,G,P,F,k=n.type;if(n.constructor!==void 0)return null;128&t.__u&&(d=!!(32&t.__u),r=[l=n.__e=t.__e]),(u=b.__b)&&u(n);e:if(typeof k=="function"){y=c.length;try{if(v=n.props,E=k.prototype&&k.prototype.render,N=(u=k.contextType)&&o[u.__c],H=u?N?N.props.value:u.__:o,t.__c?$=(i=n.__c=t.__c).__=i.__E:(E?n.__c=i=new k(v,H):(n.__c=i=new re(v,H),i.constructor=k,i.render=xn),N&&N.sub(i),i.state||(i.state={}),i.__n=o,p=i.__d=!0,i.__h=[],i._sb=[]),E&&i.__s==null&&(i.__s=i.state),E&&k.getDerivedStateFromProps!=null&&(i.__s==i.state&&(i.__s=I({},i.__s)),I(i.__s,k.getDerivedStateFromProps(v,i.__s))),x=i.props,w=i.state,i.__v=n,p)E&&k.getDerivedStateFromProps==null&&i.componentWillMount!=null&&i.componentWillMount(),E&&i.componentDidMount!=null&&i.__h.push(i.componentDidMount);else{if(E&&k.getDerivedStateFromProps==null&&v!==x&&i.componentWillReceiveProps!=null&&i.componentWillReceiveProps(v,H),n.__v==t.__v||!i.__e&&i.shouldComponentUpdate!=null&&i.shouldComponentUpdate(v,i.__s,H)===!1){n.__v!=t.__v&&(i.props=v,i.state=i.__s,i.__d=!1),n.__e=t.__e,n.__k=t.__k,n.__k.some(function(R){R&&(R.__=n)}),ne.push.apply(i.__h,i._sb),i._sb=[],i.__h.length&&c.push(i),l=O(t);break e}i.componentWillUpdate!=null&&i.componentWillUpdate(v,i.__s,H),E&&i.componentDidUpdate!=null&&i.__h.push(function(){i.componentDidUpdate(x,w,S)})}if(i.context=H,i.props=v,i.__P=e,i.__e=!1,L=b.__r,G=0,E)i.state=i.__s,i.__d=!1,L&&L(n),u=i.render(i.props,i.state,i.context),ne.push.apply(i.__h,i._sb),i._sb=[];else do i.__d=!1,L&&L(n),u=i.render(i.props,i.state,i.context),i.state=i.__s;while(i.__d&&++G<25);i.state=i.__s,i.getChildContext!=null&&(o=I(I({},o),i.getChildContext())),E&&!p&&i.getSnapshotBeforeUpdate!=null&&(S=i.getSnapshotBeforeUpdate(x,w)),P=u!=null&&u.type===z&&u.key==null?Fe(u.props.children):u,l=Le(e,te(P)?P:[P],n,t,o,s,r,c,l,d,a),i.base=n.__e,n.__u&=-161,i.__h.length&&c.push(i),$&&(i.__E=i.__=null)}catch(R){if(c.length=y,n.__v=null,d||r!=null){if(R.then){for(n.__u|=d?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;r!=null&&(r[r.indexOf(l)]=null),n.__e=l}else if(r!=null)for(F=r.length;F--;)fe(r[F])}else n.__e=t.__e;n.__k==null&&(n.__k=t.__k||[]),R.then||Oe(n),b.__e(R,n,t)}}else r==null&&n.__v==t.__v?(n.__k=t.__k,n.__e=t.__e):l=n.__e=yn(t.__e,n,t,o,s,r,c,d,a);return(u=b.diffed)&&u(n),128&n.__u?void 0:l}function Oe(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Oe))}function ze(e,n,t){for(var o=0;o<t.length;o++)me(t[o],t[++o],t[++o]);b.__c&&b.__c(n,e),e.some(function(s){try{e=s.__h,s.__h=[],e.some(function(r){r.call(s)})}catch(r){b.__e(r,s.__v)}})}function Fe(e){return typeof e!="object"||e==null||e.__b>0?e:te(e)?e.map(Fe):e.constructor!==void 0?null:I({},e)}function yn(e,n,t,o,s,r,c,l,d){var a,u,y,i,p,x,w,S=t.props||ee,$=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"),r!=null){for(a=0;a<r.length;a++)if((p=r[a])&&"setAttribute"in p==!!v&&(v?p.localName==v:p.nodeType==3)){e=p,r[a]=null;break}}if(e==null){if(v==null)return document.createTextNode($);e=document.createElementNS(s,v,$.is&&$),l&&(b.__m&&b.__m(n,r),l=!1),r=null}if(v==null)S===$||l&&e.data==$||(e.data=$);else{if(r=v=="textarea"&&$.defaultValue!=null?null:r&&Q.call(e.childNodes),!l&&r!=null)for(S={},a=0;a<e.attributes.length;a++)S[(p=e.attributes[a]).name]=p.value;for(a in S)p=S[a],a=="dangerouslySetInnerHTML"?y=p:a=="children"||a in $||a=="value"&&"defaultValue"in $||a=="checked"&&"defaultChecked"in $||ie(e,a,null,p,s);for(a in $)p=$[a],a=="children"?i=p:a=="dangerouslySetInnerHTML"?u=p:a=="value"?x=p:a=="checked"?w=p:l&&typeof p!="function"||S[a]===p||ie(e,a,p,S[a],s);if(u)l||y&&(u.__html==y.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),n.__k=[];else if(y&&(e.innerHTML=""),Le(n.type=="template"?e.content:e,te(i)?i:[i],n,t,o,v=="foreignObject"?"http://www.w3.org/1999/xhtml":s,r,c,r?r[0]:t.__k&&O(t,0),l,d),r!=null)for(a=r.length;a--;)fe(r[a]);l&&v!="textarea"||(a="value",v=="progress"&&x==null?e.removeAttribute("value"):x!=null&&(x!==e[a]||v=="progress"&&!x||v=="option"&&x!=S[a])&&ie(e,a,x,S[a],s),a="checked",w!=null&&w!=e[a]&&ie(e,a,w,S[a],s))}return e}function me(e,n,t){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&n==null||(e.__u=e(n))}else e.current=n}catch(s){b.__e(s,t)}}function We(e,n,t){var o,s;if(b.unmount&&b.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||me(o,null,n)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(r){b.__e(r,n)}o.base=o.__P=o.__n=null}if(o=e.__k)for(s=0;s<o.length;s++)o[s]&&We(o[s],n,t||typeof e.type!="function");t||fe(e.__e),e.__c=e.__=e.__e=void 0}function xn(e,n,t){return this.constructor(e,t)}function je(e,n,t){var o,s,r,c;n==document&&(n=document.documentElement),b.__&&b.__(e,n),s=(o=!1)?null:n.__k,r=[],c=[],he(n,e=n.__k=mn(z,null,[e]),s||ee,ee,n.namespaceURI,s?null:n.firstChild?Q.call(n.childNodes):null,r,s?s.__e:n.firstChild,o,c),ze(r,e,c),e.props.children=null}Q=ne.slice,b={__e:function(e,n,t,o){for(var s,r,c;n=n.__;)if((s=n.__c)&&!s.__)try{if((r=s.constructor)&&r.getDerivedStateFromError!=null&&(s.setState(r.getDerivedStateFromError(e)),c=s.__d),s.componentDidCatch!=null&&(s.componentDidCatch(e,o||{}),c=s.__d),c)return s.__E=s}catch(l){e=l}throw e}},Ee=0,re.prototype.setState=function(e,n){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=I({},this.state),typeof e=="function"&&(e=e(I({},t),this.props)),e&&I(t,e),e!=null&&this.__v&&(n&&this._sb.push(n),Ne(this))},re.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ne(this))},re.prototype.render=z,D=[],Me=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Pe=function(e,n){return e.__v.__b-n.__v.__b},se.__r=0,_e=Math.random().toString(8),Z="__d"+_e,B="__a"+_e,He=/(PointerCapture)$|Capture$/i,ue=0,de=Ue(!1),pe=Ue(!0);var $n=0;function m(e,n,t,o,s,r){n||(n={});var c,l,d=n;if("ref"in d)for(l in d={},n)l=="ref"?c=n[l]:d[l]=n[l];var a={type:e,props:d,key:t,ref:c,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--$n,__i:-1,__u:0,__source:s,__self:r};if(typeof e=="function"&&(c=e.defaultProps))for(l in c)d[l]===void 0&&(d[l]=c[l]);return b.vnode&&b.vnode(a),a}var Y,C,ge,qe,ae=0,Be=[],T=b,Ye=T.__b,Ke=T.__r,Ge=T.diffed,Ve=T.__c,Je=T.unmount,Xe=T.__;function ve(e,n){T.__h&&T.__h(C,e,ae||n),ae=0;var t=C.__H||(C.__H={__:[],__h:[]});return e>=t.__.length&&t.__.push({}),t.__[e]}function U(e){return ae=1,kn(en,e)}function kn(e,n,t){var o=ve(Y++,2);if(o.t=e,!o.__c&&(o.__=[en(void 0,n),function(l){var d=o.__N?o.__N[0]:o.__[0],a=o.t(d,l);d!==a&&(o.__N=[a,o.__[1]],o.__c.setState({}))}],o.__c=C,!C.__f)){var s=function(l,d,a){if(!o.__c.__H)return!0;var u=!1,y=o.__c.props!==l;if(o.__c.__H.__.some(function(p){if(p.__N){u=!0;var x=p.__[0];p.__=p.__N,p.__N=void 0,x!==p.__[0]&&(y=!0)}}),r){var i=r.call(this,l,d,a);return u?i||y:i}return!u||y};C.__f=!0;var r=C.shouldComponentUpdate,c=C.componentWillUpdate;C.componentWillUpdate=function(l,d,a){if(this.__e){var u=r;r=void 0,s(l,d,a),r=u}c&&c.call(this,l,d,a)},C.shouldComponentUpdate=s}return o.__N||o.__}function be(e,n){var t=ve(Y++,3);!T.__s&&Ze(t.__H,n)&&(t.__=e,t.u=n,C.__H.__h.push(t))}function K(e){return ae=5,wn(function(){return{current:e}},[])}function wn(e,n){var t=ve(Y++,7);return Ze(t.__H,n)&&(t.__=e(),t.__H=n,t.__h=e),t.__}function Sn(){for(var e;e=Be.shift();){var n=e.__H;if(e.__P&&n)try{n.__h.some(ce),n.__h.some(ye),n.__h=[]}catch(t){n.__h=[],T.__e(t,e.__v)}}}T.__b=function(e){C=null,Ye&&Ye(e)},T.__=function(e,n){e&&n.__k&&n.__k.__m&&(e.__m=n.__k.__m),Xe&&Xe(e,n)},T.__r=function(e){Ke&&Ke(e),Y=0;var n=(C=e.__c).__H;n&&(ge===C?(n.__h=[],C.__h=[],n.__.some(function(t){t.__N&&(t.__=t.__N),t.u=t.__N=void 0})):(n.__h.some(ce),n.__h.some(ye),n.__h=[],Y=0)),ge=C},T.diffed=function(e){Ge&&Ge(e);var n=e.__c;n&&n.__H&&(n.__H.__h.length&&(Be.push(n)!==1&&qe===T.requestAnimationFrame||((qe=T.requestAnimationFrame)||Cn)(Sn)),n.__H.__.some(function(t){t.u&&(t.__H=t.u,t.u=void 0)})),ge=C=null},T.__c=function(e,n){n.some(function(t){try{t.__h.some(ce),t.__h=t.__h.filter(function(o){return!o.__||ye(o)})}catch(o){n.some(function(s){s.__h&&(s.__h=[])}),n=[],T.__e(o,t.__v)}}),Ve&&Ve(e,n)},T.unmount=function(e){Je&&Je(e);var n,t=e.__c;t&&t.__H&&(t.__H.__.some(function(o){try{ce(o)}catch(s){n=s}}),t.__H=void 0,n&&T.__e(n,t.__v))};var Qe=typeof requestAnimationFrame=="function";function Cn(e){var n,t=function(){clearTimeout(o),Qe&&cancelAnimationFrame(n),setTimeout(e)},o=setTimeout(t,35);Qe&&(n=requestAnimationFrame(t))}function ce(e){var n=C,t=e.__c;typeof t=="function"&&(e.__c=void 0,t()),C=n}function ye(e){var n=C;e.__c=e.__(),C=n}function Ze(e,n){return!e||e.length!==n.length||n.some(function(t,o){return t!==e[o]})}function en(e,n){return typeof n=="function"?n(e):n}const Tn="Snagset",En="snagset",An="snagset:",Mn="Snagset",Pn="Snag",Hn="Snags",In={anchor:"data-snag-anchor",ignore:"data-snag-ignore",mask:"data-snag-mask",nomask:"data-snag-nomask",src:"data-snag-src",component:"data-snag-component"},Nn=e=>In[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"},Ln=e=>`var(${f[e]})`,nn="snag:disclosure:v1",tn="snag:identity",Rn="data-snag-theme";function on(){let e=null;try{e=localStorage.getItem(tn)}catch{return{}}if(!e)return{};if(e[0]!=="{")return{name:e};try{const n=JSON.parse(e);return n&&typeof n=="object"?n:{}}catch{return{}}}function Dn(e){try{localStorage.setItem(tn,JSON.stringify(e))}catch{}}function Un(){const e=on();return{name:typeof e.name=="string"?e.name:"",...e.email?{email:e.email}:{}}}function On(e){const n=on();Dn({...n,name:e.name,...e.email?{email:e.email}:{}})}function zn(e){const n=window.visualViewport;if(!n)return;let t=0,o=0;const s=()=>{t=0;const l=Math.max(0,Math.round(window.innerHeight-n.height-n.offsetTop));e.style.setProperty(f.kb,`${l}px`)},r=()=>{t||(t=requestAnimationFrame(s))},c=()=>{clearTimeout(o),o=window.setTimeout(s,300)};return s(),n.addEventListener("resize",r),n.addEventListener("scroll",r),window.addEventListener("orientationchange",r),e.addEventListener("focusout",c),()=>{t&&cancelAnimationFrame(t),clearTimeout(o),n.removeEventListener("resize",r),n.removeEventListener("scroll",r),window.removeEventListener("orientationchange",r),e.removeEventListener("focusout",c)}}const Fn={product:Tn,set:Mn,item:Pn,items:Hn};function Wn(e){return(n,t)=>(e[n]??"").replace(/\{(\w+)\}/g,(o,s)=>{const r=t?.[s]??Fn[s];return r===void 0?o:String(r)})}const jn=e=>new Intl.NumberFormat().format(e),qn={"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}"},Bn={open:{colour:"#4f6ef7"},progress:{colour:"#f59e0b"},review:{colour:"#8b5cf6"},resolved:{colour:"#10b981"}},_=Object.fromEntries(Object.keys(f).map(e=>[e,Ln(e)])),Yn=Object.entries(Bn).map(([e,n])=>` ${f[`status${e[0].toUpperCase()}${e.slice(1)}`]}:${n.colour};`).join(`
2
+ `);`${_.font}${_.fg}${f.font}${f.accent}${f.bg}${f.fg}${f.muted}${f.border}${f.radius}${f.shadow}${f.z}${f.motion}${f.surface}${_.fg}${_.bg}${f.sunken}${_.fg}${_.bg}${f.hover}${_.fg}${_.bg}${f.onAccent}${f.focus}${_.accent}${_.fg}${f.disabled}${_.muted}${_.bg}${Yn}${f.anchorOrphan}${Rn}${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 Kn={composer:8},rn=new WeakMap;function sn(e,n,t){let o=rn.get(e);if(o||rn.set(e,o=new Set),o.has(n))return;o.add(n);try{const c=new CSSStyleSheet;c.replaceSync(t),e.adoptedStyleSheets=[...e.adoptedStyleSheets,c];return}catch{}const r=(e.ownerDocument??document).createElement("style");r.setAttribute(`data-snag-${n}`,""),r.textContent=t,e.appendChild(r)}const Gn=` .snag-input,.snag-text{width:100%;box-sizing:border-box;background:${_.surface};color:inherit;border:1px solid ${_.border};border-radius:${_.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 ${_.focus};outline-offset:1px;border-color:transparent}.snag-input--bad{border-color:${_.anchorOrphan}}.snag-note{margin:-2px 0 0;color:${_.anchorOrphan};font-size:11px;line-height:1.35}.snag-note.snag-dim{color:${_.muted}}.snag-actions{display:flex;justify-content:flex-end;gap:6px}.snag-actions button{appearance:none;border:0;border-radius:calc(${_.radius} - 1px);padding:7px 13px;font:inherit;cursor:pointer;min-height:32px;transition:background ${_.motion}}.snag-cancel{background:transparent;color:${_.muted}}.snag-armed{color:${_.anchorOrphan};font-weight:600}.snag-cancel:hover{background:${_.hover};color:inherit}.snag-send{background:${_.accent};color:${_.onAccent};font-weight:600}.snag-send:disabled{opacity:.45;cursor:not-allowed}.snag-actions button:focus-visible{outline:2px solid ${_.focus};outline-offset:2px}`;function Vn(e,n,t){const[o,s]=U(!1);return be(()=>{if(!o)return;const r=setTimeout(()=>s(!1),3e3);return()=>clearTimeout(r)},[o]),{armed:o,press(){if(o||n&&!n()){s(!1),e();return}s(!0),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}"},Xn={"disclosure.title":"Before your first comment","disclosure.always":"Each comment carries the page address, viewport size and browser make.","disclosure.crumbs.on":"Recent console messages and network results ride along, recognisable secrets redacted first.","disclosure.crumbs.off":"Console and network capture is off here.","disclosure.screenshot.off":"Screenshots are off for this project.","disclosure.screenshot.on":"{product} never reads what you type. Screenshots are pictures of the page, so anything visible on screen is in the picture \u2014 mark sensitive regions with {maskAttr} and they are blurred before the screenshot leaves your browser.","disclosure.retention":"Everything stays in this browser until someone exports it \u2014 the privacy notes list what can still leak.","disclosure.retention.server":"Your comment, the page address and the details above are sent to {host} when you post \u2014 the privacy notes list what can still leak.","disclosure.ack":"Got it","composer.aria":"New comment","composer.parent":"Pin the parent","composer.child":"Pin the first child","composer.shot":"Add a screenshot","composer.name":"Your name","composer.email":"Email, so we can reply","composer.email.bad":"Check the address \u2014 or leave it blank.","composer.signin":"Studio member? Sign in","composer.signin.blocked":"Allow pop-ups for this page to sign in.","composer.member":"Commenting as {name}","composer.signout":"Not you? Sign out","composer.round.closed":"This round is closed \u2014 your comment goes to {round}.","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?"},Qn={...qn,...Jn,...Xn},g=Wn(Qn),Zn=`${An}session`;function et(e,n,t){if(e.origin!==n||!t||e.source!==t)return!1;const o=e.data;return!!o&&o.type===Zn&&typeof o.session?.sessionToken=="string"&&typeof o.session.reviewer?.name=="string"}function nt(e,n,t,o){const s=new URLSearchParams({project:n,origin:t});return o&&s.set("env",o),`${new URL(e).origin}/widget-signin?${s}`}function tt(e,n,t){const o=new URL(e).origin,s=window.open(nt(e,n,location.origin,t),`${En}-signin`,"popup,width=480,height=600");return s?new Promise(r=>{let c=0;const l=u=>{removeEventListener("message",d),clearInterval(a),r(u)},d=u=>{et(u,o,s)&&l(u.data.session)};addEventListener("message",d);const a=setInterval(()=>{s.closed&&++c>1&&l(null)},400)}):Promise.resolve("blocked")}const xe=1e4,ot=9e3,rt=e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim());let an=!1;function st(){if(an)return!0;try{return localStorage.getItem(nn)==="1"}catch{return!1}}function it({at:e,label:n,onSend:t,onCancel:o,onRetarget:s,onShotOptIn:r,onDraft:c,initialBody:l,initialName:d,initialEmail:a,crumbsOn:u,quote:y,roundNote:i,shotsOn:p,serverHost:x,studio:w}){const S=Un(),[$,v]=U(S.name||(d??"")),[E,N]=U(w?.member??null),[H,L]=U(!1),G=()=>{w&&(L(!1),tt(w.host,w.uid,w.env).then(h=>{if(h==="blocked")return L(!0);h&&(w.adopt(h),N(h.reviewer.name),V.current?.focus())}))},[P,F]=U(S.email??a??""),[k,R]=U(l??""),V=K(null),$e=K(null),le=K(null),[ke]=U(!S.name),[M,cn]=U(st),we=K(null),ln=()=>{an=!0;try{localStorage.setItem(nn,"1")}catch{}cn(!0)},W=window.matchMedia?.("(pointer: coarse)").matches??!1,_n=K(performance.now()).current;be(()=>{if(W)return;const h=le.current,A=h?.getBoundingClientRect();if(h&&A&&(A.bottom>innerHeight-8&&(h.style.top=`${Math.max(8,innerHeight-A.height-8)}px`),A.right>innerWidth-8&&(h.style.left=`${Math.max(8,innerWidth-A.width-8)}px`)),!M){we.current?.focus();return}(ke&&!E?$e:V).current?.focus()},[M]),be(()=>{const h=le.current;if(h)return zn(h)},[]);const j=P.trim().length>0&&!rt(P),Se=k.trim().length>0&&(!!E||$.trim().length>0&&!j);function Ce(){if(!Se)return;if(E)return t(k.trim(),E);const h={name:$.trim(),...P.trim()?{email:P.trim()}:{}};On(h),t(k.trim(),h.name,h.email)}const{armed:J,press:X}=Vn(o,()=>k.trim().length>0,()=>V.current?.focus()),un=h=>{R(h),c?.(h,$,P)},Te=300,dn=Math.min(Math.max(8,e.x+14),innerWidth-Te-8),pn=Math.min(Math.max(8,e.y+14),innerHeight-198);return m(z,{children:[W&&m("div",{class:"snag-scrim","aria-hidden":"true",onClick:()=>{performance.now()-_n>400&&X()}}),m("div",{ref:le,class:"snag-composer",role:"dialog","aria-label":g("composer.aria"),style:{left:`${dn}px`,top:`${pn}px`,width:`${Te}px`},onKeyDown:h=>{h.key==="Escape"&&(h.stopPropagation(),X()),h.key==="Enter"&&(h.metaKey||h.ctrlKey)&&(h.preventDefault(),Ce())},children:[W&&m("div",{class:"snag-grab","aria-hidden":"true",onPointerDown:h=>{const A=h.clientY,q=h.currentTarget;try{q.setPointerCapture(h.pointerId)}catch{}q.onpointermove=fn=>{fn.clientY-A>56&&(q.onpointermove=null,X())},q.onpointerup=()=>q.onpointermove=null}}),m("div",{class:"snag-head",children:[W&&s&&M&&m("span",{class:"snag-step",children:[m("button",{type:"button","aria-label":g("composer.parent"),onClick:()=>s("up"),children:"\u25B2"}),m("button",{type:"button","aria-label":g("composer.child"),onClick:()=>s("down"),children:"\u25BC"})]}),m("p",{class:"snag-target",title:n,children:n}),m("button",{type:"button",class:`snag-dismiss${J?" snag-armed":""}`,"aria-label":g(J?"composer.discard.sure":"action.cancel"),title:g(J?"composer.discard.sure":"action.cancel"),onClick:X,children:J?g("action.discard"):"\u2715"})]}),!M&&m("div",{class:"snag-disclose",children:[m("p",{class:"snag-disclose-title",children:g("disclosure.title")}),m("p",{children:g("disclosure.always")}),m("p",{children:g(u?"disclosure.crumbs.on":"disclosure.crumbs.off")}),m("p",{children:p?g("disclosure.screenshot.on",{maskAttr:Nn("mask")}):g("disclosure.screenshot.off")}),m("p",{children:x?g("disclosure.retention.server",{host:x}):g("disclosure.retention")}),m("div",{class:"snag-actions",children:m("button",{type:"button",ref:we,class:"snag-send snag-primary",onClick:ln,children:g("disclosure.ack")})})]}),M&&E&&m("p",{class:"snag-member",children:[g("composer.member",{name:E})," ",m("button",{type:"button",class:"snag-link",onClick:()=>{w?.signOut(),N(null)},children:g("composer.signout")})]}),M&&ke&&!E&&m(z,{children:[m("input",{ref:$e,class:"snag-input",type:"text",placeholder:g("composer.name"),"aria-label":g("composer.name"),value:$,onInput:h=>{const A=h.target.value;v(A),k.trim()&&c?.(k,A,P)}}),m("input",{class:`snag-input${j?" snag-input--bad":""}`,type:"email",inputMode:"email",autocomplete:"email",placeholder:g("composer.email"),"aria-label":g("composer.email"),"aria-invalid":j?"true":void 0,"aria-describedby":j?"snag-email-note":void 0,value:P,onInput:h=>{const A=h.target.value;F(A),k.trim()&&c?.(k,$,A)}}),j&&m("p",{class:"snag-note",id:"snag-email-note",children:g("composer.email.bad")})]}),M&&w&&!E&&m("p",{class:"snag-member",children:[m("button",{type:"button",class:"snag-link",onClick:G,children:g("composer.signin")}),H&&m("span",{role:"status",children:[" ",g("composer.signin.blocked")]})]}),M&&y&&m("blockquote",{class:"snag-quote",children:y}),M&&i&&m("p",{class:"snag-member",children:g("composer.round.closed",{round:i})}),M&&m("textarea",{ref:V,class:"snag-text",placeholder:g("composer.body.placeholder"),"aria-label":g("composer.body"),maxLength:xe,rows:3,enterkeyhint:"enter",value:k,onInput:h=>{const A=h.target;A.style.height="auto",A.style.height=`${Math.min(A.scrollHeight,128)}px`,un(A.value)}}),M&&k.length>=ot&&m("p",{class:`snag-note${k.length>=xe?"":" snag-dim"}`,"aria-live":"polite",children:g("composer.chars",{n:jn(xe-k.length)})}),M&&W&&r&&m("label",{class:"snag-shotopt",children:[m("input",{type:"checkbox",onChange:h=>r(h.currentTarget.checked)})," ",g("composer.shot")]}),M&&m("div",{class:"snag-actions",children:m("button",{type:"button",class:"snag-send snag-primary",disabled:!Se,onClick:Ce,children:g("action.post")})})]})]})}const at=` .snag-composer{position:fixed;box-sizing:border-box;z-index:${Kn.composer};background:${_.bg};color:${_.fg};border:1px solid ${_.border};border-radius:calc(${_.radius} + 4px);padding:12px;box-shadow:${_.shadow};pointer-events:auto;font:400 13px/1.45 ${_.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:${_.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:${_.muted};font:inherit;font-size:12px;line-height:1;padding:6px;margin:-6px -4px -6px 0;border-radius:calc(${_.radius} - 2px);cursor:pointer}.snag-dismiss:hover{color:${_.fg};background:${_.hover}}.snag-dismiss:focus-visible{outline:2px solid ${_.focus};outline-offset:1px}.snag-dismiss.snag-armed{color:${_.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:${_.fg}}.snag-disclose .snag-disclose-title{font-weight:600;font-size:12px}.snag-disclose p:not(.snag-disclose-title){color:${_.muted}}.snag-member{margin:0;font-size:11px;color:${_.muted}}.snag-link{appearance:none;border:0;background:none;padding:0;font:inherit;color:${_.fg};text-decoration:underline;text-underline-offset:2px;cursor:pointer}.snag-link:focus-visible{outline:2px solid ${_.focus};outline-offset:1px}.snag-quote{margin:0;padding:6px 10px;border-inline-start:3px solid ${_.accent};background:${_.surface};font-size:12px;color:${_.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(${_.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 ${_.border};border-radius:8px;color:${_.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 ${_.focus};outline-offset:3px}}`;function ct(e,n,t){const o=e.ownerDocument??document;sn(e,"form",Gn),sn(e,"composer",at);const s=o.createElement("div");(t??e).appendChild(s);const r=()=>{je(null,s),s.remove()},c=()=>s.querySelector(".snag-text"),l=()=>(c()?.value??"").trim().length>0,d=()=>{const a=s.firstElementChild;a&&(a.classList.remove("snag-pulse"),a.offsetWidth,a.classList.add("snag-pulse"),setTimeout(()=>a.classList.remove("snag-pulse"),600))};return je(m(it,{...n,onSend:(a,u,y)=>{n.onSend(a,u,y),r()},onCancel:()=>{n.onCancel(),r()}}),s),{close:r,hasText:l,pulse:d,setLabel(a){const u=s.querySelector(".snag-target");u&&(u.textContent=a,u.title=a)}}}export{ct as openComposer};