@siteping/widget 0.11.1 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/chunk-ISSCC4XP.js +9 -0
- package/dist/chunk-ISSCC4XP.js.map +1 -0
- package/dist/chunk-QDJDQQ6E.cjs +9 -0
- package/dist/chunk-QDJDQQ6E.cjs.map +1 -0
- package/dist/de-GCYQ3JCH.cjs +2 -0
- package/dist/de-GCYQ3JCH.cjs.map +1 -0
- package/dist/de-U3V6TPCZ.js +2 -0
- package/dist/de-U3V6TPCZ.js.map +1 -0
- package/dist/deep-link.d.cts +10 -0
- package/dist/deep-link.d.ts +10 -0
- package/dist/errors.d.cts +46 -16
- package/dist/errors.d.ts +46 -16
- package/dist/es-435K3LIV.cjs +2 -0
- package/dist/es-435K3LIV.cjs.map +1 -0
- package/dist/es-CSZUS23Z.js +2 -0
- package/dist/es-CSZUS23Z.js.map +1 -0
- package/dist/fr-DVOFE3WF.js +2 -0
- package/dist/fr-DVOFE3WF.js.map +1 -0
- package/dist/fr-RKRDGOTP.cjs +2 -0
- package/dist/fr-RKRDGOTP.cjs.map +1 -0
- package/dist/i18n.d.cts +14 -10
- package/dist/i18n.d.ts +14 -10
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +26 -19
- package/dist/index.d.ts +26 -19
- package/dist/index.global.js +2 -2
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/it-COLRVG26.cjs +2 -0
- package/dist/it-COLRVG26.cjs.map +1 -0
- package/dist/it-ZWPEN22A.js +2 -0
- package/dist/it-ZWPEN22A.js.map +1 -0
- package/dist/ja-HLZ2GVFS.js +2 -0
- package/dist/ja-HLZ2GVFS.js.map +1 -0
- package/dist/ja-SNVDY7QP.cjs +2 -0
- package/dist/ja-SNVDY7QP.cjs.map +1 -0
- package/dist/ko-ORUCHGUZ.cjs +2 -0
- package/dist/ko-ORUCHGUZ.cjs.map +1 -0
- package/dist/ko-ZNF7AMXI.js +2 -0
- package/dist/ko-ZNF7AMXI.js.map +1 -0
- package/dist/logger.d.cts +30 -0
- package/dist/logger.d.ts +30 -0
- package/dist/panel-4CIN3Y66.js +2 -0
- package/dist/panel-4CIN3Y66.js.map +1 -0
- package/dist/panel-TD4UUEZA.cjs +2 -0
- package/dist/panel-TD4UUEZA.cjs.map +1 -0
- package/dist/pt-QQX5CA7D.cjs +2 -0
- package/dist/pt-QQX5CA7D.cjs.map +1 -0
- package/dist/pt-WGEJRQFC.js +2 -0
- package/dist/pt-WGEJRQFC.js.map +1 -0
- package/dist/react.cjs +2 -3
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +9 -0
- package/dist/react.d.ts +9 -0
- package/dist/react.js +2 -3
- package/dist/react.js.map +1 -1
- package/dist/ru-SERDK6PQ.js +2 -0
- package/dist/ru-SERDK6PQ.js.map +1 -0
- package/dist/ru-YRXPV57R.cjs +2 -0
- package/dist/ru-YRXPV57R.cjs.map +1 -0
- package/dist/schema.d.cts +31 -0
- package/dist/schema.d.ts +31 -0
- package/dist/screenshot-storage.d.cts +14 -17
- package/dist/screenshot-storage.d.ts +14 -17
- package/dist/siteping-core.d.cts +8 -5
- package/dist/siteping-core.d.ts +8 -5
- package/dist/store-helpers.d.cts +13 -9
- package/dist/store-helpers.d.ts +13 -9
- package/dist/text.d.cts +28 -0
- package/dist/text.d.ts +28 -0
- package/dist/types.d.cts +114 -37
- package/dist/types.d.ts +114 -37
- package/dist/wire.d.cts +6 -1
- package/dist/wire.d.ts +6 -1
- package/package.json +7 -5
- package/dist/chunk-26577FDQ.js +0 -9
- package/dist/chunk-26577FDQ.js.map +0 -1
- package/dist/chunk-3EHIWTJH.js +0 -9
- package/dist/chunk-3EHIWTJH.js.map +0 -1
- package/dist/chunk-6MCFOKVG.cjs +0 -9
- package/dist/chunk-6MCFOKVG.cjs.map +0 -1
- package/dist/chunk-Q34GDCKE.cjs +0 -9
- package/dist/chunk-Q34GDCKE.cjs.map +0 -1
- package/dist/de-73CTH2E4.cjs +0 -2
- package/dist/de-73CTH2E4.cjs.map +0 -1
- package/dist/de-GUUJUHYP.js +0 -2
- package/dist/de-GUUJUHYP.js.map +0 -1
- package/dist/es-3MXMSDUC.js +0 -2
- package/dist/es-3MXMSDUC.js.map +0 -1
- package/dist/es-WJZ3XARH.cjs +0 -2
- package/dist/es-WJZ3XARH.cjs.map +0 -1
- package/dist/fr-52F3ZCLQ.js +0 -2
- package/dist/fr-52F3ZCLQ.js.map +0 -1
- package/dist/fr-ZCRIJWI3.cjs +0 -2
- package/dist/fr-ZCRIJWI3.cjs.map +0 -1
- package/dist/it-MEUT3RCC.js +0 -2
- package/dist/it-MEUT3RCC.js.map +0 -1
- package/dist/it-TGUTW6MO.cjs +0 -2
- package/dist/it-TGUTW6MO.cjs.map +0 -1
- package/dist/ja-DOS7AWLW.cjs +0 -2
- package/dist/ja-DOS7AWLW.cjs.map +0 -1
- package/dist/ja-U7NRNGPQ.js +0 -2
- package/dist/ja-U7NRNGPQ.js.map +0 -1
- package/dist/ko-U2CS6XQ4.js +0 -2
- package/dist/ko-U2CS6XQ4.js.map +0 -1
- package/dist/ko-ZUL567LW.cjs +0 -2
- package/dist/ko-ZUL567LW.cjs.map +0 -1
- package/dist/panel-3BEMZFIR.cjs +0 -2
- package/dist/panel-3BEMZFIR.cjs.map +0 -1
- package/dist/panel-HPDIAYLQ.js +0 -2
- package/dist/panel-HPDIAYLQ.js.map +0 -1
- package/dist/panel-MIWFGD7X.cjs +0 -2
- package/dist/panel-MIWFGD7X.cjs.map +0 -1
- package/dist/panel-XTNU6XHV.js +0 -2
- package/dist/panel-XTNU6XHV.js.map +0 -1
- package/dist/pt-BZRBHCYN.cjs +0 -2
- package/dist/pt-BZRBHCYN.cjs.map +0 -1
- package/dist/pt-MOS5DVOG.js +0 -2
- package/dist/pt-MOS5DVOG.js.map +0 -1
- package/dist/ru-KDNRHHNZ.cjs +0 -2
- package/dist/ru-KDNRHHNZ.cjs.map +0 -1
- package/dist/ru-VSWB5NKK.js +0 -2
- package/dist/ru-VSWB5NKK.js.map +0 -1
package/dist/chunk-26577FDQ.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
function q(t){return typeof t=="object"&&t!==null}function I(t,e){return q(t)&&e in t}var _=["en","fr","de","es","it","pt","ru","ja","ko"],Ne=200;var Ie=["open","in_progress","resolved","wont_fix"],Z=["resolved","wont_fix"];function C(t){return Z.includes(t)}function _e(t,e=new Date){return C(t)?{status:t,resolvedAt:e}:{status:t,resolvedAt:null}}var De=5e3;var P=class extends Error{code="STORE_DUPLICATE";constructor(e="Duplicate record",n){super(e,n),this.name="StoreDuplicateError";}};function J(t,e){return I(t,"code")&&t.code===e}function He(t){return t instanceof P?true:J(t,"STORE_DUPLICATE")||J(t,"P2002")}function je(t){return {cssSelector:t.anchor.cssSelector,xpath:t.anchor.xpath,textSnippet:t.anchor.textSnippet,elementTag:t.anchor.elementTag,elementId:t.anchor.elementId,textPrefix:t.anchor.textPrefix,textSuffix:t.anchor.textSuffix,fingerprint:t.anchor.fingerprint,neighborText:t.anchor.neighborText,anchorKey:t.anchor.anchorKey??null,xPct:t.rect.xPct,yPct:t.rect.yPct,wPct:t.rect.wPct,hPct:t.rect.hPct,scrollX:t.scrollX,scrollY:t.scrollY,viewportW:t.viewportW,viewportH:t.viewportH,devicePixelRatio:t.devicePixelRatio}}var $e=191,Ue=191;var ee=/^(?!\.)(?!.*\.\.)[\p{L}\p{M}\p{N}!#$%&'*+/=?^_`{|}~.-]{0,63}[\p{L}\p{M}\p{N}!#$%&'*+/=?^_`{|}~-]@(?:[\p{L}\p{N}](?:[\p{L}\p{M}\p{N}-]{0,61}[\p{L}\p{M}\p{N}])?\.)+[\p{L}\p{N}][\p{L}\p{M}\p{N}-]{0,61}[\p{L}\p{M}\p{N}]$/u;function ze(t){return ee.test(t)}var S=class extends Error{code;retryable;constructor(e,n,s){super(e),this.code=n,this.retryable=s,this.name="SitepingError";}},A=class extends S{constructor(e){super(e,"NETWORK",true),this.name="SitepingNetworkError";}},B=class extends S{status;constructor(e,n){super(e,"VALIDATION",false),this.name="SitepingValidationError",this.status=n;}},R=class extends S{status;constructor(e,n){super(e,"AUTH",false),this.name="SitepingAuthError",this.status=n;}};function D(t){return (t.split(/[-_]/)[0]??t).toLowerCase()}function Ke(t){try{return Intl.getCanonicalLocales(t.replace(/_/g,"-"))[0]}catch{return}}function Ve(t){let e=Ke(t);return e||(console.warn(`[siteping] Invalid locale "${t}", falling back to "en"`),"en")}function H(t,e){let n={en:t};function s(o){return o!=="en"&&_.includes(o)}return {registerLocale(o,r){n[D(o)]=r;},async loadLocale(o){let r=D(o),a=n[r];if(a)return a;if(!s(r))return null;let p=await e[r]();return n[r]=p,p},createT(o){let r=D(o);return r!=="en"&&!n[r]&&!s(r)&&console.warn(`[siteping] Unknown locale "${o}", falling back to "en"`),a=>n[r]?.[a]??t[a]??a}}}function j(t,e){return t.replace(/\{(\w+)\}/g,(n,s)=>{let o=e[s];return o===void 0?n:String(o)})}function $(t,e,n){return j(t(e),n)}function Ge(){try{return crypto.randomUUID()}catch{return `${Date.now()}-${Math.random().toString(36).slice(2)}`}}function We(t){let e=new URLSearchParams({projectName:t.projectName});return t.page&&e.set("page",String(t.page)),t.limit&&e.set("limit",String(t.limit)),t.type&&e.set("type",t.type),t.status&&e.set("status",t.status),t.statuses?.length&&e.set("statuses",t.statuses.join(",")),t.search&&e.set("search",t.search),t.url&&e.set("url",t.url),t.urlPattern&&e.set("urlPattern",t.urlPattern),e}function Ye(t,e){let n={...t};for(let[s,o]of Object.entries(e??{})){for(let r of Object.keys(n))r.toLowerCase()===s.toLowerCase()&&delete n[r];n[s]=o;}return n}function Xe(t,e){let n=e.toString();if(!n)return t;let s=t.includes("#")?t.indexOf("#"):t.length,o=t.slice(0,s),r=/[?&]$/.test(o)?"":o.includes("?")?"&":"?";return o+r+n+t.slice(s)}async function Qe(t,e){let n=await t.text().catch(()=>"Unknown error"),s=n?`${t.status} ${n}`:`${t.status}`,o=`${e}: ${s}`;return t.status===401||t.status===403?new R(o,t.status):t.status>=400&&t.status<500?new B(o,t.status):new S(o,"SERVER",false)}var te=(t,e)=>t?.[e];function qe(t){return te(t,"status")===409||te(t,"code")==="STORE_LIMIT"}function Je(t,e){if(t instanceof A)return t;let n=t instanceof Error?t.message:String(t);return new A(`${e}: ${n}`)}var ne="(max-width: 640px), (max-height: 500px) and (pointer: coarse)";function h(t){let s=document.createRange().createContextualFragment(t).firstElementChild;if(s?.nodeName.toLowerCase()!=="svg")throw new Error("[siteping] Invalid SVG string");for(let o of [...s.attributes])o.name.startsWith("on")&&s.removeAttribute(o.name);for(let o of s.querySelectorAll("*"))for(let r of [...o.attributes])r.name.startsWith("on")&&o.removeAttribute(r.name);return s}function i(t,e){let n=document.createElement(t);if(e)for(let[s,o]of Object.entries(e))s==="class"?n.className=o:s==="style"?n.style.cssText=o:n.setAttribute(s,o);return n}function l(t,e){t.textContent=e;}function F(t,e){let n=t.getRootNode(),s=n instanceof ShadowRoot?n.host:null,o=a=>{t.contains(a.target)||e();},r=a=>{a.target!==s&&e();};return n.addEventListener("click",o,true),s&&document.addEventListener("click",r,true),()=>{n.removeEventListener("click",o,true),s&&document.removeEventListener("click",r,true);}}function U(t,e){t.hidden=e,t.style.display=e?"none":"";}function z(t){let e=Array.from(t.childNodes).map(n=>n.cloneNode(true));return t.disabled=true,t.replaceChildren(i("div",{class:"sp-spinner sp-spinner--sm"})),()=>{t.replaceChildren(...e),t.disabled=false;}}function Sn(){let t=navigator.userAgentData;return t?t.platform==="macOS":navigator.platform?.includes("Mac")??/Macintosh|Mac OS X/i.test(navigator.userAgent)}function En(t,e="en"){let n=Date.now()-new Date(t).getTime(),s=Math.floor(n/1e3);if(s<60)return new Intl.RelativeTimeFormat(e,{numeric:"auto"}).format(0,"second");let o=new Intl.RelativeTimeFormat(e,{numeric:"always",style:"narrow"}),r=Math.floor(s/60);if(r<60)return o.format(-r,"minute");let a=Math.floor(r/60);if(a<24)return o.format(-a,"hour");let p=Math.floor(a/24);return p<7?o.format(-p,"day"):new Date(t).toLocaleDateString(e)}var Ze=["pointerdown","mousedown","touchstart","touchend","click","focusin","focusout","wheel","touchmove"],se=["inert","aria-hidden"],oe=new WeakSet,V=new WeakSet,re=new WeakMap,G=new WeakMap,ie=t=>t instanceof ShadowRoot?t.host:t.parentNode;function ae(t){for(let e=t;e;e=ie(e))if(oe.has(e))return true;return false}var O=t=>t instanceof Node&&ae(t),et=t=>t.stopPropagation(),tt=t=>{let{key:e}=t,n=pe(t);e!=="Tab"&&e!=="Escape"&&n instanceof HTMLElement&&(n.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(n.tagName))&&t.stopPropagation();};function le(t,e){oe.add(t),e&&re.set(t,e);for(let s of Ze)t.addEventListener(s,et,{passive:true});for(let s of ["keydown","keypress","keyup"])t.addEventListener(s,tt);let n=()=>{for(let s of se)(s!=="inert"||!V.has(t))&&t.removeAttribute(s);};n(),new MutationObserver(n).observe(t,{attributeFilter:se});}function An(t,e){e?V.add(t):V.delete(t),t.toggleAttribute("inert",e);}function Ln(t,e){let n=G.get(t);return n||(n=new Set,G.set(t,n)),n.add(e),()=>{n.delete(e);}}function K(){if(getComputedStyle(document.body).pointerEvents==="none")return true;for(let t of document.querySelectorAll('[aria-modal="true"]'))if(t.getClientRects().length>0&&getComputedStyle(t).visibility==="visible"&&!ae(t))return true;return false}function pe(t){let e=t.composedPath()[0];for(;e instanceof Element;){let n=(e.shadowRoot??re.get(e))?.activeElement;if(!n)break;e=n;}return e instanceof Node?e:null}function nt(t){for(let e=pe(t);e;e=ie(e))for(let n of G.get(e)??[])if(n())return true;return false}function Bn(){let t=o=>{O(o.target)&&K()&&o.stopImmediatePropagation();},s=[["pointerdown",t],["focusin",t],["focusout",o=>{(O(o.target)||O(o.relatedTarget))&&K()&&o.stopImmediatePropagation();}],["keydown",o=>{o.key==="Escape"&&O(o.target)&&K()&&nt(o)&&o.preventDefault();}]];for(let[o,r]of s)window.addEventListener(o,r,true);return ()=>{for(let[o,r]of s)window.removeEventListener(o,r,true);}}var Pn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/><circle cx="12" cy="10" r="1" fill="currentColor" stroke="none"/><circle cx="8" cy="10" r="1" fill="currentColor" stroke="none"/><circle cx="16" cy="10" r="1" fill="currentColor" stroke="none"/></svg>',Fn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>',On='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94"/><path d="M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19"/><line x1="1" y1="1" x2="23" y2="23"/></svg>',Mn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>',Nn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>',In='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg>',_n='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>',Dn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>',Hn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="8" y="6" width="8" height="14" rx="4"/><path d="M19 9h2"/><path d="M3 9h2"/><path d="M19 13h2"/><path d="M3 13h2"/><path d="M19 17h2"/><path d="M3 17h2"/><path d="M10 2h4"/></svg>',jn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/></svg>',$n='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polygon points="12 2 2 7 12 12 22 7 12 2"/><polyline points="2 17 12 22 22 17"/><polyline points="2 12 12 17 22 12"/></svg>',Un='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="3" fill="currentColor" stroke="none"/></svg>',zn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>',Kn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="1 4 1 10 7 10"/><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"/></svg>',Vn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="3 6 5 6 21 6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/><line x1="10" y1="11" x2="10" y2="17"/><line x1="14" y1="11" x2="14" y2="17"/></svg>',de='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>',Gn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><line x1="3" y1="6" x2="3.01" y2="6"/><line x1="3" y1="12" x2="3.01" y2="12"/><line x1="3" y1="18" x2="3.01" y2="18"/></svg>',Wn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z"/></svg>';var ue="#0066ff",st=/^#[0-9a-fA-F]{6}$/,ce=/^#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])$/,ot=/^#[0-9a-fA-F]{8}$/;function rt(t){if(st.test(t))return t;let e=ce.test(t)?t.match(ce):null;return e?`#${e[1]}${e[1]}${e[2]}${e[2]}${e[3]}${e[3]}`:ot.test(t)?t.slice(0,7):(console.warn(`[siteping] Invalid accentColor "${t}" \u2014 only hex colors (#RGB, #RRGGBB, #RRGGBBAA) are supported. Using default.`),ue)}function it(t,e){let n=Math.max(0,Math.round(parseInt(t.slice(1,3),16)*(1-e))),s=Math.max(0,Math.round(parseInt(t.slice(3,5),16)*(1-e))),o=Math.max(0,Math.round(parseInt(t.slice(5,7),16)*(1-e)));return `#${n.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}`}function at(){return typeof window>"u"?false:window.matchMedia("(prefers-color-scheme: dark)").matches}function lt(t){return t==="dark"||t==="auto"&&at()?"dark":"light"}function Xn(t=ue,e){let n=rt(t),s=it(n,.15);return lt(e)==="dark"?{accent:n,accentLight:n+"22",accentDark:s,accentGlow:n+"44",accentGradient:`linear-gradient(135deg, ${n}, ${s})`,bg:"#0f172a",bgHover:"#1e293b",text:"#f1f5f9",textSecondary:"#94a3b8",textTertiary:"#64748b",border:"#334155",shadow:"rgba(0, 0, 0, 0.3)",glassBg:"rgba(15, 23, 42, 0.78)",glassBgHeavy:"rgba(15, 23, 42, 0.88)",glassBorder:"rgba(51, 65, 85, 0.5)",glassBorderSubtle:"rgba(51, 65, 85, 0.3)",typeQuestion:"#60a5fa",typeChange:"#fbbf24",typeBug:"#f87171",typeOther:"#94a3b8",typeQuestionBg:"rgba(59, 130, 246, 0.15)",typeChangeBg:"rgba(245, 158, 11, 0.15)",typeBugBg:"rgba(239, 68, 68, 0.15)",typeOtherBg:"rgba(100, 116, 139, 0.15)",statusOpen:"#4ade80",statusOpenBg:"rgba(74, 222, 128, 0.15)",statusResolved:"#94a3b8",statusResolvedBg:"rgba(148, 163, 184, 0.15)",statusInProgress:"#fbbf24",statusInProgressBg:"rgba(245, 158, 11, 0.15)",statusWontFix:"#94a3b8",statusWontFixBg:"rgba(148, 163, 184, 0.15)"}:{accent:n,accentLight:n+"14",accentDark:s,accentGlow:n+"33",accentGradient:`linear-gradient(135deg, ${n}, ${s})`,bg:"#ffffff",bgHover:"#f8f9fb",text:"#0f172a",textSecondary:"#475569",textTertiary:"#64748b",border:"#e2e8f0",shadow:"rgba(0, 0, 0, 0.06)",glassBg:"rgba(255, 255, 255, 0.72)",glassBgHeavy:"rgba(255, 255, 255, 0.85)",glassBorder:"rgba(255, 255, 255, 0.35)",glassBorderSubtle:"rgba(255, 255, 255, 0.18)",typeQuestion:"#3b82f6",typeChange:"#b45309",typeBug:"#ef4444",typeOther:"#64748b",typeQuestionBg:"#eff6ff",typeChangeBg:"#fffbeb",typeBugBg:"#fef2f2",typeOtherBg:"#f8fafc",statusOpen:"#16a34a",statusOpenBg:"#f0fdf4",statusResolved:"#64748b",statusResolvedBg:"#f1f5f9",statusInProgress:"#d97706",statusInProgressBg:"#fffbeb",statusWontFix:"#64748b",statusWontFixBg:"#f1f5f9"}}function W(t,e){switch(t){case "question":return e.typeQuestion;case "change":return e.typeChange;case "bug":return e.typeBug;default:return e.typeOther}}function Qn(t,e){switch(t){case "in_progress":return e.statusInProgress;case "resolved":return e.statusResolved;case "wont_fix":return e.statusWontFix;default:return e.statusOpen}}function qn(t,e){switch(t){case "in_progress":return e.statusInProgressBg;case "resolved":return e.statusResolvedBg;case "wont_fix":return e.statusWontFixBg;default:return e.statusOpenBg}}function he(t,e){switch(t){case "question":return e.typeQuestionBg;case "change":return e.typeChangeBg;case "bug":return e.typeBugBg;default:return e.typeOtherBg}}function Jn(t){return `--sp-accent: ${t.accent};--sp-accent-light: ${t.accentLight};--sp-accent-dark: ${t.accentDark};--sp-accent-glow: ${t.accentGlow};--sp-accent-gradient: ${t.accentGradient};--sp-bg: ${t.bg};--sp-bg-hover: ${t.bgHover};--sp-text: ${t.text};--sp-text-secondary: ${t.textSecondary};--sp-text-tertiary: ${t.textTertiary};--sp-border: ${t.border};--sp-shadow: ${t.shadow};--sp-glass-bg: ${t.glassBg};--sp-glass-bg-heavy: ${t.glassBgHeavy};--sp-glass-border: ${t.glassBorder};--sp-glass-border-subtle: ${t.glassBorderSubtle};--sp-type-question: ${t.typeQuestion};--sp-type-change: ${t.typeChange};--sp-type-bug: ${t.typeBug};--sp-type-other: ${t.typeOther};--sp-type-question-bg: ${t.typeQuestionBg};--sp-type-change-bg: ${t.typeChangeBg};--sp-type-bug-bg: ${t.typeBugBg};--sp-type-other-bg: ${t.typeOtherBg};--sp-radius: 12px;--sp-radius-lg: 16px;--sp-radius-xl: 20px;--sp-radius-full: 9999px;--sp-blur: 20px;--sp-blur-heavy: 32px;--sp-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.04);--sp-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.04);--sp-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);--sp-shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.1), 0 4px 8px rgba(0, 0, 0, 0.04);--sp-shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.12), 0 8px 16px rgba(0, 0, 0, 0.06);--sp-font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;`}function ge(t){return typeof window.matchMedia=="function"&&window.matchMedia(t).matches}function ts(){return ge(ne)}function ns(){return ge("(pointer: coarse)")}function ss(t){let e=window.visualViewport;if(!e)return ()=>{};let n=()=>t(Math.max(0,Math.round(window.innerHeight-e.height-e.offsetTop)),e.height);return n(),e.addEventListener("resize",n),e.addEventListener("scroll",n),()=>{e.removeEventListener("resize",n),e.removeEventListener("scroll",n);}}var be={"panel.title":"Feedbacks","panel.ariaLabel":"Siteping feedback panel","panel.feedbackList":"Feedback list","panel.loading":"Loading feedbacks","panel.close":"Close panel","panel.deleteAll":"Delete all","panel.deleteAllConfirmTitle":"Delete all","panel.deleteAllConfirmMessage":"Delete all feedbacks for this project? This action cannot be undone.","panel.search":"Search...","panel.searchAria":"Search feedbacks","panel.filterAll":"All","panel.loadError":"Failed to load","panel.retry":"Retry","panel.empty":"No feedback yet","panel.showMore":"Show more","panel.showLess":"Show less","panel.resolve":"Resolve","panel.reopen":"Reopen","panel.delete":"Delete","panel.cancel":"Cancel","panel.confirmDelete":"Delete","panel.loadMore":"Load more ({remaining} remaining)","panel.statusAll":"All","panel.statusOpen":"Open","panel.statusResolved":"Resolved","panel.statusInProgress":"In progress","panel.statusWontFix":"Won't fix","type.label":"Type","type.question":"Question","type.change":"Change","type.bug":"Bug","type.other":"Other","status.label":"Status","scope.label":"Scope","scope.thisPage":"This page","scope.thisType":"This type","scope.all":"All pages","panel.filterMine":"Mine","panel.filterMineHint":"Only the feedback sent from this browser","fab.aria":"Siteping \u2014 Feedback menu","fab.messages":"Show sidebar","fab.annotate":"Create new annotation","fab.annotations":"Show or hide markers","annotator.instruction":"Draw a rectangle on the area to comment \u2014 or press Enter to comment on the last focused element","annotator.instantInstruction":"Comment on the clicked spot","annotator.touchInstruction":"Tap an element or drag to select an area","annotator.cancel":"Cancel","popup.ariaLabel":"Feedback form","popup.placeholder":"Describe your feedback...","popup.textareaAria":"Feedback message","popup.submitHintMac":"\u2318+Enter to send","popup.submitHintOther":"Ctrl+Enter to send","popup.cancel":"Cancel","popup.submit":"Send","identity.title":"Identify yourself","identity.nameLabel":"Name","identity.namePlaceholder":"Your name","identity.emailLabel":"Email","identity.emailPlaceholder":"your@email.com","identity.cancel":"Cancel","identity.submit":"Continue","marker.approximate":"Approximate position (confidence: {confidence}%)","marker.aria":"Feedback #{number}: {type} \u2014 {message}","marker.count":"{count} feedback markers displayed","fab.badge":"{count} unresolved feedbacks","feedback.sent.confirmation":"Feedback sent successfully","feedback.error.message":"Failed to send feedback","feedback.deleted.confirmation":"Feedback deleted","badge.count":"{count} unresolved feedbacks","bulk.selectAll":"Select all","bulk.selected":"{count} selected","bulk.resolve":"Resolve","bulk.delete":"Delete","bulk.deselect":"Deselect","sort.newest":"Newest first","sort.oldest":"Oldest first","sort.byType":"By type","sort.openFirst":"Open first","sort.label":"Sort","group.byPage":"By page","group.feedbacks":"{count} feedbacks","stats.open":"Open","stats.resolved":"Resolved","stats.bugs":"Bugs","stats.progress":"{percent}% resolved","detail.back":"Back","detail.title":"Feedback #{number}","detail.status":"Status","detail.message":"Message","detail.screenshot":"Screenshot","detail.screenshotAlt":"Screenshot of the annotated area","detail.metadata":"Details","detail.annotation":"Annotation","detail.page":"Page","detail.author":"Author","detail.date":"Created","detail.viewport":"Viewport","detail.browser":"Browser","detail.resolvedAt":"Resolved at","detail.closedAt":"Closed at","detail.goToAnnotation":"Go to annotation","detail.element":"Element","detail.selector":"Selector","detail.position":"Position","detail.resolve":"Resolve","detail.reopen":"Reopen","detail.delete":"Delete","detail.diagnostics":"Diagnostics","detail.diagnostics.console":"Console","detail.diagnostics.network":"Failed network","detail.diagnostics.expand":"Show diagnostics","detail.diagnostics.collapse":"Hide diagnostics","detail.diagnostics.noEntries":"No entries","comments.title":"Replies","comments.placeholder":"Reply to the team...","comments.error":"Not sent. Try again.","comments.full":"This thread is full.","comments.team":"Team","shortcuts.title":"Keyboard shortcuts","shortcuts.navigate":"Navigate feedbacks","shortcuts.resolve":"Resolve / Reopen","shortcuts.delete":"Delete","shortcuts.search":"Focus search","shortcuts.select":"Toggle selection","shortcuts.help":"Show shortcuts","shortcuts.close":"Close","shortcuts.hint":"Keyboard shortcuts","export.label":"Export","export.csv":"Export CSV","export.json":"Export JSON"};var Y=H(be,{de:()=>import('./de-GUUJUHYP.js').then(t=>t.de),es:()=>import('./es-3MXMSDUC.js').then(t=>t.es),fr:()=>import('./fr-52F3ZCLQ.js').then(t=>t.fr),it:()=>import('./it-MEUT3RCC.js').then(t=>t.it),ja:()=>import('./ja-U7NRNGPQ.js').then(t=>t.ja),ko:()=>import('./ko-U2CS6XQ4.js').then(t=>t.ko),pt:()=>import('./pt-MOS5DVOG.js').then(t=>t.pt),ru:()=>import('./ru-VSWB5NKK.js').then(t=>t.ru)}),ls=Y.registerLocale,ps=Y.loadLocale,ds=Y.createT,E=$;function me(t,e){switch(t){case "question":return e("type.question");case "change":return e("type.change");case "bug":return e("type.bug");case "other":return e("type.other");default:return t}}function fe(t,e){switch(t){case "open":return e("panel.statusOpen");case "in_progress":return e("panel.statusInProgress");case "resolved":return e("panel.statusResolved");case "wont_fix":return e("panel.statusWontFix");default:return t}}var pt='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>',dt='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="2"/><line x1="3" y1="9" x2="21" y2="9"/><line x1="3" y1="15" x2="21" y2="15"/><line x1="9" y1="3" x2="9" y2="21"/><line x1="15" y1="3" x2="15" y2="21"/></svg>',ct='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3H6a2 2 0 0 0-2 2v4a2 2 0 0 1-2 2 2 2 0 0 1 2 2v4a2 2 0 0 0 2 2h2"/><path d="M16 3h2a2 2 0 0 1 2 2v4a2 2 0 0 0 2 2 2 2 0 0 0-2 2v4a2 2 0 0 1-2 2h-2"/></svg>',gs=".sp-export-btn{padding:5px 12px;border-radius:var(--sp-radius-full);border:1px solid var(--sp-border);background:transparent;color:var(--sp-text-tertiary);font-family:var(--sp-font);font-size:11px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all 0.2s ease;position:relative;}.sp-export-btn svg{width:13px;height:13px;}.sp-export-btn:hover{border-color:var(--sp-accent);color:var(--sp-accent);background:var(--sp-accent-light);}.sp-export-btn:disabled{opacity:0.5;cursor:not-allowed;pointer-events:none;}.sp-export-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:180px;padding:4px;border-radius:var(--sp-radius);background:var(--sp-glass-bg-heavy);backdrop-filter:blur(var(--sp-blur));-webkit-backdrop-filter:blur(var(--sp-blur));border:1px solid var(--sp-glass-border);box-shadow:var(--sp-shadow-lg);z-index:10;opacity:0;transform:translateY(-4px) scale(0.97);transition:opacity 0.15s ease,transform 0.15s ease;pointer-events:none;}.sp-export-menu--open{opacity:1;transform:translateY(0) scale(1);pointer-events:auto;}.sp-export-option{display:flex;align-items:center;gap:10px;width:100%;padding:8px 16px;border:none;border-radius:8px;background:transparent;color:var(--sp-text-secondary);font-family:var(--sp-font);font-size:13px;font-weight:500;cursor:pointer;transition:all 0.15s ease;text-align:left;}.sp-export-option:hover,.sp-export-option:focus-visible{background:var(--sp-accent-light);color:var(--sp-accent);}.sp-export-option-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;}.sp-export-option-icon svg{width:16px;height:16px;}.sp-export-option-label{flex:1;}@media (forced-colors: active){.sp-export-btn,.sp-export-option,.sp-export-menu{border:2px solid ButtonText !important;background:Canvas !important;color:ButtonText !important;}.sp-export-btn:focus-visible,.sp-export-option:focus-visible{outline:3px solid Highlight !important;}}",xe=["id","type","status","message","url","authorName","authorEmail","createdAt","resolvedAt","viewport"];function ut(t){let e=/^[=+\-@\t\r]/.test(t)?`'${t}`:t;return e.includes('"')||e.includes(",")||e.includes(`
|
|
2
|
-
`)||e.includes("\r")?`"${e.replace(/"/g,'""')}"`:e}function ht(t){let e=xe.join(","),n=t.map(s=>xe.map(o=>{let r=s[o];return ut(r==null?"":String(r))}).join(","));return [e,...n].join(`
|
|
3
|
-
`)}function gt(t){return JSON.stringify(t,null,2)}function ve(t,e,n){let s=new Blob([t],{type:n}),o=URL.createObjectURL(s),r=document.createElement("a");r.href=o,r.download=e,r.style.display="none",le(r),document.body.appendChild(r),r.click(),requestAnimationFrame(()=>{URL.revokeObjectURL(o),r.remove();});}var ye=class{constructor(e,n,s){this.getFeedbacks=n;this.element=i("div",{style:"position: relative; display: inline-flex;"});let o=document.createElement("button");o.className="sp-export-btn",o.setAttribute("aria-haspopup","true"),o.setAttribute("aria-expanded","false"),o.appendChild(h(pt));let r=document.createElement("span");l(r,s("export.label")),o.appendChild(r),o.addEventListener("click",d=>{d.stopPropagation(),this.toggle();}),this.menu=i("div",{class:"sp-export-menu"}),this.menu.setAttribute("role","menu");let a=this.createOption(dt,s("export.csv"),()=>{this.exportAs("csv");}),p=this.createOption(ct,s("export.json"),()=>{this.exportAs("json");});this.menu.appendChild(a),this.menu.appendChild(p),this.element.appendChild(o),this.element.appendChild(this.menu),this.element.addEventListener("keydown",d=>{d.key!=="Escape"||!this.isOpen||(d.stopPropagation(),this.close(),o.focus());});}getFeedbacks;element;menu;isOpen=false;removeOutsideClick=null;createOption(e,n,s){let o=document.createElement("button");o.className="sp-export-option",o.setAttribute("role","menuitem");let r=i("span",{class:"sp-export-option-icon"});r.appendChild(h(e));let a=i("span",{class:"sp-export-option-label"});return l(a,n),o.appendChild(r),o.appendChild(a),o.addEventListener("click",p=>{p.stopPropagation(),s(),this.close();}),o}toggle(){this.isOpen?this.close():this.open();}open(){this.isOpen=true,this.removeOutsideClick=F(this.element,()=>this.close()),this.menu.classList.add("sp-export-menu--open"),this.element.querySelector(".sp-export-btn")?.setAttribute("aria-expanded","true");}close(){this.isOpen=false,this.removeOutsideClick?.(),this.removeOutsideClick=null,this.menu.classList.remove("sp-export-menu--open"),this.element.querySelector(".sp-export-btn")?.setAttribute("aria-expanded","false");}exportAs(e){let n=this.getFeedbacks();if(n.length===0)return;let s=n[0]?.projectName??"feedbacks",o=new Date().toISOString().slice(0,10),r=s.replace(/[^a-zA-Z0-9_-]/g,"_");if(e==="csv"){let a=ht(n);ve(a,`feedbacks-${r}-${o}.csv`,"text/csv;charset=utf-8");}else {let a=gt(n);ve(a,`feedbacks-${r}-${o}.json`,"application/json;charset=utf-8");}}destroy(){this.close(),this.element.remove();}};var ke='<svg viewBox="0 0 18 18" fill="none" aria-hidden="true"><rect x="1" y="1" width="16" height="16" rx="4" stroke="currentColor" stroke-width="2"/></svg>',Ce='<svg viewBox="0 0 18 18" fill="none" aria-hidden="true"><rect x="1" y="1" width="16" height="16" rx="4" fill="url(#sp-cb-grad)" stroke="none"/><polyline points="5 9 8 12 13 6" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><defs><linearGradient id="sp-cb-grad" x1="0" y1="0" x2="18" y2="18" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-color="var(--sp-accent)"/><stop offset="100%" stop-color="var(--sp-accent-dark)"/></linearGradient></defs></svg>',xs=".sp-bulk-checkbox{position:relative;width:16px;height:16px;flex-shrink:0;cursor:pointer;border-radius:4px;color:var(--sp-border);opacity:0;transition:opacity 0.15s ease,color 0.15s ease,transform 0.15s ease;display:inline-flex;align-items:center;justify-content:center;}.sp-bulk-checkbox svg{width:16px;height:16px;display:block;}.sp-bulk-checkbox:hover{color:var(--sp-accent);transform:scale(1.1);}.sp-bulk-checkbox--checked{color:var(--sp-accent);opacity:1 !important;filter:drop-shadow(0 0 4px var(--sp-accent-glow));}.sp-card:hover .sp-bulk-checkbox{opacity:1;}.sp-list--has-selection .sp-bulk-checkbox{opacity:1;}.sp-card--selected{border-left:3px solid var(--sp-accent) !important;background:var(--sp-accent-light) !important;}.sp-card--selected:hover{background:var(--sp-accent-light) !important;}.sp-bulk-select-all{display:flex;align-items:center;gap:8px;padding:8px 12px;margin-bottom:4px;border-radius:var(--sp-radius);background:transparent;cursor:pointer;opacity:0;transition:opacity 0.2s ease,background 0.2s ease;user-select:none;font-family:var(--sp-font);font-size:12px;font-weight:500;color:var(--sp-text-secondary);}.sp-bulk-select-all:hover{background:var(--sp-bg-hover);}.sp-list:hover .sp-bulk-select-all,.sp-list--has-selection .sp-bulk-select-all{opacity:1;}.sp-bulk-select-all .sp-bulk-checkbox{opacity:1;}@keyframes sp-bulk-bar-in{from{transform:translateY(100%) scale(0.95);opacity:0;}to{transform:translateY(0) scale(1);opacity:1;}}@keyframes sp-bulk-bar-out{from{transform:translateY(0) scale(1);opacity:1;}to{transform:translateY(100%) scale(0.95);opacity:0;}}.sp-bulk-bar{position:absolute;bottom:16px;left:16px;right:16px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-radius:16px;background:var(--sp-glass-bg-heavy);backdrop-filter:blur(var(--sp-blur-heavy));-webkit-backdrop-filter:blur(var(--sp-blur-heavy));border:1px solid var(--sp-glass-border);box-shadow:var(--sp-shadow-xl);z-index:10;pointer-events:none;opacity:0;transform:translateY(100%) scale(0.95);transition:transform 0.35s cubic-bezier(0.34,1.56,0.64,1),opacity 0.25s ease;font-family:var(--sp-font);}.sp-bulk-bar--visible{pointer-events:auto;opacity:1;transform:translateY(0) scale(1);}.sp-bulk-bar-count{font-size:13px;font-weight:600;color:var(--sp-text);white-space:nowrap;letter-spacing:-0.01em;}.sp-bulk-bar-actions{display:flex;align-items:center;gap:6px;}.sp-bulk-btn-resolve,.sp-bulk-btn-delete{padding:7px 14px;border-radius:var(--sp-radius-full);border:1.5px solid transparent;background:transparent;font-family:var(--sp-font);font-size:12px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:5px;transition:all 0.2s ease;white-space:nowrap;}.sp-bulk-btn-resolve{color:#22c55e;border-color:#22c55e;}.sp-bulk-btn-resolve:hover{background:rgba(34,197,94,0.1);box-shadow:0 0 12px rgba(34,197,94,0.15);}.sp-bulk-btn-resolve:active{transform:scale(0.96);transition-duration:0.1s;}.sp-bulk-btn-delete{color:#ef4444;border-color:#ef4444;}.sp-bulk-btn-delete:hover{background:rgba(239,68,68,0.1);box-shadow:0 0 12px rgba(239,68,68,0.15);}.sp-bulk-btn-delete:active{transform:scale(0.96);transition-duration:0.1s;}.sp-bulk-btn-resolve:disabled,.sp-bulk-btn-delete:disabled{opacity:0.5;cursor:not-allowed;pointer-events:none;}.sp-bulk-btn-deselect{width:28px;height:28px;border-radius:var(--sp-radius-full);border:1px solid var(--sp-border);background:transparent;color:var(--sp-text-tertiary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all 0.2s ease;flex-shrink:0;padding:0;}.sp-bulk-btn-deselect:hover{background:var(--sp-bg-hover);color:var(--sp-text);border-color:var(--sp-text-tertiary);}.sp-bulk-btn-deselect:active{transform:scale(0.92);transition-duration:0.1s;}.sp-bulk-btn-deselect svg{width:12px;height:12px;}.sp-bulk-btn-resolve .sp-spinner,.sp-bulk-btn-delete .sp-spinner{width:14px;height:14px;}@media (forced-colors: active){.sp-bulk-checkbox,.sp-bulk-btn-resolve,.sp-bulk-btn-delete,.sp-bulk-btn-deselect,.sp-bulk-bar{border:2px solid ButtonText !important;background:Canvas !important;color:ButtonText !important;}.sp-bulk-checkbox--checked{background:Highlight !important;color:HighlightText !important;}.sp-card--selected{border-left:4px solid Highlight !important;}}@media (prefers-reduced-motion: reduce){.sp-bulk-bar{transition-duration:0.01ms !important;}.sp-bulk-checkbox{transition-duration:0.01ms !important;}}",we=class{constructor(e,n,s){this.callbacks=n;this.t=s,this.barElement=i("div",{class:"sp-bulk-bar"}),this.barElement.setAttribute("role","toolbar"),this.barElement.setAttribute("aria-label","Bulk actions"),this.countLabel=i("span",{class:"sp-bulk-bar-count"}),l(this.countLabel,E(this.t,"bulk.selected",{count:0}));let o=i("div",{class:"sp-bulk-bar-actions"});this.resolveBtn=document.createElement("button"),this.resolveBtn.className="sp-bulk-btn-resolve",this.resolveBtn.type="button",this.resolveBtn.addEventListener("click",()=>this.handleResolve()),this.deleteBtn=document.createElement("button"),this.deleteBtn.className="sp-bulk-btn-delete",this.deleteBtn.type="button",this.deleteBtn.addEventListener("click",()=>this.handleDelete());let r=document.createElement("button");r.className="sp-bulk-btn-deselect",r.type="button",r.setAttribute("aria-label",this.t("bulk.deselect")),r.appendChild(h('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>')),r.addEventListener("click",()=>this.deselectAll()),o.appendChild(this.resolveBtn),o.appendChild(this.deleteBtn),o.appendChild(r),this.barElement.appendChild(this.countLabel),this.barElement.appendChild(o),this.updateButtonLabels();}callbacks;barElement;selected=new Set;checkboxMap=new Map;countLabel;resolveBtn;deleteBtn;selectAllCheckbox=null;listContainer=null;isProcessing=false;t;createCheckbox(e){let n=i("div",{class:"sp-bulk-checkbox"});return n.setAttribute("role","checkbox"),n.setAttribute("tabindex","0"),n.setAttribute("aria-label",`Select feedback ${e}`),n.addEventListener("click",s=>{s.stopPropagation(),this.toggle(e);}),n.addEventListener("keydown",s=>{(s.key===" "||s.key==="Enter")&&(s.preventDefault(),s.stopPropagation(),this.toggle(e));}),this.checkboxMap.set(e,n),this.updateCheckbox(e),n}isSelected(e){return this.selected.has(e)}createSelectAllBar(e,n){let s=i("div",{class:"sp-bulk-select-all"}),o=i("div",{class:"sp-bulk-checkbox"});this.selectAllCheckbox=o,this.updateSelectAllCheckbox(e.length>0&&e.every(a=>this.selected.has(a)));let r=i("span");return l(r,n),s.appendChild(o),s.appendChild(r),s.addEventListener("click",()=>{this.selected.size===e.length&&e.length>0?this.deselectAll():this.selectAll(e);}),s}setListContainer(e){this.listContainer=e;}toggle(e){this.isProcessing||(this.selected.has(e)?this.selected.delete(e):this.selected.add(e),this.updateCheckbox(e),this.updateBar(),this.updateSelectAllCheckbox(),this.updateListSelectionClass(),this.updateCardSelectedState(e));}selectAll(e){if(!this.isProcessing){for(let n of e)this.selected.add(n),this.updateCheckbox(n),this.updateCardSelectedState(n);this.updateBar(),this.updateSelectAllCheckbox(),this.updateListSelectionClass();}}deselectAll(){let e=[...this.selected];this.selected.clear();for(let n of e)this.updateCheckbox(n),this.updateCardSelectedState(n);this.updateBar(),this.updateSelectAllCheckbox(),this.updateListSelectionClass();}get selectedIds(){return [...this.selected]}get count(){return this.selected.size}get hasSelection(){return this.selected.size>0}reset(){this.selected.clear(),this.checkboxMap.clear(),this.selectAllCheckbox=null,this.isProcessing=false,this.updateBar(),this.updateListSelectionClass();}destroy(){this.selected.clear(),this.checkboxMap.clear(),this.selectAllCheckbox=null,this.listContainer=null,this.barElement.remove();}updateBar(){let e=this.selected.size,n=e>0;this.barElement.classList.toggle("sp-bulk-bar--visible",n),l(this.countLabel,E(this.t,"bulk.selected",{count:e}));let s=[...this.selected];U(this.resolveBtn,this.callbacks.permits?.(s,"canChangeStatus")===false),U(this.deleteBtn,this.callbacks.permits?.(s,"canDelete")===false),this.updateButtonLabels();}updateButtonLabels(){let e=this.selected.size,n=this.t("bulk.resolve"),s=this.t("bulk.delete");this.resolveBtn.replaceChildren();let o=document.createElement("span");l(o,e>0?`${n} ${e}`:n),this.resolveBtn.appendChild(o),this.deleteBtn.replaceChildren();let r=document.createElement("span");l(r,e>0?`${s} ${e}`:s),this.deleteBtn.appendChild(r);}updateCheckbox(e){let n=this.checkboxMap.get(e);if(!n)return;let s=this.selected.has(e);n.classList.toggle("sp-bulk-checkbox--checked",s),n.setAttribute("aria-checked",String(s)),n.replaceChildren(),n.appendChild(h(s?Ce:ke));}updateSelectAllCheckbox(e=this.selected.size>0&&this.selected.size===this.checkboxMap.size){this.selectAllCheckbox&&(this.selectAllCheckbox.classList.toggle("sp-bulk-checkbox--checked",e),this.selectAllCheckbox.setAttribute("aria-checked",String(e)),this.selectAllCheckbox.replaceChildren(),this.selectAllCheckbox.appendChild(h(e?Ce:ke)));}updateListSelectionClass(){this.listContainer&&this.listContainer.classList.toggle("sp-list--has-selection",this.selected.size>0);}updateCardSelectedState(e){if(!this.listContainer)return;let n=CSS.escape(e),s=this.listContainer.querySelector(`[data-feedback-id="${n}"]`);s&&s.classList.toggle("sp-card--selected",this.selected.has(e));}async handleResolve(){if(this.isProcessing||this.selected.size===0)return;this.isProcessing=true;let e=[...this.selected];z(this.resolveBtn),this.deleteBtn.disabled=true;try{await this.callbacks.onResolve(e);}catch{return}finally{this.endProcessing();}this.deselectAll();}async handleDelete(){if(this.isProcessing||this.selected.size===0)return;this.isProcessing=true;let e=[...this.selected];z(this.deleteBtn),this.resolveBtn.disabled=true;try{await this.callbacks.onDelete(e);}catch{return}finally{this.endProcessing();}this.deselectAll();}endProcessing(){this.isProcessing=false,this.resolveBtn.disabled=false,this.deleteBtn.disabled=false,this.updateButtonLabels();}};var bt=new Set(["svg","g","path","circle","ellipse","line","polyline","polygon","rect","defs","lineargradient","radialgradient","stop","clippath","mask"]),mt=new Set(`id viewbox preserveaspectratio width height x y x1 y1 x2 y2 cx cy r rx ry fx fy fr d points pathlength
|
|
4
|
-
transform opacity color fill fill-opacity fill-rule stroke stroke-width stroke-linecap stroke-linejoin
|
|
5
|
-
stroke-miterlimit stroke-dasharray stroke-dashoffset stroke-opacity clip-path clip-rule mask offset
|
|
6
|
-
stop-color stop-opacity gradientunits gradienttransform spreadmethod clippathunits maskunits
|
|
7
|
-
maskcontentunits`.split(/\s+/)),ft=/\b(?:(?:rgba?|hsla?|matrix|translate|scale|rotate|skewx|skewy)\([^()\\]*\)|url\(\s*(['"]?)#[\w-]+\1\s*\))/gi,xt=t=>!t.includes("\\")&&!t.replace(ft,"").includes("(");function Se(t){for(let e of [...t.attributes])(!mt.has(e.name.toLowerCase())||!xt(e.value))&&t.removeAttribute(e.name);for(let e of [...t.children])bt.has(e.localName.toLowerCase())?Se(e):e.remove();}function vt(t){let e=new DOMParser().parseFromString(t,"text/html").body.firstElementChild;return e?.namespaceURI!=="http://www.w3.org/2000/svg"||e.localName!=="svg"?null:(Se(e),e.setAttribute("aria-hidden","true"),document.importNode(e,true))}function X(t){try{let e=new URL(t,document.baseURI);return /^(https?|mailto):$/.test(e.protocol)?e.href:null}catch{return null}}function Ee(t){return JSON.parse(JSON.stringify(t),(e,n)=>typeof n=="object"&&n!==null?Object.freeze(n):n)}var yt=t=>typeof t.onAction=="function"&&t.href===void 0,kt=t=>(typeof t.href=="string"||typeof t.href=="function")&&t.onAction===void 0;function ys(t){let e=[];if(!Array.isArray(t))return e;let n=new Set;return t.forEach((s,o)=>{let r=`[siteping] panelActions[${o}]`,a=s?.id;if(typeof a!="string"||!a||typeof s?.label!="string"||!s.label)console.warn(`${r} ignored: it needs a non-empty string \`id\` and \`label\`.`);else if(!yt(s)&&!kt(s))console.warn(`${r} ("${a}") ignored: it needs either an \`onAction\` function or an \`href\`, not both.`);else if(typeof s.href=="string"&&!X(s.href))console.warn(`${r} ("${a}") ignored: \`href\` must be an http(s) or mailto URL.`);else if(n.has(a))console.warn(`${r} ignored: duplicate id "${a}".`);else {n.add(a);let p=s.icon===void 0?null:vt(s.icon);s.icon!==void 0&&!p&&console.warn(`${r} ("${a}"): \`icon\` is not SVG markup \u2014 showing the label only.`),e.push({action:s,icon:p});}}),e}var Ct='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="19" y1="12" x2="5" y2="12"/><polyline points="12 19 5 12 12 5"/></svg>',Q='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg>',wt='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>',St='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></svg>',Et='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg>',Te='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg>',Tt='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="1 4 1 10 7 10"/><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"/></svg>',At='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="3 6 5 6 21 6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/><line x1="10" y1="11" x2="10" y2="17"/><line x1="14" y1="11" x2="14" y2="17"/></svg>',Lt='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>',Bt='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><line x1="22" y1="12" x2="18" y2="12"/><line x1="6" y1="12" x2="2" y2="12"/><line x1="12" y1="6" x2="12" y2="2"/><line x1="12" y1="22" x2="12" y2="18"/></svg>',Rt='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 18 15 12 9 6"/></svg>',Pt='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/></svg>',Ls='.sp-detail{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--sp-glass-bg);backdrop-filter:blur(var(--sp-blur-heavy));-webkit-backdrop-filter:blur(var(--sp-blur-heavy));z-index:20;transform:translateX(100%);transition:transform 0.35s cubic-bezier(0.16,1,0.3,1);will-change:transform;overflow:hidden;}.sp-detail--visible{transform:translateX(0);}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.sp-detail{background:var(--sp-bg);}}@supports (-webkit-backdrop-filter: blur(1px)) and (not (backdrop-filter: blur(1px))){.sp-detail{background:var(--sp-bg);}}.sp-detail-header{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--sp-border);background:var(--sp-glass-bg-heavy);backdrop-filter:blur(var(--sp-blur));-webkit-backdrop-filter:blur(var(--sp-blur));flex-shrink:0;min-height:64px;}.sp-detail-back{width:40px;height:40px;border-radius:var(--sp-radius);border:none;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--sp-text-tertiary);transition:all 0.2s ease;flex-shrink:0;padding:0;}.sp-detail-back:hover{background:var(--sp-bg-hover);color:var(--sp-text);}.sp-detail-back:active{transform:scale(0.92);transition-duration:0.1s;}.sp-detail-back svg{width:18px;height:18px;}.sp-detail-title{font-size:16px;font-weight:700;color:var(--sp-text);letter-spacing:-0.02em;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sp-detail-header .sp-badge{flex-shrink:0;}.sp-detail-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:0;}.sp-detail-content::-webkit-scrollbar{width:6px;}.sp-detail-content::-webkit-scrollbar-track{background:transparent;}.sp-detail-content::-webkit-scrollbar-thumb{background:var(--sp-border);border-radius:var(--sp-radius-full);}.sp-detail-content::-webkit-scrollbar-thumb:hover{background:var(--sp-text-tertiary);}.sp-detail-section{padding:20px 24px;border-bottom:1px solid var(--sp-border);opacity:0;transform:translateY(8px);animation:sp-detail-section-in 0.35s cubic-bezier(0.16,1,0.3,1) forwards;}@keyframes sp-detail-section-in{to{opacity:1;transform:translateY(0);}}.sp-detail-section:last-child{border-bottom:none;}.sp-detail-section-title{font-size:11px;font-weight:600;color:var(--sp-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:14px;display:flex;align-items:center;gap:6px;}.sp-detail-section-title svg{width:14px;height:14px;opacity:0.6;}.sp-detail-status{display:flex;align-items:center;gap:10px;margin-bottom:16px;}.sp-detail-status-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;border-radius:var(--sp-radius-full);font-size:12px;font-weight:600;letter-spacing:0.02em;}.sp-detail-status-pill--open{background:rgba(34,197,94,0.1);color:#22c55e;border:1px solid rgba(34,197,94,0.2);}.sp-detail-status-pill--resolved{background:rgba(156,163,175,0.1);color:#9ca3af;border:1px solid rgba(156,163,175,0.2);}.sp-detail-status-pill--in-progress{background:rgba(245,158,11,0.1);color:#f59e0b;border:1px solid rgba(245,158,11,0.2);}.sp-detail-status-pill--wont-fix{background:rgba(148,163,184,0.1);color:#94a3b8;border:1px solid rgba(148,163,184,0.2);}.sp-detail-status-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}.sp-detail-actions{display:flex;gap:8px;}.sp-detail-actions button,.sp-detail-actions a{flex:1;height:40px;padding:0 16px;border-radius:var(--sp-radius);font-family:var(--sp-font);font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;transition:all 0.2s ease;}.sp-detail-actions button svg,.sp-detail-actions a svg{width:15px;height:15px;}.sp-detail-btn-resolve{border:1.5px solid #22c55e;background:rgba(34,197,94,0.06);color:#22c55e;}.sp-detail-btn-resolve:hover{background:rgba(34,197,94,0.14);box-shadow:0 0 16px rgba(34,197,94,0.12);transform:translateY(-1px);}.sp-detail-btn-resolve:active{transform:translateY(0) scale(0.98);transition-duration:0.1s;}.sp-detail-btn-reopen{border:1.5px solid var(--sp-accent);background:var(--sp-accent-light);color:var(--sp-accent);}.sp-detail-btn-reopen:hover{background:rgba(var(--sp-accent),0.14);box-shadow:0 0 16px var(--sp-accent-glow);transform:translateY(-1px);}.sp-detail-btn-reopen:active{transform:translateY(0) scale(0.98);transition-duration:0.1s;}.sp-detail-btn-delete{border:1.5px solid #ef4444;background:rgba(239,68,68,0.06);color:#ef4444;}.sp-detail-btn-delete:hover{background:rgba(239,68,68,0.14);box-shadow:0 0 16px rgba(239,68,68,0.12);transform:translateY(-1px);}.sp-detail-btn-delete:active{transform:translateY(0) scale(0.98);transition-duration:0.1s;}.sp-detail-btn-custom{border:1.5px solid var(--sp-border);background:var(--sp-glass-bg-heavy);color:var(--sp-text);text-decoration:none;}.sp-detail-btn-custom:hover{background:var(--sp-bg-hover);border-color:var(--sp-accent);color:var(--sp-accent);box-shadow:0 0 16px var(--sp-accent-glow);transform:translateY(-1px);}.sp-detail-btn-custom:active{transform:translateY(0) scale(0.98);transition-duration:0.1s;}.sp-detail-actions--custom{flex-wrap:wrap;margin-top:8px;}.sp-detail-actions--custom > .sp-detail-btn-custom{flex:1 1 auto;min-width:0;}.sp-detail-btn-custom svg{flex-shrink:0;}.sp-detail-btn-custom span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sp-detail-actions button:disabled{opacity:0.5;cursor:not-allowed;pointer-events:none;transform:none;box-shadow:none;}.sp-detail-message{font-size:14px;line-height:1.65;color:var(--sp-text);padding:14px 16px;border-left:3px solid var(--sp-accent);border-radius:0 var(--sp-radius) var(--sp-radius) 0;background:var(--sp-glass-bg-heavy);white-space:pre-wrap;word-break:break-word;}.sp-thread-list{list-style:none;}.sp-comment{margin-top:8px;border-left-color:var(--sp-border);}.sp-comment[data-role="team"]{border-left-color:var(--sp-accent);}.sp-comment-head,.sp-thread-foot{display:flex;align-items:center;gap:6px;font-size:12px;}.sp-comment-head{margin-bottom:4px;font-weight:600;}.sp-comment-head .sp-badge{background:var(--sp-accent-light);}.sp-comment-head time,.sp-thread-foot,.sp-thread-input::placeholder{font-weight:400;color:var(--sp-text-secondary);}.sp-comment-head time{margin-left:auto;}.sp-thread-input{height:auto;margin-top:10px;padding:10px 14px;}.sp-thread-foot{justify-content:space-between;margin-top:8px;}.sp-thread-foot [aria-busy="true"]::before{content:"";display:inline-block;width:10px;height:10px;margin-right:8px;border:2px solid;border-top-color:transparent;border-radius:50%;animation:sp-spin 0.6s linear infinite;}.sp-thread-error{margin-top:8px;padding:8px 12px;border-radius:var(--sp-radius);background:var(--sp-type-bug-bg);font-size:12px;}.sp-thread-error:empty{display:none;}.sp-detail-screenshot{display:block;width:100%;height:auto;max-height:400px;object-fit:contain;border-radius:var(--sp-radius);border:1px solid var(--sp-glass-border);background:var(--sp-glass-bg-heavy);}.sp-detail-meta{display:flex;flex-direction:column;gap:14px;}.sp-detail-meta-row{display:flex;align-items:flex-start;gap:12px;}.sp-detail-meta-row svg{width:14px;height:14px;color:var(--sp-text-tertiary);flex-shrink:0;margin-top:1px;}.sp-detail-meta-content{flex:1;min-width:0;}.sp-detail-meta-label{font-size:10px;font-weight:600;color:var(--sp-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;line-height:1;margin-bottom:4px;}.sp-detail-meta-value{font-size:13px;line-height:1.4;color:var(--sp-text);word-break:break-all;}.sp-detail-meta-value--mono{font-family:"SF Mono","Cascadia Code","Fira Code","Consolas",monospace;font-size:12px;background:var(--sp-glass-bg-heavy);padding:2px 6px;border-radius:4px;border:1px solid var(--sp-glass-border-subtle);}.sp-detail-meta-value--secondary{color:var(--sp-text-secondary);font-size:12px;}.sp-detail-annotation{display:flex;flex-direction:column;gap:12px;}.sp-detail-annotation-info{display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:var(--sp-radius);background:var(--sp-glass-bg-heavy);border:1px solid var(--sp-glass-border-subtle);}.sp-detail-annotation-row{display:flex;align-items:flex-start;gap:10px;}.sp-detail-annotation-row svg{width:13px;height:13px;color:var(--sp-text-tertiary);flex-shrink:0;margin-top:2px;}.sp-detail-annotation-label{font-size:10px;font-weight:600;color:var(--sp-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;line-height:1;margin-bottom:3px;}.sp-detail-annotation-value{font-size:12px;line-height:1.4;color:var(--sp-text);word-break:break-all;}.sp-detail-annotation-value--mono{font-family:"SF Mono","Cascadia Code","Fira Code","Consolas",monospace;font-size:11px;background:var(--sp-bg-hover);padding:2px 6px;border-radius:4px;display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sp-detail-btn-goto{width:100%;height:44px;padding:0 20px;border-radius:var(--sp-radius);border:none;background:var(--sp-accent-gradient);color:#fff;font-family:var(--sp-font);font-size:14px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all 0.25s ease;box-shadow:0 2px 12px var(--sp-accent-glow);}.sp-detail-btn-goto svg{width:16px;height:16px;}.sp-detail-btn-goto:hover{box-shadow:0 4px 20px var(--sp-accent-glow);transform:translateY(-2px);}.sp-detail-btn-goto:active{transform:translateY(0) scale(0.98);transition-duration:0.1s;}@media (forced-colors: active){.sp-detail{border:2px solid ButtonText !important;background:Canvas !important;}.sp-detail-back,.sp-detail-btn-goto,.sp-detail-btn-resolve,.sp-detail-btn-reopen,.sp-detail-btn-delete,.sp-detail-btn-custom{border:2px solid ButtonText !important;background:Canvas !important;color:ButtonText !important;}.sp-detail-back:focus-visible,.sp-detail-btn-goto:focus-visible,.sp-detail-btn-resolve:focus-visible,.sp-detail-btn-reopen:focus-visible,.sp-detail-btn-delete:focus-visible,.sp-detail-btn-custom:focus-visible{outline:3px solid Highlight !important;}.sp-detail-status-pill{border:2px solid ButtonText !important;background:Canvas !important;color:ButtonText !important;}.sp-detail-message{border-left:3px solid ButtonText !important;}}.sp-detail-diag{display:flex;flex-direction:column;gap:12px;}.sp-detail-diag-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-radius:var(--sp-radius);border:1px solid var(--sp-glass-border-subtle);background:var(--sp-glass-bg-heavy);color:var(--sp-text);font-family:var(--sp-font);font-size:12px;font-weight:600;cursor:pointer;transition:background 0.15s ease;}.sp-detail-diag-toggle:hover{background:var(--sp-bg-hover);}.sp-detail-diag-toggle svg{width:12px;height:12px;transition:transform 0.2s ease;}.sp-detail-diag-toggle[aria-expanded="true"] svg{transform:rotate(90deg);}.sp-detail-diag-counts{display:inline-flex;gap:6px;font-weight:500;color:var(--sp-text-tertiary);}.sp-detail-diag-count{padding:1px 7px;border-radius:var(--sp-radius-full);background:var(--sp-bg-hover);font-variant-numeric:tabular-nums;}.sp-detail-diag-count--errors{background:rgba(239,68,68,0.14);color:#ef4444;}.sp-detail-diag-body{display:none;flex-direction:column;gap:14px;}.sp-detail-diag-body--open{display:flex;}.sp-detail-diag-group-title{font-size:10px;font-weight:700;color:var(--sp-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:6px;}.sp-detail-diag-list{list-style:none;padding:0;margin:0;border-radius:var(--sp-radius);border:1px solid var(--sp-glass-border-subtle);background:var(--sp-glass-bg-heavy);max-height:240px;overflow-y:auto;}.sp-detail-diag-list li{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;border-bottom:1px solid var(--sp-glass-border-subtle);font-family:"SF Mono","Cascadia Code","Fira Code","Consolas",monospace;font-size:11px;line-height:1.45;color:var(--sp-text);}.sp-detail-diag-list li:last-child{border-bottom:none;}.sp-detail-diag-level{flex-shrink:0;font-weight:700;width:44px;text-transform:uppercase;letter-spacing:0.04em;font-size:10px;}.sp-detail-diag-level--log{color:var(--sp-text-tertiary);}.sp-detail-diag-level--info{color:#3b82f6;}.sp-detail-diag-level--warn{color:#f59e0b;}.sp-detail-diag-level--error{color:#ef4444;}.sp-detail-diag-message{flex:1;min-width:0;word-break:break-word;white-space:pre-wrap;}.sp-detail-diag-net{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;}.sp-detail-diag-net-status{flex-shrink:0;font-weight:700;color:#ef4444;min-width:32px;text-align:right;font-variant-numeric:tabular-nums;}.sp-detail-diag-net-method{flex-shrink:0;font-weight:600;color:var(--sp-text-tertiary);min-width:44px;}.sp-detail-diag-net-url{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sp-text);}.sp-detail-diag-empty{padding:12px;font-style:italic;font-size:11px;color:var(--sp-text-tertiary);text-align:center;}@media (prefers-reduced-motion: reduce){.sp-detail{transition-duration:0.01ms !important;}.sp-detail-section{animation-duration:0.01ms !important;}}';function Ft(t){if(/Edg\//i.test(t)){let e=t.match(/Edg\/([\d.]+)/);return e?`Edge ${e[1]}`:"Edge"}if(/OPR\//i.test(t)||/Opera/i.test(t)){let e=t.match(/OPR\/([\d.]+)/);return e?`Opera ${e[1]}`:"Opera"}if(/Firefox\//i.test(t)){let e=t.match(/Firefox\/([\d.]+)/);return e?`Firefox ${e[1]}`:"Firefox"}if(/Chrome\//i.test(t)&&!/Chromium/i.test(t)){let e=t.match(/Chrome\/([\d.]+)/);return e?`Chrome ${e[1]}`:"Chrome"}if(/Safari\//i.test(t)&&!/Chrome/i.test(t)){let e=t.match(/Version\/([\d.]+)/);return e?`Safari ${e[1]}`:"Safari"}return "Unknown"}function Ae(t,e){try{return new Date(t).toLocaleString(e,{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return t}}function Ot(t){try{return new URL(t).pathname}catch{return t}}function Mt(t){return /^data:image\/(jpeg|png|webp);/i.test(t)||/^https:\/\//i.test(t)?true:Nt(t)}function Nt(t){try{let{protocol:e,hostname:n}=new URL(t);return e==="http:"&&(n==="localhost"||n.endsWith(".localhost")||n==="127.0.0.1"||n==="[::1]")}catch{return false}}function M(t,e){return t.length<=e?t:t.slice(0,e-1)+"\u2026"}function It(t){if(!t)return false;let e=Array.isArray(t.console)?t.console.length:0,n=Array.isArray(t.network)?t.network.length:0;return e>0||n>0}function _t(t){return !Number.isFinite(t)||t<0?"\u2014":t<1e3?`${Math.round(t)} ms`:`${(t/1e3).toFixed(1)} s`}function Le({action:t,icon:e}){let n=document.createElement("span");return l(n,t.label),e?[e.cloneNode(true),n]:[n]}var Be=class{constructor(e,n,s,o,r=[]){this.colors=e;this.callbacks=n;this.customActions=r;this.t=s,this.locale=o,this.element=i("div",{class:"sp-detail"}),this.element.setAttribute("role","dialog"),this.element.setAttribute("aria-label","Feedback detail"),this.element.setAttribute("aria-hidden","true");let a=i("div",{class:"sp-detail-header"}),p=document.createElement("button");p.type="button",p.className="sp-detail-back",p.setAttribute("aria-label",this.t("detail.back")),p.appendChild(h(Ct)),p.addEventListener("click",()=>{this.hide(),this.callbacks.onBack();}),this.element.appendChild(a),a.appendChild(p),this.content=i("div",{class:"sp-detail-content"}),this.element.appendChild(this.content);}colors;callbacks;customActions;element;_isVisible=false;currentFeedback=null;content;t;locale;resolveBtn=null;deleteBtn=null;customBtns=[];pending=new Map;show(e,n){this.currentFeedback=e;let s=this.element.querySelector(".sp-detail-header");if(!s)return;let o=s.querySelector(".sp-detail-back");if(!o)return;s.replaceChildren(o);let r=i("span",{class:"sp-detail-title"});l(r,E(this.t,"detail.title",{number:n})),s.appendChild(r);let a=i("span",{class:"sp-badge"});a.style.background=he(e.type,this.colors),a.style.color=W(e.type,this.colors),l(a,me(e.type,this.t)),s.appendChild(a),this.content.replaceChildren();let p=0,d=this.buildSection(p++);this.buildStatusActions(d,e);let c=this.pending.get(e.id);c&&this.lock(c),this.content.appendChild(d);let u=this.buildSection(p++),m=i("div",{class:"sp-detail-section-title"});l(m,this.t("detail.message")),u.appendChild(m);let k=i("div",{class:"sp-detail-message"});k.style.borderLeftColor=W(e.type,this.colors),l(k,e.message),u.appendChild(k);let y=this.callbacks.buildThread?.(e);if(y&&u.appendChild(y),this.content.appendChild(u),e.screenshotUrl&&Mt(e.screenshotUrl)){let b=this.buildSection(p++),f=i("div",{class:"sp-detail-section-title"});l(f,this.t("detail.screenshot")),b.appendChild(f);let g=document.createElement("img");g.className="sp-detail-screenshot",g.src=e.screenshotUrl,g.alt=this.t("detail.screenshotAlt"),g.loading="lazy",g.referrerPolicy="no-referrer",b.appendChild(g),this.content.appendChild(b);}let x=this.buildSection(p++),v=i("div",{class:"sp-detail-section-title"});if(l(v,this.t("detail.metadata")),x.appendChild(v),this.buildMetadata(x,e),this.content.appendChild(x),e.annotations.length>0){let b=this.buildSection(p++),f=i("div",{class:"sp-detail-section-title"});f.appendChild(h(Q));let g=i("span");l(g,this.t("detail.annotation")),f.appendChild(g),b.appendChild(f),this.buildAnnotation(b,e),this.content.appendChild(b);}if(It(e.diagnostics)){let b=this.buildSection(p++),f=i("div",{class:"sp-detail-section-title"});f.appendChild(h(Pt));let g=i("span");l(g,this.t("detail.diagnostics")),f.appendChild(g),b.appendChild(f),this.buildDiagnostics(b,e),this.content.appendChild(b);}this._isVisible=true,this.element.setAttribute("aria-hidden","false"),this.element.offsetHeight,this.element.classList.add("sp-detail--visible"),requestAnimationFrame(()=>{o.focus();});}hide(){this._isVisible&&(this._isVisible=false,this.element.classList.remove("sp-detail--visible"),this.element.setAttribute("aria-hidden","true"),this.currentFeedback=null,this.resolveBtn=null,this.deleteBtn=null,this.customBtns=[]);}get feedbackId(){return this.currentFeedback?.id??null}get isVisible(){return this._isVisible}destroy(){this.hide(),this.element.remove();}buildSection(e){let n=i("div",{class:"sp-detail-section"});return n.style.animationDelay=`${e*40}ms`,n}buildStatusActions(e,n){let s=C(n.status),o=i("div",{class:"sp-detail-section-title"});l(o,this.t("detail.status")),e.appendChild(o);let r=n.status.replace(/_/g,"-"),a={open:"#22c55e",in_progress:"#f59e0b",resolved:"#9ca3af",wont_fix:"#94a3b8"},p=i("div",{class:"sp-detail-status"}),d=i("span",{class:`sp-detail-status-pill sp-detail-status-pill--${r}`}),c=i("span",{class:"sp-detail-status-dot"});c.style.background=a[n.status]??a.open,d.appendChild(c);let u=i("span");l(u,fe(n.status,this.t)),d.appendChild(u),p.appendChild(d),e.appendChild(p);let m=i("div",{class:"sp-detail-actions"});this.resolveBtn=document.createElement("button"),this.resolveBtn.type="button",this.resolveBtn.className=s?"sp-detail-btn-reopen":"sp-detail-btn-resolve",this.restoreResolveBtn(n),this.resolveBtn.addEventListener("click",()=>this.handleResolve()),this.deleteBtn=document.createElement("button"),this.deleteBtn.type="button",this.deleteBtn.className="sp-detail-btn-delete",this.restoreDeleteBtn(),this.deleteBtn.addEventListener("click",()=>this.handleDelete()),this.callbacks.permits?.(n,"canChangeStatus")!==false&&m.appendChild(this.resolveBtn),this.callbacks.permits?.(n,"canDelete")!==false&&m.appendChild(this.deleteBtn),e.appendChild(m),this.buildCustomActions(e,n);}buildCustomActions(e,n){if(this.customBtns=[],this.customActions.length===0)return;let s=Ee(n),o=i("div",{class:"sp-detail-actions sp-detail-actions--custom"});for(let r of this.customActions){let{action:a}=r,p;try{if(a.visible&&!a.visible(s))continue;if(a.href===void 0){let d=document.createElement("button");d.type="button",d.setAttribute("aria-label",a.label),d.addEventListener("click",()=>{this.run(r,()=>this.callbacks.onCustomAction(a,s));}),this.customBtns.push(d),p=d;}else {let d=X(typeof a.href=="function"?a.href(s):a.href);if(!d)throw new Error(`[siteping] Panel action "${a.id}": href must be an http(s) or mailto URL.`);let c=document.createElement("a");c.href=d,d.startsWith("mailto:")||(c.target="_blank"),c.rel="noopener noreferrer",p=c;}}catch(d){this.callbacks.onCustomActionError(d);continue}p.className="sp-detail-btn-custom",p.setAttribute("data-action-id",a.id),p.title=a.label,p.append(...Le(r)),o.appendChild(p);}o.childElementCount>0&&e.appendChild(o);}buildMetadata(e,n){let s=i("div",{class:"sp-detail-meta"});if(this.addMetaRow(s,wt,this.t("detail.page"),()=>{let o=i("div",{class:"sp-detail-meta-value"}),r=Ot(n.url);return l(o,M(r,60)),o.title=n.url,o}),this.addMetaRow(s,de,this.t("detail.author"),()=>{let o=i("div",{class:"sp-detail-meta-value"}),r=n.authorName||"Anonymous",a=n.authorEmail;return l(o,a?`${r} (${a})`:r),o}),this.addMetaRow(s,St,this.t("detail.date"),()=>{let o=i("div",{class:"sp-detail-meta-value"});return l(o,Ae(n.createdAt,this.locale)),o}),this.addMetaRow(s,Et,this.t("detail.viewport"),()=>{let o=i("div",{class:"sp-detail-meta-value sp-detail-meta-value--mono"});return l(o,n.viewport||"Unknown"),o}),this.addMetaRow(s,'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>',this.t("detail.browser"),()=>{let o=i("div",{class:"sp-detail-meta-value"});return l(o,Ft(n.userAgent)),o}),n.resolvedAt){let o=n.resolvedAt,r=n.status==="wont_fix"?this.t("detail.closedAt"):this.t("detail.resolvedAt");this.addMetaRow(s,Te,r,()=>{let a=i("div",{class:"sp-detail-meta-value sp-detail-meta-value--secondary"});return l(a,Ae(o,this.locale)),a});}e.appendChild(s);}addMetaRow(e,n,s,o){let r=i("div",{class:"sp-detail-meta-row"});r.appendChild(h(n));let a=i("div",{class:"sp-detail-meta-content"}),p=i("div",{class:"sp-detail-meta-label"});l(p,s),a.appendChild(p),a.appendChild(o()),r.appendChild(a),e.appendChild(r);}buildAnnotation(e,n){let s=n.annotations[0];if(!s)return;let o=i("div",{class:"sp-detail-annotation"}),r=i("div",{class:"sp-detail-annotation-info"});if(this.addAnnotationRow(r,Lt,this.t("detail.element"),()=>{let d=i("span",{class:"sp-detail-annotation-value sp-detail-annotation-value--mono"}),c=s.elementId?`<${s.elementTag}#${s.elementId}>`:`<${s.elementTag}>`;return l(d,c),d}),this.addAnnotationRow(r,Bt,this.t("detail.selector"),()=>{let d=i("span",{class:"sp-detail-annotation-value sp-detail-annotation-value--mono"});return l(d,M(s.cssSelector,60)),d.title=s.cssSelector,d}),this.addAnnotationRow(r,Q,this.t("detail.position"),()=>{let d=i("span",{class:"sp-detail-annotation-value"}),c=u=>`${(u*100).toFixed(1)}%`;return l(d,`${c(s.xPct)}, ${c(s.yPct)}`+(s.wPct>0||s.hPct>0?` (${c(s.wPct)} \xD7 ${c(s.hPct)})`:"")),d}),o.appendChild(r),e.appendChild(o),this.callbacks.canGoToAnnotation?.(n)===false)return;let a=document.createElement("button");a.type="button",a.className="sp-detail-btn-goto",a.appendChild(h(Q));let p=document.createElement("span");l(p,this.t("detail.goToAnnotation")),a.appendChild(p),a.addEventListener("click",()=>{this.currentFeedback&&this.callbacks.onGoToAnnotation(this.currentFeedback);}),o.appendChild(a);}buildDiagnostics(e,n){let s=n.diagnostics;if(!s)return;let o=Array.isArray(s.console)?s.console:[],r=Array.isArray(s.network)?s.network:[],a=o.filter(v=>v.level==="error").length,p=i("div",{class:"sp-detail-diag"}),d=document.createElement("button");d.type="button",d.className="sp-detail-diag-toggle",d.setAttribute("aria-expanded","false"),d.setAttribute("aria-label",this.t("detail.diagnostics.expand"));let c=document.createElement("span"),u=document.createElement("span");u.style.display="inline-flex",u.style.alignItems="center",u.style.gap="8px",u.appendChild(h(Rt)),l(c,this.t("detail.diagnostics")),u.appendChild(c),d.appendChild(u);let m=i("span",{class:"sp-detail-diag-counts"}),k=i("span",{class:`sp-detail-diag-count${a>0?" sp-detail-diag-count--errors":""}`});l(k,`${o.length} console`);let y=i("span",{class:`sp-detail-diag-count${r.length>0?" sp-detail-diag-count--errors":""}`});l(y,`${r.length} net`),m.appendChild(k),m.appendChild(y),d.appendChild(m);let x=i("div",{class:"sp-detail-diag-body"});if(o.length>0){let v=document.createElement("div"),b=i("div",{class:"sp-detail-diag-group-title"});l(b,this.t("detail.diagnostics.console")),v.appendChild(b);let f=document.createElement("ul");f.className="sp-detail-diag-list";for(let g of o){let w=document.createElement("li"),L=i("span",{class:`sp-detail-diag-level sp-detail-diag-level--${g.level}`});l(L,g.level);let T=i("span",{class:"sp-detail-diag-message"});l(T,M(g.message,240)),T.title=g.message,w.appendChild(L),w.appendChild(T),f.appendChild(w);}v.appendChild(f),x.appendChild(v);}if(r.length>0){let v=document.createElement("div"),b=i("div",{class:"sp-detail-diag-group-title"});l(b,this.t("detail.diagnostics.network")),v.appendChild(b);let f=document.createElement("ul");f.className="sp-detail-diag-list";for(let g of r){let w=document.createElement("li");w.classList.add("sp-detail-diag-net");let L=i("span",{class:"sp-detail-diag-net-status"});l(L,g.status===0?"ERR":String(g.status));let T=i("span",{class:"sp-detail-diag-net-method"});l(T,g.method);let N=i("span",{class:"sp-detail-diag-net-url"});l(N,M(g.url,120)),N.title=`${g.url} \u2014 ${_t(g.durationMs)}`,w.appendChild(L),w.appendChild(T),w.appendChild(N),f.appendChild(w);}v.appendChild(f),x.appendChild(v);}d.addEventListener("click",()=>{let b=!(d.getAttribute("aria-expanded")==="true");d.setAttribute("aria-expanded",String(b)),d.setAttribute("aria-label",b?this.t("detail.diagnostics.collapse"):this.t("detail.diagnostics.expand")),x.classList.toggle("sp-detail-diag-body--open",b);}),p.appendChild(d),p.appendChild(x),e.appendChild(p);}addAnnotationRow(e,n,s,o){let r=i("div",{class:"sp-detail-annotation-row"});r.appendChild(h(n));let a=i("div",{class:"sp-detail-meta-content"}),p=i("div",{class:"sp-detail-annotation-label"});l(p,s),a.appendChild(p),a.appendChild(o()),r.appendChild(a),e.appendChild(r);}handleResolve(){return this.run("resolve",e=>this.callbacks.onResolve(e))}handleDelete(){return this.run("delete",e=>this.callbacks.onDelete(e))}async run(e,n){let s=this.currentFeedback;if(!(!s||this.pending.has(s.id))){this.pending.set(s.id,e),this.lock(e);try{await n(s);}catch{}finally{this.pending.delete(s.id),this.currentFeedback?.id===s.id&&this.unlock(e,this.currentFeedback);}}}lock(e){this.setActionsDisabled(true);let n=this.buttonFor(e);n&&(this.setButtonLoading(n),n.setAttribute("aria-busy","true"));}unlock(e,n){let s=this.buttonFor(e);s?.removeAttribute("aria-busy"),e==="resolve"?this.restoreResolveBtn(n):e==="delete"?this.restoreDeleteBtn():s?.replaceChildren(...Le(e)),this.setActionsDisabled(false);}buttonFor(e){return e==="resolve"?this.resolveBtn:e==="delete"?this.deleteBtn:this.customBtns.find(n=>n.dataset.actionId===e.action.id)??null}setActionsDisabled(e){for(let n of [this.resolveBtn,this.deleteBtn,...this.customBtns])n&&(n.disabled=e);}setButtonLoading(e){e.disabled=true,e.replaceChildren(i("div",{class:"sp-spinner sp-spinner--sm"}));}restoreResolveBtn(e){if(!this.resolveBtn)return;this.resolveBtn.disabled=false,this.resolveBtn.replaceChildren();let n=C(e.status);this.resolveBtn.appendChild(h(n?Tt:Te));let s=document.createElement("span");l(s,n?this.t("detail.reopen"):this.t("detail.resolve")),this.resolveBtn.appendChild(s);}restoreDeleteBtn(){if(!this.deleteBtn)return;this.deleteBtn.disabled=false,this.deleteBtn.replaceChildren(),this.deleteBtn.appendChild(h(At));let e=document.createElement("span");l(e,this.t("detail.delete")),this.deleteBtn.appendChild(e);}};var Dt='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M11 5h10"/><path d="M11 9h7"/><path d="M11 13h4"/><path d="M3 17l3 3 3-3"/><path d="M6 18V4"/></svg>',Fe='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg>',Ht='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 18 15 12 9 6"/></svg>',Re={question:0,change:1,bug:2,other:3};function Fs(t,e){let n=[...t];switch(e){case "newest":n.sort((s,o)=>new Date(o.createdAt).getTime()-new Date(s.createdAt).getTime());break;case "oldest":n.sort((s,o)=>new Date(s.createdAt).getTime()-new Date(o.createdAt).getTime());break;case "by-type":n.sort((s,o)=>{let r=Re[s.type]??99,a=Re[o.type]??99;return r!==a?r-a:new Date(o.createdAt).getTime()-new Date(s.createdAt).getTime()});break;case "open-first":n.sort((s,o)=>{let r=C(s.status)?1:0,a=C(o.status)?1:0;return r!==a?r-a:new Date(o.createdAt).getTime()-new Date(s.createdAt).getTime()});break}return n}function jt(t){try{return new URL(t).pathname}catch{return t}}function $t(t,e){if(t.length<=e)return t;let n="\u2026",s=Math.floor((e-1)/2);return t.slice(0,s)+n+t.slice(-s)}function Os(t){let e=new Map;for(let s of t){let o=jt(s.url),r=e.get(o);r?r.push(s):e.set(o,[s]);}return new Map([...e.entries()].sort((s,o)=>o[1].length-s[1].length))}function Ms(t,e,n){let s=i("div",{class:"sp-group-header"});s.setAttribute("role","button"),s.setAttribute("tabindex","0"),s.setAttribute("aria-expanded","true"),s.style.borderBottomColor=n.border;let o=i("span",{class:"sp-group-header-chevron"});o.appendChild(h(Ht)),s.appendChild(o);let r=i("span",{class:"sp-group-header-icon"});r.appendChild(h(Fe)),s.appendChild(r);let a=i("span",{class:"sp-group-header-path"}),p=$t(t,40);l(a,p),t.length>40&&(a.title=t),s.appendChild(a);let d=i("span",{class:"sp-group-header-count"});d.style.background=n.accentLight,d.style.color=n.accent,l(d,String(e)),s.appendChild(d);let c=()=>{let u=s.getAttribute("aria-expanded")==="true";s.setAttribute("aria-expanded",String(!u)),s.classList.toggle("sp-group-header--collapsed",u);let m=s.nextElementSibling;m?.classList.contains("sp-group-content")&&m.classList.toggle("sp-group-content--collapsed",u);};return s.addEventListener("click",c),s.addEventListener("keydown",u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),c());}),s}var Pe=class{element;_sortMode="newest";_groupByPage=false;menuEl=null;sortBtn;sortDropdown;groupToggle;t;colors;onChange;removeOutsideClick=null;constructor(e,n,s){this.colors=e,this.onChange=n,this.t=s,this.element=i("div",{class:"sp-sort-controls"}),this.sortBtn=document.createElement("button"),this.sortBtn.className="sp-sort-btn",this.sortBtn.setAttribute("aria-haspopup","listbox"),this.sortBtn.setAttribute("aria-expanded","false"),this.sortBtn.setAttribute("aria-label",this.t("sort.label"));let o=h(Dt);this.sortBtn.appendChild(o);let r=i("span",{class:"sp-sort-btn-label"});l(r,this.t("sort.newest")),this.sortBtn.appendChild(r),this.sortBtn.addEventListener("click",d=>{d.stopPropagation(),this.toggleMenu();}),this.groupToggle=document.createElement("button"),this.groupToggle.className="sp-group-toggle",this.groupToggle.setAttribute("aria-pressed","false");let a=h(Fe);this.groupToggle.appendChild(a);let p=i("span",{class:"sp-group-toggle-label"});l(p,this.t("group.byPage")),this.groupToggle.appendChild(p),this.groupToggle.addEventListener("click",()=>{this._groupByPage=!this._groupByPage,this.groupToggle.classList.toggle("sp-group-toggle--active",this._groupByPage),this.groupToggle.setAttribute("aria-pressed",String(this._groupByPage)),this.onChange();}),this.sortDropdown=i("div",{class:"sp-sort-dropdown"}),this.sortDropdown.appendChild(this.sortBtn),this.element.appendChild(this.sortDropdown),this.element.appendChild(this.groupToggle),this.element.addEventListener("keydown",d=>{d.key!=="Escape"||!this.menuEl||(d.stopPropagation(),this.closeMenu(),this.sortBtn.focus());});}get sortMode(){return this._sortMode}get groupByPage(){return this._groupByPage}toggleMenu(){if(this.menuEl){this.closeMenu();return}this.openMenu();}openMenu(){this.menuEl=i("div",{class:"sp-sort-menu"}),this.menuEl.setAttribute("role","listbox"),this.menuEl.setAttribute("aria-label",this.t("sort.label")),this.sortBtn.setAttribute("aria-expanded","true");let e=[{mode:"newest",label:this.t("sort.newest")},{mode:"oldest",label:this.t("sort.oldest")},{mode:"by-type",label:this.t("sort.byType")},{mode:"open-first",label:this.t("sort.openFirst")}];for(let n of e){let s=document.createElement("button");s.className=`sp-sort-option${n.mode===this._sortMode?" sp-sort-option--active":""}`,s.setAttribute("role","option"),s.setAttribute("aria-selected",String(n.mode===this._sortMode)),n.mode===this._sortMode&&(s.style.background=this.colors.accentLight,s.style.color=this.colors.accent),l(s,n.label),s.addEventListener("click",o=>{o.stopPropagation(),this._sortMode=n.mode,this.updateSortLabel(),this.closeMenu(),this.onChange();}),this.menuEl.appendChild(s);}this.sortDropdown.appendChild(this.menuEl),this.removeOutsideClick=F(this.sortDropdown,()=>this.closeMenu());}closeMenu(){this.menuEl&&(this.menuEl.remove(),this.menuEl=null),this.sortBtn.setAttribute("aria-expanded","false"),this.removeOutsideClick?.(),this.removeOutsideClick=null;}updateSortLabel(){let e={newest:this.t("sort.newest"),oldest:this.t("sort.oldest"),"by-type":this.t("sort.byType"),"open-first":this.t("sort.openFirst")},n=this.sortBtn.querySelector(".sp-sort-btn-label");n&&l(n,e[this._sortMode]);}destroy(){this.closeMenu();}},Ns='.sp-sort-controls{display:flex;align-items:center;gap:6px;margin-top:4px;padding-top:8px;border-top:1px solid var(--sp-border);}.sp-sort-dropdown{display:contents;}.sp-sort-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:var(--sp-radius-full);border:1px solid var(--sp-border);background:var(--sp-glass-bg-heavy);color:var(--sp-text-secondary);font-family:var(--sp-font);font-size:12px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all 0.2s ease;position:relative;}.sp-sort-btn svg{width:14px;height:14px;flex-shrink:0;}.sp-sort-btn:hover{border-color:var(--sp-accent);color:var(--sp-accent);background:var(--sp-accent-light);}.sp-sort-btn[aria-expanded="true"]{border-color:var(--sp-accent);color:var(--sp-accent);background:var(--sp-accent-light);}.sp-sort-menu{position:absolute;top:calc(100% + 6px);left:0;min-width:170px;padding:4px;border-radius:var(--sp-radius);background:var(--sp-glass-bg-heavy);backdrop-filter:blur(var(--sp-blur-heavy));-webkit-backdrop-filter:blur(var(--sp-blur-heavy));border:1px solid var(--sp-glass-border);box-shadow:var(--sp-shadow-md);z-index:10;animation:sp-sort-menu-in 0.15s ease-out both;}@keyframes sp-sort-menu-in{from{opacity:0;transform:translateY(-4px) scale(0.97);}to{opacity:1;transform:translateY(0) scale(1);}}.sp-sort-option{display:block;width:100%;padding:8px 12px;border:none;border-radius:8px;background:transparent;color:var(--sp-text-secondary);font-family:var(--sp-font);font-size:12px;font-weight:500;cursor:pointer;text-align:left;transition:all 0.15s ease;}.sp-sort-option:hover{background:var(--sp-bg-hover);color:var(--sp-text);}.sp-sort-option--active{font-weight:600;}.sp-sort-option--active:hover{background:var(--sp-accent-light);color:var(--sp-accent);}.sp-group-toggle,.sp-mine-toggle{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:var(--sp-radius-full);border:1px solid var(--sp-border);background:var(--sp-glass-bg-heavy);color:var(--sp-text-secondary);font-family:var(--sp-font);font-size:12px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all 0.2s ease;}.sp-group-toggle svg,.sp-mine-toggle svg{width:13px;height:13px;flex-shrink:0;}.sp-group-toggle:hover,.sp-mine-toggle:hover{border-color:var(--sp-accent);color:var(--sp-accent);background:var(--sp-accent-light);}.sp-group-toggle--active,.sp-mine-toggle--active{background:var(--sp-accent-gradient);border-color:transparent;color:#fff;box-shadow:0 2px 8px var(--sp-accent-glow);}.sp-group-toggle--active:hover,.sp-mine-toggle--active:hover{background:var(--sp-accent-gradient);border-color:transparent;color:#fff;}.sp-group-header{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--sp-accent-light);border-bottom:1px solid var(--sp-border);cursor:pointer;user-select:none;position:sticky;top:0;z-index:2;transition:background 0.2s ease;}.sp-group-header:hover{background:var(--sp-bg-hover);}.sp-group-header:focus-visible{outline:2px solid var(--sp-accent);outline-offset:-2px;}.sp-group-header-chevron{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;transition:transform 0.2s ease;transform:rotate(90deg);}.sp-group-header-chevron svg{width:12px;height:12px;color:var(--sp-text-tertiary);}.sp-group-header--collapsed .sp-group-header-chevron{transform:rotate(0deg);}.sp-group-header-icon{display:flex;align-items:center;flex-shrink:0;}.sp-group-header-icon svg{width:14px;height:14px;color:var(--sp-text-tertiary);}.sp-group-header-path{font-size:12px;font-weight:600;color:var(--sp-text-secondary);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sp-group-header-count{font-size:11px;font-weight:700;padding:1px 8px;border-radius:var(--sp-radius-full);flex-shrink:0;font-variant-numeric:tabular-nums;}.sp-group-content{overflow:hidden;transition:max-height 0.25s ease,opacity 0.2s ease;max-height:5000px;opacity:1;}.sp-group-content--collapsed{max-height:0;opacity:0;pointer-events:none;}@media (forced-colors: active){.sp-sort-btn,.sp-group-toggle,.sp-mine-toggle,.sp-sort-option,.sp-group-header{border:2px solid ButtonText !important;background:Canvas !important;color:ButtonText !important;}.sp-group-toggle--active,.sp-mine-toggle--active{background:Highlight !important;color:HighlightText !important;}.sp-sort-btn:focus-visible,.sp-group-toggle:focus-visible,.sp-mine-toggle:focus-visible,.sp-sort-option:focus-visible,.sp-group-header:focus-visible{outline:3px solid Highlight !important;}.sp-sort-menu{border:2px solid ButtonText !important;background:Canvas !important;}}@media (prefers-reduced-motion: reduce){.sp-sort-menu{animation:none;}.sp-group-header-chevron{transition:none;}.sp-group-content{transition:none;}}';var js='.sp-stats-bar{display:flex;flex-direction:column;gap:8px;padding:12px 24px;border-bottom:1px solid var(--sp-border);user-select:none;}.sp-stats-bar[hidden]{display:none;}.sp-stats-row{display:flex;align-items:center;gap:16px;}.sp-stats-item{display:flex;align-items:center;gap:6px;}.sp-stats-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}.sp-stats-value{font-size:16px;font-weight:600;line-height:1;color:var(--sp-text);font-variant-numeric:tabular-nums;font-feature-settings:"tnum";transition:opacity 0.3s ease;}.sp-stats-label{font-size:11px;line-height:1;color:var(--sp-text-tertiary);text-transform:uppercase;letter-spacing:0.04em;}.sp-stats-progress{display:flex;align-items:center;gap:8px;}.sp-stats-progress-track{flex:1;height:4px;border-radius:2px;background:var(--sp-border);overflow:hidden;}.sp-stats-progress-fill{height:100%;border-radius:2px;background:linear-gradient(90deg,var(--sp-accent),#22c55e);width:0%;transition:width 0.5s ease;}.sp-stats-progress-label{font-size:10px;line-height:1;color:var(--sp-text-tertiary);white-space:nowrap;font-variant-numeric:tabular-nums;font-feature-settings:"tnum";min-width:64px;text-align:right;}',Oe=class{constructor(e,n){this.colors=e;this.t=n,this.element=i("div",{class:"sp-stats-bar"}),this.element.setAttribute("aria-label","Feedback statistics"),this.element.hidden=true;let s=i("div",{class:"sp-stats-row"}),o=i("div",{class:"sp-stats-item"}),r=i("span",{class:"sp-stats-dot"});r.style.background="#22c55e",this.valueOpen=i("span",{class:"sp-stats-value"}),l(this.valueOpen,"0");let a=i("span",{class:"sp-stats-label"});l(a,this.t("stats.open")),o.appendChild(r),o.appendChild(this.valueOpen),o.appendChild(a);let p=i("div",{class:"sp-stats-item"}),d=i("span",{class:"sp-stats-dot"});d.style.background="#9ca3af",this.valueResolved=i("span",{class:"sp-stats-value"}),l(this.valueResolved,"0");let c=i("span",{class:"sp-stats-label"});l(c,this.t("stats.resolved")),p.appendChild(d),p.appendChild(this.valueResolved),p.appendChild(c);let u=i("div",{class:"sp-stats-item"}),m=i("span",{class:"sp-stats-dot"});m.style.background=this.colors.typeBug,this.valueBugs=i("span",{class:"sp-stats-value"}),l(this.valueBugs,"0");let k=i("span",{class:"sp-stats-label"});l(k,this.t("stats.bugs")),u.appendChild(m),u.appendChild(this.valueBugs),u.appendChild(k),s.appendChild(o),s.appendChild(p),s.appendChild(u);let y=i("div",{class:"sp-stats-progress"}),x=i("div",{class:"sp-stats-progress-track"});this.progressFill=i("div",{class:"sp-stats-progress-fill"}),x.appendChild(this.progressFill),this.progressLabel=i("span",{class:"sp-stats-progress-label"}),l(this.progressLabel,""),y.appendChild(x),y.appendChild(this.progressLabel),this.element.appendChild(s),this.element.appendChild(y);}colors;element;valueOpen;valueResolved;valueBugs;progressFill;progressLabel;t;update(e,n){if(n===0){this.element.hidden=true;return}this.element.hidden=false;let s=0,o=0,r=0;for(let c of e)C(c.status)?o++:s++,c.type==="bug"&&r++;l(this.valueOpen,String(s)),l(this.valueResolved,String(o)),l(this.valueBugs,String(r));let a=e.length,p=a>0?Math.round(o/a*100):0;requestAnimationFrame(()=>{this.progressFill.style.width=`${p}%`;});let d=E(this.t,"stats.progress",{percent:p});l(this.progressLabel,d);}};var Ut='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="M6 8h.01"/><path d="M10 8h.01"/><path d="M14 8h.01"/><path d="M18 8h.01"/><path d="M6 12h.01"/><path d="M18 12h.01"/><path d="M8 16h8"/></svg>';function zs(t){let e=Array.from(t.querySelectorAll(".sp-card")),s=t.getRootNode().activeElement?.closest(".sp-card"),o=s?e.indexOf(s):-1;return o>=0?o:e.findIndex(r=>r.classList.contains("sp-card--focused"))}function Ks(t,e){let n=t.querySelectorAll(".sp-card");if(n.length===0)return;for(let r of n)r.classList.remove("sp-card--focused");let s=Math.max(0,Math.min(e,n.length-1)),o=n[s];o&&(o.classList.add("sp-card--focused"),o.scrollIntoView({block:"nearest",behavior:"smooth"}),o.focus({preventScroll:true}));}var zt=[{keys:["J","K"],label:"shortcuts.navigate"},{keys:["R"],label:"shortcuts.resolve"},{keys:["D"],label:"shortcuts.delete"},{keys:["F","/"],label:"shortcuts.search"},{keys:["X"],label:"shortcuts.select"},{keys:["?"],label:"shortcuts.help"},{keys:["Esc"],label:"shortcuts.close"}],Vs='.sp-shortcuts-overlay{position:fixed;inset:0;background:var(--sp-backdrop, rgba(15, 23, 42, 0.2));backdrop-filter:blur(var(--sp-blur));-webkit-backdrop-filter:blur(var(--sp-blur));display:flex;align-items:center;justify-content:center;z-index:10;opacity:0;pointer-events:none;transition:opacity 0.2s ease;}.sp-shortcuts-overlay--visible{opacity:1;pointer-events:auto;}.sp-shortcuts-card{width:380px;max-width:calc(100vw - 32px);padding:24px 28px 20px;border-radius:20px;background:var(--sp-glass-bg-heavy);backdrop-filter:blur(var(--sp-blur-heavy));-webkit-backdrop-filter:blur(var(--sp-blur-heavy));border:1px solid var(--sp-glass-border);box-shadow:var(--sp-shadow-xl);font-family:var(--sp-font);position:relative;transform:scale(0.92) translateY(8px);transition:transform 0.25s cubic-bezier(0.16,1,0.3,1);}.sp-shortcuts-overlay--visible .sp-shortcuts-card{transform:scale(1) translateY(0);}.sp-shortcuts-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700;color:var(--sp-text);margin-bottom:18px;}.sp-shortcuts-title svg{width:18px;height:18px;color:var(--sp-text-secondary);flex-shrink:0;}.sp-shortcuts-close{position:absolute;top:16px;right:16px;width:28px;height:28px;border-radius:8px;border:none;background:transparent;color:var(--sp-text-tertiary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background 0.15s ease,color 0.15s ease;}.sp-shortcuts-close:hover{background:var(--sp-bg-hover);color:var(--sp-text);}.sp-shortcuts-close svg{width:14px;height:14px;}.sp-shortcuts-grid{display:flex;flex-direction:column;gap:10px;}.sp-shortcuts-row{display:flex;align-items:center;gap:12px;}.sp-shortcuts-keys{display:flex;align-items:center;gap:4px;min-width:80px;justify-content:flex-end;}.sp-shortcuts-separator{font-size:11px;color:var(--sp-text-tertiary);user-select:none;}.sp-kbd{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:26px;padding:0 7px;border-radius:6px;background:var(--sp-bg-hover);border:1px solid var(--sp-border);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.08),0 1px 2px rgba(0,0,0,0.04);font-family:ui-monospace,"SF Mono","Cascadia Code","Segoe UI Mono",Menlo,monospace;font-size:12px;font-weight:600;color:var(--sp-text);text-align:center;line-height:1;user-select:none;}.sp-shortcuts-desc{font-size:13px;color:var(--sp-text-secondary);line-height:1.3;}.sp-shortcuts-hint{width:24px;height:24px;border-radius:var(--sp-radius-full);border:1px solid var(--sp-border);background:var(--sp-bg-hover);color:var(--sp-text-tertiary);font-family:ui-monospace,"SF Mono","Cascadia Code","Segoe UI Mono",Menlo,monospace;font-size:12px;font-weight:700;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background 0.15s ease,color 0.15s ease,border-color 0.15s ease;position:absolute;bottom:12px;right:12px;}.sp-shortcuts-hint:hover{background:var(--sp-accent-light);color:var(--sp-accent);border-color:var(--sp-accent);}.sp-shortcuts-hint::after{content:attr(aria-label);position:absolute;bottom:calc(100% + 6px);right:0;padding:4px 8px;border-radius:6px;background:var(--sp-glass-bg-heavy);border:1px solid var(--sp-glass-border);box-shadow:var(--sp-shadow-sm);font-family:var(--sp-font);font-size:11px;font-weight:500;color:var(--sp-text-secondary);white-space:nowrap;opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity 0.15s ease,transform 0.15s ease;}.sp-shortcuts-hint:hover::after{opacity:1;transform:translateY(0);}.sp-card--focused{outline:2px solid var(--sp-accent);outline-offset:-2px;border-radius:inherit;}@media (prefers-reduced-motion: reduce){.sp-shortcuts-overlay,.sp-shortcuts-card,.sp-shortcuts-close,.sp-shortcuts-hint,.sp-shortcuts-hint::after{transition-duration:0.01ms !important;}}',Kt='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>',Me=class{constructor(e,n,s){this.t=s;this.keyMap=new Map([["j",()=>n.onNavigate("down")],["k",()=>n.onNavigate("up")],["r",()=>n.onResolve()],["d",()=>n.onDelete()],["f",()=>n.onFocusSearch()],["/",()=>n.onFocusSearch()],["x",()=>n.onToggleSelect()],["?",()=>this.toggleHelp()]]),this.isSuspended=n.isSuspended??(()=>false),this.helpOverlay=this.buildOverlay(),this.hintButton=this.buildHintButton(),this.boundHandler=o=>this.handleKeydown(o);}t;helpOverlay;hintButton;keyMap;isSuspended;boundHandler;shadowRoot=null;enabled=false;helpVisible=false;destroyed=false;enable(e){if(this.destroyed||this.enabled)return;e&&(this.shadowRoot=e),(this.shadowRoot??document).addEventListener("keydown",this.boundHandler),this.enabled=true;}disable(){if(!this.enabled)return;(this.shadowRoot??document).removeEventListener("keydown",this.boundHandler),this.enabled=false,this.helpVisible&&this.hideHelp();}get isHelpVisible(){return this.helpVisible}toggleHelp(){this.helpVisible?this.hideHelp():this.showHelp();}destroy(){this.destroyed||(this.disable(),this.helpOverlay.remove(),this.hintButton.remove(),this.destroyed=true);}handleKeydown(e){if(e.key==="Escape"){this.helpVisible&&(e.preventDefault(),e.stopPropagation(),this.hideHelp());return}if(this.helpVisible||this.isSuspended())return;let n=e.composedPath();if(n.some(r=>r instanceof Element&&r.getAttribute("aria-modal")==="true"))return;let s=n[0];if(s){let r=s.tagName?.toLowerCase();if(r==="input"||r==="textarea"||r==="select"||s.isContentEditable)return}if(e.ctrlKey||e.altKey||e.metaKey)return;let o=this.keyMap.get(e.key);o&&(e.preventDefault(),e.stopPropagation(),o());}showHelp(){this.helpVisible=true,this.helpOverlay.classList.add("sp-shortcuts-overlay--visible"),this.helpOverlay.querySelector(".sp-shortcuts-close")?.focus();}hideHelp(){this.helpVisible=false,this.helpOverlay.classList.remove("sp-shortcuts-overlay--visible");}buildOverlay(){let e=i("div",{class:"sp-shortcuts-overlay"});e.setAttribute("role","dialog"),e.setAttribute("aria-modal","true"),e.setAttribute("aria-label",this.t("shortcuts.title")),e.addEventListener("click",p=>{p.target===e&&this.hideHelp();});let n=i("div",{class:"sp-shortcuts-card"}),s=i("div",{class:"sp-shortcuts-title"});s.appendChild(h(Ut));let o=i("span");l(o,this.t("shortcuts.title")),s.appendChild(o),n.appendChild(s);let r=document.createElement("button");r.className="sp-shortcuts-close",r.setAttribute("aria-label",this.t("shortcuts.close")),r.appendChild(h(Kt)),r.addEventListener("click",()=>this.hideHelp()),n.appendChild(r);let a=i("div",{class:"sp-shortcuts-grid"});for(let p of zt){let d=i("div",{class:"sp-shortcuts-row"}),c=i("div",{class:"sp-shortcuts-keys"});p.keys.forEach((m,k)=>{if(k>0){let x=i("span",{class:"sp-shortcuts-separator"});l(x,"/"),c.appendChild(x);}let y=i("span",{class:"sp-kbd"});l(y,m),c.appendChild(y);});let u=i("span",{class:"sp-shortcuts-desc"});l(u,this.t(p.label)),d.appendChild(c),d.appendChild(u),a.appendChild(d);}return n.appendChild(a),e.appendChild(n),e}buildHintButton(){let e=document.createElement("button");return e.className="sp-shortcuts-hint",e.setAttribute("aria-label",this.t("shortcuts.hint")),l(e,"?"),e.addEventListener("click",n=>{n.stopPropagation(),this.toggleHelp();}),e}};
|
|
8
|
-
export{Xn as $,F as A,js as Aa,U as B,Oe as Ba,z as C,zs as Ca,Sn as D,Ks as Da,En as E,Vs as Ea,le as F,Me as Fa,An as G,Ln as H,Bn as I,Pn as J,Fn as K,On as L,Mn as M,Nn as N,In as O,_n as P,Dn as Q,Hn as R,jn as S,$n as T,Un as U,zn as V,Kn as W,Vn as X,de as Y,Gn as Z,Wn as _,ze as a,W as aa,S as b,Qn as ba,A as c,qn as ca,I as d,he as da,Ne as e,Jn as ea,Ie as f,ts as fa,Z as g,ns as ga,C as h,ss as ha,_e as i,ls as ia,De as j,ps as ja,He as k,ds as ka,je as l,E as la,$e as m,me as ma,Ue as n,fe as na,Ve as o,gs as oa,Ge as p,ye as pa,We as q,xs as qa,Ye as r,we as ra,Xe as s,ys as sa,Qe as t,Ls as ta,qe as u,Be as ua,Je as v,Fs as va,ne as w,Os as wa,h as x,Ms as xa,i as y,Pe as ya,l as z,Ns as za};//# sourceMappingURL=chunk-26577FDQ.js.map
|
|
9
|
-
//# sourceMappingURL=chunk-26577FDQ.js.map
|