@snagset/server 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- var __snagset_stub__=(function(A){"use strict";const v="Snagset",P="snagset:",g={api:"Snagset",config:"SnagsetConfig",disabled:"__SNAGSET_DISABLED__",assetBase:"__SNAGSET_ASSET_BASE__",collisionFallback:"__snagset__"},N={site:"data-snag-site",host:"data-snag-host",disabled:"data-snag-disabled",env:"data-snag-env",mode:"data-snag-mode",badge:"data-snag-badge",lang:"data-snag-lang",theme:"data-snag-theme",position:"data-snag-position",offset:"data-snag-offset",assetBase:"data-snag-asset-base",branch:"data-snag-branch",build:"data-snag-build",storage:"data-snag-storage",hotkey:"data-snag-hotkey",allowAutomation:"data-snag-allow-automation",screenshots:"data-snag-screenshots",maskSelectors:"data-snag-mask-selectors",nonce:"data-snag-nonce",autoMount:"data-snag-auto-mount"},w=e=>N[e],$=e=>"snag_"+e,I="snag:identity",R={off:"snag_off"},B={runtime:"snag.runtime.js"},E={original:"snagset.original",wrapped:"snagset.wrapped",instance:"snagset.instance"};function F(e){const{config:t}=e;if(e.globals[g.disabled])return{gate:"disabled-global",token:g.disabled,fix:`delete window.${g.disabled}`};if(e.configGlobal?.disabled===!0)return{gate:"disabled-config",token:`${g.config}.disabled`,fix:`set ${g.config}.disabled = false`};if("disabled"in t)return{gate:"disabled-attr",token:w("disabled"),fix:`remove ${w("disabled")} from the script tag`};if(new URLSearchParams(e.search).has($("off")))return{gate:"off-switch",token:$("off"),fix:`remove ?${$("off")} from the URL`};if(e.cookie.split("; ").some(c=>c.startsWith(R.off+"=")))return{gate:"off-switch",token:R.off,fix:`clear the ${R.off} cookie`};if((e.webdriver||"Cypress"in e.globals||U(e.globals.opener))&&!("allowAutomation"in t))return{gate:"automation",token:e.webdriver?"navigator.webdriver":"window.Cypress",fix:`add ${w("allowAutomation")} if this is deliberate`,silent:!0};const o=t.mode??"auto";if(o==="off")return{gate:"mode-off",token:`${w("mode")}="off"`,fix:`set ${w("mode")}="on"`};if(o==="auto"&&t.env==="production"&&!e.inReview)return{gate:"no-review-token",token:`${w("env")}="production"`,fix:`set ${w("mode")}="on" to review production deliberately`,silent:!0};if(e.configGlobal&&"enabled"in e.configGlobal){const c=e.configGlobal.enabled;let i=c===!1;if(typeof c=="function")try{i=c()===!1}catch{i=!1}if(i)return{gate:"config-disabled",token:`${g.config}.enabled`,fix:`set ${g.config}.enabled = true`}}const n=e.configGlobal?.allowedOrigins;return Array.isArray(n)&&!n.includes(e.origin??"")?{gate:"origin-not-allowed",token:`${g.config}.allowedOrigins`,fix:`add ${e.origin??"this origin"} to ${g.config}.allowedOrigins`}:null}function U(e){try{return!!e&&typeof e=="object"&&"Cypress"in e}catch{return!1}}function G(){let e=null;try{e=localStorage.getItem(I)}catch{return{}}if(!e)return{};if(e[0]!=="{")return{name:e};try{const t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function x(e){return G().projects?.[e]?.holderId}const D=Symbol.for(E.original),L=Symbol.for(E.wrapped),k=()=>{};function K(e,t,r){let o;try{o=e[t]}catch{return k}if(typeof o!="function"||o[L])return k;const n=o,c=r(n);let i=!1;const a=function(...s){return i?n.apply(this,s):c.apply(this,s)};try{const s=a;s[L]=!0,s[D]=n,Object.defineProperty(a,"name",{value:n.name,configurable:!0}),Object.defineProperty(a,"length",{value:n.length,configurable:!0})}catch{}try{e[t]=a}catch{return k}return e[t]!==a?k:()=>{let s;try{s=e[t]}catch{s=void 0}if(s===a)try{e[t]=n;return}catch{}i=!0}}function O(e){try{if(typeof e=="string")return e.slice(0,512);if(e==null||typeof e!="object")return typeof e=="function"?`[Function ${e.name??""}]`:String(e);const t=e;if(typeof t.name=="string"&&typeof t.message=="string"||e instanceof Error){const r=`${String(t.name)}: ${String(t.message)}`,o=typeof t.stack=="string"?t.stack.split(`
1
+ (function(){"use strict";const v="Snagset",O="snagset:",g={api:"Snagset",config:"SnagsetConfig",disabled:"__SNAGSET_DISABLED__",assetBase:"__SNAGSET_ASSET_BASE__",collisionFallback:"__snagset__"},M={site:"data-snag-site",host:"data-snag-host",disabled:"data-snag-disabled",env:"data-snag-env",mode:"data-snag-mode",badge:"data-snag-badge",lang:"data-snag-lang",theme:"data-snag-theme",position:"data-snag-position",offset:"data-snag-offset",assetBase:"data-snag-asset-base",branch:"data-snag-branch",build:"data-snag-build",storage:"data-snag-storage",hotkey:"data-snag-hotkey",allowAutomation:"data-snag-allow-automation",screenshots:"data-snag-screenshots",maskSelectors:"data-snag-mask-selectors",nonce:"data-snag-nonce",autoMount:"data-snag-auto-mount"},y=e=>M[e],$=e=>"snag_"+e,N="snag:identity",_={off:"snag_off"},T={runtime:"snag.runtime.js"},R={original:"snagset.original",wrapped:"snagset.wrapped",instance:"snagset.instance"};function I(e){const{config:t}=e;if(e.globals[g.disabled])return{gate:"disabled-global",token:g.disabled,fix:`delete window.${g.disabled}`};if(e.configGlobal?.disabled===!0)return{gate:"disabled-config",token:`${g.config}.disabled`,fix:`set ${g.config}.disabled = false`};if("disabled"in t)return{gate:"disabled-attr",token:y("disabled"),fix:`remove ${y("disabled")} from the script tag`};if(new URLSearchParams(e.search).has($("off")))return{gate:"off-switch",token:$("off"),fix:`remove ?${$("off")} from the URL`};if(e.cookie.split("; ").some(c=>c.startsWith(_.off+"=")))return{gate:"off-switch",token:_.off,fix:`clear the ${_.off} cookie`};if((e.webdriver||"Cypress"in e.globals||B(e.globals.opener))&&!("allowAutomation"in t))return{gate:"automation",token:e.webdriver?"navigator.webdriver":"window.Cypress",fix:`add ${y("allowAutomation")} if this is deliberate`,silent:!0};const o=t.mode??"auto";if(o==="off")return{gate:"mode-off",token:`${y("mode")}="off"`,fix:`set ${y("mode")}="on"`};if(o==="auto"&&t.env==="production"&&!e.inReview)return{gate:"no-review-token",token:`${y("env")}="production"`,fix:`set ${y("mode")}="on" to review production deliberately`,silent:!0};if(e.configGlobal&&"enabled"in e.configGlobal){const c=e.configGlobal.enabled;let i=c===!1;if(typeof c=="function")try{i=c()===!1}catch{i=!1}if(i)return{gate:"config-disabled",token:`${g.config}.enabled`,fix:`set ${g.config}.enabled = true`}}const n=e.configGlobal?.allowedOrigins;return Array.isArray(n)&&!n.includes(e.origin??"")?{gate:"origin-not-allowed",token:`${g.config}.allowedOrigins`,fix:`add ${e.origin??"this origin"} to ${g.config}.allowedOrigins`}:null}function B(e){try{return!!e&&typeof e=="object"&&"Cypress"in e}catch{return!1}}function F(e,t){if(!(e.host||!t))try{e.host=new URL(t,location.href).origin}catch{}}function U(){let e=null;try{e=localStorage.getItem(N)}catch{return{}}if(!e)return{};if(e[0]!=="{")return{name:e};try{const t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function x(e){return U().projects?.[e]?.holderId}const G=Symbol.for(R.original),L=Symbol.for(R.wrapped),k=()=>{};function D(e,t,r){let o;try{o=e[t]}catch{return k}if(typeof o!="function"||o[L])return k;const n=o,c=r(n);let i=!1;const a=function(...s){return i?n.apply(this,s):c.apply(this,s)};try{const s=a;s[L]=!0,s[G]=n,Object.defineProperty(a,"name",{value:n.name,configurable:!0}),Object.defineProperty(a,"length",{value:n.length,configurable:!0})}catch{}try{e[t]=a}catch{return k}return e[t]!==a?k:()=>{let s;try{s=e[t]}catch{s=void 0}if(s===a)try{e[t]=n;return}catch{}i=!0}}function E(e){try{if(typeof e=="string")return e.slice(0,512);if(e==null||typeof e!="object")return typeof e=="function"?`[Function ${e.name??""}]`:String(e);const t=e;if(typeof t.name=="string"&&typeof t.message=="string"||e instanceof Error){const r=`${String(t.name)}: ${String(t.message)}`,o=typeof t.stack=="string"?t.stack.split(`
2
2
  `).slice(0,10).join(`
3
3
  `):"";return(o?`${r}
4
- ${o}`:r).slice(0,1024)}return t.nodeType!==void 0?typeof t.tagName=="string"?`<${t.tagName.toLowerCase()}>`:"[Node]":Array.isArray(e)?`[Array(${e.length})]`:`[${Object.prototype.toString.call(e).slice(8,-1)}]`}catch{return"[unreadable]"}}function Y(e,t,r){const o=[];let n=0,c=0,i=0,a=0,s=null,d=0;const m=(f,p,u)=>{if(!(d>=3))try{const y=Date.now();if(y-c>250&&(a&&(o.push([y,"system","info",`${a} records suppressed (flood guard)`]),a=0),c=y,i=0),++i>50){a++;return}const h=[y,f,p,u];if(s){s(h);return}for(o.push(h);o.length>100;)o.shift(),n++;d=0}catch{d++}};m("navigation","info",e.location.href),e.addEventListener("error",f=>{try{const p=f.target;if(p&&p!==e&&typeof p.tagName=="string"){m("error","error",`Failed to load <${p.tagName.toLowerCase()}> ${p.src??p.href??""}`);return}const u=f,y=`${u.message??"Script error"} (${u.filename??""}:${u.lineno??0}:${u.colno??0})`,h=u.error?`
5
- ${O(u.error)}`:"";m("error","error",`${y}${h}`)}catch{d++}},{capture:!0,signal:r}),e.addEventListener("unhandledrejection",f=>{try{m("error","error",`Unhandled rejection: ${O(f.reason)}`)}catch{d++}},{signal:r});const l=[];if(t.early){let f=!1;for(const p of["error","warn"])l.push(K(e.console,p,u=>function(...y){const h=u.apply(this,y);return f||(f=!0,m("console",p,y.map(O).join(" ").slice(0,4096)),f=!1),h}))}const b=()=>{for(const f of l)f();l.length=0,s=null,o.length=0};return r.addEventListener("abort",b,{once:!0}),{drain(f){const u={records:o.slice(),dropped:n};return o.length=0,n=0,s=f,u},destroy:b}}const S="0.0.0",_=q();function q(){try{const e=location.hash.slice(1);if(!e.includes($("k")))return;const t=new URLSearchParams(e),r=t.get($("k"))??void 0;if(!r)return;t.delete($("k"));const o=t.toString(),n=location.pathname+location.search+(o?`#${o}`:"");return history.replaceState(history.state,"",n),r}catch{return}}const W=["site","host","disabled","env","mode","hotkey","allowAutomation","assetBase","theme","autoMount","storage"];function H(e){const t=e[g.config];return t&&typeof t=="object"?t:void 0}function V(e,t){const r={};for(const o of W){const n=t?.[o];(typeof n=="string"||typeof n=="number")&&(r[o]=String(n));const c=e?.getAttribute(w(o));c!=null&&(r[o]=c)}return r}function J(e,t){const r=new URL(e,t);return r.searchParams.set("cv",S),r.href}function j(e,t){if(!(e.host||!t))try{e.host=new URL(t,location.href).origin}catch{}}function X(e,t){const r=e.assetBase??window[g.assetBase];if(r)return new URL(r,location.href).href.replace(/\/?$/,"/");const o=t?.src;return o?new URL(".",o).href:new URL(".",location.href).href}function C(){const e=new Map,t=(r,o)=>void e.get(r)?.delete(o);return{on(r,o){let n=e.get(r);return n||e.set(r,n=new Set),n.add(o),()=>t(r,o)},off:t,emit(r,o){const n=e.get(r);if(n)for(const c of[...n])try{c(o)}catch(i){console.error(`[${v}] listener for "${r}" threw`,i)}document.dispatchEvent(new CustomEvent(`${P}${r}`,{detail:o,bubbles:!1,composed:!1}))}}}function z(e,t,r){let o=!1;const n=()=>{o||(o=!0,console.info(`[${v}] not activated: ${r}`))},c=C(),i={version:S,config:e,assetBase:t,state:"inert",pointerMode:"browse",activated:!1,init:()=>(n(),Promise.resolve(i)),activate:()=>(n(),Promise.resolve(null)),deactivate:()=>{},destroy:()=>{},setMode:n,setRoute:n,open:()=>(n(),Promise.resolve({ok:!1,reason:"inert"})),resync:()=>{},close:()=>{},on:c.on,off:c.off};return i}function M(e){const t=window.requestIdleCallback;typeof t=="function"?t(e,{timeout:2e3}):setTimeout(e,1)}function T(e){if(document.readyState==="complete"){M(e);return}window.addEventListener("load",()=>requestAnimationFrame(()=>requestAnimationFrame(()=>M(e))),{once:!0})}function Q(e,t,r){t.hotkey!=="off"&&document.addEventListener("keydown",o=>{if(!(!o.altKey||o.ctrlKey||o.metaKey)&&o.code==="KeyC"){if(o.preventDefault(),e.state==="active"){e.setMode(e.pointerMode==="add"?"comments":"add");return}e.activate().catch(()=>{})}},{capture:!0,signal:r})}function Z(e,t,r,o){let n=null,c,i="dormant",a=null,s=0;const d=C(),m={version:S,config:e,assetBase:t,get state(){return i},get pointerMode(){return i==="active"&&a?a.getState():"browse"},activated:!1,init(l){return l&&Object.assign(e,l),n?n.then(()=>m,()=>m):Promise.resolve(m)},activate(l){if(i==="destroyed")return Promise.resolve(null);if(a&&i!=="active"&&(i="active",d.emit("activated",{mode:a.getState()})),!n){const b=J(B.runtime,t);n=import(b).then(f=>i==="destroyed"?null:(m.activated=!0,i="active",a=f.mount(void 0,{assetBase:t,config:e,emit:d.emit,...o?{early:o}:{},..._?{reviewToken:_}:{}}),c!==void 0&&a.setRoute(c),d.emit("ready",{version:S,state:i}),d.emit("activated",{mode:a.getState()}),a)).catch(f=>{throw n=null,console.error(`[${v}] runtime failed to load from ${b}`,f),d.emit("error",{code:"runtime-load-failed",message:b,cause:f}),f})}return l?.mode?n.then(b=>(a?.setState(l.mode),b)):n},deactivate(){i!=="active"||!a||(a.closePanel(),a.setState("browse"),i="dormant",d.emit("deactivated",{}))},destroy(){if(i!=="destroyed"){r.abort(),s&&cancelAnimationFrame(s),s=0;try{a?.destroy()}catch(l){console.error(`[${v}] destroy failed`,l)}a=null,n=null,i="destroyed",m.activated=!1,d.emit("destroyed",{})}},setMode(l){if(i!=="destroyed"){if(i==="active"&&a){a.setState(l);return}m.activate({mode:l}).catch(()=>{})}},setRoute(l){c=l,a?.setRoute(l)},async open(l){return i==="destroyed"?{ok:!1,reason:"inert"}:await m.activate()?a.open(l):{ok:!1,reason:"inert"}},resync(){i!=="active"||s||(s=requestAnimationFrame(()=>{s=0,a?.refresh()}))},close(){a?.closePanel()},on:d.on,off:d.off};return Object.assign(m,{signal:r.signal})}const ee=`${P}stub-init`;function te(){if(typeof document>"u"||typeof window>"u")return;const e=performance.now(),t=document.currentScript,r=window,o=H(r),n=V(t,o),c=X(n,t);j(n,t?.src);let i="";try{i=document.cookie}catch{}const a=n.site?!!x(n.site):!1,s=F({config:n,search:location.search,cookie:i,webdriver:navigator.webdriver,globals:r,inReview:!!_||a,...o?{configGlobal:o}:{},origin:location.origin}),d=Symbol.for(E.instance),m=r[g.api];if(m?.[d]){(m.__duplicates??=[]).push({version:S,src:t?.src??""}),console.warn(`[${v}] a second copy of the script is on this page and was ignored; the first one is running. See window.${g.api}.__duplicates.`);return}const l=m===void 0?g.api:g.collisionFallback;if(l===g.collisionFallback&&console.warn(`[${v}] window.${g.api} is taken; installing at window.${g.collisionFallback}.`),s){const h=z(n,c,s.gate);h[d]=!0,r[l]=h,s.silent||console.info(`[${v}] not activated: ${s.gate} \u2014 ${s.fix}`);return}const b=new AbortController,f=o?.breadcrumbs,p=f===!1?void 0:Y(window,{early:f?.early!==!1},b.signal),u=Z(n,c,b,p);u[d]=!0,r[l]=u,ne(e),Q(u,n,u.signal);const y=new URLSearchParams(location.search).has($("t"));(n.mode==="on"||y||_||a)&&n.autoMount!=="false"?T(()=>void u.activate().catch(()=>{})):n.site&&n.host&&n.mode!=="off"&&n.autoMount!=="false"&&fetch(`${n.host.replace(/\/+$/,"")}/api/v1/projects/${n.site}/config`).then(h=>h.ok?h.json():null).then(h=>{h?.writeMode==="open"&&h.writable!==!1&&T(()=>void u.activate().catch(()=>{}))}).catch(()=>{})}function ne(e){try{performance.measure(ee,{start:e})}catch{}}return te(),A.inferHost=j,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),A})({});
4
+ ${o}`:r).slice(0,1024)}return t.nodeType!==void 0?typeof t.tagName=="string"?`<${t.tagName.toLowerCase()}>`:"[Node]":Array.isArray(e)?`[Array(${e.length})]`:`[${Object.prototype.toString.call(e).slice(8,-1)}]`}catch{return"[unreadable]"}}function K(e,t,r){const o=[];let n=0,c=0,i=0,a=0,s=null,d=0;const m=(f,p,u)=>{if(!(d>=3))try{const w=Date.now();if(w-c>250&&(a&&(o.push([w,"system","info",`${a} records suppressed (flood guard)`]),a=0),c=w,i=0),++i>50){a++;return}const h=[w,f,p,u];if(s){s(h);return}for(o.push(h);o.length>100;)o.shift(),n++;d=0}catch{d++}};m("navigation","info",e.location.href),e.addEventListener("error",f=>{try{const p=f.target;if(p&&p!==e&&typeof p.tagName=="string"){m("error","error",`Failed to load <${p.tagName.toLowerCase()}> ${p.src??p.href??""}`);return}const u=f,w=`${u.message??"Script error"} (${u.filename??""}:${u.lineno??0}:${u.colno??0})`,h=u.error?`
5
+ ${E(u.error)}`:"";m("error","error",`${w}${h}`)}catch{d++}},{capture:!0,signal:r}),e.addEventListener("unhandledrejection",f=>{try{m("error","error",`Unhandled rejection: ${E(f.reason)}`)}catch{d++}},{signal:r});const l=[];if(t.early){let f=!1;for(const p of["error","warn"])l.push(D(e.console,p,u=>function(...w){const h=u.apply(this,w);return f||(f=!0,m("console",p,w.map(E).join(" ").slice(0,4096)),f=!1),h}))}const b=()=>{for(const f of l)f();l.length=0,s=null,o.length=0};return r.addEventListener("abort",b,{once:!0}),{drain(f){const u={records:o.slice(),dropped:n};return o.length=0,n=0,s=f,u},destroy:b}}const S="0.0.0",A=Y();function Y(){try{const e=location.hash.slice(1);if(!e.includes($("k")))return;const t=new URLSearchParams(e),r=t.get($("k"))??void 0;if(!r)return;t.delete($("k"));const o=t.toString(),n=location.pathname+location.search+(o?`#${o}`:"");return history.replaceState(history.state,"",n),r}catch{return}}const q=["site","host","disabled","env","mode","hotkey","allowAutomation","assetBase","theme","autoMount","storage"];function W(e){const t=e[g.config];return t&&typeof t=="object"?t:void 0}function V(e,t){const r={};for(const o of q){const n=t?.[o];(typeof n=="string"||typeof n=="number")&&(r[o]=String(n));const c=e?.getAttribute(y(o));c!=null&&(r[o]=c)}return r}function H(e,t){const r=new URL(e,t);return r.searchParams.set("cv",S),r.href}function J(e,t){const r=e.assetBase??window[g.assetBase];if(r)return new URL(r,location.href).href.replace(/\/?$/,"/");const o=t?.src;return o?new URL(".",o).href:new URL(".",location.href).href}function P(){const e=new Map,t=(r,o)=>void e.get(r)?.delete(o);return{on(r,o){let n=e.get(r);return n||e.set(r,n=new Set),n.add(o),()=>t(r,o)},off:t,emit(r,o){const n=e.get(r);if(n)for(const c of[...n])try{c(o)}catch(i){console.error(`[${v}] listener for "${r}" threw`,i)}document.dispatchEvent(new CustomEvent(`${O}${r}`,{detail:o,bubbles:!1,composed:!1}))}}}function X(e,t,r){let o=!1;const n=()=>{o||(o=!0,console.info(`[${v}] not activated: ${r}`))},c=P(),i={version:S,config:e,assetBase:t,state:"inert",pointerMode:"browse",activated:!1,init:()=>(n(),Promise.resolve(i)),activate:()=>(n(),Promise.resolve(null)),deactivate:()=>{},destroy:()=>{},setMode:n,setRoute:n,open:()=>(n(),Promise.resolve({ok:!1,reason:"inert"})),resync:()=>{},close:()=>{},on:c.on,off:c.off};return i}function C(e){const t=window.requestIdleCallback;typeof t=="function"?t(e,{timeout:2e3}):setTimeout(e,1)}function j(e){if(document.readyState==="complete"){C(e);return}window.addEventListener("load",()=>requestAnimationFrame(()=>requestAnimationFrame(()=>C(e))),{once:!0})}function z(e,t,r){t.hotkey!=="off"&&document.addEventListener("keydown",o=>{if(!(!o.altKey||o.ctrlKey||o.metaKey)&&o.code==="KeyC"){if(o.preventDefault(),e.state==="active"){e.setMode(e.pointerMode==="add"?"comments":"add");return}e.activate().catch(()=>{})}},{capture:!0,signal:r})}function Q(e,t,r,o){let n=null,c,i="dormant",a=null,s=0;const d=P(),m={version:S,config:e,assetBase:t,get state(){return i},get pointerMode(){return i==="active"&&a?a.getState():"browse"},activated:!1,init(l){return l&&Object.assign(e,l),n?n.then(()=>m,()=>m):Promise.resolve(m)},activate(l){if(i==="destroyed")return Promise.resolve(null);if(a&&i!=="active"&&(i="active",d.emit("activated",{mode:a.getState()})),!n){const b=H(T.runtime,t);n=import(b).then(f=>i==="destroyed"?null:(m.activated=!0,i="active",a=f.mount(void 0,{assetBase:t,config:e,emit:d.emit,...o?{early:o}:{},...A?{reviewToken:A}:{}}),c!==void 0&&a.setRoute(c),d.emit("ready",{version:S,state:i}),d.emit("activated",{mode:a.getState()}),a)).catch(f=>{throw n=null,console.error(`[${v}] runtime failed to load from ${b}`,f),d.emit("error",{code:"runtime-load-failed",message:b,cause:f}),f})}return l?.mode?n.then(b=>(a?.setState(l.mode),b)):n},deactivate(){i!=="active"||!a||(a.closePanel(),a.setState("browse"),i="dormant",d.emit("deactivated",{}))},destroy(){if(i!=="destroyed"){r.abort(),s&&cancelAnimationFrame(s),s=0;try{a?.destroy()}catch(l){console.error(`[${v}] destroy failed`,l)}a=null,n=null,i="destroyed",m.activated=!1,d.emit("destroyed",{})}},setMode(l){if(i!=="destroyed"){if(i==="active"&&a){a.setState(l);return}m.activate({mode:l}).catch(()=>{})}},setRoute(l){c=l,a?.setRoute(l)},async open(l){return i==="destroyed"?{ok:!1,reason:"inert"}:await m.activate()?a.open(l):{ok:!1,reason:"inert"}},resync(){i!=="active"||s||(s=requestAnimationFrame(()=>{s=0,a?.refresh()}))},close(){a?.closePanel()},on:d.on,off:d.off};return Object.assign(m,{signal:r.signal})}const Z=`${O}stub-init`;function ee(){if(typeof document>"u"||typeof window>"u")return;const e=performance.now(),t=document.currentScript,r=window,o=W(r),n=V(t,o),c=J(n,t);F(n,t?.src);let i="";try{i=document.cookie}catch{}const a=n.site?!!x(n.site):!1,s=I({config:n,search:location.search,cookie:i,webdriver:navigator.webdriver,globals:r,inReview:!!A||a,...o?{configGlobal:o}:{},origin:location.origin}),d=Symbol.for(R.instance),m=r[g.api];if(m?.[d]){(m.__duplicates??=[]).push({version:S,src:t?.src??""}),console.warn(`[${v}] a second copy of the script is on this page and was ignored; the first one is running. See window.${g.api}.__duplicates.`);return}const l=m===void 0?g.api:g.collisionFallback;if(l===g.collisionFallback&&console.warn(`[${v}] window.${g.api} is taken; installing at window.${g.collisionFallback}.`),s){const h=X(n,c,s.gate);h[d]=!0,r[l]=h,s.silent||console.info(`[${v}] not activated: ${s.gate} \u2014 ${s.fix}`);return}const b=new AbortController,f=o?.breadcrumbs,p=f===!1?void 0:K(window,{early:f?.early!==!1},b.signal),u=Q(n,c,b,p);u[d]=!0,r[l]=u,te(e),z(u,n,u.signal);const w=new URLSearchParams(location.search).has($("t"));(n.mode==="on"||w||A||a)&&n.autoMount!=="false"?j(()=>void u.activate().catch(()=>{})):n.site&&n.host&&n.mode!=="off"&&n.autoMount!=="false"&&fetch(`${n.host.replace(/\/+$/,"")}/api/v1/projects/${n.site}/config`).then(h=>h.ok?h.json():null).then(h=>{h?.writeMode==="open"&&h.writable!==!1&&j(()=>void u.activate().catch(()=>{}))}).catch(()=>{})}function te(e){try{performance.measure(Z,{start:e})}catch{}}ee()})();
@@ -1,2 +1,2 @@
1
- var J,v,$e,D,we,ke,Se,ie,X,B,Ce,ce,le,_e,Q={},Z=[],it=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,ee=Array.isArray;function N(e,t){for(var n in t)e[n]=t[n];return e}function ue(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function ct(e,t,n){var r,a,o,c={};for(o in t)o=="key"?r=t[o]:o=="ref"?a=t[o]:c[o]=t[o];if(arguments.length>2&&(c.children=arguments.length>3?J.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(o in e.defaultProps)c[o]===void 0&&(c[o]=e.defaultProps[o]);return te(e,c,r,a,null)}function te(e,t,n,r,a){var o={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++$e,__i:-1,__u:0};return a==null&&v.vnode!=null&&v.vnode(o),o}function z(e){return e.children}function ne(e,t){this.props=e,this.context=t}function F(e,t){if(t==null)return e.__?F(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?F(e):null}function lt(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,r=[],a=[],o=N({},t);o.__v=t.__v+1,v.vnode&&v.vnode(o),de(e.__P,o,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,r,n??F(t),!!(32&t.__u),a),o.__v=t.__v,o.__.__k[o.__i]=o,Le(r,o,a),t.__e=t.__=null,o.__e!=n&&Te(o)}}function Te(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),Te(e)}function Ee(e){(!e.__d&&(e.__d=!0)&&D.push(e)&&!oe.__r++||we!=v.debounceRendering)&&((we=v.debounceRendering)||ke)(oe)}function oe(){try{for(var e,t=1;D.length;)D.length>t&&D.sort(Se),e=D.shift(),t=D.length,lt(e)}finally{D.length=oe.__r=0}}function Ae(e,t,n,r,a,o,c,l,p,i,d){var b,s,_,$,T,C,y=r&&r.__k||Z,m=t.length;for(p=_t(n,t,y,p,m),b=0;b<m;b++)(_=n.__k[b])!=null&&(s=_.__i!=-1&&y[_.__i]||Q,_.__i=b,C=de(e,_,s,a,o,c,l,p,i,d),$=_.__e,_.ref&&s.ref!=_.ref&&(s.ref&&pe(s.ref,null,_),d.push(_.ref,_.__c||$,_)),T==null&&$!=null&&(T=$),4&_.__u?(p=He(_,p,e),s.__e&&(s.__e=null)):typeof _.type=="function"&&C!==void 0?p=C:$&&(p=$.nextSibling),_.__u&=-7);return n.__e=T,p}function _t(e,t,n,r,a){var o,c,l,p,i,d=n.length,b=d,s=0;for(e.__k=new Array(a),o=0;o<a;o++)(c=t[o])!=null&&typeof c!="boolean"&&typeof c!="function"?(typeof c=="string"||typeof c=="number"||typeof c=="bigint"||c.constructor==String?c=e.__k[o]=te(null,c,null,null,null):ee(c)?c=e.__k[o]=te(z,{children:c},null,null,null):c.constructor===void 0&&c.__b>0?c=e.__k[o]=te(c.type,c.props,c.key,c.ref?c.ref:null,c.__v):e.__k[o]=c,p=o+s,c.__=e,c.__b=e.__b+1,l=null,(i=c.__i=ut(c,n,p,b))!=-1&&(b--,(l=n[i])&&(l.__u|=2)),l==null||l.__v==null?(i==-1&&(a>d?s--:a<d&&s++),typeof c.type!="function"&&(c.__u|=4)):i!=p&&(i==p-1?s--:i==p+1?s++:(i>p?s--:s++,c.__u|=4))):e.__k[o]=null;if(b)for(o=0;o<d;o++)(l=n[o])!=null&&(2&l.__u)==0&&(l.__e==r&&(r=F(l)),Ie(l,l));return r}function He(e,t,n){var r,a;if(typeof e.type=="function"){for(r=e.__k,a=0;r&&a<r.length;a++)r[a]&&(r[a].__=e,t=He(r[a],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=F(e)),t=n.insertBefore(e.__e,t||null));do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function ut(e,t,n,r){var a,o,c,l=e.key,p=e.type,i=t[n],d=i!=null&&(2&i.__u)==0;if(i===null&&l==null||d&&l==i.key&&p==i.type)return n;if(r>(d?1:0)){for(a=n-1,o=n+1;a>=0||o<t.length;)if((i=t[c=a>=0?a--:o++])!=null&&(2&i.__u)==0&&l==i.key&&p==i.type)return c}return-1}function Me(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||it.test(t)?n:n+"px"}function re(e,t,n,r,a){var o,c;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof r=="string"&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||Me(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||Me(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")o=t!=(t=t.replace(Ce,"$1")),c=t.toLowerCase(),t=c in e||t=="onFocusOut"||t=="onFocusIn"?c.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+o]=n,n?r?n[B]=r[B]:(n[B]=ce,e.addEventListener(t,o?_e:le,o)):e.removeEventListener(t,o?_e:le,o);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Pe(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[X]==null)t[X]=ce++;else if(t[X]<n[B])return;return n(v.event?v.event(t):t)}}}function de(e,t,n,r,a,o,c,l,p,i){var d,b,s,_,$,T,C,y,m,w,I,M,L,O,R,A,H=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(p=!!(32&n.__u),o=[l=t.__e=n.__e]),(d=v.__b)&&d(t);e:if(typeof H=="function"){b=c.length;try{if(m=t.props,w=H.prototype&&H.prototype.render,I=(d=H.contextType)&&r[d.__c],M=d?I?I.props.value:d.__:r,n.__c?y=(s=t.__c=n.__c).__=s.__E:(w?t.__c=s=new H(m,M):(t.__c=s=new ne(m,M),s.constructor=H,s.render=pt),I&&I.sub(s),s.state||(s.state={}),s.__n=r,_=s.__d=!0,s.__h=[],s._sb=[]),w&&s.__s==null&&(s.__s=s.state),w&&H.getDerivedStateFromProps!=null&&(s.__s==s.state&&(s.__s=N({},s.__s)),N(s.__s,H.getDerivedStateFromProps(m,s.__s))),$=s.props,T=s.state,s.__v=t,_)w&&H.getDerivedStateFromProps==null&&s.componentWillMount!=null&&s.componentWillMount(),w&&s.componentDidMount!=null&&s.__h.push(s.componentDidMount);else{if(w&&H.getDerivedStateFromProps==null&&m!==$&&s.componentWillReceiveProps!=null&&s.componentWillReceiveProps(m,M),t.__v==n.__v||!s.__e&&s.shouldComponentUpdate!=null&&s.shouldComponentUpdate(m,s.__s,M)===!1){t.__v!=n.__v&&(s.props=m,s.state=s.__s,s.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(P){P&&(P.__=t)}),Z.push.apply(s.__h,s._sb),s._sb=[],s.__h.length&&c.push(s),l=F(n);break e}s.componentWillUpdate!=null&&s.componentWillUpdate(m,s.__s,M),w&&s.componentDidUpdate!=null&&s.__h.push(function(){s.componentDidUpdate($,T,C)})}if(s.context=M,s.props=m,s.__P=e,s.__e=!1,L=v.__r,O=0,w)s.state=s.__s,s.__d=!1,L&&L(t),d=s.render(s.props,s.state,s.context),Z.push.apply(s.__h,s._sb),s._sb=[];else do s.__d=!1,L&&L(t),d=s.render(s.props,s.state,s.context),s.state=s.__s;while(s.__d&&++O<25);s.state=s.__s,s.getChildContext!=null&&(r=N(N({},r),s.getChildContext())),w&&!_&&s.getSnapshotBeforeUpdate!=null&&(C=s.getSnapshotBeforeUpdate($,T)),R=d!=null&&d.type===z&&d.key==null?De(d.props.children):d,l=Ae(e,ee(R)?R:[R],t,n,r,a,o,c,l,p,i),s.base=t.__e,t.__u&=-161,s.__h.length&&c.push(s),y&&(s.__E=s.__=null)}catch(P){if(c.length=b,t.__v=null,p||o!=null){if(P.then){for(t.__u|=p?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;o!=null&&(o[o.indexOf(l)]=null),t.__e=l}else if(o!=null)for(A=o.length;A--;)ue(o[A])}else t.__e=n.__e;t.__k==null&&(t.__k=n.__k||[]),P.then||Ne(t),v.__e(P,t,n)}}else o==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):l=t.__e=dt(n.__e,t,n,r,a,o,c,p,i);return(d=v.diffed)&&d(t),128&t.__u?void 0:l}function Ne(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Ne))}function Le(e,t,n){for(var r=0;r<n.length;r++)pe(n[r],n[++r],n[++r]);v.__c&&v.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(o){o.call(a)})}catch(o){v.__e(o,a.__v)}})}function De(e){return typeof e!="object"||e==null||e.__b>0?e:ee(e)?e.map(De):e.constructor!==void 0?null:N({},e)}function dt(e,t,n,r,a,o,c,l,p){var i,d,b,s,_,$,T,C=n.props||Q,y=t.props,m=t.type;if(m=="svg"?a="http://www.w3.org/2000/svg":m=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),o!=null){for(i=0;i<o.length;i++)if((_=o[i])&&"setAttribute"in _==!!m&&(m?_.localName==m:_.nodeType==3)){e=_,o[i]=null;break}}if(e==null){if(m==null)return document.createTextNode(y);e=document.createElementNS(a,m,y.is&&y),l&&(v.__m&&v.__m(t,o),l=!1),o=null}if(m==null)C===y||l&&e.data==y||(e.data=y);else{if(o=m=="textarea"&&y.defaultValue!=null?null:o&&J.call(e.childNodes),!l&&o!=null)for(C={},i=0;i<e.attributes.length;i++)C[(_=e.attributes[i]).name]=_.value;for(i in C)_=C[i],i=="dangerouslySetInnerHTML"?b=_:i=="children"||i in y||i=="value"&&"defaultValue"in y||i=="checked"&&"defaultChecked"in y||re(e,i,null,_,a);for(i in y)_=y[i],i=="children"?s=_:i=="dangerouslySetInnerHTML"?d=_:i=="value"?$=_:i=="checked"?T=_:l&&typeof _!="function"||C[i]===_||re(e,i,_,C[i],a);if(d)l||b&&(d.__html==b.__html||d.__html==e.innerHTML)||(e.innerHTML=d.__html),t.__k=[];else if(b&&(e.innerHTML=""),Ae(t.type=="template"?e.content:e,ee(s)?s:[s],t,n,r,m=="foreignObject"?"http://www.w3.org/1999/xhtml":a,o,c,o?o[0]:n.__k&&F(n,0),l,p),o!=null)for(i=o.length;i--;)ue(o[i]);l&&m!="textarea"||(i="value",m=="progress"&&$==null?e.removeAttribute("value"):$!=null&&($!==e[i]||m=="progress"&&!$||m=="option"&&$!=C[i])&&re(e,i,$,C[i],a),i="checked",T!=null&&T!=e[i]&&re(e,i,T,C[i],a))}return e}function pe(e,t,n){try{if(typeof e=="function"){var r=typeof e.__u=="function";r&&e.__u(),r&&t==null||(e.__u=e(t))}else e.current=t}catch(a){v.__e(a,n)}}function Ie(e,t,n){var r,a;if(v.unmount&&v.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||pe(r,null,t)),(r=e.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(o){v.__e(o,t)}r.base=r.__P=r.__n=null}if(r=e.__k)for(a=0;a<r.length;a++)r[a]&&Ie(r[a],t,n||typeof e.type!="function");n||ue(e.__e),e.__c=e.__=e.__e=void 0}function pt(e,t,n){return this.constructor(e,n)}function Re(e,t,n){var r,a,o,c;t==document&&(t=document.documentElement),v.__&&v.__(e,t),a=(r=!1)?null:t.__k,o=[],c=[],de(t,e=t.__k=ct(z,null,[e]),a||Q,Q,t.namespaceURI,a?null:t.firstChild?J.call(t.childNodes):null,o,a?a.__e:t.firstChild,r,c),Le(o,e,c),e.props.children=null}J=Z.slice,v={__e:function(e,t,n,r){for(var a,o,c;t=t.__;)if((a=t.__c)&&!a.__)try{if((o=a.constructor)&&o.getDerivedStateFromError!=null&&(a.setState(o.getDerivedStateFromError(e)),c=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,r||{}),c=a.__d),c)return a.__E=a}catch(l){e=l}throw e}},$e=0,ne.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=N({},this.state),typeof e=="function"&&(e=e(N({},n),this.props)),e&&N(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ee(this))},ne.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ee(this))},ne.prototype.render=z,D=[],ke=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Se=function(e,t){return e.__v.__b-t.__v.__b},oe.__r=0,ie=Math.random().toString(8),X="__d"+ie,B="__a"+ie,Ce=/(PointerCapture)$|Capture$/i,ce=0,le=Pe(!1),_e=Pe(!0);var ft=0;function g(e,t,n,r,a,o){t||(t={});var c,l,p=t;if("ref"in p)for(l in p={},t)l=="ref"?c=t[l]:p[l]=t[l];var i={type:e,props:p,key:n,ref:c,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--ft,__i:-1,__u:0,__source:a,__self:o};if(typeof e=="function"&&(c=e.defaultProps))for(l in c)p[l]===void 0&&(p[l]=c[l]);return v.vnode&&v.vnode(i),i}var Y,k,fe,Fe,se=0,Oe=[],S=v,ze=S.__b,Ue=S.__r,We=S.diffed,je=S.__c,qe=S.unmount,Be=S.__;function he(e,t){S.__h&&S.__h(k,e,se||t),se=0;var n=k.__H||(k.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function U(e){return se=1,ht(Ve,e)}function ht(e,t,n){var r=he(Y++,2);if(r.t=e,!r.__c&&(r.__=[Ve(void 0,t),function(l){var p=r.__N?r.__N[0]:r.__[0],i=r.t(p,l);p!==i&&(r.__N=[i,r.__[1]],r.__c.setState({}))}],r.__c=k,!k.__f)){var a=function(l,p,i){if(!r.__c.__H)return!0;var d=!1,b=r.__c.props!==l;if(r.__c.__H.__.some(function(_){if(_.__N){d=!0;var $=_.__[0];_.__=_.__N,_.__N=void 0,$!==_.__[0]&&(b=!0)}}),o){var s=o.call(this,l,p,i);return d?s||b:s}return!d||b};k.__f=!0;var o=k.shouldComponentUpdate,c=k.componentWillUpdate;k.componentWillUpdate=function(l,p,i){if(this.__e){var d=o;o=void 0,a(l,p,i),o=d}c&&c.call(this,l,p,i)},k.shouldComponentUpdate=a}return r.__N||r.__}function me(e,t){var n=he(Y++,3);!S.__s&&Ke(n.__H,t)&&(n.__=e,n.u=t,k.__H.__h.push(n))}function K(e){return se=5,mt(function(){return{current:e}},[])}function mt(e,t){var n=he(Y++,7);return Ke(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function gt(){for(var e;e=Oe.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(ae),t.__h.some(ge),t.__h=[]}catch(n){t.__h=[],S.__e(n,e.__v)}}}S.__b=function(e){k=null,ze&&ze(e)},S.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Be&&Be(e,t)},S.__r=function(e){Ue&&Ue(e),Y=0;var t=(k=e.__c).__H;t&&(fe===k?(t.__h=[],k.__h=[],t.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.some(ae),t.__h.some(ge),t.__h=[],Y=0)),fe=k},S.diffed=function(e){We&&We(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Oe.push(t)!==1&&Fe===S.requestAnimationFrame||((Fe=S.requestAnimationFrame)||vt)(gt)),t.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),fe=k=null},S.__c=function(e,t){t.some(function(n){try{n.__h.some(ae),n.__h=n.__h.filter(function(r){return!r.__||ge(r)})}catch(r){t.some(function(a){a.__h&&(a.__h=[])}),t=[],S.__e(r,n.__v)}}),je&&je(e,t)},S.unmount=function(e){qe&&qe(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(r){try{ae(r)}catch(a){t=a}}),n.__H=void 0,t&&S.__e(t,n.__v))};var Ye=typeof requestAnimationFrame=="function";function vt(e){var t,n=function(){clearTimeout(r),Ye&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Ye&&(t=requestAnimationFrame(n))}function ae(e){var t=k,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),k=t}function ge(e){var t=k;e.__c=e.__(),k=t}function Ke(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function Ve(e,t){return typeof t=="function"?t(e):t}const bt="Snagset",yt="Snagset",xt="Snag",$t="Snags",wt={anchor:"data-snag-anchor",ignore:"data-snag-ignore",mask:"data-snag-mask",nomask:"data-snag-nomask",src:"data-snag-src",component:"data-snag-component"},kt=e=>wt[e],f={font:"--snag-font",accent:"--snag-accent",onAccent:"--snag-onAccent",bg:"--snag-bg",fg:"--snag-fg",muted:"--snag-muted",border:"--snag-border",radius:"--snag-radius",shadow:"--snag-shadow",z:"--snag-z",motion:"--snag-motion",surface:"--snag-surface",sunken:"--snag-sunken",hover:"--snag-hover",focus:"--snag-focus",disabled:"--snag-disabled",statusOpen:"--snag-status-open",statusProgress:"--snag-status-progress",statusReview:"--snag-status-review",statusResolved:"--snag-status-resolved",anchorOrphan:"--snag-anchor-orphan",tbH:"--snag-tb-h",dockW:"--snag-dock-w",kb:"--snag-kb",thumbX:"--snag-thumb-x",thumbW:"--snag-thumb-w"},St=e=>`var(${f[e]})`,Ge="snag:disclosure:v1",Je="snag:identity",Ct="data-snag-theme";function Xe(){let e=null;try{e=localStorage.getItem(Je)}catch{return{}}if(!e)return{};if(e[0]!=="{")return{name:e};try{const t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function Tt(e){try{localStorage.setItem(Je,JSON.stringify(e))}catch{}}function Et(){const e=Xe();return{name:typeof e.name=="string"?e.name:"",...e.email?{email:e.email}:{}}}function At(e){const t=Xe();Tt({...t,name:e.name,...e.email?{email:e.email}:{}})}function Ht(e){const t=window.visualViewport;if(!t)return;let n=0,r=0;const a=()=>{n=0;const l=Math.max(0,Math.round(window.innerHeight-t.height-t.offsetTop));e.style.setProperty(f.kb,`${l}px`)},o=()=>{n||(n=requestAnimationFrame(a))},c=()=>{clearTimeout(r),r=window.setTimeout(a,300)};return a(),t.addEventListener("resize",o),t.addEventListener("scroll",o),window.addEventListener("orientationchange",o),e.addEventListener("focusout",c),()=>{n&&cancelAnimationFrame(n),clearTimeout(r),t.removeEventListener("resize",o),t.removeEventListener("scroll",o),window.removeEventListener("orientationchange",o),e.removeEventListener("focusout",c)}}const Mt={product:bt,set:yt,item:xt,items:$t};function Pt(e){return(t,n)=>(e[t]??"").replace(/\{(\w+)\}/g,(r,a)=>{const o=n?.[a]??Mt[a];return o===void 0?r:String(o)})}const Nt=e=>new Intl.NumberFormat().format(e),Lt={"where.anchored":"{label}","where.approximate":"position approximate \u2014 the page changed","where.orphaned":"moved \u2014 the element is gone","status.open":"Active","status.progress":"In progress","status.review":"In review","status.resolved":"Resolved","author.unknown":"Someone","label.image":"an image","label.link":"a link","label.button":"a button","label.tag":"the {tag}"},Dt={open:{colour:"#4F6EF7"},progress:{colour:"#F59E0B"},review:{colour:"#8B5CF6"},resolved:{colour:"#10B981"}},u=Object.fromEntries(Object.keys(f).map(e=>[e,St(e)])),It=Object.entries(Dt).map(([e,t])=>` ${f[`status${e[0].toUpperCase()}${e.slice(1)}`]}:${t.colour};`).join(`
2
- `);`${u.font}${u.fg}${f.font}${f.accent}${f.bg}${f.fg}${f.muted}${f.border}${f.radius}${f.shadow}${f.z}${f.motion}${f.surface}${u.fg}${u.bg}${f.sunken}${u.fg}${u.bg}${f.hover}${u.fg}${u.bg}${f.onAccent}${f.focus}${u.accent}${u.fg}${f.disabled}${u.muted}${u.bg}${It}${f.anchorOrphan}${Ct}${f.accent}${f.onAccent}${f.bg}${f.fg}${f.muted}${f.border}${f.shadow}${f.motion}${f.bg}${f.fg}${f.muted}${f.border}${f.accent}${f.onAccent}${f.surface}${f.sunken}${f.hover}${f.focus}${f.disabled}${f.shadow}${f.anchorOrphan}`;const Rt={composer:8},Qe=new WeakMap;function Ze(e,t,n){let r=Qe.get(e);if(r||Qe.set(e,r=new Set),r.has(t))return;r.add(t);try{const c=new CSSStyleSheet;c.replaceSync(n),e.adoptedStyleSheets=[...e.adoptedStyleSheets,c];return}catch{}const o=(e.ownerDocument??document).createElement("style");o.setAttribute(`data-snag-${t}`,""),o.textContent=n,e.appendChild(o)}const Ft=` .snag-input,.snag-text{width:100%;box-sizing:border-box;background:${u.surface};color:inherit;border:1px solid ${u.border};border-radius:${u.radius};padding:8px;font:inherit;resize:vertical}@media (pointer:coarse){.snag-input,.snag-text{font-size:16px}}.snag-input:focus,.snag-text:focus{outline:2px solid ${u.focus};outline-offset:1px;border-color:transparent}.snag-input--bad{border-color:${u.anchorOrphan}}.snag-note{margin:-2px 0 0;color:${u.anchorOrphan};font-size:11px;line-height:1.35}.snag-note.snag-dim{color:${u.muted}}.snag-actions{display:flex;justify-content:flex-end;gap:6px}.snag-actions button{appearance:none;border:0;border-radius:calc(${u.radius} - 1px);padding:7px 13px;font:inherit;cursor:pointer;min-height:32px;transition:background ${u.motion}}.snag-cancel{background:transparent;color:${u.muted}}.snag-armed{color:${u.anchorOrphan};font-weight:600}.snag-cancel:hover{background:${u.hover};color:inherit}.snag-send{background:${u.accent};color:${u.onAccent};font-weight:600}.snag-send:disabled{opacity:.45;cursor:not-allowed}.snag-actions button:focus-visible{outline:2px solid ${u.focus};outline-offset:2px}`;function Ot(e,t,n){const[r,a]=U(!1);return me(()=>{if(!r)return;const o=setTimeout(()=>a(!1),3e3);return()=>clearTimeout(o)},[r]),{armed:r,press(){if(r||t&&!t()){a(!1),e();return}a(!0),n?.()}}}const zt={"detail.details":"Anchor details","detail.hidden":"This element isn't visible right now \u2014 it may be inside a closed menu, tab, or accordion.","detail.orphaned":"The element this was pinned to has moved or gone \u2014 it was {label}.","detail.approximate":"The page changed since this was written, so the pin is close rather than exact \u2014 it points at {label}.","detail.unavailable":"Some of the matching steps couldn't load, so this was judged with the basic ones only.","detail.filedat":"Filed at {query}.","detail.openquery":"Open with original query","capture.agent":"{browser} \xB7 {os}","capture.agent.noos":"{browser}","capture.device":"{device} \xB7 {w}\xD7{h} @{dpr}x","capture.device.at1x":"{device} \xB7 {w}\xD7{h}"},Ut={"disclosure.title":"Before your first comment","disclosure.always":"Each comment carries the page address, viewport size and browser make.","disclosure.crumbs.on":"Recent console messages and network results ride along, recognisable secrets redacted first.","disclosure.crumbs.off":"Console and network capture is off here.","disclosure.screenshot.off":"Screenshots are off for this project.","disclosure.screenshot.on":"{product} never reads what you type. Screenshots are pictures of the page, so anything visible on screen is in the picture \u2014 mark sensitive regions with {maskAttr} and they are blurred before the screenshot leaves your browser.","disclosure.retention":"Everything stays in this browser until someone exports it \u2014 the privacy notes list what can still leak.","disclosure.retention.server":"Your comment, the page address and the details above are sent to {host} when you post \u2014 the privacy notes list what can still leak.","disclosure.ack":"Got it","composer.aria":"New comment","composer.parent":"Pin the parent","composer.child":"Pin the first child","composer.shot":"Add a screenshot","composer.name":"Your name","composer.email":"Email, so we can reply","composer.email.bad":"Check the address \u2014 or leave it blank.","composer.chars":"{n} characters left","composer.body":"Comment","composer.body.placeholder":"What's the {item}?","action.cancel":"Cancel","action.post":"Post comment","composer.discard.sure":"Sure? Discard this comment","action.discard":"Discard?"},Wt={...Lt,...zt,...Ut},x=Pt(Wt),ve=1e4,jt=9e3,qt=e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim());let et=!1;function Bt(){if(et)return!0;try{return localStorage.getItem(Ge)==="1"}catch{return!1}}function Yt({at:e,label:t,onSend:n,onCancel:r,onRetarget:a,onShotOptIn:o,onDraft:c,initialBody:l,initialName:p,initialEmail:i,crumbsOn:d,quote:b,shotsOn:s,serverHost:_}){const $=Et(),[T,C]=U($.name||(p??"")),[y,m]=U($.email??i??""),[w,I]=U(l??""),M=K(null),L=K(null),O=K(null),[R]=U(!$.name),[A,H]=U(Bt),P=K(null),tt=()=>{et=!0;try{localStorage.setItem(Ge,"1")}catch{}H(!0)},W=window.matchMedia?.("(pointer: coarse)").matches??!1,nt=K(performance.now()).current;me(()=>{if(W)return;const h=O.current,E=h?.getBoundingClientRect();if(h&&E&&(E.bottom>innerHeight-8&&(h.style.top=`${Math.max(8,innerHeight-E.height-8)}px`),E.right>innerWidth-8&&(h.style.left=`${Math.max(8,innerWidth-E.width-8)}px`)),!A){P.current?.focus();return}(R?L:M).current?.focus()},[A]),me(()=>{const h=O.current;if(h)return Ht(h)},[]);const j=y.trim().length>0&&!qt(y),be=w.trim().length>0&&T.trim().length>0&&!j;function ye(){if(!be)return;const h={name:T.trim(),...y.trim()?{email:y.trim()}:{}};At(h),n(w.trim(),h.name,h.email)}const{armed:V,press:G}=Ot(r,()=>w.trim().length>0,()=>M.current?.focus()),ot=h=>{I(h),c?.(h,T,y)},xe=300,rt=Math.min(Math.max(8,e.x+14),innerWidth-xe-8),st=Math.min(Math.max(8,e.y+14),innerHeight-198);return g(z,{children:[W&&g("div",{class:"snag-scrim","aria-hidden":"true",onClick:()=>{performance.now()-nt>400&&G()}}),g("div",{ref:O,class:"snag-composer",role:"dialog","aria-label":x("composer.aria"),style:{left:`${rt}px`,top:`${st}px`,width:`${xe}px`},onKeyDown:h=>{h.key==="Escape"&&(h.stopPropagation(),G()),h.key==="Enter"&&(h.metaKey||h.ctrlKey)&&(h.preventDefault(),ye())},children:[W&&g("div",{class:"snag-grab","aria-hidden":"true",onPointerDown:h=>{const E=h.clientY,q=h.currentTarget;try{q.setPointerCapture(h.pointerId)}catch{}q.onpointermove=at=>{at.clientY-E>56&&(q.onpointermove=null,G())},q.onpointerup=()=>q.onpointermove=null}}),g("div",{class:"snag-head",children:[W&&a&&A&&g("span",{class:"snag-step",children:[g("button",{type:"button","aria-label":x("composer.parent"),onClick:()=>a("up"),children:"\u25B2"}),g("button",{type:"button","aria-label":x("composer.child"),onClick:()=>a("down"),children:"\u25BC"})]}),g("p",{class:"snag-target",title:t,children:t}),g("button",{type:"button",class:`snag-dismiss${V?" snag-armed":""}`,"aria-label":x(V?"composer.discard.sure":"action.cancel"),title:x(V?"composer.discard.sure":"action.cancel"),onClick:G,children:V?x("action.discard"):"\u2715"})]}),!A&&g("div",{class:"snag-disclose",children:[g("p",{class:"snag-disclose-title",children:x("disclosure.title")}),g("p",{children:x("disclosure.always")}),g("p",{children:x(d?"disclosure.crumbs.on":"disclosure.crumbs.off")}),g("p",{children:s?x("disclosure.screenshot.on",{maskAttr:kt("mask")}):x("disclosure.screenshot.off")}),g("p",{children:_?x("disclosure.retention.server",{host:_}):x("disclosure.retention")}),g("div",{class:"snag-actions",children:g("button",{type:"button",ref:P,class:"snag-send snag-primary",onClick:tt,children:x("disclosure.ack")})})]}),A&&R&&g(z,{children:[g("input",{ref:L,class:"snag-input",type:"text",placeholder:x("composer.name"),"aria-label":x("composer.name"),value:T,onInput:h=>{const E=h.target.value;C(E),w.trim()&&c?.(w,E,y)}}),g("input",{class:`snag-input${j?" snag-input--bad":""}`,type:"email",inputMode:"email",autocomplete:"email",placeholder:x("composer.email"),"aria-label":x("composer.email"),"aria-invalid":j?"true":void 0,"aria-describedby":j?"snag-email-note":void 0,value:y,onInput:h=>{const E=h.target.value;m(E),w.trim()&&c?.(w,T,E)}}),j&&g("p",{class:"snag-note",id:"snag-email-note",children:x("composer.email.bad")})]}),A&&b&&g("blockquote",{class:"snag-quote",children:b}),A&&g("textarea",{ref:M,class:"snag-text",placeholder:x("composer.body.placeholder"),"aria-label":x("composer.body"),maxLength:ve,rows:3,enterkeyhint:"enter",value:w,onInput:h=>{const E=h.target;E.style.height="auto",E.style.height=`${Math.min(E.scrollHeight,128)}px`,ot(E.value)}}),A&&w.length>=jt&&g("p",{class:`snag-note${w.length>=ve?"":" snag-dim"}`,"aria-live":"polite",children:x("composer.chars",{n:Nt(ve-w.length)})}),A&&W&&o&&g("label",{class:"snag-shotopt",children:[g("input",{type:"checkbox",onChange:h=>o(h.currentTarget.checked)})," ",x("composer.shot")]}),A&&g("div",{class:"snag-actions",children:g("button",{type:"button",class:"snag-send snag-primary",disabled:!be,onClick:ye,children:x("action.post")})})]})]})}const Kt=` .snag-composer{position:fixed;box-sizing:border-box;z-index:${Rt.composer};background:${u.bg};color:${u.fg};border:1px solid ${u.border};border-radius:calc(${u.radius} + 4px);padding:12px;box-shadow:${u.shadow};pointer-events:auto;font:400 13px/1.45 ${u.font};display:flex;flex-direction:column;gap:8px}.snag-head{display:flex;align-items:center;gap:8px}.snag-target{margin:0;flex:1 1 auto;min-width:0;color:${u.muted};font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.snag-dismiss{flex:0 0 auto;appearance:none;border:0;background:transparent;color:${u.muted};font:inherit;font-size:12px;line-height:1;padding:6px;margin:-6px -4px -6px 0;border-radius:calc(${u.radius} - 2px);cursor:pointer}.snag-dismiss:hover{color:${u.fg};background:${u.hover}}.snag-dismiss:focus-visible{outline:2px solid ${u.focus};outline-offset:1px}.snag-dismiss.snag-armed{color:${u.anchorOrphan};font-weight:600;font-size:11px}.snag-disclose{display:flex;flex-direction:column;gap:6px}.snag-disclose p{margin:0;font-size:12px;line-height:1.5;color:${u.fg}}.snag-disclose .snag-disclose-title{font-weight:600;font-size:12px}.snag-disclose p:not(.snag-disclose-title){color:${u.muted}}.snag-quote{margin:0;padding:6px 10px;border-inline-start:3px solid ${u.accent};background:${u.surface};font-size:12px;color:${u.muted}}.snag-actions .snag-primary{flex:1 1 auto;justify-content:center;padding-block:10px;font-weight:600}@media (pointer:coarse){.snag-composer{left:0!important;right:0;top:auto!important;width:auto!important;inset-block-end:max(var(${f.tbH},68px),var(${f.kb},0px));border-radius:14px 14px 0 0;border-inline:0;border-block-end:0;padding:14px 16px calc(16px + env(safe-area-inset-bottom));gap:10px;box-shadow:0 -8px 32px rgb(0 0 0 / 28%)}.snag-composer .snag-primary{min-height:48px;font-size:15px}.snag-composer .snag-dismiss{padding:10px;margin:-10px -6px -10px 0;font-size:14px}.snag-composer .snag-text{min-height:88px}.snag-composer{overscroll-behavior:contain;padding-inline:calc(16px + env(safe-area-inset-left)) calc(16px + env(safe-area-inset-right))}.snag-scrim{position:fixed;inset:0;background:#0005;touch-action:none;pointer-events:auto}.snag-grab{margin:-14px 0 -8px;padding:12px 0;touch-action:none;pointer-events:auto;background:linear-gradient(${u.border} 0 0) 50%/36px 4px no-repeat}.snag-step{display:flex;gap:2px}.snag-step button{min-width:44px;min-height:44px;background:none;border:1px solid ${u.border};border-radius:8px;color:${u.fg}}.snag-shotopt{display:flex;align-items:center;gap:8px;min-height:44px}}@keyframes snag-pulse{50%{transform:scale(1.04)}}.snag-pulse{animation:snag-pulse 500ms ease-in-out}@media (prefers-reduced-motion:reduce){.snag-pulse{animation:none;outline:2px solid ${u.focus};outline-offset:3px}}`;function Vt(e,t,n){const r=e.ownerDocument??document;Ze(e,"form",Ft),Ze(e,"composer",Kt);const a=r.createElement("div");(n??e).appendChild(a);const o=()=>{Re(null,a),a.remove()},c=()=>a.querySelector(".snag-text"),l=()=>(c()?.value??"").trim().length>0,p=()=>{const i=a.firstElementChild;i&&(i.classList.remove("snag-pulse"),i.offsetWidth,i.classList.add("snag-pulse"),setTimeout(()=>i.classList.remove("snag-pulse"),600))};return Re(g(Yt,{...t,onSend:(i,d,b)=>{t.onSend(i,d,b),o()},onCancel:()=>{t.onCancel(),o()}}),a),{close:o,hasText:l,pulse:p,setLabel(i){const d=a.querySelector(".snag-target");d&&(d.textContent=i,d.title=i)}}}export{Vt as openComposer};
1
+ var J,v,$e,D,we,ke,Se,ie,X,B,Ce,ce,le,_e,Q={},Z=[],it=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,ee=Array.isArray;function N(e,t){for(var n in t)e[n]=t[n];return e}function ue(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function ct(e,t,n){var r,a,o,c={};for(o in t)o=="key"?r=t[o]:o=="ref"?a=t[o]:c[o]=t[o];if(arguments.length>2&&(c.children=arguments.length>3?J.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(o in e.defaultProps)c[o]===void 0&&(c[o]=e.defaultProps[o]);return te(e,c,r,a,null)}function te(e,t,n,r,a){var o={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++$e,__i:-1,__u:0};return a==null&&v.vnode!=null&&v.vnode(o),o}function U(e){return e.children}function ne(e,t){this.props=e,this.context=t}function O(e,t){if(t==null)return e.__?O(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?O(e):null}function lt(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,r=[],a=[],o=N({},t);o.__v=t.__v+1,v.vnode&&v.vnode(o),de(e.__P,o,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,r,n??O(t),!!(32&t.__u),a),o.__v=t.__v,o.__.__k[o.__i]=o,Le(r,o,a),t.__e=t.__=null,o.__e!=n&&Te(o)}}function Te(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),Te(e)}function Ee(e){(!e.__d&&(e.__d=!0)&&D.push(e)&&!oe.__r++||we!=v.debounceRendering)&&((we=v.debounceRendering)||ke)(oe)}function oe(){try{for(var e,t=1;D.length;)D.length>t&&D.sort(Se),e=D.shift(),t=D.length,lt(e)}finally{D.length=oe.__r=0}}function Ae(e,t,n,r,a,o,c,l,p,i,d){var b,s,_,$,T,C,y=r&&r.__k||Z,m=t.length;for(p=_t(n,t,y,p,m),b=0;b<m;b++)(_=n.__k[b])!=null&&(s=_.__i!=-1&&y[_.__i]||Q,_.__i=b,C=de(e,_,s,a,o,c,l,p,i,d),$=_.__e,_.ref&&s.ref!=_.ref&&(s.ref&&pe(s.ref,null,_),d.push(_.ref,_.__c||$,_)),T==null&&$!=null&&(T=$),4&_.__u?(p=He(_,p,e),s.__e&&(s.__e=null)):typeof _.type=="function"&&C!==void 0?p=C:$&&(p=$.nextSibling),_.__u&=-7);return n.__e=T,p}function _t(e,t,n,r,a){var o,c,l,p,i,d=n.length,b=d,s=0;for(e.__k=new Array(a),o=0;o<a;o++)(c=t[o])!=null&&typeof c!="boolean"&&typeof c!="function"?(typeof c=="string"||typeof c=="number"||typeof c=="bigint"||c.constructor==String?c=e.__k[o]=te(null,c,null,null,null):ee(c)?c=e.__k[o]=te(U,{children:c},null,null,null):c.constructor===void 0&&c.__b>0?c=e.__k[o]=te(c.type,c.props,c.key,c.ref?c.ref:null,c.__v):e.__k[o]=c,p=o+s,c.__=e,c.__b=e.__b+1,l=null,(i=c.__i=ut(c,n,p,b))!=-1&&(b--,(l=n[i])&&(l.__u|=2)),l==null||l.__v==null?(i==-1&&(a>d?s--:a<d&&s++),typeof c.type!="function"&&(c.__u|=4)):i!=p&&(i==p-1?s--:i==p+1?s++:(i>p?s--:s++,c.__u|=4))):e.__k[o]=null;if(b)for(o=0;o<d;o++)(l=n[o])!=null&&(2&l.__u)==0&&(l.__e==r&&(r=O(l)),Ie(l,l));return r}function He(e,t,n){var r,a;if(typeof e.type=="function"){for(r=e.__k,a=0;r&&a<r.length;a++)r[a]&&(r[a].__=e,t=He(r[a],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=O(e)),t=n.insertBefore(e.__e,t||null));do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function ut(e,t,n,r){var a,o,c,l=e.key,p=e.type,i=t[n],d=i!=null&&(2&i.__u)==0;if(i===null&&l==null||d&&l==i.key&&p==i.type)return n;if(r>(d?1:0)){for(a=n-1,o=n+1;a>=0||o<t.length;)if((i=t[c=a>=0?a--:o++])!=null&&(2&i.__u)==0&&l==i.key&&p==i.type)return c}return-1}function Me(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||it.test(t)?n:n+"px"}function re(e,t,n,r,a){var o,c;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof r=="string"&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||Me(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||Me(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")o=t!=(t=t.replace(Ce,"$1")),c=t.toLowerCase(),t=c in e||t=="onFocusOut"||t=="onFocusIn"?c.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+o]=n,n?r?n[B]=r[B]:(n[B]=ce,e.addEventListener(t,o?_e:le,o)):e.removeEventListener(t,o?_e:le,o);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Pe(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[X]==null)t[X]=ce++;else if(t[X]<n[B])return;return n(v.event?v.event(t):t)}}}function de(e,t,n,r,a,o,c,l,p,i){var d,b,s,_,$,T,C,y,m,w,I,M,L,z,R,A,H=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(p=!!(32&n.__u),o=[l=t.__e=n.__e]),(d=v.__b)&&d(t);e:if(typeof H=="function"){b=c.length;try{if(m=t.props,w=H.prototype&&H.prototype.render,I=(d=H.contextType)&&r[d.__c],M=d?I?I.props.value:d.__:r,n.__c?y=(s=t.__c=n.__c).__=s.__E:(w?t.__c=s=new H(m,M):(t.__c=s=new ne(m,M),s.constructor=H,s.render=pt),I&&I.sub(s),s.state||(s.state={}),s.__n=r,_=s.__d=!0,s.__h=[],s._sb=[]),w&&s.__s==null&&(s.__s=s.state),w&&H.getDerivedStateFromProps!=null&&(s.__s==s.state&&(s.__s=N({},s.__s)),N(s.__s,H.getDerivedStateFromProps(m,s.__s))),$=s.props,T=s.state,s.__v=t,_)w&&H.getDerivedStateFromProps==null&&s.componentWillMount!=null&&s.componentWillMount(),w&&s.componentDidMount!=null&&s.__h.push(s.componentDidMount);else{if(w&&H.getDerivedStateFromProps==null&&m!==$&&s.componentWillReceiveProps!=null&&s.componentWillReceiveProps(m,M),t.__v==n.__v||!s.__e&&s.shouldComponentUpdate!=null&&s.shouldComponentUpdate(m,s.__s,M)===!1){t.__v!=n.__v&&(s.props=m,s.state=s.__s,s.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(P){P&&(P.__=t)}),Z.push.apply(s.__h,s._sb),s._sb=[],s.__h.length&&c.push(s),l=O(n);break e}s.componentWillUpdate!=null&&s.componentWillUpdate(m,s.__s,M),w&&s.componentDidUpdate!=null&&s.__h.push(function(){s.componentDidUpdate($,T,C)})}if(s.context=M,s.props=m,s.__P=e,s.__e=!1,L=v.__r,z=0,w)s.state=s.__s,s.__d=!1,L&&L(t),d=s.render(s.props,s.state,s.context),Z.push.apply(s.__h,s._sb),s._sb=[];else do s.__d=!1,L&&L(t),d=s.render(s.props,s.state,s.context),s.state=s.__s;while(s.__d&&++z<25);s.state=s.__s,s.getChildContext!=null&&(r=N(N({},r),s.getChildContext())),w&&!_&&s.getSnapshotBeforeUpdate!=null&&(C=s.getSnapshotBeforeUpdate($,T)),R=d!=null&&d.type===U&&d.key==null?De(d.props.children):d,l=Ae(e,ee(R)?R:[R],t,n,r,a,o,c,l,p,i),s.base=t.__e,t.__u&=-161,s.__h.length&&c.push(s),y&&(s.__E=s.__=null)}catch(P){if(c.length=b,t.__v=null,p||o!=null){if(P.then){for(t.__u|=p?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;o!=null&&(o[o.indexOf(l)]=null),t.__e=l}else if(o!=null)for(A=o.length;A--;)ue(o[A])}else t.__e=n.__e;t.__k==null&&(t.__k=n.__k||[]),P.then||Ne(t),v.__e(P,t,n)}}else o==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):l=t.__e=dt(n.__e,t,n,r,a,o,c,p,i);return(d=v.diffed)&&d(t),128&t.__u?void 0:l}function Ne(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Ne))}function Le(e,t,n){for(var r=0;r<n.length;r++)pe(n[r],n[++r],n[++r]);v.__c&&v.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(o){o.call(a)})}catch(o){v.__e(o,a.__v)}})}function De(e){return typeof e!="object"||e==null||e.__b>0?e:ee(e)?e.map(De):e.constructor!==void 0?null:N({},e)}function dt(e,t,n,r,a,o,c,l,p){var i,d,b,s,_,$,T,C=n.props||Q,y=t.props,m=t.type;if(m=="svg"?a="http://www.w3.org/2000/svg":m=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),o!=null){for(i=0;i<o.length;i++)if((_=o[i])&&"setAttribute"in _==!!m&&(m?_.localName==m:_.nodeType==3)){e=_,o[i]=null;break}}if(e==null){if(m==null)return document.createTextNode(y);e=document.createElementNS(a,m,y.is&&y),l&&(v.__m&&v.__m(t,o),l=!1),o=null}if(m==null)C===y||l&&e.data==y||(e.data=y);else{if(o=m=="textarea"&&y.defaultValue!=null?null:o&&J.call(e.childNodes),!l&&o!=null)for(C={},i=0;i<e.attributes.length;i++)C[(_=e.attributes[i]).name]=_.value;for(i in C)_=C[i],i=="dangerouslySetInnerHTML"?b=_:i=="children"||i in y||i=="value"&&"defaultValue"in y||i=="checked"&&"defaultChecked"in y||re(e,i,null,_,a);for(i in y)_=y[i],i=="children"?s=_:i=="dangerouslySetInnerHTML"?d=_:i=="value"?$=_:i=="checked"?T=_:l&&typeof _!="function"||C[i]===_||re(e,i,_,C[i],a);if(d)l||b&&(d.__html==b.__html||d.__html==e.innerHTML)||(e.innerHTML=d.__html),t.__k=[];else if(b&&(e.innerHTML=""),Ae(t.type=="template"?e.content:e,ee(s)?s:[s],t,n,r,m=="foreignObject"?"http://www.w3.org/1999/xhtml":a,o,c,o?o[0]:n.__k&&O(n,0),l,p),o!=null)for(i=o.length;i--;)ue(o[i]);l&&m!="textarea"||(i="value",m=="progress"&&$==null?e.removeAttribute("value"):$!=null&&($!==e[i]||m=="progress"&&!$||m=="option"&&$!=C[i])&&re(e,i,$,C[i],a),i="checked",T!=null&&T!=e[i]&&re(e,i,T,C[i],a))}return e}function pe(e,t,n){try{if(typeof e=="function"){var r=typeof e.__u=="function";r&&e.__u(),r&&t==null||(e.__u=e(t))}else e.current=t}catch(a){v.__e(a,n)}}function Ie(e,t,n){var r,a;if(v.unmount&&v.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||pe(r,null,t)),(r=e.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(o){v.__e(o,t)}r.base=r.__P=r.__n=null}if(r=e.__k)for(a=0;a<r.length;a++)r[a]&&Ie(r[a],t,n||typeof e.type!="function");n||ue(e.__e),e.__c=e.__=e.__e=void 0}function pt(e,t,n){return this.constructor(e,n)}function Re(e,t,n){var r,a,o,c;t==document&&(t=document.documentElement),v.__&&v.__(e,t),a=(r=!1)?null:t.__k,o=[],c=[],de(t,e=t.__k=ct(U,null,[e]),a||Q,Q,t.namespaceURI,a?null:t.firstChild?J.call(t.childNodes):null,o,a?a.__e:t.firstChild,r,c),Le(o,e,c),e.props.children=null}J=Z.slice,v={__e:function(e,t,n,r){for(var a,o,c;t=t.__;)if((a=t.__c)&&!a.__)try{if((o=a.constructor)&&o.getDerivedStateFromError!=null&&(a.setState(o.getDerivedStateFromError(e)),c=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,r||{}),c=a.__d),c)return a.__E=a}catch(l){e=l}throw e}},$e=0,ne.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=N({},this.state),typeof e=="function"&&(e=e(N({},n),this.props)),e&&N(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ee(this))},ne.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ee(this))},ne.prototype.render=U,D=[],ke=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Se=function(e,t){return e.__v.__b-t.__v.__b},oe.__r=0,ie=Math.random().toString(8),X="__d"+ie,B="__a"+ie,Ce=/(PointerCapture)$|Capture$/i,ce=0,le=Pe(!1),_e=Pe(!0);var ft=0;function g(e,t,n,r,a,o){t||(t={});var c,l,p=t;if("ref"in p)for(l in p={},t)l=="ref"?c=t[l]:p[l]=t[l];var i={type:e,props:p,key:n,ref:c,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--ft,__i:-1,__u:0,__source:a,__self:o};if(typeof e=="function"&&(c=e.defaultProps))for(l in c)p[l]===void 0&&(p[l]=c[l]);return v.vnode&&v.vnode(i),i}var Y,k,fe,Oe,se=0,ze=[],S=v,Ue=S.__b,Fe=S.__r,We=S.diffed,je=S.__c,qe=S.unmount,Be=S.__;function he(e,t){S.__h&&S.__h(k,e,se||t),se=0;var n=k.__H||(k.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function F(e){return se=1,ht(Ve,e)}function ht(e,t,n){var r=he(Y++,2);if(r.t=e,!r.__c&&(r.__=[Ve(void 0,t),function(l){var p=r.__N?r.__N[0]:r.__[0],i=r.t(p,l);p!==i&&(r.__N=[i,r.__[1]],r.__c.setState({}))}],r.__c=k,!k.__f)){var a=function(l,p,i){if(!r.__c.__H)return!0;var d=!1,b=r.__c.props!==l;if(r.__c.__H.__.some(function(_){if(_.__N){d=!0;var $=_.__[0];_.__=_.__N,_.__N=void 0,$!==_.__[0]&&(b=!0)}}),o){var s=o.call(this,l,p,i);return d?s||b:s}return!d||b};k.__f=!0;var o=k.shouldComponentUpdate,c=k.componentWillUpdate;k.componentWillUpdate=function(l,p,i){if(this.__e){var d=o;o=void 0,a(l,p,i),o=d}c&&c.call(this,l,p,i)},k.shouldComponentUpdate=a}return r.__N||r.__}function me(e,t){var n=he(Y++,3);!S.__s&&Ke(n.__H,t)&&(n.__=e,n.u=t,k.__H.__h.push(n))}function K(e){return se=5,mt(function(){return{current:e}},[])}function mt(e,t){var n=he(Y++,7);return Ke(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function gt(){for(var e;e=ze.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(ae),t.__h.some(ge),t.__h=[]}catch(n){t.__h=[],S.__e(n,e.__v)}}}S.__b=function(e){k=null,Ue&&Ue(e)},S.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Be&&Be(e,t)},S.__r=function(e){Fe&&Fe(e),Y=0;var t=(k=e.__c).__H;t&&(fe===k?(t.__h=[],k.__h=[],t.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.some(ae),t.__h.some(ge),t.__h=[],Y=0)),fe=k},S.diffed=function(e){We&&We(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(ze.push(t)!==1&&Oe===S.requestAnimationFrame||((Oe=S.requestAnimationFrame)||vt)(gt)),t.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),fe=k=null},S.__c=function(e,t){t.some(function(n){try{n.__h.some(ae),n.__h=n.__h.filter(function(r){return!r.__||ge(r)})}catch(r){t.some(function(a){a.__h&&(a.__h=[])}),t=[],S.__e(r,n.__v)}}),je&&je(e,t)},S.unmount=function(e){qe&&qe(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(r){try{ae(r)}catch(a){t=a}}),n.__H=void 0,t&&S.__e(t,n.__v))};var Ye=typeof requestAnimationFrame=="function";function vt(e){var t,n=function(){clearTimeout(r),Ye&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Ye&&(t=requestAnimationFrame(n))}function ae(e){var t=k,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),k=t}function ge(e){var t=k;e.__c=e.__(),k=t}function Ke(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function Ve(e,t){return typeof t=="function"?t(e):t}const bt="Snagset",yt="Snagset",xt="Snag",$t="Snags",wt={anchor:"data-snag-anchor",ignore:"data-snag-ignore",mask:"data-snag-mask",nomask:"data-snag-nomask",src:"data-snag-src",component:"data-snag-component"},kt=e=>wt[e],f={font:"--snag-font",accent:"--snag-accent",onAccent:"--snag-onAccent",bg:"--snag-bg",fg:"--snag-fg",muted:"--snag-muted",border:"--snag-border",radius:"--snag-radius",shadow:"--snag-shadow",z:"--snag-z",motion:"--snag-motion",surface:"--snag-surface",sunken:"--snag-sunken",hover:"--snag-hover",focus:"--snag-focus",disabled:"--snag-disabled",statusOpen:"--snag-status-open",statusProgress:"--snag-status-progress",statusReview:"--snag-status-review",statusResolved:"--snag-status-resolved",anchorOrphan:"--snag-anchor-orphan",tbH:"--snag-tb-h",dockW:"--snag-dock-w",kb:"--snag-kb",thumbX:"--snag-thumb-x",thumbW:"--snag-thumb-w"},St=e=>`var(${f[e]})`,Ge="snag:disclosure:v1",Je="snag:identity",Ct="data-snag-theme";function Xe(){let e=null;try{e=localStorage.getItem(Je)}catch{return{}}if(!e)return{};if(e[0]!=="{")return{name:e};try{const t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function Tt(e){try{localStorage.setItem(Je,JSON.stringify(e))}catch{}}function Et(){const e=Xe();return{name:typeof e.name=="string"?e.name:"",...e.email?{email:e.email}:{}}}function At(e){const t=Xe();Tt({...t,name:e.name,...e.email?{email:e.email}:{}})}function Ht(e){const t=window.visualViewport;if(!t)return;let n=0,r=0;const a=()=>{n=0;const l=Math.max(0,Math.round(window.innerHeight-t.height-t.offsetTop));e.style.setProperty(f.kb,`${l}px`)},o=()=>{n||(n=requestAnimationFrame(a))},c=()=>{clearTimeout(r),r=window.setTimeout(a,300)};return a(),t.addEventListener("resize",o),t.addEventListener("scroll",o),window.addEventListener("orientationchange",o),e.addEventListener("focusout",c),()=>{n&&cancelAnimationFrame(n),clearTimeout(r),t.removeEventListener("resize",o),t.removeEventListener("scroll",o),window.removeEventListener("orientationchange",o),e.removeEventListener("focusout",c)}}const Mt={product:bt,set:yt,item:xt,items:$t};function Pt(e){return(t,n)=>(e[t]??"").replace(/\{(\w+)\}/g,(r,a)=>{const o=n?.[a]??Mt[a];return o===void 0?r:String(o)})}const Nt=e=>new Intl.NumberFormat().format(e),Lt={"where.anchored":"{label}","where.approximate":"position approximate \u2014 the page changed","where.orphaned":"moved \u2014 the element is gone","status.open":"Active","status.progress":"In progress","status.review":"In review","status.resolved":"Resolved","author.unknown":"Someone","label.image":"an image","label.link":"a link","label.button":"a button","label.tag":"the {tag}"},Dt={open:{colour:"#009ed3"},progress:{colour:"#bd5000"},review:{colour:"#6700bf"},resolved:{colour:"#b2e3a3"}},u=Object.fromEntries(Object.keys(f).map(e=>[e,St(e)])),It=Object.entries(Dt).map(([e,t])=>` ${f[`status${e[0].toUpperCase()}${e.slice(1)}`]}:${t.colour};`).join(`
2
+ `);`${u.font}${u.fg}${f.font}${f.accent}${f.bg}${f.fg}${f.muted}${f.border}${f.radius}${f.shadow}${f.z}${f.motion}${f.surface}${u.fg}${u.bg}${f.sunken}${u.fg}${u.bg}${f.hover}${u.fg}${u.bg}${f.onAccent}${f.focus}${u.accent}${u.fg}${f.disabled}${u.muted}${u.bg}${It}${f.anchorOrphan}${Ct}${f.accent}${f.onAccent}${f.bg}${f.fg}${f.muted}${f.border}${f.shadow}${f.motion}${f.bg}${f.fg}${f.muted}${f.border}${f.accent}${f.onAccent}${f.surface}${f.sunken}${f.hover}${f.focus}${f.disabled}${f.shadow}${f.anchorOrphan}`;const Rt={composer:8},Qe=new WeakMap;function Ze(e,t,n){let r=Qe.get(e);if(r||Qe.set(e,r=new Set),r.has(t))return;r.add(t);try{const c=new CSSStyleSheet;c.replaceSync(n),e.adoptedStyleSheets=[...e.adoptedStyleSheets,c];return}catch{}const o=(e.ownerDocument??document).createElement("style");o.setAttribute(`data-snag-${t}`,""),o.textContent=n,e.appendChild(o)}const Ot=` .snag-input,.snag-text{width:100%;box-sizing:border-box;background:${u.surface};color:inherit;border:1px solid ${u.border};border-radius:${u.radius};padding:8px;font:inherit;resize:vertical}@media (pointer:coarse){.snag-input,.snag-text{font-size:16px}}.snag-input:focus,.snag-text:focus{outline:2px solid ${u.focus};outline-offset:1px;border-color:transparent}.snag-input--bad{border-color:${u.anchorOrphan}}.snag-note{margin:-2px 0 0;color:${u.anchorOrphan};font-size:11px;line-height:1.35}.snag-note.snag-dim{color:${u.muted}}.snag-actions{display:flex;justify-content:flex-end;gap:6px}.snag-actions button{appearance:none;border:0;border-radius:calc(${u.radius} - 1px);padding:7px 13px;font:inherit;cursor:pointer;min-height:32px;transition:background ${u.motion}}.snag-cancel{background:transparent;color:${u.muted}}.snag-armed{color:${u.anchorOrphan};font-weight:600}.snag-cancel:hover{background:${u.hover};color:inherit}.snag-send{background:${u.accent};color:${u.onAccent};font-weight:600}.snag-send:disabled{opacity:.45;cursor:not-allowed}.snag-actions button:focus-visible{outline:2px solid ${u.focus};outline-offset:2px}`;function zt(e,t,n){const[r,a]=F(!1);return me(()=>{if(!r)return;const o=setTimeout(()=>a(!1),3e3);return()=>clearTimeout(o)},[r]),{armed:r,press(){if(r||t&&!t()){a(!1),e();return}a(!0),n?.()}}}const Ut={"detail.details":"Anchor details","detail.hidden":"This element isn't visible right now \u2014 it may be inside a closed menu, tab, or accordion.","detail.orphaned":"The element this was pinned to has moved or gone \u2014 it was {label}.","detail.approximate":"The page changed since this was written, so the pin is close rather than exact \u2014 it points at {label}.","detail.unavailable":"Some of the matching steps couldn't load, so this was judged with the basic ones only.","detail.filedat":"Filed at {query}.","detail.openquery":"Open with original query","capture.agent":"{browser} \xB7 {os}","capture.agent.noos":"{browser}","capture.device":"{device} \xB7 {w}\xD7{h} @{dpr}x","capture.device.at1x":"{device} \xB7 {w}\xD7{h}"},Ft={"disclosure.title":"Before your first comment","disclosure.always":"Each comment carries the page address, viewport size and browser make.","disclosure.crumbs.on":"Recent console messages and network results ride along, recognisable secrets redacted first.","disclosure.crumbs.off":"Console and network capture is off here.","disclosure.screenshot.off":"Screenshots are off for this project.","disclosure.screenshot.on":"{product} never reads what you type. Screenshots are pictures of the page, so anything visible on screen is in the picture \u2014 mark sensitive regions with {maskAttr} and they are blurred before the screenshot leaves your browser.","disclosure.retention":"Everything stays in this browser until someone exports it \u2014 the privacy notes list what can still leak.","disclosure.retention.server":"Your comment, the page address and the details above are sent to {host} when you post \u2014 the privacy notes list what can still leak.","disclosure.ack":"Got it","composer.aria":"New comment","composer.parent":"Pin the parent","composer.child":"Pin the first child","composer.shot":"Add a screenshot","composer.name":"Your name","composer.email":"Email, so we can reply","composer.email.bad":"Check the address \u2014 or leave it blank.","composer.chars":"{n} characters left","composer.body":"Comment","composer.body.placeholder":"What's the {item}?","action.cancel":"Cancel","action.post":"Post comment","composer.discard.sure":"Sure? Discard this comment","action.discard":"Discard?"},Wt={...Lt,...Ut,...Ft},x=Pt(Wt),ve=1e4,jt=9e3,qt=e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim());let et=!1;function Bt(){if(et)return!0;try{return localStorage.getItem(Ge)==="1"}catch{return!1}}function Yt({at:e,label:t,onSend:n,onCancel:r,onRetarget:a,onShotOptIn:o,onDraft:c,initialBody:l,initialName:p,initialEmail:i,crumbsOn:d,quote:b,shotsOn:s,serverHost:_}){const $=Et(),[T,C]=F($.name||(p??"")),[y,m]=F($.email??i??""),[w,I]=F(l??""),M=K(null),L=K(null),z=K(null),[R]=F(!$.name),[A,H]=F(Bt),P=K(null),tt=()=>{et=!0;try{localStorage.setItem(Ge,"1")}catch{}H(!0)},W=window.matchMedia?.("(pointer: coarse)").matches??!1,nt=K(performance.now()).current;me(()=>{if(W)return;const h=z.current,E=h?.getBoundingClientRect();if(h&&E&&(E.bottom>innerHeight-8&&(h.style.top=`${Math.max(8,innerHeight-E.height-8)}px`),E.right>innerWidth-8&&(h.style.left=`${Math.max(8,innerWidth-E.width-8)}px`)),!A){P.current?.focus();return}(R?L:M).current?.focus()},[A]),me(()=>{const h=z.current;if(h)return Ht(h)},[]);const j=y.trim().length>0&&!qt(y),be=w.trim().length>0&&T.trim().length>0&&!j;function ye(){if(!be)return;const h={name:T.trim(),...y.trim()?{email:y.trim()}:{}};At(h),n(w.trim(),h.name,h.email)}const{armed:V,press:G}=zt(r,()=>w.trim().length>0,()=>M.current?.focus()),ot=h=>{I(h),c?.(h,T,y)},xe=300,rt=Math.min(Math.max(8,e.x+14),innerWidth-xe-8),st=Math.min(Math.max(8,e.y+14),innerHeight-198);return g(U,{children:[W&&g("div",{class:"snag-scrim","aria-hidden":"true",onClick:()=>{performance.now()-nt>400&&G()}}),g("div",{ref:z,class:"snag-composer",role:"dialog","aria-label":x("composer.aria"),style:{left:`${rt}px`,top:`${st}px`,width:`${xe}px`},onKeyDown:h=>{h.key==="Escape"&&(h.stopPropagation(),G()),h.key==="Enter"&&(h.metaKey||h.ctrlKey)&&(h.preventDefault(),ye())},children:[W&&g("div",{class:"snag-grab","aria-hidden":"true",onPointerDown:h=>{const E=h.clientY,q=h.currentTarget;try{q.setPointerCapture(h.pointerId)}catch{}q.onpointermove=at=>{at.clientY-E>56&&(q.onpointermove=null,G())},q.onpointerup=()=>q.onpointermove=null}}),g("div",{class:"snag-head",children:[W&&a&&A&&g("span",{class:"snag-step",children:[g("button",{type:"button","aria-label":x("composer.parent"),onClick:()=>a("up"),children:"\u25B2"}),g("button",{type:"button","aria-label":x("composer.child"),onClick:()=>a("down"),children:"\u25BC"})]}),g("p",{class:"snag-target",title:t,children:t}),g("button",{type:"button",class:`snag-dismiss${V?" snag-armed":""}`,"aria-label":x(V?"composer.discard.sure":"action.cancel"),title:x(V?"composer.discard.sure":"action.cancel"),onClick:G,children:V?x("action.discard"):"\u2715"})]}),!A&&g("div",{class:"snag-disclose",children:[g("p",{class:"snag-disclose-title",children:x("disclosure.title")}),g("p",{children:x("disclosure.always")}),g("p",{children:x(d?"disclosure.crumbs.on":"disclosure.crumbs.off")}),g("p",{children:s?x("disclosure.screenshot.on",{maskAttr:kt("mask")}):x("disclosure.screenshot.off")}),g("p",{children:_?x("disclosure.retention.server",{host:_}):x("disclosure.retention")}),g("div",{class:"snag-actions",children:g("button",{type:"button",ref:P,class:"snag-send snag-primary",onClick:tt,children:x("disclosure.ack")})})]}),A&&R&&g(U,{children:[g("input",{ref:L,class:"snag-input",type:"text",placeholder:x("composer.name"),"aria-label":x("composer.name"),value:T,onInput:h=>{const E=h.target.value;C(E),w.trim()&&c?.(w,E,y)}}),g("input",{class:`snag-input${j?" snag-input--bad":""}`,type:"email",inputMode:"email",autocomplete:"email",placeholder:x("composer.email"),"aria-label":x("composer.email"),"aria-invalid":j?"true":void 0,"aria-describedby":j?"snag-email-note":void 0,value:y,onInput:h=>{const E=h.target.value;m(E),w.trim()&&c?.(w,T,E)}}),j&&g("p",{class:"snag-note",id:"snag-email-note",children:x("composer.email.bad")})]}),A&&b&&g("blockquote",{class:"snag-quote",children:b}),A&&g("textarea",{ref:M,class:"snag-text",placeholder:x("composer.body.placeholder"),"aria-label":x("composer.body"),maxLength:ve,rows:3,enterkeyhint:"enter",value:w,onInput:h=>{const E=h.target;E.style.height="auto",E.style.height=`${Math.min(E.scrollHeight,128)}px`,ot(E.value)}}),A&&w.length>=jt&&g("p",{class:`snag-note${w.length>=ve?"":" snag-dim"}`,"aria-live":"polite",children:x("composer.chars",{n:Nt(ve-w.length)})}),A&&W&&o&&g("label",{class:"snag-shotopt",children:[g("input",{type:"checkbox",onChange:h=>o(h.currentTarget.checked)})," ",x("composer.shot")]}),A&&g("div",{class:"snag-actions",children:g("button",{type:"button",class:"snag-send snag-primary",disabled:!be,onClick:ye,children:x("action.post")})})]})]})}const Kt=` .snag-composer{position:fixed;box-sizing:border-box;z-index:${Rt.composer};background:${u.bg};color:${u.fg};border:1px solid ${u.border};border-radius:calc(${u.radius} + 4px);padding:12px;box-shadow:${u.shadow};pointer-events:auto;font:400 13px/1.45 ${u.font};display:flex;flex-direction:column;gap:8px}.snag-head{display:flex;align-items:center;gap:8px}.snag-target{margin:0;flex:1 1 auto;min-width:0;color:${u.muted};font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.snag-dismiss{flex:0 0 auto;appearance:none;border:0;background:transparent;color:${u.muted};font:inherit;font-size:12px;line-height:1;padding:6px;margin:-6px -4px -6px 0;border-radius:calc(${u.radius} - 2px);cursor:pointer}.snag-dismiss:hover{color:${u.fg};background:${u.hover}}.snag-dismiss:focus-visible{outline:2px solid ${u.focus};outline-offset:1px}.snag-dismiss.snag-armed{color:${u.anchorOrphan};font-weight:600;font-size:11px}.snag-disclose{display:flex;flex-direction:column;gap:6px}.snag-disclose p{margin:0;font-size:12px;line-height:1.5;color:${u.fg}}.snag-disclose .snag-disclose-title{font-weight:600;font-size:12px}.snag-disclose p:not(.snag-disclose-title){color:${u.muted}}.snag-quote{margin:0;padding:6px 10px;border-inline-start:3px solid ${u.accent};background:${u.surface};font-size:12px;color:${u.muted}}.snag-actions .snag-primary{flex:1 1 auto;justify-content:center;padding-block:10px;font-weight:600}@media (pointer:coarse){.snag-composer{left:0!important;right:0;top:auto!important;width:auto!important;inset-block-end:max(var(${f.tbH},68px),var(${f.kb},0px));border-radius:14px 14px 0 0;border-inline:0;border-block-end:0;padding:14px 16px calc(16px + env(safe-area-inset-bottom));gap:10px;box-shadow:0 -8px 32px rgb(0 0 0 / 28%)}.snag-composer .snag-primary{min-height:48px;font-size:15px}.snag-composer .snag-dismiss{padding:10px;margin:-10px -6px -10px 0;font-size:14px}.snag-composer .snag-text{min-height:88px}.snag-composer{overscroll-behavior:contain;padding-inline:calc(16px + env(safe-area-inset-left)) calc(16px + env(safe-area-inset-right))}.snag-scrim{position:fixed;inset:0;background:#0005;touch-action:none;pointer-events:auto}.snag-grab{margin:-14px 0 -8px;padding:12px 0;touch-action:none;pointer-events:auto;background:linear-gradient(${u.border} 0 0) 50%/36px 4px no-repeat}.snag-step{display:flex;gap:2px}.snag-step button{min-width:44px;min-height:44px;background:none;border:1px solid ${u.border};border-radius:8px;color:${u.fg}}.snag-shotopt{display:flex;align-items:center;gap:8px;min-height:44px}}@keyframes snag-pulse{50%{transform:scale(1.04)}}.snag-pulse{animation:snag-pulse 500ms ease-in-out}@media (prefers-reduced-motion:reduce){.snag-pulse{animation:none;outline:2px solid ${u.focus};outline-offset:3px}}`;function Vt(e,t,n){const r=e.ownerDocument??document;Ze(e,"form",Ot),Ze(e,"composer",Kt);const a=r.createElement("div");(n??e).appendChild(a);const o=()=>{Re(null,a),a.remove()},c=()=>a.querySelector(".snag-text"),l=()=>(c()?.value??"").trim().length>0,p=()=>{const i=a.firstElementChild;i&&(i.classList.remove("snag-pulse"),i.offsetWidth,i.classList.add("snag-pulse"),setTimeout(()=>i.classList.remove("snag-pulse"),600))};return Re(g(Yt,{...t,onSend:(i,d,b)=>{t.onSend(i,d,b),o()},onCancel:()=>{t.onCancel(),o()}}),a),{close:o,hasText:l,pulse:p,setLabel(i){const d=a.querySelector(".snag-target");d&&(d.textContent=i,d.title=i)}}}export{Vt as openComposer};