@seungyeop-lee/beads-ui 0.13.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.
@@ -0,0 +1,825 @@
1
+ var Ls=Object.create;var Rn=Object.defineProperty;var Ms=Object.getOwnPropertyDescriptor;var Ns=Object.getOwnPropertyNames;var Os=Object.getPrototypeOf,Ps=Object.prototype.hasOwnProperty;var Fs=(t,e,n)=>e in t?Rn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var In=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var zs=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ns(e))!Ps.call(t,r)&&r!==n&&Rn(t,r,{get:()=>e[r],enumerable:!(s=Ms(e,r))||s.enumerable});return t};var Us=(t,e,n)=>(n=t!=null?Ls(Os(t)):{},zs(e||!t||!t.__esModule?Rn(n,"default",{value:t,enumerable:!0}):n,t));var le=(t,e,n)=>Fs(t,typeof e!="symbol"?e+"":e,n);var Rr=In((So,Cr)=>{var _t=1e3,vt=_t*60,xt=vt*60,dt=xt*24,Ws=dt*7,Gs=dt*365.25;Cr.exports=function(t,e){e=e||{};var n=typeof t;if(n==="string"&&t.length>0)return Ks(t);if(n==="number"&&isFinite(t))return e.long?Ys(t):Vs(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function Ks(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]),s=(e[2]||"ms").toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return n*Gs;case"weeks":case"week":case"w":return n*Ws;case"days":case"day":case"d":return n*dt;case"hours":case"hour":case"hrs":case"hr":case"h":return n*xt;case"minutes":case"minute":case"mins":case"min":case"m":return n*vt;case"seconds":case"second":case"secs":case"sec":case"s":return n*_t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function Vs(t){var e=Math.abs(t);return e>=dt?Math.round(t/dt)+"d":e>=xt?Math.round(t/xt)+"h":e>=vt?Math.round(t/vt)+"m":e>=_t?Math.round(t/_t)+"s":t+"ms"}function Ys(t){var e=Math.abs(t);return e>=dt?an(t,e,dt,"day"):e>=xt?an(t,e,xt,"hour"):e>=vt?an(t,e,vt,"minute"):e>=_t?an(t,e,_t,"second"):t+" ms"}function an(t,e,n,s){var r=e>=n*1.5;return Math.round(t/n)+" "+s+(r?"s":"")}});var Dr=In(($o,Ir)=>{function Zs(t){n.debug=n,n.default=n,n.coerce=a,n.disable=o,n.enable=r,n.enabled=l,n.humanize=Rr(),n.destroy=u,Object.keys(t).forEach(p=>{n[p]=t[p]}),n.names=[],n.skips=[],n.formatters={};function e(p){let h=0;for(let f=0;f<p.length;f++)h=(h<<5)-h+p.charCodeAt(f),h|=0;return n.colors[Math.abs(h)%n.colors.length]}n.selectColor=e;function n(p){let h,f=null,g,m;function A(..._){if(!A.enabled)return;let S=A,$=Number(new Date),P=$-(h||$);S.diff=P,S.prev=h,S.curr=$,h=$,_[0]=n.coerce(_[0]),typeof _[0]!="string"&&_.unshift("%O");let E=0;_[0]=_[0].replace(/%([a-zA-Z%])/g,(j,Z)=>{if(j==="%%")return"%";E++;let N=n.formatters[Z];if(typeof N=="function"){let K=_[E];j=N.call(S,K),_.splice(E,1),E--}return j}),n.formatArgs.call(S,_),(S.log||n.log).apply(S,_)}return A.namespace=p,A.useColors=n.useColors(),A.color=n.selectColor(p),A.extend=s,A.destroy=n.destroy,Object.defineProperty(A,"enabled",{enumerable:!0,configurable:!1,get:()=>f!==null?f:(g!==n.namespaces&&(g=n.namespaces,m=n.enabled(p)),m),set:_=>{f=_}}),typeof n.init=="function"&&n.init(A),A}function s(p,h){let f=n(this.namespace+(typeof h>"u"?":":h)+p);return f.log=this.log,f}function r(p){n.save(p),n.namespaces=p,n.names=[],n.skips=[];let h=(typeof p=="string"?p:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let f of h)f[0]==="-"?n.skips.push(f.slice(1)):n.names.push(f)}function i(p,h){let f=0,g=0,m=-1,A=0;for(;f<p.length;)if(g<h.length&&(h[g]===p[f]||h[g]==="*"))h[g]==="*"?(m=g,A=f,g++):(f++,g++);else if(m!==-1)g=m+1,A++,f=A;else return!1;for(;g<h.length&&h[g]==="*";)g++;return g===h.length}function o(){let p=[...n.names,...n.skips.map(h=>"-"+h)].join(",");return n.enable(""),p}function l(p){for(let h of n.skips)if(i(p,h))return!1;for(let h of n.names)if(i(p,h))return!0;return!1}function a(p){return p instanceof Error?p.stack||p.message:p}function u(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}Ir.exports=Zs});var Lr=In((Le,ln)=>{Le.formatArgs=Js;Le.save=Qs;Le.load=ei;Le.useColors=Xs;Le.storage=ti();Le.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();Le.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function Xs(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function Js(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+ln.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let n=0,s=0;t[0].replace(/%[a-zA-Z%]/g,r=>{r!=="%%"&&(n++,r==="%c"&&(s=n))}),t.splice(s,0,e)}Le.log=console.debug||console.log||(()=>{});function Qs(t){try{t?Le.storage.setItem("debug",t):Le.storage.removeItem("debug")}catch{}}function ei(){let t;try{t=Le.storage.getItem("debug")||Le.storage.getItem("DEBUG")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}function ti(){try{return localStorage}catch{}}ln.exports=Dr()(Le);var{formatters:ni}=ln.exports;ni.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var Mt=globalThis,mr=t=>t,on=Mt.trustedTypes,br=on?on.createPolicy("lit-html",{createHTML:t=>t}):void 0,xr="$lit$",Qe=`lit$${Math.random().toFixed(9).slice(2)}$`,Ar="?"+Qe,Bs=`<${Ar}>`,at=document,Nt=()=>at.createComment(""),Ot=t=>t===null||typeof t!="object"&&typeof t!="function",Fn=Array.isArray,Hs=t=>Fn(t)||typeof t?.[Symbol.iterator]=="function",Dn=`[
2
+ \f\r]`,Lt=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,yr=/-->/g,wr=/>/g,it=RegExp(`>|${Dn}(?:([^\\s"'>=/]+)(${Dn}*=${Dn}*(?:[^
3
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),kr=/'/g,_r=/"/g,Sr=/^(?:script|style|textarea|title)$/i,zn=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),T=zn(1),wo=zn(2),ko=zn(3),lt=Symbol.for("lit-noChange"),we=Symbol.for("lit-nothing"),vr=new WeakMap,ot=at.createTreeWalker(at,129);function $r(t,e){if(!Fn(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return br!==void 0?br.createHTML(e):e}var qs=(t,e)=>{let n=t.length-1,s=[],r,i=e===2?"<svg>":e===3?"<math>":"",o=Lt;for(let l=0;l<n;l++){let a=t[l],u,p,h=-1,f=0;for(;f<a.length&&(o.lastIndex=f,p=o.exec(a),p!==null);)f=o.lastIndex,o===Lt?p[1]==="!--"?o=yr:p[1]!==void 0?o=wr:p[2]!==void 0?(Sr.test(p[2])&&(r=RegExp("</"+p[2],"g")),o=it):p[3]!==void 0&&(o=it):o===it?p[0]===">"?(o=r??Lt,h=-1):p[1]===void 0?h=-2:(h=o.lastIndex-p[2].length,u=p[1],o=p[3]===void 0?it:p[3]==='"'?_r:kr):o===_r||o===kr?o=it:o===yr||o===wr?o=Lt:(o=it,r=void 0);let g=o===it&&t[l+1].startsWith("/>")?" ":"";i+=o===Lt?a+Bs:h>=0?(s.push(u),a.slice(0,h)+xr+a.slice(h)+Qe+g):a+Qe+(h===-2?l:g)}return[$r(t,i+(t[n]||"<?>")+(e===2?"</svg>":e===3?"</math>":"")),s]},Pt=class t{constructor({strings:e,_$litType$:n},s){let r;this.parts=[];let i=0,o=0,l=e.length-1,a=this.parts,[u,p]=qs(e,n);if(this.el=t.createElement(u,s),ot.currentNode=this.el.content,n===2||n===3){let h=this.el.content.firstChild;h.replaceWith(...h.childNodes)}for(;(r=ot.nextNode())!==null&&a.length<l;){if(r.nodeType===1){if(r.hasAttributes())for(let h of r.getAttributeNames())if(h.endsWith(xr)){let f=p[o++],g=r.getAttribute(h).split(Qe),m=/([.?@])?(.*)/.exec(f);a.push({type:1,index:i,name:m[2],strings:g,ctor:m[1]==="."?Mn:m[1]==="?"?Nn:m[1]==="@"?On:kt}),r.removeAttribute(h)}else h.startsWith(Qe)&&(a.push({type:6,index:i}),r.removeAttribute(h));if(Sr.test(r.tagName)){let h=r.textContent.split(Qe),f=h.length-1;if(f>0){r.textContent=on?on.emptyScript:"";for(let g=0;g<f;g++)r.append(h[g],Nt()),ot.nextNode(),a.push({type:2,index:++i});r.append(h[f],Nt())}}}else if(r.nodeType===8)if(r.data===Ar)a.push({type:2,index:i});else{let h=-1;for(;(h=r.data.indexOf(Qe,h+1))!==-1;)a.push({type:7,index:i}),h+=Qe.length-1}i++}}static createElement(e,n){let s=at.createElement("template");return s.innerHTML=e,s}};function wt(t,e,n=t,s){if(e===lt)return e;let r=s!==void 0?n._$Co?.[s]:n._$Cl,i=Ot(e)?void 0:e._$litDirective$;return r?.constructor!==i&&(r?._$AO?.(!1),i===void 0?r=void 0:(r=new i(t),r._$AT(t,n,s)),s!==void 0?(n._$Co??(n._$Co=[]))[s]=r:n._$Cl=r),r!==void 0&&(e=wt(t,r._$AS(t,e.values),r,s)),e}var Ln=class{constructor(e,n){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:n},parts:s}=this._$AD,r=(e?.creationScope??at).importNode(n,!0);ot.currentNode=r;let i=ot.nextNode(),o=0,l=0,a=s[0];for(;a!==void 0;){if(o===a.index){let u;a.type===2?u=new Ft(i,i.nextSibling,this,e):a.type===1?u=new a.ctor(i,a.name,a.strings,this,e):a.type===6&&(u=new Pn(i,this,e)),this._$AV.push(u),a=s[++l]}o!==a?.index&&(i=ot.nextNode(),o++)}return ot.currentNode=at,r}p(e){let n=0;for(let s of this._$AV)s!==void 0&&(s.strings!==void 0?(s._$AI(e,s,n),n+=s.strings.length-2):s._$AI(e[n])),n++}},Ft=class t{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,n,s,r){this.type=2,this._$AH=we,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=s,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,n=this._$AM;return n!==void 0&&e?.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=wt(this,e,n),Ot(e)?e===we||e==null||e===""?(this._$AH!==we&&this._$AR(),this._$AH=we):e!==this._$AH&&e!==lt&&this._(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Hs(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==we&&Ot(this._$AH)?this._$AA.nextSibling.data=e:this.T(at.createTextNode(e)),this._$AH=e}$(e){let{values:n,_$litType$:s}=e,r=typeof s=="number"?this._$AC(e):(s.el===void 0&&(s.el=Pt.createElement($r(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===r)this._$AH.p(n);else{let i=new Ln(r,this),o=i.u(this.options);i.p(n),this.T(o),this._$AH=i}}_$AC(e){let n=vr.get(e.strings);return n===void 0&&vr.set(e.strings,n=new Pt(e)),n}k(e){Fn(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,s,r=0;for(let i of e)r===n.length?n.push(s=new t(this.O(Nt()),this.O(Nt()),this,this.options)):s=n[r],s._$AI(i),r++;r<n.length&&(this._$AR(s&&s._$AB.nextSibling,r),n.length=r)}_$AR(e=this._$AA.nextSibling,n){for(this._$AP?.(!1,!0,n);e!==this._$AB;){let s=mr(e).nextSibling;mr(e).remove(),e=s}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},kt=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,n,s,r,i){this.type=1,this._$AH=we,this._$AN=void 0,this.element=e,this.name=n,this._$AM=r,this.options=i,s.length>2||s[0]!==""||s[1]!==""?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=we}_$AI(e,n=this,s,r){let i=this.strings,o=!1;if(i===void 0)e=wt(this,e,n,0),o=!Ot(e)||e!==this._$AH&&e!==lt,o&&(this._$AH=e);else{let l=e,a,u;for(e=i[0],a=0;a<i.length-1;a++)u=wt(this,l[s+a],n,a),u===lt&&(u=this._$AH[a]),o||(o=!Ot(u)||u!==this._$AH[a]),u===we?e=we:e!==we&&(e+=(u??"")+i[a+1]),this._$AH[a]=u}o&&!r&&this.j(e)}j(e){e===we?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}},Mn=class extends kt{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===we?void 0:e}},Nn=class extends kt{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==we)}},On=class extends kt{constructor(e,n,s,r,i){super(e,n,s,r,i),this.type=5}_$AI(e,n=this){if((e=wt(this,e,n,0)??we)===lt)return;let s=this._$AH,r=e===we&&s!==we||e.capture!==s.capture||e.once!==s.once||e.passive!==s.passive,i=e!==we&&(s===we||r);r&&this.element.removeEventListener(this.name,this,s),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},Pn=class{constructor(e,n,s){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(e){wt(this,e)}};var js=Mt.litHtmlPolyfillSupport;js?.(Pt,Ft),(Mt.litHtmlVersions??(Mt.litHtmlVersions=[])).push("3.3.2");var Se=(t,e,n)=>{let s=n?.renderBefore??e,r=s._$litPart$;if(r===void 0){let i=n?.renderBefore??null;s._$litPart$=r=new Ft(e.insertBefore(Nt(),i),i,void 0,n??{})}return r._$AI(t),r};function Te(t,e){let n=t.priority??2,s=e.priority??2;if(n!==s)return n-s;let r=t.created_at??0,i=e.created_at??0;if(r!==i)return r<i?-1:1;let o=t.id,l=e.id;return o<l?-1:o>l?1:0}function Tr(t){return t==="in_progress"?0:t==="closed"?2:1}function Er(t,e){let n=Tr(t.status),s=Tr(e.status);return n!==s?n-s:Te(t,e)}function ct(t,e){let n=t.closed_at??0,s=e.closed_at??0;if(n!==s)return n<s?1:-1;let r=t?.id,i=e?.id;return r<i?-1:r>i?1:0}function et(t=void 0){function e(i){return!t||typeof t.snapshotFor!="function"?[]:t.snapshotFor(i).slice().sort(Te)}function n(i,o){let l=t&&t.snapshotFor?t.snapshotFor(i).slice():[];return o==="in_progress"?l.sort(Te):o==="closed"?l.sort(ct):o==="all"||l.sort(Te),l}function s(i){if(!t||typeof t.snapshotFor!="function")return[];let l=(t.snapshotFor(`detail:${i}`)||[]).find(u=>String(u?.id||"")===String(i));return(Array.isArray(l?.dependents)?l.dependents:[]).slice().sort(Te)}function r(i){return t&&typeof t.subscribe=="function"?t.subscribe(i):()=>{}}return{selectIssuesFor:e,selectBoardColumn:n,selectEpicChildren:s,subscribe:r}}var Mr=Us(Lr(),1);function ce(t){return(0,Mr.default)(`beads-ui:${t}`)}function Nr(t){let e=ce("data");async function n(s){let{id:r}=s;e("updateIssue %s %o",r,Object.keys(s));let i=null;return typeof s.title=="string"&&(i=await t("edit-text",{id:r,field:"title",value:s.title})),typeof s.acceptance=="string"&&(i=await t("edit-text",{id:r,field:"acceptance",value:s.acceptance})),typeof s.notes=="string"&&(i=await t("edit-text",{id:r,field:"notes",value:s.notes})),typeof s.design=="string"&&(i=await t("edit-text",{id:r,field:"design",value:s.design})),typeof s.status=="string"&&(i=await t("update-status",{id:r,status:s.status})),typeof s.priority=="number"&&(i=await t("update-priority",{id:r,priority:s.priority})),typeof s.assignee=="string"&&(i=await t("update-assignee",{id:r,assignee:s.assignee})),e("updateIssue done %s",r),i}return{updateIssue:n}}function Un(t,e={}){let n=ce(`issue-store:${t}`),s=new Map,r=[],i=0,o=new Set,l=!1,a=e.sort||Te;function u(){for(let f of Array.from(o))try{f()}catch{}}function p(){r=Array.from(s.values()).sort(a)}function h(f){if(l||!f||f.id!==t)return;let g=Number(f.revision)||0;if(n("apply %s rev=%d",f.type,g),!(g<=i&&f.type!=="snapshot")){if(f.type==="snapshot"){if(g<=i)return;s.clear();let m=Array.isArray(f.issues)?f.issues:[];for(let A of m)A&&typeof A.id=="string"&&A.id.length>0&&s.set(A.id,A);p(),i=g,u();return}if(f.type==="upsert"){let m=f.issue;if(m&&typeof m.id=="string"&&m.id.length>0){let A=s.get(m.id);if(!A)s.set(m.id,m);else{let _=Number.isFinite(A.updated_at)?A.updated_at:0,S=Number.isFinite(m.updated_at)?m.updated_at:0;if(_<=S){for(let $ of Object.keys(A))$ in m||delete A[$];for(let[$,P]of Object.entries(m))A[$]=P}}p()}i=g,u()}else if(f.type==="delete"){let m=String(f.issue_id||"");m&&(s.delete(m),p()),i=g,u()}}}return{id:t,subscribe(f){return o.add(f),()=>{o.delete(f)}},applyPush:h,snapshot(){return r},size(){return s.size},getById(f){return s.get(f)},dispose(){l=!0,s.clear(),r=[],o.clear(),i=0}}}function cn(t){let e=String(t.type||"").trim(),n={};if(t.params&&typeof t.params=="object"){let r=Object.keys(t.params).sort();for(let i of r){let o=t.params[i];n[i]=String(o)}}let s=new URLSearchParams(n).toString();return s.length>0?`${e}?${s}`:e}function Or(t){let e=ce("subs"),n=new Map,s=new Map;function r(l,a){e("applyDelta %s +%d ~%d -%d",l,(a.added||[]).length,(a.updated||[]).length,(a.removed||[]).length);let u=s.get(l);if(!u||u.size===0)return;let p=Array.isArray(a.added)?a.added:[],h=Array.isArray(a.updated)?a.updated:[],f=Array.isArray(a.removed)?a.removed:[];for(let g of Array.from(u)){let m=n.get(g);if(!m)continue;let A=m.itemsById;for(let _ of p)typeof _=="string"&&_.length>0&&A.set(_,!0);for(let _ of h)typeof _=="string"&&_.length>0&&A.set(_,!0);for(let _ of f)typeof _=="string"&&_.length>0&&A.delete(_)}}async function i(l,a){let u=cn(a);if(e("subscribe %s key=%s",l,u),!n.has(l))n.set(l,{key:u,itemsById:new Map});else{let h=n.get(l);if(h&&h.key!==u){let f=s.get(h.key);f&&(f.delete(l),f.size===0&&s.delete(h.key)),n.set(l,{key:u,itemsById:new Map})}}s.has(u)||s.set(u,new Set);let p=s.get(u);p&&p.add(l);try{await t("subscribe-list",{id:l,type:a.type,params:a.params})}catch(h){let f=n.get(l)||null;if(f){let g=s.get(f.key);g&&(g.delete(l),g.size===0&&s.delete(f.key))}throw n.delete(l),h}return async()=>{e("unsubscribe %s key=%s",l,u);try{await t("unsubscribe-list",{id:l})}catch{}let h=n.get(l)||null;if(h){let f=s.get(h.key);f&&(f.delete(l),f.size===0&&s.delete(h.key))}n.delete(l)}}return{subscribeList:i,_applyDelta:r,_subKeyOf:cn,selectors:{getIds(l){let a=n.get(l);return a?Array.from(a.itemsById.keys()):[]},has(l,a){let u=n.get(l);return u?u.itemsById.has(a):!1},count(l){let a=n.get(l);return a?a.itemsById.size:0},getItemsById(l){let a=n.get(l),u={};if(!a)return u;for(let p of a.itemsById.keys())u[p]=!0;return u}}}}function Pr(){let t=ce("issue-stores"),e=new Map,n=new Map,s=new Set,r=new Map;function i(){for(let a of Array.from(s))try{a()}catch{}}function o(a,u,p){let h=u?cn(u):"",f=n.get(a)||"",g=e.has(a);if(t("register %s key=%s (prev=%s)",a,h,f),g&&f&&h&&f!==h){let m=e.get(a);if(m)try{m.dispose()}catch{}let A=r.get(a);if(A){try{A()}catch{}r.delete(a)}let _=Un(a,p);e.set(a,_);let S=_.subscribe(()=>i());r.set(a,S)}else if(!g){let m=Un(a,p);e.set(a,m);let A=m.subscribe(()=>i());r.set(a,A)}return n.set(a,h),()=>l(a)}function l(a){t("unregister %s",a),n.delete(a);let u=e.get(a);u&&(u.dispose(),e.delete(a));let p=r.get(a);if(p){try{p()}catch{}r.delete(a)}}return{register:o,unregister:l,getStore(a){return e.get(a)||null},snapshotFor(a){let u=e.get(a);return u?u.snapshot().slice():[]},subscribe(a){return s.add(a),()=>s.delete(a)}}}function tt(t,e){return`#/${t==="epics"||t==="board"?t:"issues"}?issue=${encodeURIComponent(e)}`}function dn(t){let e=String(t||""),n=e.startsWith("#")?e.slice(1):e,s=n.indexOf("?"),r=s>=0?n.slice(s+1):"";if(r){let l=new URLSearchParams(r).get("issue");if(l)return decodeURIComponent(l)}let i=/^\/issue\/([^\s?#]+)/.exec(n);return i&&i[1]?decodeURIComponent(i[1]):null}function At(t){let e=String(t||"");return/^#\/epics(\b|\/|$)/.test(e)?"epics":/^#\/board(\b|\/|$)/.test(e)?"board":"issues"}function Fr(t){let e=ce("router"),n=()=>{let s=window.location.hash||"",r=/^#\/issue\/([^\s?#]+)/.exec(s);if(r&&r[1]){let l=decodeURIComponent(r[1]);t.setState({selected_id:l,view:"issues"});let a=`#/issues?issue=${encodeURIComponent(l)}`;if(window.location.hash!==a){window.location.hash=a;return}}let i=dn(s),o=At(s);e("hash change \u2192 view=%s id=%s",o,i),t.setState({selected_id:i,view:o})};return{start(){window.addEventListener("hashchange",n),n()},stop(){window.removeEventListener("hashchange",n)},gotoIssue(s){let i=(t.getState?t.getState():{view:"issues"}).view||"issues",o=tt(i,s);e("goto issue %s (view=%s)",s,i),window.location.hash!==o?window.location.hash=o:t.setState({selected_id:s,view:i})},gotoView(s){let i=(t.getState?t.getState():{selected_id:null}).selected_id,o=i?tt(s,i):`#/${s}`;e("goto view %s (id=%s)",s,i||""),window.location.hash!==o?window.location.hash=o:t.setState({view:s,selected_id:null})}}}function zr(t={}){let e=ce("state"),n={selected_id:t.selected_id??null,view:t.view??"issues",filters:{status:t.filters?.status??["open","in_progress"],search:t.filters?.search??"",type:typeof t.filters?.type=="string"?t.filters?.type:""},board:{closed_filter:t.board?.closed_filter==="3"||t.board?.closed_filter==="7"||t.board?.closed_filter==="today"?t.board?.closed_filter:"today"},workspace:{current:t.workspace?.current??null,available:t.workspace?.available??[]}},s=new Set;function r(){for(let i of Array.from(s))try{i(n)}catch{}}return{getState(){return n},setState(i){let o={...n,...i,filters:{...n.filters,...i.filters||{}},board:{...n.board,...i.board||{}},workspace:{current:i.workspace?.current!==void 0?i.workspace.current:n.workspace.current,available:i.workspace?.available!==void 0?i.workspace.available:n.workspace.available}},l=o.workspace.current?.path!==n.workspace.current?.path||o.workspace.available.length!==n.workspace.available.length,a=o.filters.status.length===n.filters.status.length&&o.filters.status.every((u,p)=>u===n.filters.status[p]);o.selected_id===n.selected_id&&o.view===n.view&&a&&o.filters.search===n.filters.search&&o.filters.type===n.filters.type&&o.board.closed_filter===n.board.closed_filter&&!l||(n=o,e("state change %o",{selected_id:n.selected_id,view:n.view,filters:n.filters,board:n.board,workspace:n.workspace.current?.path}),r())},subscribe(i){return s.add(i),()=>s.delete(i)}}}function Ur(t){let e=ce("activity"),n=0,s=new Map,r=1;function i(){if(!t)return;let u=n>0;t.toggleAttribute("hidden",!u),t.setAttribute("aria-busy",u?"true":"false")}function o(){n+=1,e("start count=%d",n),i()}function l(){let u=n;n=Math.max(0,n-1),u<=0?e("done called but count was already %d",u):e("done count=%d\u2192%d",u,n),i()}function a(u){return async(h,f)=>{let g=r++,m=Date.now();s.set(g,{type:h,start_ts:m}),e("request start id=%d type=%s count=%d",g,h,n+1),o();let A=!1,_=()=>{A||(A=!0,s.delete(g),l())},S=setTimeout(()=>{A||(e("request TIMEOUT id=%d type=%s elapsed=%dms",g,h,Date.now()-m),_())},3e4);try{let $=await u(h,f),P=Date.now()-m;return e("request done id=%d type=%s elapsed=%dms",g,h,P),$}catch($){let P=Date.now()-m;throw e("request error id=%d type=%s elapsed=%dms err=%o",g,h,P,$),$}finally{clearTimeout(S),_()}}}return i(),{wrapSend:a,start:o,done:l,getCount:()=>n,getActiveRequests:()=>{let u=Date.now();return Array.from(s.entries()).map(([p,h])=>({id:p,type:h.type,elapsed_ms:u-h.start_ts}))}}}function ue(t,e="info",n=2800){let s=document.createElement("div");s.className="toast",s.textContent=t,s.style.position="fixed",s.style.right="12px",s.style.bottom="12px",s.style.zIndex="1000",s.style.color="#fff",s.style.padding="8px 10px",s.style.borderRadius="4px",s.style.fontSize="12px",e==="success"?s.style.background="#156d36":e==="error"?s.style.background="#9f2011":s.style.background="rgba(0,0,0,0.85)",(document.body||document.documentElement).appendChild(s),setTimeout(()=>{try{s.remove()}catch{}},n)}function nt(t,e){let n=typeof e?.duration_ms=="number"?e.duration_ms:1200,s=document.createElement("button");s.className=(e?.class_name?e.class_name+" ":"")+"mono id-copy",s.type="button",s.setAttribute("aria-live","polite"),s.setAttribute("title","Copy issue ID"),s.setAttribute("aria-label",`Copy issue ID ${t}`),s.textContent=t;async function r(){try{let i=!1;if(navigator.clipboard&&typeof navigator.clipboard.writeText=="function")await navigator.clipboard.writeText(String(t)),i=!0;else{let o=document.createElement("textarea");o.value=String(t),o.style.position="fixed",o.style.left="-9999px",o.style.opacity="0";let l=s.closest("dialog[open]")||document.body;l.appendChild(o),o.focus(),o.select();try{i=document.execCommand("copy")}finally{l.removeChild(o)}}if(i){s.textContent="Copied";let o=s.getAttribute("aria-label")||"";s.setAttribute("aria-label","Copied"),setTimeout(()=>{s.textContent=t,s.setAttribute("aria-label",o)},Math.max(80,n))}}catch{}}return s.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation(),r()}),s.addEventListener("keydown",i=>{(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),i.stopPropagation(),r())}),s}var rt=["Critical","High","Medium","Low","Backlog"];function Br(t){let e=typeof t=="number"?t:2,n=document.createElement("span");n.className="priority-badge",n.classList.add(`is-p${Math.max(0,Math.min(4,e))}`),n.setAttribute("role","img");let s=ri(e);return n.setAttribute("title",s),n.setAttribute("aria-label",`Priority: ${s}`),n.textContent=zt(e)+" "+s,n}function ri(t){let e=Math.max(0,Math.min(4,t));return rt[e]||"Medium"}function zt(t){switch(t){case 0:return"\u{1F525}";case 1:return"\u26A1\uFE0F";case 2:return"\u{1F527}";case 3:return"\u{1FAB6}";case 4:return"\u{1F4A4}";default:return"\u{1F527}"}}function ut(t){let e=document.createElement("span");e.className="type-badge";let n=(t||"").toString().toLowerCase(),s=new Set(["bug","feature","task","epic","chore"]),r=s.has(n)?n:"neutral";e.classList.add(`type-badge--${r}`),e.setAttribute("role","img");let i=s.has(n)?n==="bug"?"Bug":n==="feature"?"Feature":n==="task"?"Task":n==="epic"?"Epic":"Chore":"\u2014";return e.setAttribute("aria-label",s.has(n)?`Issue type: ${i}`:"Issue type: unknown"),e.setAttribute("title",s.has(n)?`Type: ${i}`:"Type: unknown"),e.textContent=i,e}var si={"blocked-col":"open","ready-col":"open","in-progress-col":"in_progress","closed-col":"closed"};function Hr(t,e,n,s,r=void 0,i=void 0,o=void 0){let l=ce("views:board"),a=[],u=[],p=[],h=[],f=[],g=i?et(i):null,m="today";if(s)try{let y=s.getState(),v=y&&y.board?String(y.board.closed_filter||"today"):"today";(v==="today"||v==="3"||v==="7")&&(m=v)}catch{}function A(){return T`
4
+ <div class="panel__body board-root">
5
+ ${_("Blocked","blocked-col",u)}
6
+ ${_("Ready","ready-col",a)}
7
+ ${_("In Progress","in-progress-col",p)}
8
+ ${_("Closed","closed-col",h)}
9
+ </div>
10
+ `}function _(y,v,D){let R=Array.isArray(D)?D.length:0,B=R===1?"1 issue":`${R} issues`;return T`
11
+ <section class="board-column" id=${v}>
12
+ <header
13
+ class="board-column__header"
14
+ id=${v+"-header"}
15
+ role="heading"
16
+ aria-level="2"
17
+ >
18
+ <div class="board-column__title">
19
+ <span class="board-column__title-text">${y}</span>
20
+ <span class="badge board-column__count" aria-label=${B}>
21
+ ${R}
22
+ </span>
23
+ </div>
24
+ ${v==="closed-col"?T`<label class="board-closed-filter">
25
+ <span class="visually-hidden">Filter closed issues</span>
26
+ <select
27
+ id="closed-filter"
28
+ aria-label="Filter closed issues"
29
+ @change=${X}
30
+ >
31
+ <option
32
+ value="today"
33
+ ?selected=${m==="today"}
34
+ >
35
+ Today
36
+ </option>
37
+ <option value="3" ?selected=${m==="3"}>
38
+ Last 3 days
39
+ </option>
40
+ <option value="7" ?selected=${m==="7"}>
41
+ Last 7 days
42
+ </option>
43
+ </select>
44
+ </label>`:""}
45
+ </header>
46
+ <div
47
+ class="board-column__body"
48
+ role="list"
49
+ aria-labelledby=${v+"-header"}
50
+ >
51
+ ${D.map(W=>S(W))}
52
+ </div>
53
+ </section>
54
+ `}function S(y){return T`
55
+ <article
56
+ class="board-card"
57
+ data-issue-id=${y.id}
58
+ role="listitem"
59
+ tabindex="-1"
60
+ draggable="true"
61
+ @click=${v=>P(v,y.id)}
62
+ @dragstart=${v=>E(v,y.id)}
63
+ @dragend=${F}
64
+ >
65
+ <div class="board-card__title text-truncate">
66
+ ${y.title||"(no title)"}
67
+ </div>
68
+ <div class="board-card__meta">
69
+ ${ut(y.issue_type)} ${Br(y.priority)}
70
+ ${nt(y.id,{class_name:"mono"})}
71
+ </div>
72
+ </article>
73
+ `}let $=null;function P(y,v){$||n(v)}function E(y,v){$=v,y.dataTransfer&&(y.dataTransfer.setData("text/plain",v),y.dataTransfer.effectAllowed="move"),y.target.classList.add("board-card--dragging"),l("dragstart %s",v)}function F(y){y.target.classList.remove("board-card--dragging"),j(),setTimeout(()=>{$=null},0),l("dragend")}function j(){let y=Array.from(t.querySelectorAll(".board-column--drag-over"));for(let v of y)v.classList.remove("board-column--drag-over")}async function Z(y,v){if(!o){l("no transport available, status update skipped"),ue("Cannot update status: not connected","error");return}try{l("update-status %s \u2192 %s",y,v),await o("update-status",{id:y,status:v}),ue("Status updated","success",1500)}catch(D){l("update-status failed: %o",D),ue("Failed to update status","error")}}function N(){Se(A(),t),K()}function K(){try{let y=Array.from(t.querySelectorAll(".board-column"));for(let v of y){let D=v.querySelector(".board-column__body");if(!D)continue;let R=Array.from(D.querySelectorAll(".board-card")),B=v.querySelector(".board-column__header"),W=B&&B.textContent?.trim()||"";for(let U of R){let Y=U.querySelector(".board-card__title"),q=Y&&Y.textContent?.trim()||"";U.setAttribute("aria-label",`Issue ${q||"(no title)"} \u2014 Column ${W}`),U.tabIndex=-1}R.length>0&&(R[0].tabIndex=0)}}catch{}}t.addEventListener("keydown",y=>{let v=y.target;if(!v||!(v instanceof HTMLElement))return;let D=String(v.tagName||"").toLowerCase();if(D==="input"||D==="textarea"||D==="select"||v.isContentEditable===!0)return;let R=v.closest(".board-card");if(!R)return;let B=String(y.key||"");if(B==="Enter"||B===" "){y.preventDefault();let pe=R.getAttribute("data-issue-id");pe&&n(pe);return}if(B!=="ArrowUp"&&B!=="ArrowDown"&&B!=="ArrowLeft"&&B!=="ArrowRight")return;y.preventDefault();let W=R.closest(".board-column");if(!W)return;let U=W.querySelector(".board-column__body");if(!U)return;let Y=Array.from(U.querySelectorAll(".board-card")),q=Y.indexOf(R);if(q!==-1){if(B==="ArrowDown"&&q<Y.length-1){se(Y[q],Y[q+1]);return}if(B==="ArrowUp"&&q>0){se(Y[q],Y[q-1]);return}if(B==="ArrowRight"||B==="ArrowLeft"){let pe=Array.from(t.querySelectorAll(".board-column")),te=pe.indexOf(W);if(te===-1)return;let _e=B==="ArrowRight"?1:-1,fe=te+_e,ie=null;for(;fe>=0&&fe<pe.length;){let ne=pe[fe],me=ne.querySelector(".board-column__body");if((me?Array.from(me.querySelectorAll(".board-card")):[]).length>0){ie=ne;break}fe+=_e}if(ie){let ne=ie.querySelector(".board-column__body .board-card");ne&&se(R,ne)}return}}});let G=null;t.addEventListener("dragover",y=>{y.preventDefault(),y.dataTransfer&&(y.dataTransfer.dropEffect="move");let D=y.target.closest(".board-column");D&&D!==G&&(G&&G.classList.remove("board-column--drag-over"),D.classList.add("board-column--drag-over"),G=D)}),t.addEventListener("dragleave",y=>{let v=y.relatedTarget;(!v||!t.contains(v))&&G&&(G.classList.remove("board-column--drag-over"),G=null)}),t.addEventListener("drop",y=>{y.preventDefault(),G&&(G.classList.remove("board-column--drag-over"),G=null);let D=y.target.closest(".board-column");if(!D)return;let R=D.id,B=si[R];if(!B){l("drop on unknown column: %s",R);return}let W=y.dataTransfer?.getData("text/plain");if(!W){l("drop without issue id");return}l("drop %s on %s \u2192 %s",W,R,B),Z(W,B)});function se(y,v){try{y.tabIndex=-1,v.tabIndex=0,v.focus()}catch{}}function ge(){l("applyClosedFilter %s",m);let y=Array.isArray(f)?[...f]:[],v=new Date,D=0;m==="today"?D=new Date(v.getFullYear(),v.getMonth(),v.getDate(),0,0,0,0).getTime():m==="3"?D=v.getTime()-4320*60*1e3:m==="7"&&(D=v.getTime()-10080*60*1e3),y=y.filter(R=>{let B=Number.isFinite(R.closed_at)?R.closed_at:NaN;return Number.isFinite(B)?B>=D:!1}),y.sort(ct),h=y}function X(y){try{let v=y.target,D=String(v.value||"today");if(m=D==="3"||D==="7"?D:"today",l("closed filter %s",m),s)try{s.setState({board:{closed_filter:m}})}catch{}ge(),N()}catch{}}function k(){try{if(g){let y=g.selectBoardColumn("tab:board","all"),v=[],D=[],R=[],B=[],W=new Set;for(let Y of y){let q=Y._board_column;q==="in_progress"?(R.push(Y),W.add(Y.id)):q==="blocked"?D.push(Y):q==="closed"?B.push(Y):v.push(Y)}let U=v.filter(Y=>!W.has(Y.id));U.sort(Te),D.sort(Te),R.sort(Te),B.sort(ct),a=U,u=D,p=R,f=B}ge(),N()}catch{a=[],u=[],p=[],h=[],N()}}return g&&g.subscribe(()=>{try{k()}catch{}}),{async load(){l("load"),k();try{let y=!!(r&&r.selectors),D=(W=>{if(!y||!r)return 0;let U=r.selectors;if(typeof U.count=="function")return Number(U.count(W)||0);try{let Y=U.getIds(W);return Array.isArray(Y)?Y.length:0}catch{return 0}})("tab:board"),R=e,B=R&&typeof R.getReady=="function"&&typeof R.getBlocked=="function"&&typeof R.getInProgress=="function"&&typeof R.getClosed=="function";if(D===0&&B){l("fallback fetch");let[W,U,Y,q]=await Promise.all([R.getReady().catch(()=>[]),R.getBlocked().catch(()=>[]),R.getInProgress().catch(()=>[]),R.getClosed().catch(()=>[])]),pe=Array.isArray(W)?W.map(ne=>ne):[],te=Array.isArray(U)?U.map(ne=>ne):[],_e=Array.isArray(Y)?Y.map(ne=>ne):[],fe=Array.isArray(q)?q.map(ne=>ne):[],ie=new Set(_e.map(ne=>ne.id));pe=pe.filter(ne=>!ie.has(ne.id)),pe.sort(Te),te.sort(Te),_e.sort(Te),a=pe,u=te,p=_e,f=fe,ge(),N()}}catch{}},clear(){t.replaceChildren(),a=[],u=[],p=[],h=[]}}}var{entries:Xr,setPrototypeOf:qr,isFrozen:ii,getPrototypeOf:oi,getOwnPropertyDescriptor:ai}=Object,{freeze:Ce,seal:ze,create:Wt}=Object,{apply:Kn,construct:Vn}=typeof Reflect<"u"&&Reflect;Ce||(Ce=function(e){return e});ze||(ze=function(e){return e});Kn||(Kn=function(e,n){for(var s=arguments.length,r=new Array(s>2?s-2:0),i=2;i<s;i++)r[i-2]=arguments[i];return e.apply(n,r)});Vn||(Vn=function(e){for(var n=arguments.length,s=new Array(n>1?n-1:0),r=1;r<n;r++)s[r-1]=arguments[r];return new e(...s)});var Ut=Re(Array.prototype.forEach),li=Re(Array.prototype.lastIndexOf),jr=Re(Array.prototype.pop),Bt=Re(Array.prototype.push),ci=Re(Array.prototype.splice),pn=Re(String.prototype.toLowerCase),Bn=Re(String.prototype.toString),Hn=Re(String.prototype.match),St=Re(String.prototype.replace),di=Re(String.prototype.indexOf),ui=Re(String.prototype.trim),Ue=Re(Object.prototype.hasOwnProperty),Ee=Re(RegExp.prototype.test),Ht=pi(TypeError);function Re(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var n=arguments.length,s=new Array(n>1?n-1:0),r=1;r<n;r++)s[r-1]=arguments[r];return Kn(t,e,s)}}function pi(t){return function(){for(var e=arguments.length,n=new Array(e),s=0;s<e;s++)n[s]=arguments[s];return Vn(t,n)}}function Q(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:pn;qr&&qr(t,null);let s=e.length;for(;s--;){let r=e[s];if(typeof r=="string"){let i=n(r);i!==r&&(ii(e)||(e[s]=i),r=i)}t[r]=!0}return t}function fi(t){for(let e=0;e<t.length;e++)Ue(t,e)||(t[e]=null);return t}function je(t){let e=Wt(null);for(let[n,s]of Xr(t))Ue(t,n)&&(Array.isArray(s)?e[n]=fi(s):s&&typeof s=="object"&&s.constructor===Object?e[n]=je(s):e[n]=s);return e}function qt(t,e){for(;t!==null;){let s=ai(t,e);if(s){if(s.get)return Re(s.get);if(typeof s.value=="function")return Re(s.value)}t=oi(t)}function n(){return null}return n}var Wr=Ce(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),qn=Ce(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),jn=Ce(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),hi=Ce(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Wn=Ce(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),gi=Ce(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Gr=Ce(["#text"]),Kr=Ce(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),Gn=Ce(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Vr=Ce(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),un=Ce(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),mi=ze(/\{\{[\w\W]*|[\w\W]*\}\}/gm),bi=ze(/<%[\w\W]*|[\w\W]*%>/gm),yi=ze(/\$\{[\w\W]*/gm),wi=ze(/^data-[\-\w.\u00B7-\uFFFF]+$/),ki=ze(/^aria-[\-\w]+$/),Jr=ze(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),_i=ze(/^(?:\w+script|data):/i),vi=ze(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Qr=ze(/^html$/i),xi=ze(/^[a-z][.\w]*(-[.\w]+)+$/i),Yr=Object.freeze({__proto__:null,ARIA_ATTR:ki,ATTR_WHITESPACE:vi,CUSTOM_ELEMENT:xi,DATA_ATTR:wi,DOCTYPE_NAME:Qr,ERB_EXPR:bi,IS_ALLOWED_URI:Jr,IS_SCRIPT_OR_DATA:_i,MUSTACHE_EXPR:mi,TMPLIT_EXPR:yi}),jt={element:1,text:3,progressingInstruction:7,comment:8,document:9},Ai=function(){return typeof window>"u"?null:window},Si=function(e,n){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let s=null,r="data-tt-policy-suffix";n&&n.hasAttribute(r)&&(s=n.getAttribute(r));let i="dompurify"+(s?"#"+s:"");try{return e.createPolicy(i,{createHTML(o){return o},createScriptURL(o){return o}})}catch{return console.warn("TrustedTypes policy "+i+" could not be created."),null}},Zr=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function es(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Ai(),e=z=>es(z);if(e.version="3.4.0",e.removed=[],!t||!t.document||t.document.nodeType!==jt.document||!t.Element)return e.isSupported=!1,e;let{document:n}=t,s=n,r=s.currentScript,{DocumentFragment:i,HTMLTemplateElement:o,Node:l,Element:a,NodeFilter:u,NamedNodeMap:p=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:h,DOMParser:f,trustedTypes:g}=t,m=a.prototype,A=qt(m,"cloneNode"),_=qt(m,"remove"),S=qt(m,"nextSibling"),$=qt(m,"childNodes"),P=qt(m,"parentNode");if(typeof o=="function"){let z=n.createElement("template");z.content&&z.content.ownerDocument&&(n=z.content.ownerDocument)}let E,F="",{implementation:j,createNodeIterator:Z,createDocumentFragment:N,getElementsByTagName:K}=n,{importNode:G}=s,se=Zr();e.isSupported=typeof Xr=="function"&&typeof P=="function"&&j&&j.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:ge,ERB_EXPR:X,TMPLIT_EXPR:k,DATA_ATTR:y,ARIA_ATTR:v,IS_SCRIPT_OR_DATA:D,ATTR_WHITESPACE:R,CUSTOM_ELEMENT:B}=Yr,{IS_ALLOWED_URI:W}=Yr,U=null,Y=Q({},[...Wr,...qn,...jn,...Wn,...Gr]),q=null,pe=Q({},[...Kr,...Gn,...Vr,...un]),te=Object.seal(Wt(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),_e=null,fe=null,ie=Object.seal(Wt(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),ne=!0,me=!0,qe=!1,Ge=!0,Oe=!1,w=!0,b=!1,H=!1,V=!1,J=!1,be=!1,st=!1,Qt=!0,en=!1,An="user-content-",Tt=!0,Ve=!1,Ye={},Me=null,Et=Q({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),L=null,tn=Q({},["audio","video","img","source","image","track"]),Ct=null,nn=Q({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),mt="http://www.w3.org/1998/Math/MathML",bt="http://www.w3.org/2000/svg",Pe="http://www.w3.org/1999/xhtml",Ze=Pe,Rt=!1,d=null,C=Q({},[mt,bt,Pe],Bn),M=Q({},["mi","mo","mn","ms","mtext"]),I=Q({},["annotation-xml"]),de=Q({},["title","style","font","a","script"]),ve=null,rn=["application/xhtml+xml","text/html"],xe="text/html",ye=null,Xe=null,Sn=n.createElement("form"),yt=function(c){return c instanceof RegExp||c instanceof Function},It=function(){let c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Xe&&Xe===c)){if((!c||typeof c!="object")&&(c={}),c=je(c),ve=rn.indexOf(c.PARSER_MEDIA_TYPE)===-1?xe:c.PARSER_MEDIA_TYPE,ye=ve==="application/xhtml+xml"?Bn:pn,U=Ue(c,"ALLOWED_TAGS")?Q({},c.ALLOWED_TAGS,ye):Y,q=Ue(c,"ALLOWED_ATTR")?Q({},c.ALLOWED_ATTR,ye):pe,d=Ue(c,"ALLOWED_NAMESPACES")?Q({},c.ALLOWED_NAMESPACES,Bn):C,Ct=Ue(c,"ADD_URI_SAFE_ATTR")?Q(je(nn),c.ADD_URI_SAFE_ATTR,ye):nn,L=Ue(c,"ADD_DATA_URI_TAGS")?Q(je(tn),c.ADD_DATA_URI_TAGS,ye):tn,Me=Ue(c,"FORBID_CONTENTS")?Q({},c.FORBID_CONTENTS,ye):Et,_e=Ue(c,"FORBID_TAGS")?Q({},c.FORBID_TAGS,ye):je({}),fe=Ue(c,"FORBID_ATTR")?Q({},c.FORBID_ATTR,ye):je({}),Ye=Ue(c,"USE_PROFILES")?c.USE_PROFILES:!1,ne=c.ALLOW_ARIA_ATTR!==!1,me=c.ALLOW_DATA_ATTR!==!1,qe=c.ALLOW_UNKNOWN_PROTOCOLS||!1,Ge=c.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Oe=c.SAFE_FOR_TEMPLATES||!1,w=c.SAFE_FOR_XML!==!1,b=c.WHOLE_DOCUMENT||!1,J=c.RETURN_DOM||!1,be=c.RETURN_DOM_FRAGMENT||!1,st=c.RETURN_TRUSTED_TYPE||!1,V=c.FORCE_BODY||!1,Qt=c.SANITIZE_DOM!==!1,en=c.SANITIZE_NAMED_PROPS||!1,Tt=c.KEEP_CONTENT!==!1,Ve=c.IN_PLACE||!1,W=c.ALLOWED_URI_REGEXP||Jr,Ze=c.NAMESPACE||Pe,M=c.MATHML_TEXT_INTEGRATION_POINTS||M,I=c.HTML_INTEGRATION_POINTS||I,te=c.CUSTOM_ELEMENT_HANDLING||Wt(null),c.CUSTOM_ELEMENT_HANDLING&&yt(c.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(te.tagNameCheck=c.CUSTOM_ELEMENT_HANDLING.tagNameCheck),c.CUSTOM_ELEMENT_HANDLING&&yt(c.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(te.attributeNameCheck=c.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),c.CUSTOM_ELEMENT_HANDLING&&typeof c.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(te.allowCustomizedBuiltInElements=c.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Oe&&(me=!1),be&&(J=!0),Ye&&(U=Q({},Gr),q=Wt(null),Ye.html===!0&&(Q(U,Wr),Q(q,Kr)),Ye.svg===!0&&(Q(U,qn),Q(q,Gn),Q(q,un)),Ye.svgFilters===!0&&(Q(U,jn),Q(q,Gn),Q(q,un)),Ye.mathMl===!0&&(Q(U,Wn),Q(q,Vr),Q(q,un))),ie.tagCheck=null,ie.attributeCheck=null,c.ADD_TAGS&&(typeof c.ADD_TAGS=="function"?ie.tagCheck=c.ADD_TAGS:(U===Y&&(U=je(U)),Q(U,c.ADD_TAGS,ye))),c.ADD_ATTR&&(typeof c.ADD_ATTR=="function"?ie.attributeCheck=c.ADD_ATTR:(q===pe&&(q=je(q)),Q(q,c.ADD_ATTR,ye))),c.ADD_URI_SAFE_ATTR&&Q(Ct,c.ADD_URI_SAFE_ATTR,ye),c.FORBID_CONTENTS&&(Me===Et&&(Me=je(Me)),Q(Me,c.FORBID_CONTENTS,ye)),c.ADD_FORBID_CONTENTS&&(Me===Et&&(Me=je(Me)),Q(Me,c.ADD_FORBID_CONTENTS,ye)),Tt&&(U["#text"]=!0),b&&Q(U,["html","head","body"]),U.table&&(Q(U,["tbody"]),delete _e.tbody),c.TRUSTED_TYPES_POLICY){if(typeof c.TRUSTED_TYPES_POLICY.createHTML!="function")throw Ht('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof c.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Ht('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');E=c.TRUSTED_TYPES_POLICY,F=E.createHTML("")}else E===void 0&&(E=Si(g,r)),E!==null&&typeof F=="string"&&(F=E.createHTML(""));Ce&&Ce(c),Xe=c}},Dt=Q({},[...qn,...jn,...hi]),sn=Q({},[...Wn,...gi]),ee=function(c){let x=P(c);(!x||!x.tagName)&&(x={namespaceURI:Ze,tagName:"template"});let O=pn(c.tagName),he=pn(x.tagName);return d[c.namespaceURI]?c.namespaceURI===bt?x.namespaceURI===Pe?O==="svg":x.namespaceURI===mt?O==="svg"&&(he==="annotation-xml"||M[he]):!!Dt[O]:c.namespaceURI===mt?x.namespaceURI===Pe?O==="math":x.namespaceURI===bt?O==="math"&&I[he]:!!sn[O]:c.namespaceURI===Pe?x.namespaceURI===bt&&!I[he]||x.namespaceURI===mt&&!M[he]?!1:!sn[O]&&(de[O]||!Dt[O]):!!(ve==="application/xhtml+xml"&&d[c.namespaceURI]):!1},oe=function(c){Bt(e.removed,{element:c});try{P(c).removeChild(c)}catch{_(c)}},Fe=function(c,x){try{Bt(e.removed,{attribute:x.getAttributeNode(c),from:x})}catch{Bt(e.removed,{attribute:null,from:x})}if(x.removeAttribute(c),c==="is")if(J||be)try{oe(x)}catch{}else try{x.setAttribute(c,"")}catch{}},$n=function(c){let x=null,O=null;if(V)c="<remove></remove>"+c;else{let ke=Hn(c,/^[\r\n\t ]+/);O=ke&&ke[0]}ve==="application/xhtml+xml"&&Ze===Pe&&(c='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+c+"</body></html>");let he=E?E.createHTML(c):c;if(Ze===Pe)try{x=new f().parseFromString(he,ve)}catch{}if(!x||!x.documentElement){x=j.createDocument(Ze,"template",null);try{x.documentElement.innerHTML=Rt?F:he}catch{}}let $e=x.body||x.documentElement;return c&&O&&$e.insertBefore(n.createTextNode(O),$e.childNodes[0]||null),Ze===Pe?K.call(x,b?"html":"body")[0]:b?x.documentElement:$e},lr=function(c){return Z.call(c.ownerDocument||c,c,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},Tn=function(c){return c instanceof h&&(typeof c.nodeName!="string"||typeof c.textContent!="string"||typeof c.removeChild!="function"||!(c.attributes instanceof p)||typeof c.removeAttribute!="function"||typeof c.setAttribute!="function"||typeof c.namespaceURI!="string"||typeof c.insertBefore!="function"||typeof c.hasChildNodes!="function")},En=function(c){return typeof l=="function"&&c instanceof l};function Ke(z,c,x){Ut(z,O=>{O.call(e,c,x,Xe)})}let cr=function(c){let x=null;if(Ke(se.beforeSanitizeElements,c,null),Tn(c))return oe(c),!0;let O=ye(c.nodeName);if(Ke(se.uponSanitizeElement,c,{tagName:O,allowedTags:U}),w&&c.hasChildNodes()&&!En(c.firstElementChild)&&Ee(/<[/\w!]/g,c.innerHTML)&&Ee(/<[/\w!]/g,c.textContent)||w&&c.namespaceURI===Pe&&O==="style"&&En(c.firstElementChild)||c.nodeType===jt.progressingInstruction||w&&c.nodeType===jt.comment&&Ee(/<[/\w]/g,c.data))return oe(c),!0;if(_e[O]||!(ie.tagCheck instanceof Function&&ie.tagCheck(O))&&!U[O]){if(!_e[O]&&ur(O)&&(te.tagNameCheck instanceof RegExp&&Ee(te.tagNameCheck,O)||te.tagNameCheck instanceof Function&&te.tagNameCheck(O)))return!1;if(Tt&&!Me[O]){let he=P(c)||c.parentNode,$e=$(c)||c.childNodes;if($e&&he){let ke=$e.length;for(let De=ke-1;De>=0;--De){let Ne=A($e[De],!0);Ne.__removalCount=(c.__removalCount||0)+1,he.insertBefore(Ne,S(c))}}}return oe(c),!0}return c instanceof a&&!ee(c)||(O==="noscript"||O==="noembed"||O==="noframes")&&Ee(/<\/no(script|embed|frames)/i,c.innerHTML)?(oe(c),!0):(Oe&&c.nodeType===jt.text&&(x=c.textContent,Ut([ge,X,k],he=>{x=St(x,he," ")}),c.textContent!==x&&(Bt(e.removed,{element:c.cloneNode()}),c.textContent=x)),Ke(se.afterSanitizeElements,c,null),!1)},dr=function(c,x,O){if(fe[x]||Qt&&(x==="id"||x==="name")&&(O in n||O in Sn))return!1;if(!(me&&!fe[x]&&Ee(y,x))){if(!(ne&&Ee(v,x))){if(!(ie.attributeCheck instanceof Function&&ie.attributeCheck(x,c))){if(!q[x]||fe[x]){if(!(ur(c)&&(te.tagNameCheck instanceof RegExp&&Ee(te.tagNameCheck,c)||te.tagNameCheck instanceof Function&&te.tagNameCheck(c))&&(te.attributeNameCheck instanceof RegExp&&Ee(te.attributeNameCheck,x)||te.attributeNameCheck instanceof Function&&te.attributeNameCheck(x,c))||x==="is"&&te.allowCustomizedBuiltInElements&&(te.tagNameCheck instanceof RegExp&&Ee(te.tagNameCheck,O)||te.tagNameCheck instanceof Function&&te.tagNameCheck(O))))return!1}else if(!Ct[x]){if(!Ee(W,St(O,R,""))){if(!((x==="src"||x==="xlink:href"||x==="href")&&c!=="script"&&di(O,"data:")===0&&L[c])){if(!(qe&&!Ee(D,St(O,R,"")))){if(O)return!1}}}}}}}return!0},ur=function(c){return c!=="annotation-xml"&&Hn(c,B)},pr=function(c){Ke(se.beforeSanitizeAttributes,c,null);let{attributes:x}=c;if(!x||Tn(c))return;let O={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:q,forceKeepAttr:void 0},he=x.length;for(;he--;){let $e=x[he],{name:ke,namespaceURI:De,value:Ne}=$e,Je=ye(ke),Cn=Ne,Ae=ke==="value"?Cn:ui(Cn);if(O.attrName=Je,O.attrValue=Ae,O.keepAttr=!0,O.forceKeepAttr=void 0,Ke(se.uponSanitizeAttribute,c,O),Ae=O.attrValue,en&&(Je==="id"||Je==="name")&&(Fe(ke,c),Ae=An+Ae),w&&Ee(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,Ae)){Fe(ke,c);continue}if(Je==="attributename"&&Hn(Ae,"href")){Fe(ke,c);continue}if(O.forceKeepAttr)continue;if(!O.keepAttr){Fe(ke,c);continue}if(!Ge&&Ee(/\/>/i,Ae)){Fe(ke,c);continue}Oe&&Ut([ge,X,k],gr=>{Ae=St(Ae,gr," ")});let hr=ye(c.nodeName);if(!dr(hr,Je,Ae)){Fe(ke,c);continue}if(E&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!De)switch(g.getAttributeType(hr,Je)){case"TrustedHTML":{Ae=E.createHTML(Ae);break}case"TrustedScriptURL":{Ae=E.createScriptURL(Ae);break}}if(Ae!==Cn)try{De?c.setAttributeNS(De,ke,Ae):c.setAttribute(ke,Ae),Tn(c)?oe(c):jr(e.removed)}catch{Fe(ke,c)}}Ke(se.afterSanitizeAttributes,c,null)},fr=function(c){let x=null,O=lr(c);for(Ke(se.beforeSanitizeShadowDOM,c,null);x=O.nextNode();)Ke(se.uponSanitizeShadowNode,x,null),cr(x),pr(x),x.content instanceof i&&fr(x.content);Ke(se.afterSanitizeShadowDOM,c,null)};return e.sanitize=function(z){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},x=null,O=null,he=null,$e=null;if(Rt=!z,Rt&&(z="<!-->"),typeof z!="string"&&!En(z))if(typeof z.toString=="function"){if(z=z.toString(),typeof z!="string")throw Ht("dirty is not a string, aborting")}else throw Ht("toString is not a function");if(!e.isSupported)return z;if(H||It(c),e.removed=[],typeof z=="string"&&(Ve=!1),Ve){if(z.nodeName){let Ne=ye(z.nodeName);if(!U[Ne]||_e[Ne])throw Ht("root node is forbidden and cannot be sanitized in-place")}}else if(z instanceof l)x=$n("<!---->"),O=x.ownerDocument.importNode(z,!0),O.nodeType===jt.element&&O.nodeName==="BODY"||O.nodeName==="HTML"?x=O:x.appendChild(O);else{if(!J&&!Oe&&!b&&z.indexOf("<")===-1)return E&&st?E.createHTML(z):z;if(x=$n(z),!x)return J?null:st?F:""}x&&V&&oe(x.firstChild);let ke=lr(Ve?z:x);for(;he=ke.nextNode();)cr(he),pr(he),he.content instanceof i&&fr(he.content);if(Ve)return z;if(J){if(Oe){x.normalize();let Ne=x.innerHTML;Ut([ge,X,k],Je=>{Ne=St(Ne,Je," ")}),x.innerHTML=Ne}if(be)for($e=N.call(x.ownerDocument);x.firstChild;)$e.appendChild(x.firstChild);else $e=x;return(q.shadowroot||q.shadowrootmode)&&($e=G.call(s,$e,!0)),$e}let De=b?x.outerHTML:x.innerHTML;return b&&U["!doctype"]&&x.ownerDocument&&x.ownerDocument.doctype&&x.ownerDocument.doctype.name&&Ee(Qr,x.ownerDocument.doctype.name)&&(De="<!DOCTYPE "+x.ownerDocument.doctype.name+`>
74
+ `+De),Oe&&Ut([ge,X,k],Ne=>{De=St(De,Ne," ")}),E&&st?E.createHTML(De):De},e.setConfig=function(){let z=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};It(z),H=!0},e.clearConfig=function(){Xe=null,H=!1},e.isValidAttribute=function(z,c,x){Xe||It({});let O=ye(z),he=ye(c);return dr(O,he,x)},e.addHook=function(z,c){typeof c=="function"&&Bt(se[z],c)},e.removeHook=function(z,c){if(c!==void 0){let x=li(se[z],c);return x===-1?void 0:ci(se[z],x,1)[0]}return jr(se[z])},e.removeHooks=function(z){se[z]=[]},e.removeAllHooks=function(){se=Zr()},e}var ts=es();var ns={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},rs=t=>(...e)=>({_$litDirective$:t,values:e}),fn=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,n,s){this._$Ct=e,this._$AM=n,this._$Ci=s}_$AS(e,n){return this.update(e,n)}update(e,n){return this.render(...n)}};var Gt=class extends fn{constructor(e){if(super(e),this.it=we,e.type!==ns.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(e){if(e===we||e==null)return this._t=void 0,this.it=e;if(e===lt)return e;if(typeof e!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(e===this.it)return this._t;this.it=e;let n=[e];return n.raw=n,this._t={_$litType$:this.constructor.resultType,strings:n,values:[]}}};Gt.directiveName="unsafeHTML",Gt.resultType=1;var ss=rs(Gt);function Jn(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var ht=Jn();function us(t){ht=t}var pt={exec:()=>null};function re(t,e=""){let n=typeof t=="string"?t:t.source,s={replace:(r,i)=>{let o=typeof i=="string"?i:i.source;return o=o.replace(Ie.caret,"$1"),n=n.replace(r,o),s},getRegex:()=>new RegExp(n,e)};return s}var $i=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),Ie={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}>`)},Ti=/^(?:[ \t]*(?:\n|$))+/,Ei=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Ci=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Zt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Ri=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Qn=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,ps=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,fs=re(ps).replace(/bull/g,Qn).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Ii=re(ps).replace(/bull/g,Qn).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),er=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Di=/^[^\n]+/,tr=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Li=re(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",tr).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Mi=re(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Qn).getRegex(),wn="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",nr=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Ni=re("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",nr).replace("tag",wn).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),hs=re(er).replace("hr",Zt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",wn).getRegex(),Oi=re(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",hs).getRegex(),rr={blockquote:Oi,code:Ei,def:Li,fences:Ci,heading:Ri,hr:Zt,html:Ni,lheading:fs,list:Mi,newline:Ti,paragraph:hs,table:pt,text:Di},is=re("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Zt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",wn).getRegex(),Pi={...rr,lheading:Ii,table:is,paragraph:re(er).replace("hr",Zt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",is).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",wn).getRegex()},Fi={...rr,html:re(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",nr).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:pt,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:re(er).replace("hr",Zt).replace("heading",` *#{1,6} *[^
75
+ ]`).replace("lheading",fs).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},zi=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Ui=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,gs=/^( {2,}|\\)\n(?!\s*$)/,Bi=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,$t=/[\p{P}\p{S}]/u,kn=/[\s\p{P}\p{S}]/u,sr=/[^\s\p{P}\p{S}]/u,Hi=re(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,kn).getRegex(),ms=/(?!~)[\p{P}\p{S}]/u,qi=/(?!~)[\s\p{P}\p{S}]/u,ji=/(?:[^\s\p{P}\p{S}]|~)/u,Wi=re(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",$i?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),bs=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Gi=re(bs,"u").replace(/punct/g,$t).getRegex(),Ki=re(bs,"u").replace(/punct/g,ms).getRegex(),ys="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Vi=re(ys,"gu").replace(/notPunctSpace/g,sr).replace(/punctSpace/g,kn).replace(/punct/g,$t).getRegex(),Yi=re(ys,"gu").replace(/notPunctSpace/g,ji).replace(/punctSpace/g,qi).replace(/punct/g,ms).getRegex(),Zi=re("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,sr).replace(/punctSpace/g,kn).replace(/punct/g,$t).getRegex(),Xi=re(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,$t).getRegex(),Ji="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Qi=re(Ji,"gu").replace(/notPunctSpace/g,sr).replace(/punctSpace/g,kn).replace(/punct/g,$t).getRegex(),eo=re(/\\(punct)/,"gu").replace(/punct/g,$t).getRegex(),to=re(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),no=re(nr).replace("(?:-->|$)","-->").getRegex(),ro=re("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",no).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),mn=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,so=re(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",mn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ws=re(/^!?\[(label)\]\[(ref)\]/).replace("label",mn).replace("ref",tr).getRegex(),ks=re(/^!?\[(ref)\](?:\[\])?/).replace("ref",tr).getRegex(),io=re("reflink|nolink(?!\\()","g").replace("reflink",ws).replace("nolink",ks).getRegex(),os=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,ir={_backpedal:pt,anyPunctuation:eo,autolink:to,blockSkip:Wi,br:gs,code:Ui,del:pt,delLDelim:pt,delRDelim:pt,emStrongLDelim:Gi,emStrongRDelimAst:Vi,emStrongRDelimUnd:Zi,escape:zi,link:so,nolink:ks,punctuation:Hi,reflink:ws,reflinkSearch:io,tag:ro,text:Bi,url:pt},oo={...ir,link:re(/^!?\[(label)\]\((.*?)\)/).replace("label",mn).getRegex(),reflink:re(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",mn).getRegex()},Yn={...ir,emStrongRDelimAst:Yi,emStrongLDelim:Ki,delLDelim:Xi,delRDelim:Qi,url:re(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",os).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:re(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",os).getRegex()},ao={...Yn,br:re(gs).replace("{2,}","*").getRegex(),text:re(Yn.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},hn={normal:rr,gfm:Pi,pedantic:Fi},Kt={normal:ir,gfm:Yn,breaks:ao,pedantic:oo},lo={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},as=t=>lo[t];function We(t,e){if(e){if(Ie.escapeTest.test(t))return t.replace(Ie.escapeReplace,as)}else if(Ie.escapeTestNoEncode.test(t))return t.replace(Ie.escapeReplaceNoEncode,as);return t}function ls(t){try{t=encodeURI(t).replace(Ie.percentDecode,"%")}catch{return null}return t}function cs(t,e){let n=t.replace(Ie.findPipe,(i,o,l)=>{let a=!1,u=o;for(;--u>=0&&l[u]==="\\";)a=!a;return a?"|":" |"}),s=n.split(Ie.splitPipe),r=0;if(s[0].trim()||s.shift(),s.length>0&&!s.at(-1)?.trim()&&s.pop(),e)if(s.length>e)s.splice(e);else for(;s.length<e;)s.push("");for(;r<s.length;r++)s[r]=s[r].trim().replace(Ie.slashPipe,"|");return s}function Vt(t,e,n){let s=t.length;if(s===0)return"";let r=0;for(;r<s;){let i=t.charAt(s-r-1);if(i===e&&!n)r++;else if(i!==e&&n)r++;else break}return t.slice(0,s-r)}function co(t,e){if(t.indexOf(e[1])===-1)return-1;let n=0;for(let s=0;s<t.length;s++)if(t[s]==="\\")s++;else if(t[s]===e[0])n++;else if(t[s]===e[1]&&(n--,n<0))return s;return n>0?-2:-1}function uo(t,e=0){let n=e,s="";for(let r of t)if(r===" "){let i=4-n%4;s+=" ".repeat(i),n+=i}else s+=r,n++;return s}function ds(t,e,n,s,r){let i=e.href,o=e.title||null,l=t[1].replace(r.other.outputLinkReplace,"$1");s.state.inLink=!0;let a={type:t[0].charAt(0)==="!"?"image":"link",raw:n,href:i,title:o,text:l,tokens:s.inlineTokens(l)};return s.state.inLink=!1,a}function po(t,e,n){let s=t.match(n.other.indentCodeCompensation);if(s===null)return e;let r=s[1];return e.split(`
76
+ `).map(i=>{let o=i.match(n.other.beginningSpace);if(o===null)return i;let[l]=o;return l.length>=r.length?i.slice(r.length):i}).join(`
77
+ `)}var bn=class{constructor(t){le(this,"options");le(this,"rules");le(this,"lexer");this.options=t||ht}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let n=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Vt(n,`
78
+ `)}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let n=e[0],s=po(n,e[3]||"",this.rules);return{type:"code",raw:n,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:s}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let n=e[2].trim();if(this.rules.other.endingHash.test(n)){let s=Vt(n,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(n=s.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:Vt(e[0],`
79
+ `)}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let n=Vt(e[0],`
80
+ `).split(`
81
+ `),s="",r="",i=[];for(;n.length>0;){let o=!1,l=[],a;for(a=0;a<n.length;a++)if(this.rules.other.blockquoteStart.test(n[a]))l.push(n[a]),o=!0;else if(!o)l.push(n[a]);else break;n=n.slice(a);let u=l.join(`
82
+ `),p=u.replace(this.rules.other.blockquoteSetextReplace,`
83
+ $1`).replace(this.rules.other.blockquoteSetextReplace2,"");s=s?`${s}
84
+ ${u}`:u,r=r?`${r}
85
+ ${p}`:p;let h=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(p,i,!0),this.lexer.state.top=h,n.length===0)break;let f=i.at(-1);if(f?.type==="code")break;if(f?.type==="blockquote"){let g=f,m=g.raw+`
86
+ `+n.join(`
87
+ `),A=this.blockquote(m);i[i.length-1]=A,s=s.substring(0,s.length-g.raw.length)+A.raw,r=r.substring(0,r.length-g.text.length)+A.text;break}else if(f?.type==="list"){let g=f,m=g.raw+`
88
+ `+n.join(`
89
+ `),A=this.list(m);i[i.length-1]=A,s=s.substring(0,s.length-f.raw.length)+A.raw,r=r.substring(0,r.length-g.raw.length)+A.raw,n=m.substring(i.at(-1).raw.length).split(`
90
+ `);continue}}return{type:"blockquote",raw:s,tokens:i,text:r}}}list(t){let e=this.rules.block.list.exec(t);if(e){let n=e[1].trim(),s=n.length>1,r={type:"list",raw:"",ordered:s,start:s?+n.slice(0,-1):"",loose:!1,items:[]};n=s?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=s?n:"[*+-]");let i=this.rules.other.listItemRegex(n),o=!1;for(;t;){let a=!1,u="",p="";if(!(e=i.exec(t))||this.rules.block.hr.test(t))break;u=e[0],t=t.substring(u.length);let h=uo(e[2].split(`
91
+ `,1)[0],e[1].length),f=t.split(`
92
+ `,1)[0],g=!h.trim(),m=0;if(this.options.pedantic?(m=2,p=h.trimStart()):g?m=e[1].length+1:(m=h.search(this.rules.other.nonSpaceChar),m=m>4?1:m,p=h.slice(m),m+=e[1].length),g&&this.rules.other.blankLine.test(f)&&(u+=f+`
93
+ `,t=t.substring(f.length+1),a=!0),!a){let A=this.rules.other.nextBulletRegex(m),_=this.rules.other.hrRegex(m),S=this.rules.other.fencesBeginRegex(m),$=this.rules.other.headingBeginRegex(m),P=this.rules.other.htmlBeginRegex(m),E=this.rules.other.blockquoteBeginRegex(m);for(;t;){let F=t.split(`
94
+ `,1)[0],j;if(f=F,this.options.pedantic?(f=f.replace(this.rules.other.listReplaceNesting," "),j=f):j=f.replace(this.rules.other.tabCharGlobal," "),S.test(f)||$.test(f)||P.test(f)||E.test(f)||A.test(f)||_.test(f))break;if(j.search(this.rules.other.nonSpaceChar)>=m||!f.trim())p+=`
95
+ `+j.slice(m);else{if(g||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||S.test(h)||$.test(h)||_.test(h))break;p+=`
96
+ `+f}g=!f.trim(),u+=F+`
97
+ `,t=t.substring(F.length+1),h=j.slice(m)}}r.loose||(o?r.loose=!0:this.rules.other.doubleBlankLine.test(u)&&(o=!0)),r.items.push({type:"list_item",raw:u,task:!!this.options.gfm&&this.rules.other.listIsTask.test(p),loose:!1,text:p,tokens:[]}),r.raw+=u}let l=r.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;r.raw=r.raw.trimEnd();for(let a of r.items){if(this.lexer.state.top=!1,a.tokens=this.lexer.blockTokens(a.text,[]),a.task){if(a.text=a.text.replace(this.rules.other.listReplaceTask,""),a.tokens[0]?.type==="text"||a.tokens[0]?.type==="paragraph"){a.tokens[0].raw=a.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),a.tokens[0].text=a.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let p=this.lexer.inlineQueue.length-1;p>=0;p--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[p].src)){this.lexer.inlineQueue[p].src=this.lexer.inlineQueue[p].src.replace(this.rules.other.listReplaceTask,"");break}}let u=this.rules.other.listTaskCheckbox.exec(a.raw);if(u){let p={type:"checkbox",raw:u[0]+" ",checked:u[0]!=="[ ]"};a.checked=p.checked,r.loose?a.tokens[0]&&["paragraph","text"].includes(a.tokens[0].type)&&"tokens"in a.tokens[0]&&a.tokens[0].tokens?(a.tokens[0].raw=p.raw+a.tokens[0].raw,a.tokens[0].text=p.raw+a.tokens[0].text,a.tokens[0].tokens.unshift(p)):a.tokens.unshift({type:"paragraph",raw:p.raw,text:p.raw,tokens:[p]}):a.tokens.unshift(p)}}if(!r.loose){let u=a.tokens.filter(h=>h.type==="space"),p=u.length>0&&u.some(h=>this.rules.other.anyLine.test(h.raw));r.loose=p}}if(r.loose)for(let a of r.items){a.loose=!0;for(let u of a.tokens)u.type==="text"&&(u.type="paragraph")}return r}}html(t){let e=this.rules.block.html.exec(t);if(e)return{type:"html",block:!0,raw:e[0],pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:e[0]}}def(t){let e=this.rules.block.def.exec(t);if(e){let n=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),s=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:n,raw:e[0],href:s,title:r}}}table(t){let e=this.rules.block.table.exec(t);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let n=cs(e[1]),s=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),r=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(`
98
+ `):[],i={type:"table",raw:e[0],header:[],align:[],rows:[]};if(n.length===s.length){for(let o of s)this.rules.other.tableAlignRight.test(o)?i.align.push("right"):this.rules.other.tableAlignCenter.test(o)?i.align.push("center"):this.rules.other.tableAlignLeft.test(o)?i.align.push("left"):i.align.push(null);for(let o=0;o<n.length;o++)i.header.push({text:n[o],tokens:this.lexer.inline(n[o]),header:!0,align:i.align[o]});for(let o of r)i.rows.push(cs(o,i.header.length).map((l,a)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:i.align[a]})));return i}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e){let n=e[1].trim();return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let n=e[1].charAt(e[1].length-1)===`
99
+ `?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:n,tokens:this.lexer.inline(n)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let n=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let i=Vt(n.slice(0,-1),"\\");if((n.length-i.length)%2===0)return}else{let i=co(e[2],"()");if(i===-2)return;if(i>-1){let o=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,o).trim(),e[3]=""}}let s=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(s);i&&(s=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?s=s.slice(1):s=s.slice(1,-1)),ds(e,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let n;if((n=this.rules.inline.reflink.exec(t))||(n=this.rules.inline.nolink.exec(t))){let s=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[s.toLowerCase()];if(!r){let i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return ds(n,r,n[0],this.lexer,this.rules)}}emStrong(t,e,n=""){let s=this.rules.inline.emStrongLDelim.exec(t);if(!(!s||!s[1]&&!s[2]&&!s[3]&&!s[4]||s[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(s[1]||s[3])||!n||this.rules.inline.punctuation.exec(n))){let r=[...s[0]].length-1,i,o,l=r,a=0,u=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,e=e.slice(-1*t.length+r);(s=u.exec(e))!==null;){if(i=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!i)continue;if(o=[...i].length,s[3]||s[4]){l+=o;continue}else if((s[5]||s[6])&&r%3&&!((r+o)%3)){a+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l+a);let p=[...s[0]][0].length,h=t.slice(0,r+s.index+p+o);if(Math.min(r,o)%2){let g=h.slice(1,-1);return{type:"em",raw:h,text:g,tokens:this.lexer.inlineTokens(g)}}let f=h.slice(2,-2);return{type:"strong",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let n=e[2].replace(this.rules.other.newLineCharGlobal," "),s=this.rules.other.nonSpaceChar.test(n),r=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return s&&r&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:e[0],text:n}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t,e,n=""){let s=this.rules.inline.delLDelim.exec(t);if(s&&(!s[1]||!n||this.rules.inline.punctuation.exec(n))){let r=[...s[0]].length-1,i,o,l=r,a=this.rules.inline.delRDelim;for(a.lastIndex=0,e=e.slice(-1*t.length+r);(s=a.exec(e))!==null;){if(i=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!i||(o=[...i].length,o!==r))continue;if(s[3]||s[4]){l+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l);let u=[...s[0]][0].length,p=t.slice(0,r+s.index+u+o),h=p.slice(r,-r);return{type:"del",raw:p,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let n,s;return e[2]==="@"?(n=e[1],s="mailto:"+n):(n=e[1],s=n),{type:"link",raw:e[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let n,s;if(e[2]==="@")n=e[0],s="mailto:"+n;else{let r;do r=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(r!==e[0]);n=e[0],e[1]==="www."?s="http://"+e[0]:s=e[0]}return{type:"link",raw:e[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let n=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:n}}}},Be=class Zn{constructor(e){le(this,"tokens");le(this,"options");le(this,"state");le(this,"inlineQueue");le(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=e||ht,this.options.tokenizer=this.options.tokenizer||new bn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:Ie,block:hn.normal,inline:Kt.normal};this.options.pedantic?(n.block=hn.pedantic,n.inline=Kt.pedantic):this.options.gfm&&(n.block=hn.gfm,this.options.breaks?n.inline=Kt.breaks:n.inline=Kt.gfm),this.tokenizer.rules=n}static get rules(){return{block:hn,inline:Kt}}static lex(e,n){return new Zn(n).lex(e)}static lexInline(e,n){return new Zn(n).inlineTokens(e)}lex(e){e=e.replace(Ie.carriageReturn,`
100
+ `),this.blockTokens(e,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let s=this.inlineQueue[n];this.inlineTokens(s.src,s.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,n=[],s=!1){for(this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(Ie.tabCharGlobal," ").replace(Ie.spaceLine,""));e;){let r;if(this.options.extensions?.block?.some(o=>(r=o.call({lexer:this},e,n))?(e=e.substring(r.raw.length),n.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let o=n.at(-1);r.raw.length===1&&o!==void 0?o.raw+=`
101
+ `:n.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let o=n.at(-1);o?.type==="paragraph"||o?.type==="text"?(o.raw+=(o.raw.endsWith(`
102
+ `)?"":`
103
+ `)+r.raw,o.text+=`
104
+ `+r.text,this.inlineQueue.at(-1).src=o.text):n.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let o=n.at(-1);o?.type==="paragraph"||o?.type==="text"?(o.raw+=(o.raw.endsWith(`
105
+ `)?"":`
106
+ `)+r.raw,o.text+=`
107
+ `+r.raw,this.inlineQueue.at(-1).src=o.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},n.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),n.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let o=1/0,l=e.slice(1),a;this.options.extensions.startBlock.forEach(u=>{a=u.call({lexer:this},l),typeof a=="number"&&a>=0&&(o=Math.min(o,a))}),o<1/0&&o>=0&&(i=e.substring(0,o+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let o=n.at(-1);s&&o?.type==="paragraph"?(o.raw+=(o.raw.endsWith(`
108
+ `)?"":`
109
+ `)+r.raw,o.text+=`
110
+ `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=o.text):n.push(r),s=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let o=n.at(-1);o?.type==="text"?(o.raw+=(o.raw.endsWith(`
111
+ `)?"":`
112
+ `)+r.raw,o.text+=`
113
+ `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=o.text):n.push(r);continue}if(e){let o="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(o);break}else throw new Error(o)}}return this.state.top=!0,n}inline(e,n=[]){return this.inlineQueue.push({src:e,tokens:n}),n}inlineTokens(e,n=[]){this.tokenizer.lexer=this;let s=e,r=null;if(this.tokens.links){let a=Object.keys(this.tokens.links);if(a.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(s))!==null;)a.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(s))!==null;)s=s.slice(0,r.index)+"++"+s.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(s))!==null;)i=r[2]?r[2].length:0,s=s.slice(0,r.index+i)+"["+"a".repeat(r[0].length-i-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);s=this.options.hooks?.emStrongMask?.call({lexer:this},s)??s;let o=!1,l="";for(;e;){o||(l=""),o=!1;let a;if(this.options.extensions?.inline?.some(p=>(a=p.call({lexer:this},e,n))?(e=e.substring(a.raw.length),n.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let p=n.at(-1);a.type==="text"&&p?.type==="text"?(p.raw+=a.raw,p.text+=a.text):n.push(a);continue}if(a=this.tokenizer.emStrong(e,s,l)){e=e.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.del(e,s,l)){e=e.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),n.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),n.push(a);continue}let u=e;if(this.options.extensions?.startInline){let p=1/0,h=e.slice(1),f;this.options.extensions.startInline.forEach(g=>{f=g.call({lexer:this},h),typeof f=="number"&&f>=0&&(p=Math.min(p,f))}),p<1/0&&p>=0&&(u=e.substring(0,p+1))}if(a=this.tokenizer.inlineText(u)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(l=a.raw.slice(-1)),o=!0;let p=n.at(-1);p?.type==="text"?(p.raw+=a.raw,p.text+=a.text):n.push(a);continue}if(e){let p="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return n}},yn=class{constructor(t){le(this,"options");le(this,"parser");this.options=t||ht}space(t){return""}code({text:t,lang:e,escaped:n}){let s=(e||"").match(Ie.notSpaceStart)?.[0],r=t.replace(Ie.endingNewline,"")+`
114
+ `;return s?'<pre><code class="language-'+We(s)+'">'+(n?r:We(r,!0))+`</code></pre>
115
+ `:"<pre><code>"+(n?r:We(r,!0))+`</code></pre>
116
+ `}blockquote({tokens:t}){return`<blockquote>
117
+ ${this.parser.parse(t)}</blockquote>
118
+ `}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`<h${e}>${this.parser.parseInline(t)}</h${e}>
119
+ `}hr(t){return`<hr>
120
+ `}list(t){let e=t.ordered,n=t.start,s="";for(let o=0;o<t.items.length;o++){let l=t.items[o];s+=this.listitem(l)}let r=e?"ol":"ul",i=e&&n!==1?' start="'+n+'"':"";return"<"+r+i+`>
121
+ `+s+"</"+r+`>
122
+ `}listitem(t){return`<li>${this.parser.parse(t.tokens)}</li>
123
+ `}checkbox({checked:t}){return"<input "+(t?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:t}){return`<p>${this.parser.parseInline(t)}</p>
124
+ `}table(t){let e="",n="";for(let r=0;r<t.header.length;r++)n+=this.tablecell(t.header[r]);e+=this.tablerow({text:n});let s="";for(let r=0;r<t.rows.length;r++){let i=t.rows[r];n="";for(let o=0;o<i.length;o++)n+=this.tablecell(i[o]);s+=this.tablerow({text:n})}return s&&(s=`<tbody>${s}</tbody>`),`<table>
125
+ <thead>
126
+ `+e+`</thead>
127
+ `+s+`</table>
128
+ `}tablerow({text:t}){return`<tr>
129
+ ${t}</tr>
130
+ `}tablecell(t){let e=this.parser.parseInline(t.tokens),n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`</${n}>
131
+ `}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${We(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:e,tokens:n}){let s=this.parser.parseInline(n),r=ls(t);if(r===null)return s;t=r;let i='<a href="'+t+'"';return e&&(i+=' title="'+We(e)+'"'),i+=">"+s+"</a>",i}image({href:t,title:e,text:n,tokens:s}){s&&(n=this.parser.parseInline(s,this.parser.textRenderer));let r=ls(t);if(r===null)return We(n);t=r;let i=`<img src="${t}" alt="${We(n)}"`;return e&&(i+=` title="${We(e)}"`),i+=">",i}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:We(t.text)}},or=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}checkbox({raw:t}){return t}},He=class Xn{constructor(e){le(this,"options");le(this,"renderer");le(this,"textRenderer");this.options=e||ht,this.options.renderer=this.options.renderer||new yn,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new or}static parse(e,n){return new Xn(n).parse(e)}static parseInline(e,n){return new Xn(n).parseInline(e)}parse(e){this.renderer.parser=this;let n="";for(let s=0;s<e.length;s++){let r=e[s];if(this.options.extensions?.renderers?.[r.type]){let o=r,l=this.options.extensions.renderers[o.type].call({parser:this},o);if(l!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(o.type)){n+=l||"";continue}}let i=r;switch(i.type){case"space":{n+=this.renderer.space(i);break}case"hr":{n+=this.renderer.hr(i);break}case"heading":{n+=this.renderer.heading(i);break}case"code":{n+=this.renderer.code(i);break}case"table":{n+=this.renderer.table(i);break}case"blockquote":{n+=this.renderer.blockquote(i);break}case"list":{n+=this.renderer.list(i);break}case"checkbox":{n+=this.renderer.checkbox(i);break}case"html":{n+=this.renderer.html(i);break}case"def":{n+=this.renderer.def(i);break}case"paragraph":{n+=this.renderer.paragraph(i);break}case"text":{n+=this.renderer.text(i);break}default:{let o='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(o),"";throw new Error(o)}}}return n}parseInline(e,n=this.renderer){this.renderer.parser=this;let s="";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let l=this.options.extensions.renderers[i.type].call({parser:this},i);if(l!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(i.type)){s+=l||"";continue}}let o=i;switch(o.type){case"escape":{s+=n.text(o);break}case"html":{s+=n.html(o);break}case"link":{s+=n.link(o);break}case"image":{s+=n.image(o);break}case"checkbox":{s+=n.checkbox(o);break}case"strong":{s+=n.strong(o);break}case"em":{s+=n.em(o);break}case"codespan":{s+=n.codespan(o);break}case"br":{s+=n.br(o);break}case"del":{s+=n.del(o);break}case"text":{s+=n.text(o);break}default:{let l='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return s}},gn,Yt=(gn=class{constructor(t){le(this,"options");le(this,"block");this.options=t||ht}preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}emStrongMask(t){return t}provideLexer(t=this.block){return t?Be.lex:Be.lexInline}provideParser(t=this.block){return t?He.parse:He.parseInline}},le(gn,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),le(gn,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),gn),fo=class{constructor(...t){le(this,"defaults",Jn());le(this,"options",this.setOptions);le(this,"parse",this.parseMarkdown(!0));le(this,"parseInline",this.parseMarkdown(!1));le(this,"Parser",He);le(this,"Renderer",yn);le(this,"TextRenderer",or);le(this,"Lexer",Be);le(this,"Tokenizer",bn);le(this,"Hooks",Yt);this.use(...t)}walkTokens(t,e){let n=[];for(let s of t)switch(n=n.concat(e.call(this,s)),s.type){case"table":{let r=s;for(let i of r.header)n=n.concat(this.walkTokens(i.tokens,e));for(let i of r.rows)for(let o of i)n=n.concat(this.walkTokens(o.tokens,e));break}case"list":{let r=s;n=n.concat(this.walkTokens(r.items,e));break}default:{let r=s;this.defaults.extensions?.childTokens?.[r.type]?this.defaults.extensions.childTokens[r.type].forEach(i=>{let o=r[i].flat(1/0);n=n.concat(this.walkTokens(o,e))}):r.tokens&&(n=n.concat(this.walkTokens(r.tokens,e)))}}return n}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let s={...n};if(s.async=this.defaults.async||s.async||!1,n.extensions&&(n.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let i=e.renderers[r.name];i?e.renderers[r.name]=function(...o){let l=r.renderer.apply(this,o);return l===!1&&(l=i.apply(this,o)),l}:e.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=e[r.level];i?i.unshift(r.tokenizer):e[r.level]=[r.tokenizer],r.start&&(r.level==="block"?e.startBlock?e.startBlock.push(r.start):e.startBlock=[r.start]:r.level==="inline"&&(e.startInline?e.startInline.push(r.start):e.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(e.childTokens[r.name]=r.childTokens)}),s.extensions=e),n.renderer){let r=this.defaults.renderer||new yn(this.defaults);for(let i in n.renderer){if(!(i in r))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let o=i,l=n.renderer[o],a=r[o];r[o]=(...u)=>{let p=l.apply(r,u);return p===!1&&(p=a.apply(r,u)),p||""}}s.renderer=r}if(n.tokenizer){let r=this.defaults.tokenizer||new bn(this.defaults);for(let i in n.tokenizer){if(!(i in r))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let o=i,l=n.tokenizer[o],a=r[o];r[o]=(...u)=>{let p=l.apply(r,u);return p===!1&&(p=a.apply(r,u)),p}}s.tokenizer=r}if(n.hooks){let r=this.defaults.hooks||new Yt;for(let i in n.hooks){if(!(i in r))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let o=i,l=n.hooks[o],a=r[o];Yt.passThroughHooks.has(i)?r[o]=u=>{if(this.defaults.async&&Yt.passThroughHooksRespectAsync.has(i))return(async()=>{let h=await l.call(r,u);return a.call(r,h)})();let p=l.call(r,u);return a.call(r,p)}:r[o]=(...u)=>{if(this.defaults.async)return(async()=>{let h=await l.apply(r,u);return h===!1&&(h=await a.apply(r,u)),h})();let p=l.apply(r,u);return p===!1&&(p=a.apply(r,u)),p}}s.hooks=r}if(n.walkTokens){let r=this.defaults.walkTokens,i=n.walkTokens;s.walkTokens=function(o){let l=[];return l.push(i.call(this,o)),r&&(l=l.concat(r.call(this,o))),l}}this.defaults={...this.defaults,...s}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return Be.lex(t,e??this.defaults)}parser(t,e){return He.parse(t,e??this.defaults)}parseMarkdown(t){return(e,n)=>{let s={...n},r={...this.defaults,...s},i=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&s.async===!1)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return i(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=t),r.async)return(async()=>{let o=r.hooks?await r.hooks.preprocess(e):e,l=await(r.hooks?await r.hooks.provideLexer(t):t?Be.lex:Be.lexInline)(o,r),a=r.hooks?await r.hooks.processAllTokens(l):l;r.walkTokens&&await Promise.all(this.walkTokens(a,r.walkTokens));let u=await(r.hooks?await r.hooks.provideParser(t):t?He.parse:He.parseInline)(a,r);return r.hooks?await r.hooks.postprocess(u):u})().catch(i);try{r.hooks&&(e=r.hooks.preprocess(e));let o=(r.hooks?r.hooks.provideLexer(t):t?Be.lex:Be.lexInline)(e,r);r.hooks&&(o=r.hooks.processAllTokens(o)),r.walkTokens&&this.walkTokens(o,r.walkTokens);let l=(r.hooks?r.hooks.provideParser(t):t?He.parse:He.parseInline)(o,r);return r.hooks&&(l=r.hooks.postprocess(l)),l}catch(o){return i(o)}}}onError(t,e){return n=>{if(n.message+=`
132
+ Please report this to https://github.com/markedjs/marked.`,t){let s="<p>An error occurred:</p><pre>"+We(n.message+"",!0)+"</pre>";return e?Promise.resolve(s):s}if(e)return Promise.reject(n);throw n}}},ft=new fo;function ae(t,e){return ft.parse(t,e)}ae.options=ae.setOptions=function(t){return ft.setOptions(t),ae.defaults=ft.defaults,us(ae.defaults),ae};ae.getDefaults=Jn;ae.defaults=ht;ae.use=function(...t){return ft.use(...t),ae.defaults=ft.defaults,us(ae.defaults),ae};ae.walkTokens=function(t,e){return ft.walkTokens(t,e)};ae.parseInline=ft.parseInline;ae.Parser=He;ae.parser=He.parse;ae.Renderer=yn;ae.TextRenderer=or;ae.Lexer=Be;ae.lexer=Be.lex;ae.Tokenizer=bn;ae.Hooks=Yt;ae.parse=ae;var fa=ae.options,ha=ae.setOptions,ga=ae.use,ma=ae.walkTokens,ba=ae.parseInline;var ya=He.parse,wa=Be.lex;function Xt(t){let e=ae.parse(t),n=ts.sanitize(e);return ss(n)}function gt(t){switch((t||"").toString()){case"open":return"Open";case"in_progress":return"In progress";case"closed":return"Closed";default:return(t||"").toString()||"Open"}}function _n(t){if(t==null||t==="")return"";try{let e=new Date(t);return Number.isNaN(e.getTime())?"":e.toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return String(t)}}function ho(t){window.location.hash=t}function _s(t,e,n=ho,s=void 0){let r=ce("views:detail"),i=null,o=null,l=!1,a=!1,u=!1,p=!1,h=!1,f=!1,g=!1,m="",A="",_=!1,S=null,$=null;function P(){return S||(S=document.createElement("dialog"),S.id="delete-confirm-dialog",S.setAttribute("role","alertdialog"),S.setAttribute("aria-modal","true"),document.body.appendChild(S),S)}function E(){return $||($=document.createElement("dialog"),$.id="dep-remove-confirm-dialog",$.setAttribute("role","alertdialog"),$.setAttribute("aria-modal","true"),document.body.appendChild($),$)}function F(d){typeof d.close=="function"&&d.close(),d.removeAttribute("open")}function j(d){if(typeof d.showModal=="function")try{d.showModal(),d.setAttribute("open","")}catch{d.setAttribute("open","")}else d.setAttribute("open","")}function Z(){if(!i)return;let d=P(),C=i.id,M=i.title||"(no title)";d.innerHTML=`
133
+ <div class="delete-confirm">
134
+ <h2 class="delete-confirm__title">Delete Issue</h2>
135
+ <p class="delete-confirm__message">
136
+ Are you sure you want to delete issue <strong>${C}</strong> \u2014 <strong>${M}</strong>? This action cannot be undone.
137
+ </p>
138
+ <div class="delete-confirm__actions">
139
+ <button type="button" class="btn" id="delete-cancel-btn">Cancel</button>
140
+ <button type="button" class="btn danger" id="delete-confirm-btn">Delete</button>
141
+ </div>
142
+ </div>
143
+ `,d.querySelector("#delete-cancel-btn")?.addEventListener("click",()=>F(d)),d.querySelector("#delete-confirm-btn")?.addEventListener("click",async()=>{F(d),await K()}),d.addEventListener("cancel",I=>{I.preventDefault(),F(d)}),j(d)}function N(d,C){if(!i)return;let M=E(),I=C==="Dependencies"?"dependency on":"dependent from";M.innerHTML=`
144
+ <div class="delete-confirm">
145
+ <h2 class="delete-confirm__title">Remove ${C.slice(0,-1).replace("ies","y")}</h2>
146
+ <p class="delete-confirm__message">
147
+ Remove ${I} <strong>${d}</strong>?
148
+ </p>
149
+ <div class="delete-confirm__actions">
150
+ <button type="button" class="btn" id="dep-remove-cancel-btn">Cancel</button>
151
+ <button type="button" class="btn danger" id="dep-remove-confirm-btn">Remove</button>
152
+ </div>
153
+ </div>
154
+ `,M.querySelector("#dep-remove-cancel-btn")?.addEventListener("click",()=>F(M)),M.querySelector("#dep-remove-confirm-btn")?.addEventListener("click",async()=>{F(M),await tn(d,C)}),M.addEventListener("cancel",de=>{de.preventDefault(),F(M)}),j(M)}async function K(){if(!i)return;let d=i.id;try{await e("delete-issue",{id:d}),i=null,o=null,L();let C=At(window.location.hash||"");n(`#/${C}`)}catch(C){r("delete failed: %o",C),ue("Failed to delete issue","error")}}function G(d){d.stopPropagation(),d.preventDefault(),Z()}function se(d){let C=At(window.location.hash||"");return tt(C,d)}function ge(d){Se(T`
155
+ <div class="panel__body" id="detail-root">
156
+ <p class="muted">${d}</p>
157
+ </div>
158
+ `,t)}function X(){if(!o||!s||typeof s.snapshotFor!="function")return;let d=s.snapshotFor(`detail:${o}`);Array.isArray(d)&&d.length>0&&(i=d.find(M=>String(M.id)===String(o))||d[0])}s&&typeof s.subscribe=="function"&&s.subscribe(()=>{try{X(),L()}catch(d){r("issue stores listener error %o",d)}});let k=()=>{a=!0,L()},y=d=>{d.key==="Enter"?(a=!0,L()):d.key==="Escape"&&(a=!1,L())},v=async()=>{if(!i||l)return;let d=t.querySelector("h2 input"),C=i.title||"",M=d?d.value:"";if(M===C){a=!1,L();return}l=!0,d&&(d.disabled=!0);try{r("save title %s \u2192 %s",String(i.id),M);let I=await e("edit-text",{id:i.id,field:"title",value:M});I&&typeof I=="object"&&(i=I,a=!1,L())}catch(I){r("save title failed %s %o",String(i.id),I),i.title=C,a=!1,L(),ue("Failed to save title","error")}finally{l=!1}},D=()=>{a=!1,L()},R=()=>{g=!0,L()},B=d=>{d.key==="Enter"?(d.preventDefault(),g=!0,L()):d.key==="Escape"&&(d.preventDefault(),g=!1,L())},W=async()=>{if(!i||l)return;let d=t.querySelector("#detail-root .prop.assignee input"),C=i?.assignee??"",M=d?.value??"";if(M===C){g=!1,L();return}l=!0,d&&(d.disabled=!0);try{r("save assignee %s \u2192 %s",String(i.id),M);let I=await e("update-assignee",{id:i.id,assignee:M});I&&typeof I=="object"&&(i=I,g=!1,L())}catch(I){r("save assignee failed %s %o",String(i.id),I),i.assignee=C,g=!1,L(),ue("Failed to update assignee","error")}finally{l=!1}},U=()=>{g=!1,L()},Y=d=>{m=d.currentTarget.value||""};function q(d){d.key==="Enter"&&(d.preventDefault(),pe())}async function pe(){if(!i||l)return;let d=m.trim();if(d){l=!0;try{r("add label %s \u2192 %s",String(i.id),d);let C=await e("label-add",{id:i.id,label:d});C&&typeof C=="object"&&(i=C,m="",L())}catch(C){r("add label failed %s %o",String(i.id),C),ue("Failed to add label","error")}finally{l=!1}}}async function te(d){if(!(!i||l)){l=!0;try{r("remove label %s \u2192 %s",String(i?.id||""),d);let C=await e("label-remove",{id:i.id,label:d});C&&typeof C=="object"&&(i=C,L())}catch(C){r("remove label failed %s %o",String(i?.id||""),C),ue("Failed to remove label","error")}finally{l=!1}}}let _e=async d=>{if(!i||l){L();return}let C=d.currentTarget,M=i.status||"open",I=C.value;if(I!==M){l=!0,i.status=I,L();try{r("update status %s \u2192 %s",String(i.id),I);let de=await e("update-status",{id:i.id,status:I});de&&typeof de=="object"&&(i=de,L())}catch(de){r("update status failed %s %o",String(i.id),de),i.status=M,L(),ue("Failed to update status","error")}finally{l=!1}}},fe=async d=>{if(!i||l){L();return}let C=d.currentTarget,M=typeof i.priority=="number"?i.priority:2,I=Number(C.value);if(I!==M){l=!0,i.priority=I,L();try{r("update priority %s \u2192 %d",String(i.id),I);let de=await e("update-priority",{id:i.id,priority:I});de&&typeof de=="object"&&(i=de,L())}catch(de){r("update priority failed %s %o",String(i.id),de),i.priority=M,L(),ue("Failed to update priority","error")}finally{l=!1}}},ie=()=>{u=!0,L()},ne=d=>{if(d.key==="Escape")u=!1,L();else if(d.key==="Enter"&&d.ctrlKey){let C=t.querySelector("#detail-root .editable-actions button");C&&C.click()}},me=async()=>{if(!i||l)return;let d=t.querySelector("#detail-root textarea"),C=i.description||"",M=d?d.value:"";if(M===C){u=!1,L();return}l=!0,d&&(d.disabled=!0);try{r("save description %s",String(i?.id||""));let I=await e("edit-text",{id:i.id,field:"description",value:M});I&&typeof I=="object"&&(i=I,u=!1,L())}catch(I){r("save description failed %s %o",String(i?.id||""),I),i.description=C,u=!1,L(),ue("Failed to save description","error")}finally{l=!1}},qe=()=>{u=!1,L()},Ge=()=>{p=!0,L();try{let d=t.querySelector("#detail-root .design textarea");d&&d.focus()}catch(d){r("focus design textarea failed %o",d)}},Oe=d=>{if(d.key==="Escape")p=!1,L();else if(d.key==="Enter"&&(d.ctrlKey||d.metaKey)){let C=t.querySelector("#detail-root .design .editable-actions button");C&&C.click()}},w=async()=>{if(!i||l)return;let d=t.querySelector("#detail-root .design textarea"),C=i.design||"",M=d?d.value:"";if(M===C){p=!1,L();return}l=!0,d&&(d.disabled=!0);try{r("save design %s",String(i?.id||""));let I=await e("edit-text",{id:i.id,field:"design",value:M});I&&typeof I=="object"&&(i=I,p=!1,L())}catch(I){r("save design failed %s %o",String(i?.id||""),I),i.design=C,p=!1,L(),ue("Failed to save design","error")}finally{l=!1}},b=()=>{p=!1,L()},H=()=>{h=!0,L()},V=d=>{if(d.key==="Escape")h=!1,L();else if(d.key==="Enter"&&(d.ctrlKey||d.metaKey)){let C=t.querySelector("#detail-root .notes .editable-actions button");C&&C.click()}},J=async()=>{if(!i||l)return;let d=t.querySelector("#detail-root .notes textarea"),C=i.notes||"",M=d?d.value:"";if(M===C){h=!1,L();return}l=!0,d&&(d.disabled=!0);try{r("save notes %s",String(i?.id||""));let I=await e("edit-text",{id:i.id,field:"notes",value:M});I&&typeof I=="object"&&(i=I,h=!1,L())}catch(I){r("save notes failed %s %o",String(i?.id||""),I),i.notes=C,h=!1,L(),ue("Failed to save notes","error")}finally{l=!1}},be=()=>{h=!1,L()},st=()=>{f=!0,L()},Qt=d=>{if(d.key==="Escape")f=!1,L();else if(d.key==="Enter"&&(d.ctrlKey||d.metaKey)){let C=t.querySelector("#detail-root .acceptance .editable-actions button");C&&C.click()}},en=async()=>{if(!i||l)return;let d=t.querySelector("#detail-root .acceptance textarea"),C=i.acceptance||"",M=d?d.value:"";if(M===C){f=!1,L();return}l=!0,d&&(d.disabled=!0);try{r("save acceptance %s",String(i?.id||""));let I=await e("edit-text",{id:i.id,field:"acceptance",value:M});I&&typeof I=="object"&&(i=I,f=!1,L())}catch(I){r("save acceptance failed %s %o",String(i?.id||""),I),i.acceptance=C,f=!1,L(),ue("Failed to save acceptance","error")}finally{l=!1}},An=()=>{f=!1,L()},Tt=d=>{let C=d.currentTarget,M=A.trim().length>0;A=C.value||"";let I=A.trim().length>0;M!==I&&L()},Ve=async()=>{if(!(!i||_||!A.trim())){_=!0,L();try{r("add comment to %s",String(i.id));let d=await e("add-comment",{id:i.id,text:A.trim()});Array.isArray(d)&&(i.comments=d,A="",L())}catch(d){r("add comment failed %s %o",String(i.id),d),ue("Failed to add comment","error")}finally{_=!1,L()}}},Ye=d=>{d.key==="Enter"&&(d.ctrlKey||d.metaKey)&&(d.preventDefault(),Ve())};function Me(d,C){let M=d==="Dependencies"?"add-dependency":"add-dependent";return T`
159
+ <div class="props-card">
160
+ <div>
161
+ <div class="props-card__title">${d}</div>
162
+ </div>
163
+ <ul>
164
+ ${!C||C.length===0?null:C.map(I=>{let de=I.id,ve=se(de);return T`<li
165
+ data-href=${ve}
166
+ @click=${()=>n(ve)}
167
+ >
168
+ ${ut(I.issue_type||"")}
169
+ <span class="text-truncate">${I.title||""}</span>
170
+ <button
171
+ aria-label=${`Remove dependency ${de}`}
172
+ @click=${Ct(de,d)}
173
+ >
174
+ ×
175
+ </button>
176
+ </li>`})}
177
+ </ul>
178
+ <div class="props-card__footer">
179
+ <input type="text" placeholder="Issue ID" data-testid=${M} />
180
+ <button @click=${nn(C,d)}>Add</button>
181
+ </div>
182
+ </div>
183
+ `}function Et(d){let C=a?T`<div class="detail-title">
184
+ <h2>
185
+ <input
186
+ type="text"
187
+ aria-label="Edit title"
188
+ .value=${d.title||""}
189
+ @keydown=${mt}
190
+ />
191
+ <button @click=${v}>Save</button>
192
+ <button @click=${D}>Cancel</button>
193
+ </h2>
194
+ </div>`:T`<div class="detail-title">
195
+ <h2>
196
+ <span
197
+ class="editable"
198
+ tabindex="0"
199
+ role="button"
200
+ aria-label="Edit title"
201
+ @click=${k}
202
+ @keydown=${y}
203
+ >${d.title||""}</span
204
+ >
205
+ </h2>
206
+ </div>`,M=T`<select
207
+ class=${`badge-select badge--status is-${d.status||"open"}`}
208
+ @change=${_e}
209
+ .value=${d.status||"open"}
210
+ ?disabled=${l}
211
+ >
212
+ ${(()=>{let ee=String(d.status||"open");return["open","in_progress","closed"].map(oe=>T`<option value=${oe} ?selected=${ee===oe}>
213
+ ${gt(oe)}
214
+ </option>`)})()}
215
+ </select>`,I=T`<select
216
+ class=${`badge-select badge--priority is-p${String(typeof d.priority=="number"?d.priority:2)}`}
217
+ @change=${fe}
218
+ .value=${String(typeof d.priority=="number"?d.priority:2)}
219
+ ?disabled=${l}
220
+ >
221
+ ${(()=>{let ee=String(typeof d.priority=="number"?d.priority:2);return rt.map((oe,Fe)=>T`<option value=${String(Fe)} ?selected=${ee===String(Fe)}>
222
+ ${zt(Fe)} ${oe}
223
+ </option>`)})()}
224
+ </select>`,de=u?T`<div class="description">
225
+ <textarea
226
+ @keydown=${ne}
227
+ .value=${d.description||""}
228
+ rows="8"
229
+ style="width:100%"
230
+ ></textarea>
231
+ <div class="editable-actions">
232
+ <button @click=${me}>Save</button>
233
+ <button @click=${qe}>Cancel</button>
234
+ </div>
235
+ </div>`:T`<div
236
+ class="md editable"
237
+ tabindex="0"
238
+ role="button"
239
+ aria-label="Edit description"
240
+ @click=${ie}
241
+ @keydown=${bt}
242
+ >
243
+ ${(()=>{let ee=d.description||"";return ee.trim()===""?T`<div class="muted">Description</div>`:Xt(ee)})()}
244
+ </div>`,ve=(()=>{let ee=d;return String(d.acceptance||ee.acceptance_criteria||"")})(),rn=f?T`<div class="acceptance">
245
+ ${ve.trim().length>0?T`<div class="props-card__title">Acceptance Criteria</div>`:""}
246
+ <textarea
247
+ @keydown=${Qt}
248
+ .value=${ve}
249
+ rows="6"
250
+ style="width:100%"
251
+ ></textarea>
252
+ <div class="editable-actions">
253
+ <button @click=${en}>Save</button>
254
+ <button @click=${An}>Cancel</button>
255
+ </div>
256
+ </div>`:T`<div class="acceptance">
257
+ ${(()=>{let ee=ve,oe=ee.trim().length>0;return T`${oe?T`<div class="props-card__title">Acceptance Criteria</div>`:""}
258
+ <div
259
+ class="md editable"
260
+ tabindex="0"
261
+ role="button"
262
+ aria-label="Edit acceptance criteria"
263
+ @click=${st}
264
+ @keydown=${Pe}
265
+ >
266
+ ${oe?Xt(ee):T`<div class="muted">Add acceptance criteria…</div>`}
267
+ </div>`})()}
268
+ </div>`,xe=String(d.notes||""),ye=h?T`<div class="notes">
269
+ ${xe.trim().length>0?T`<div class="props-card__title">Notes</div>`:""}
270
+ <textarea
271
+ @keydown=${V}
272
+ .value=${xe}
273
+ rows="6"
274
+ style="width:100%"
275
+ ></textarea>
276
+ <div class="editable-actions">
277
+ <button @click=${J}>Save</button>
278
+ <button @click=${be}>Cancel</button>
279
+ </div>
280
+ </div>`:T`<div class="notes">
281
+ ${(()=>{let ee=xe,oe=ee.trim().length>0;return T`${oe?T`<div class="props-card__title">Notes</div>`:""}
282
+ <div
283
+ class="md editable"
284
+ tabindex="0"
285
+ role="button"
286
+ aria-label="Edit notes"
287
+ @click=${H}
288
+ @keydown=${Ze}
289
+ >
290
+ ${oe?Xt(ee):T`<div class="muted">Add notes…</div>`}
291
+ </div>`})()}
292
+ </div>`,Xe=Array.isArray(d.labels)?d.labels:[],Sn=T`<div class="props-card labels">
293
+ <div>
294
+ <div class="props-card__title">Labels</div>
295
+ </div>
296
+ <ul>
297
+ ${Xe.map(ee=>T`<li>
298
+ <span class="badge" title=${ee}
299
+ >${ee}
300
+ <button
301
+ class="icon-button"
302
+ title="Remove label"
303
+ aria-label=${"Remove label "+ee}
304
+ @click=${()=>te(ee)}
305
+ style="margin-left:6px"
306
+ >
307
+ ×
308
+ </button></span
309
+ >
310
+ </li>`)}
311
+ </ul>
312
+ <div class="props-card__footer">
313
+ <input
314
+ type="text"
315
+ placeholder="Label"
316
+ size="12"
317
+ .value=${m}
318
+ @input=${Y}
319
+ @keydown=${q}
320
+ />
321
+ <button @click=${pe}>Add</button>
322
+ </div>
323
+ </div>`,yt=String(d.design||""),It=p?T`<div class="design">
324
+ ${yt.trim().length>0?T`<div class="props-card__title">Design</div>`:""}
325
+ <textarea
326
+ @keydown=${Oe}
327
+ .value=${yt}
328
+ rows="6"
329
+ style="width:100%"
330
+ ></textarea>
331
+ <div class="editable-actions">
332
+ <button @click=${w}>Save</button>
333
+ <button @click=${b}>Cancel</button>
334
+ </div>
335
+ </div>`:T`<div class="design">
336
+ ${(()=>{let ee=yt,oe=ee.trim().length>0;return T`${oe?T`<div class="props-card__title">Design</div>`:""}
337
+ <div
338
+ class="md editable"
339
+ tabindex="0"
340
+ role="button"
341
+ aria-label="Edit design"
342
+ @click=${Ge}
343
+ @keydown=${Rt}
344
+ >
345
+ ${oe?Xt(ee):T`<div class="muted">Add design…</div>`}
346
+ </div>`})()}
347
+ </div>`,Dt=Array.isArray(d.comments)?d.comments:[],sn=T`<div class="comments">
348
+ <div class="props-card__title">Comments</div>
349
+ ${Dt.length===0?T`<div class="muted">No comments yet</div>`:Dt.map(ee=>T`
350
+ <div class="comment-item">
351
+ <div class="comment-header">
352
+ <span class="comment-author">${ee.author||"Unknown"}</span>
353
+ <span class="comment-date"
354
+ >${_n(ee.created_at)}</span
355
+ >
356
+ </div>
357
+ <div class="comment-text">${ee.text}</div>
358
+ </div>
359
+ `)}
360
+ <div class="comment-input">
361
+ <textarea
362
+ placeholder="Add a comment... (Ctrl+Enter to submit)"
363
+ rows="3"
364
+ .value=${A}
365
+ @input=${Tt}
366
+ @keydown=${Ye}
367
+ ?disabled=${_}
368
+ ></textarea>
369
+ <button
370
+ @click=${Ve}
371
+ ?disabled=${_||!A.trim()}
372
+ >
373
+ ${_?"Adding...":"Add Comment"}
374
+ </button>
375
+ </div>
376
+ </div>`;return T`
377
+ <div class="panel__body" id="detail-root">
378
+ <div class="detail-layout">
379
+ <div class="detail-main">
380
+ ${C} ${de} ${It} ${ye}
381
+ ${rn} ${sn}
382
+ </div>
383
+ <div class="detail-side">
384
+ <div class="props-card">
385
+ <div class="props-card__header">
386
+ <div class="props-card__title">Properties</div>
387
+ <button class="delete-issue-btn" title="Delete issue" aria-label="Delete issue" @click=${G}>
388
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
389
+ <polyline points="3 6 5 6 21 6"></polyline>
390
+ <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"></path>
391
+ <line x1="10" y1="11" x2="10" y2="17"></line>
392
+ <line x1="14" y1="11" x2="14" y2="17"></line>
393
+ </svg>
394
+ <span class="tooltip">Delete issue</span>
395
+ </button>
396
+ </div>
397
+ <div class="prop">
398
+ <div class="label">Type</div>
399
+ <div class="value">
400
+ ${ut(d.issue_type)}
401
+ </div>
402
+ </div>
403
+ <div class="prop">
404
+ <div class="label">Status</div>
405
+ <div class="value">${M}</div>
406
+ </div>
407
+ ${d.close_reason?T`<div class="prop">
408
+ <div class="label">Close Reason</div>
409
+ <div class="value">${d.close_reason}</div>
410
+ </div>`:""}
411
+ <div class="prop">
412
+ <div class="label">Priority</div>
413
+ <div class="value">${I}</div>
414
+ </div>
415
+ <div class="prop assignee">
416
+ <div class="label">Assignee</div>
417
+ <div class="value">
418
+ ${g?T`<input
419
+ type="text"
420
+ aria-label="Edit assignee"
421
+ .value=${d.assignee||""}
422
+ size=${Math.min(40,Math.max(12,(d.assignee||"").length+3))}
423
+ @keydown=${ee=>{ee.key==="Escape"?(ee.preventDefault(),U()):ee.key==="Enter"&&(ee.preventDefault(),W())}}
424
+ />
425
+ <button
426
+ class="btn"
427
+ style="margin-left:6px"
428
+ @click=${W}
429
+ >
430
+ Save
431
+ </button>
432
+ <button
433
+ class="btn"
434
+ style="margin-left:6px"
435
+ @click=${U}
436
+ >
437
+ Cancel
438
+ </button>`:T`${(()=>{let ee=d.assignee||"",oe=ee.trim().length>0;return T`<span
439
+ class=${oe?"editable":"editable muted"}
440
+ tabindex="0"
441
+ role="button"
442
+ aria-label="Edit assignee"
443
+ @click=${R}
444
+ @keydown=${B}
445
+ >${oe?ee:"Unassigned"}</span
446
+ >`})()}`}
447
+ </div>
448
+ </div>
449
+ <div class="prop">
450
+ <div class="label">Created</div>
451
+ <div class="value">${_n(d.created_at)}</div>
452
+ </div>
453
+ <div class="prop">
454
+ <div class="label">Updated</div>
455
+ <div class="value">${_n(d.updated_at)}</div>
456
+ </div>
457
+ ${d.status==="closed"&&d.closed_at!==void 0&&d.closed_at!==null?T`<div class="prop">
458
+ <div class="label">Closed</div>
459
+ <div class="value">
460
+ ${_n(d.closed_at)}
461
+ </div>
462
+ </div>`:""}
463
+ </div>
464
+ ${Sn}
465
+ ${Me("Dependencies",d.dependencies||[])}
466
+ ${Me("Dependents",d.dependents||[])}
467
+ </div>
468
+ </div>
469
+ </div>
470
+ </div>
471
+ `}function L(){if(!i){ge(o?"Loading\u2026":"No issue selected");return}Se(Et(i),t)}async function tn(d,C){if(!(!i||l)){l=!0;try{if(C==="Dependencies"){let M=await e("dep-remove",{a:i.id,b:d,view_id:i.id});M&&typeof M=="object"&&(i=M,L())}else{let M=await e("dep-remove",{a:d,b:i.id,view_id:i.id});M&&typeof M=="object"&&(i=M,L())}}catch(M){r("dep-remove failed %o",M)}finally{l=!1}}}function Ct(d,C){return M=>{M.stopPropagation(),!(!i||l)&&N(d,C)}}function nn(d,C){return async M=>{if(!i||l)return;let I=M.currentTarget,de=I.previousElementSibling,ve=de?de.value.trim():"";if(!ve||ve===i.id){ue("Enter a different issue id");return}if(new Set((d||[]).map(xe=>xe.id)).has(ve)){ue("Link already exists");return}l=!0,I&&(I.disabled=!0),de&&(de.disabled=!0);try{if(C==="Dependencies"){let xe=await e("dep-add",{a:i.id,b:ve,view_id:i.id});xe&&typeof xe=="object"&&(i=xe,L())}else{let xe=await e("dep-add",{a:ve,b:i.id,view_id:i.id});xe&&typeof xe=="object"&&(i=xe,L())}}catch(xe){r("dep-add failed %o",xe),ue("Failed to add dependency","error")}finally{l=!1}}}function mt(d){d.key==="Escape"?(a=!1,L()):d.key==="Enter"&&(d.preventDefault(),v())}function bt(d){d.key==="Enter"&&ie()}function Pe(d){d.key==="Enter"&&st()}function Ze(d){d.key==="Enter"&&H()}function Rt(d){d.key==="Enter"&&Ge()}return{async load(d){if(!d){ge("No issue selected");return}if(o=String(d),i=null,X(),i||ge("Loading\u2026"),l=!1,A="",_=!1,L(),i&&!i.comments)try{let C=await e("get-comments",{id:o});Array.isArray(C)&&i&&o===d&&(i.comments=C,L())}catch(C){r("fetch comments failed %s %o",d,C)}},clear(){ge("Select an issue to view details")},destroy(){t.replaceChildren(),S&&S.parentNode&&(S.parentNode.removeChild(S),S=null),$&&$.parentNode&&($.parentNode.removeChild($),$=null)}}}function vn(t){let e=t.navigate,n=t.onUpdate,s=t.requestRender,r=t.getSelectedId||(()=>null),i=t.row_class||"issue-row",o=new Set;function l(f,g,m,A=""){let _=`${f}:${g}`;return o.has(_)?T`<span>
472
+ <input
473
+ type="text"
474
+ .value=${m}
475
+ class="inline-edit"
476
+ @keydown=${async $=>{if($.key==="Escape")o.delete(_),s();else if($.key==="Enter"){let E=$.currentTarget.value||"";E!==m&&await n(f,{[g]:E}),o.delete(_),s()}}}
477
+ @blur=${async $=>{let E=$.currentTarget.value||"";E!==m&&await n(f,{[g]:E}),o.delete(_),s()}}
478
+ autofocus
479
+ />
480
+ </span>`:T`<span
481
+ class="editable text-truncate ${m?"":"muted"}"
482
+ tabindex="0"
483
+ role="button"
484
+ @click=${$=>{$.stopPropagation(),$.preventDefault(),o.add(_),s()}}
485
+ @keydown=${$=>{$.key==="Enter"&&($.preventDefault(),$.stopPropagation(),o.add(_),s())}}
486
+ >${m||A}</span
487
+ >`}function a(f,g){let m=`${f}:title`;return o.has(m)?T`<div class="title-cell">
488
+ <input
489
+ type="text"
490
+ .value=${g}
491
+ class="inline-edit"
492
+ @keydown=${async _=>{if(_.key==="Escape")o.delete(m),s();else if(_.key==="Enter"){let $=_.currentTarget.value||"";$!==g&&await n(f,{title:$}),o.delete(m),s()}}}
493
+ @blur=${async _=>{let $=_.currentTarget.value||"";$!==g&&await n(f,{title:$}),o.delete(m),s()}}
494
+ autofocus
495
+ />
496
+ </div>`:T`<div class="title-cell">
497
+ <span
498
+ class="row-title text-truncate"
499
+ tabindex="0"
500
+ role="button"
501
+ aria-label="Open issue"
502
+ @keydown=${_=>{_.key==="Enter"&&(_.preventDefault(),e(f))}}
503
+ >${g}</span
504
+ >
505
+ <button
506
+ type="button"
507
+ class="row-edit-btn"
508
+ aria-label="Edit title"
509
+ title="Edit title"
510
+ @click=${_=>{_.stopPropagation(),_.preventDefault(),o.add(m),s()}}
511
+ >
512
+ ✎
513
+ </button>
514
+ </div>`}function u(f,g){return async m=>{let _=m.currentTarget.value||"",S={};S[g]=g==="priority"?Number(_):_,await n(f,S)}}function p(f){return g=>{let m=g.target;m&&(m.tagName==="INPUT"||m.tagName==="SELECT")||e(f)}}function h(f){let g=String(f.status||"open"),m=String(f.priority??2),A=r()===f.id;return T`<tr
515
+ role="row"
516
+ class="${i} ${A?"selected":""}"
517
+ data-issue-id=${f.id}
518
+ @click=${p(f.id)}
519
+ >
520
+ <td role="gridcell" class="mono">${nt(f.id)}</td>
521
+ <td role="gridcell">${ut(f.issue_type)}</td>
522
+ <td role="gridcell">${a(f.id,f.title||"")}</td>
523
+ <td role="gridcell">
524
+ <select
525
+ class="badge-select badge--status is-${g}"
526
+ .value=${g}
527
+ @change=${u(f.id,"status")}
528
+ >
529
+ ${["open","in_progress","closed"].map(_=>T`<option value=${_} ?selected=${g===_}>
530
+ ${gt(_)}
531
+ </option>`)}
532
+ </select>
533
+ </td>
534
+ <td role="gridcell">
535
+ ${l(f.id,"assignee",f.assignee||"","Unassigned")}
536
+ </td>
537
+ <td role="gridcell">
538
+ <select
539
+ class="badge-select badge--priority ${"is-p"+m}"
540
+ .value=${m}
541
+ @change=${u(f.id,"priority")}
542
+ >
543
+ ${rt.map((_,S)=>T`<option
544
+ value=${String(S)}
545
+ ?selected=${m===String(S)}
546
+ >
547
+ ${zt(S)} ${_}
548
+ </option>`)}
549
+ </select>
550
+ </td>
551
+ <td role="gridcell" class="deps-col">
552
+ ${(f.dependency_count||0)>0||(f.dependent_count||0)>0?T`<span class="deps-indicator"
553
+ >${(f.dependency_count||0)>0?T`<span
554
+ class="dep-count"
555
+ title="${f.dependency_count} ${(f.dependency_count||0)===1?"dependency":"dependencies"}"
556
+ >→${f.dependency_count}</span
557
+ >`:""}${(f.dependent_count||0)>0?T`<span
558
+ class="dependent-count"
559
+ title="${f.dependent_count} ${(f.dependent_count||0)===1?"dependent":"dependents"}"
560
+ >←${f.dependent_count}</span
561
+ >`:""}</span
562
+ >`:""}
563
+ </td>
564
+ </tr>`}return h}function vs(t,e,n,s=void 0,r=void 0){let i=[],o=new Set,l=new Set,a=new Map,u=r?et(r):null;u&&u.subscribe(()=>{let S=i.length===0;if(i=_(),h(),S&&i.length>0){let $=String(i[0].epic?.id||"");$&&!o.has($)&&A($)}});let p=vn({navigate:S=>n(S),onUpdate:m,requestRender:h,getSelectedId:()=>null,row_class:"epic-row"});function h(){Se(f(),t)}function f(){return i.length?T`${i.map(S=>g(S))}`:T`<div class="panel__header muted">No epics found.</div>`}function g(S){let $=S.epic||{},P=String($.id||""),E=o.has(P),F=u?u.selectEpicChildren(P):[],j=l.has(P);return T`
565
+ <div class="epic-group" data-epic-id=${P}>
566
+ <div class="epic-header" @click=${()=>A(P)}>
567
+ <button
568
+ type="button"
569
+ class="epic-toggle-btn"
570
+ aria-expanded=${E}
571
+ aria-label=${E?"Collapse epic":"Expand epic"}
572
+ title=${E?"Collapse":"Expand"}
573
+ @click=${Z=>{Z.stopPropagation(),A(P)}}
574
+ >
575
+ ${E?"\u25BC":"\u25B6"}
576
+ </button>
577
+ <span class="epic-title">
578
+ ${nt(P,{class_name:"mono"})}
579
+ <span
580
+ class="epic-title-text text-truncate"
581
+ role="button"
582
+ tabindex="0"
583
+ aria-label="Open epic"
584
+ @click=${Z=>{Z.stopPropagation(),n(P)}}
585
+ @keydown=${Z=>{(Z.key==="Enter"||Z.key===" ")&&(Z.preventDefault(),Z.stopPropagation(),n(P))}}
586
+ >${$.title||"(no title)"}</span
587
+ >
588
+ </span>
589
+ <span class="epic-progress">
590
+ <progress
591
+ value=${Number(S.closed_children||0)}
592
+ max=${Math.max(1,Number(S.total_children||0))}
593
+ ></progress>
594
+ <span class="muted mono"
595
+ >${S.closed_children}/${S.total_children}</span
596
+ >
597
+ </span>
598
+ </div>
599
+ ${E?T`<div class="epic-children">
600
+ ${j?T`<div class="muted">Loading…</div>`:F.length===0?T`<div class="muted">No issues found</div>`:T`<table class="table">
601
+ <colgroup>
602
+ <col style="width: 100px" />
603
+ <col style="width: 120px" />
604
+ <col />
605
+ <col style="width: 120px" />
606
+ <col style="width: 160px" />
607
+ <col style="width: 130px" />
608
+ </colgroup>
609
+ <thead>
610
+ <tr>
611
+ <th>ID</th>
612
+ <th>Type</th>
613
+ <th>Title</th>
614
+ <th>Status</th>
615
+ <th>Assignee</th>
616
+ <th>Priority</th>
617
+ </tr>
618
+ </thead>
619
+ <tbody>
620
+ ${F.map(Z=>p(Z))}
621
+ </tbody>
622
+ </table>`}
623
+ </div>`:null}
624
+ </div>
625
+ `}async function m(S,$){try{await e.updateIssue({id:S,...$}),h()}catch{}}async function A(S){if(o.has(S)){if(o.delete(S),a.has(S)){try{let $=a.get(S);$&&await $()}catch{}a.delete(S);try{r&&r.unregister&&r.unregister(`detail:${S}`)}catch{}}}else{if(o.add(S),l.add(S),h(),s&&typeof s.subscribeList=="function")try{try{r&&r.register&&r.register(`detail:${S}`,{type:"issue-detail",params:{id:S}})}catch{}let $=await s.subscribeList(`detail:${S}`,{type:"issue-detail",params:{id:S}});a.set(S,$)}catch{}l.delete(S)}h()}function _(){let $=(r&&r.snapshotFor?r.snapshotFor("tab:epics")||[]:[]).slice().sort(Er),P=[];for(let E of $){let F=Array.isArray(E.dependents)?E.dependents:[],j=Number.isFinite(E.total_children),Z=Number.isFinite(E.closed_children),N=j?Number(E.total_children)||0:F.length,K=Z&&Number(E.closed_children)||0;if(!Z)for(let G of F)String(G.status||"")==="closed"&&K++;P.push({epic:E,total_children:N,closed_children:K})}return P}return{async load(){i=_(),h();try{if(i.length>0){let S=String(i[0].epic?.id||"");S&&!o.has(S)&&await A(S)}}catch{}}}}function xs(t){let e=document.createElement("dialog");e.id="fatal-error-dialog",e.setAttribute("role","alertdialog"),e.setAttribute("aria-modal","true"),e.innerHTML=`
626
+ <div class="fatal-error">
627
+ <div class="fatal-error__icon" aria-hidden="true">!</div>
628
+ <div class="fatal-error__body">
629
+ <p class="fatal-error__eyebrow">Critical</p>
630
+ <h2 class="fatal-error__title" id="fatal-error-title">Command failed</h2>
631
+ <p class="fatal-error__message" id="fatal-error-message"></p>
632
+ <pre class="fatal-error__detail" id="fatal-error-detail"></pre>
633
+ <div class="fatal-error__actions">
634
+ <button type="button" class="btn primary" id="fatal-error-reload">Reload</button>
635
+ <button type="button" class="btn" id="fatal-error-close">Dismiss</button>
636
+ </div>
637
+ </div>
638
+ </div>`,t.appendChild(e);let n=e.querySelector("#fatal-error-title"),s=e.querySelector("#fatal-error-message"),r=e.querySelector("#fatal-error-detail"),i=e.querySelector("#fatal-error-reload"),o=e.querySelector("#fatal-error-close"),l=()=>{if(typeof e.close=="function")try{e.close()}catch{}e.removeAttribute("open")},a=(u,p,h="")=>{n&&(n.textContent=u||"Unexpected Error"),s&&(s.textContent=p||"An unrecoverable error occurred.");let f=typeof h=="string"?h.trim():"";if(r&&(f.length>0?(r.textContent=f,r.removeAttribute("hidden")):(r.textContent="No additional diagnostics available.",r.setAttribute("hidden",""))),typeof e.showModal=="function")try{e.showModal(),e.setAttribute("open","")}catch{e.setAttribute("open","")}else e.setAttribute("open","")};return i&&i.addEventListener("click",()=>{window.location.reload()}),o&&o.addEventListener("click",()=>l()),e.addEventListener("cancel",u=>{u.preventDefault(),l()}),{open:a,close:l,getElement(){return e}}}function As(t,e,n){let s=document.createElement("dialog");s.id="issue-dialog",s.setAttribute("role","dialog"),s.setAttribute("aria-modal","true"),s.innerHTML=`
639
+ <div class="issue-dialog__container" part="container">
640
+ <header class="issue-dialog__header">
641
+ <div class="issue-dialog__title">
642
+ <span class="mono" id="issue-dialog-title"></span>
643
+ </div>
644
+ <button type="button" class="issue-dialog__close" aria-label="Close">\xD7</button>
645
+ </header>
646
+ <div class="issue-dialog__body" id="issue-dialog-body"></div>
647
+ </div>
648
+ `,t.appendChild(s);let r=s.querySelector("#issue-dialog-body"),i=s.querySelector("#issue-dialog-title"),o=s.querySelector(".issue-dialog__close");function l(g){i.replaceChildren(),i.appendChild(nt(g))}s.addEventListener("mousedown",g=>{g.target===s&&(g.preventDefault(),u())}),s.addEventListener("cancel",g=>{g.preventDefault(),u()}),o.addEventListener("click",()=>u());let a=null;function u(){try{typeof s.close=="function"?s.close():s.removeAttribute("open")}catch{s.removeAttribute("open")}try{n()}catch{}f()}function p(g){try{let m=document.activeElement;m&&m instanceof HTMLElement?a=m:a=null}catch{a=null}l(g);try{"showModal"in s&&typeof s.showModal=="function"?s.showModal():s.setAttribute("open",""),setTimeout(()=>{try{o.focus()}catch{}},0)}catch{s.setAttribute("open","")}}function h(){try{typeof s.close=="function"?s.close():s.removeAttribute("open")}catch{s.removeAttribute("open")}f()}function f(){try{a&&document.contains(a)&&a.focus()}catch{}finally{a=null}}return{open:p,close:h,getMount(){return r}}}var xn=["bug","feature","task","epic","chore"];function Jt(t){switch((t||"").toString().toLowerCase()){case"bug":return"Bug";case"feature":return"Feature";case"task":return"Task";case"epic":return"Epic";case"chore":return"Chore";default:return""}}function Ss(t,e,n,s,r=void 0,i=void 0){let o=ce("views:list"),l=[],a="",u=[],p=[],h=s?s.getState().selected_id:null,f=null,g=!1,m=!1;function A(k){return Array.isArray(k)?k:typeof k=="string"&&k!==""&&k!=="all"?[k]:[]}function _(k){return Array.isArray(k)?k:typeof k=="string"&&k!==""?[k]:[]}let S=vn({navigate:k=>{let y=n||(D=>window.location.hash=D),v=s?s.getState().view:"issues";y(tt(v,k))},onUpdate:se,requestRender:G,getSelectedId:()=>h,row_class:"issue-row"}),$=async k=>{k==="ready"?l.includes("ready")?l=[]:l=["ready"]:(l=l.filter(y=>y!=="ready"),l.includes(k)?l=l.filter(y=>y!==k):l=[...l,k]),o("status toggle %s -> %o",k,l),s&&s.setState({filters:{status:l}}),await ge()},P=k=>{a=k.currentTarget.value,o("search input %s",a),s&&s.setState({filters:{search:a}}),G()},E=k=>{p.includes(k)?p=p.filter(y=>y!==k):p=[...p,k],o("type toggle %s -> %o",k,p),s&&s.setState({filters:{type:p}}),G()},F=k=>{k.stopPropagation(),g=!g,m=!1,G()},j=k=>{k.stopPropagation(),m=!m,g=!1,G()};function Z(k,y,v){return k.length===0?`${y}: Any`:k.length===1?`${y}: ${v(k[0])}`:`${y} (${k.length})`}if(s){let k=s.getState();k&&k.filters&&typeof k.filters=="object"&&(l=A(k.filters.status),a=k.filters.search||"",p=_(k.filters.type))}let N=i?et(i):null;function K(){let k=u;if(l.length>0&&!l.includes("ready")&&(k=k.filter(y=>l.includes(String(y.status||"")))),a){let y=a.toLowerCase();k=k.filter(v=>{let D=String(v.id).toLowerCase(),R=String(v.title||"").toLowerCase();return D.includes(y)||R.includes(y)})}return p.length>0&&(k=k.filter(y=>p.includes(String(y.issue_type||"")))),l.length===1&&l[0]==="closed"&&(k=k.slice().sort(ct)),T`
649
+ <div class="panel__header">
650
+ <div class="filter-dropdown ${g?"is-open":""}">
651
+ <button
652
+ class="filter-dropdown__trigger"
653
+ @click=${F}
654
+ >
655
+ ${Z(l,"Status",gt)}
656
+ <span class="filter-dropdown__arrow">▾</span>
657
+ </button>
658
+ <div class="filter-dropdown__menu">
659
+ ${["ready","open","in_progress","closed"].map(y=>T`
660
+ <label
661
+ class="filter-dropdown__option${l.includes("ready")&&y!=="ready"?" is-disabled":""}"
662
+ >
663
+ <input
664
+ type="checkbox"
665
+ .checked=${l.includes(y)}
666
+ ?disabled=${l.includes("ready")&&y!=="ready"}
667
+ @change=${()=>$(y)}
668
+ />
669
+ ${y==="ready"?"Ready":gt(y)}
670
+ </label>
671
+ `)}
672
+ </div>
673
+ </div>
674
+ <div class="filter-dropdown ${m?"is-open":""}">
675
+ <button class="filter-dropdown__trigger" @click=${j}>
676
+ ${Z(p,"Types",Jt)}
677
+ <span class="filter-dropdown__arrow">▾</span>
678
+ </button>
679
+ <div class="filter-dropdown__menu">
680
+ ${xn.map(y=>T`
681
+ <label class="filter-dropdown__option">
682
+ <input
683
+ type="checkbox"
684
+ .checked=${p.includes(y)}
685
+ @change=${()=>E(y)}
686
+ />
687
+ ${Jt(y)}
688
+ </label>
689
+ `)}
690
+ </div>
691
+ </div>
692
+ <input
693
+ type="search"
694
+ placeholder="Search…"
695
+ @input=${P}
696
+ .value=${a}
697
+ />
698
+ </div>
699
+ <div class="panel__body" id="list-root">
700
+ ${k.length===0?T`<div class="issues-block">
701
+ <div class="muted" style="padding:10px 12px;">No issues</div>
702
+ </div>`:T`<div class="issues-block">
703
+ <table
704
+ class="table"
705
+ role="grid"
706
+ aria-rowcount=${String(k.length)}
707
+ aria-colcount="6"
708
+ >
709
+ <colgroup>
710
+ <col style="width: 100px" />
711
+ <col style="width: 120px" />
712
+ <col />
713
+ <col style="width: 140px" />
714
+ <col style="width: 160px" />
715
+ <col style="width: 130px" />
716
+ <col style="width: 80px" />
717
+ </colgroup>
718
+ <thead>
719
+ <tr role="row">
720
+ <th role="columnheader">ID</th>
721
+ <th role="columnheader">Type</th>
722
+ <th role="columnheader">Title</th>
723
+ <th role="columnheader">Status</th>
724
+ <th role="columnheader">Assignee</th>
725
+ <th role="columnheader">Priority</th>
726
+ <th role="columnheader">Deps</th>
727
+ </tr>
728
+ </thead>
729
+ <tbody role="rowgroup">
730
+ ${k.map(y=>S(y))}
731
+ </tbody>
732
+ </table>
733
+ </div>`}
734
+ </div>
735
+ `}function G(){Se(K(),t)}G();async function se(k,y){try{o("updateInline %s %o",k,Object.keys(y)),typeof y.title=="string"&&await e("edit-text",{id:k,field:"title",value:y.title}),typeof y.assignee=="string"&&await e("update-assignee",{id:k,assignee:y.assignee}),typeof y.status=="string"&&await e("update-status",{id:k,status:y.status}),typeof y.priority=="number"&&await e("update-priority",{id:k,priority:y.priority})}catch{}}async function ge(){o("load");let k=t.querySelector("#list-root"),y=k?k.scrollTop:0;try{N?u=N.selectIssuesFor("tab:issues"):u=[]}catch(v){o("load failed: %o",v),u=[]}G();try{let v=t.querySelector("#list-root");v&&y>0&&(v.scrollTop=y)}catch{}}t.tabIndex=0,t.addEventListener("keydown",k=>{if(k.key==="ArrowDown"||k.key==="ArrowUp"){let R=k.target;if((R&&typeof R.closest=="function"?R.closest("#list-root table.table"):null)&&!!!(R&&typeof R.closest=="function"&&(R.closest("input")||R.closest("textarea")||R.closest("select")))){let U=R&&typeof R.closest=="function"?R.closest("td"):null;if(U&&U.parentElement){let Y=U.parentElement,q=Y.parentElement;if(q&&q.querySelectorAll){let pe=Array.from(q.querySelectorAll("tr")),te=Math.max(0,pe.indexOf(Y)),_e=U.cellIndex||0,fe=k.key==="ArrowDown"?Math.min(te+1,pe.length-1):Math.max(te-1,0),ie=pe[fe],ne=ie&&ie.cells?ie.cells[_e]:null;if(ne){let me=ne.querySelector('button:not([disabled]), [tabindex]:not([tabindex="-1"]), a[href], select:not([disabled]), input:not([disabled]):not([type="hidden"]), textarea:not([disabled])');if(me&&typeof me.focus=="function"){k.preventDefault(),me.focus();return}}}}}}let y=t.querySelector("#list-root tbody"),v=y?y.querySelectorAll("tr"):[];if(v.length===0)return;let D=0;if(h&&(D=Array.from(v).findIndex(B=>(B.getAttribute("data-issue-id")||"")===h),D<0&&(D=0)),k.key==="ArrowDown"){k.preventDefault();let R=v[Math.min(D+1,v.length-1)],B=R?R.getAttribute("data-issue-id"):"",W=B||null;s&&W&&s.setState({selected_id:W}),h=W,G()}else if(k.key==="ArrowUp"){k.preventDefault();let R=v[Math.max(D-1,0)],B=R?R.getAttribute("data-issue-id"):"",W=B||null;s&&W&&s.setState({selected_id:W}),h=W,G()}else if(k.key==="Enter"){k.preventDefault();let R=v[D],B=R?R.getAttribute("data-issue-id"):"";if(B){let W=n||(Y=>window.location.hash=Y),U=s?s.getState().view:"issues";W(tt(U,B))}}});let X=k=>{let y=k.target;y&&!y.closest(".filter-dropdown")&&(g||m)&&(g=!1,m=!1,G())};return document.addEventListener("click",X),s&&(f=s.subscribe(k=>{if(k.selected_id!==h&&(h=k.selected_id,o("selected %s",h||"(none)"),G()),k.filters&&typeof k.filters=="object"){let y=A(k.filters.status),v=k.filters.search||"",D=!1;if(JSON.stringify(y)!==JSON.stringify(l)){l=y,ge();return}v!==a&&(a=v,D=!0);let B=_(k.filters.type);JSON.stringify(B)!==JSON.stringify(p)&&(p=B,D=!0),D&&G()}})),N&&N.subscribe(()=>{try{u=N.selectIssuesFor("tab:issues"),G()}catch{}}),{load:ge,destroy(){t.replaceChildren(),document.removeEventListener("click",X),f&&(f(),f=null)}}}function $s(t,e,n){let s=ce("views:nav"),r=null;function i(a){return u=>{u.preventDefault(),s("click tab %s",a),n.gotoView(a)}}function o(){let u=e.getState().view||"issues";return T`
736
+ <nav class="header-nav" aria-label="Primary">
737
+ <a
738
+ href="#/issues"
739
+ class="tab ${u==="issues"?"active":""}"
740
+ @click=${i("issues")}
741
+ >Issues</a
742
+ >
743
+ <a
744
+ href="#/epics"
745
+ class="tab ${u==="epics"?"active":""}"
746
+ @click=${i("epics")}
747
+ >Epics</a
748
+ >
749
+ <a
750
+ href="#/board"
751
+ class="tab ${u==="board"?"active":""}"
752
+ @click=${i("board")}
753
+ >Board</a
754
+ >
755
+ </nav>
756
+ `}function l(){Se(o(),t)}return l(),r=e.subscribe(()=>l()),{destroy(){r&&(r(),r=null),Se(T``,t)}}}function Ts(t,e,n,s){let r=document.createElement("dialog");r.id="new-issue-dialog",r.setAttribute("role","dialog"),r.setAttribute("aria-modal","true"),r.innerHTML=`
757
+ <div class="new-issue__container" part="container">
758
+ <header class="new-issue__header">
759
+ <div class="new-issue__title">New Issue</div>
760
+ <button type="button" class="new-issue__close" aria-label="Close">\xD7</button>
761
+ </header>
762
+ <div class="new-issue__body">
763
+ <form id="new-issue-form" class="new-issue__form">
764
+ <label for="new-title">Title</label>
765
+ <input id="new-title" name="title" type="text" required placeholder="Short summary" />
766
+
767
+ <label for="new-type">Type</label>
768
+ <select id="new-type" name="type" aria-label="Issue type"></select>
769
+
770
+ <label for="new-priority">Priority</label>
771
+ <select id="new-priority" name="priority" aria-label="Priority"></select>
772
+
773
+ <label for="new-labels">Labels</label>
774
+ <input id="new-labels" name="labels" type="text" placeholder="comma,separated" />
775
+
776
+ <label for="new-description">Description</label>
777
+ <textarea id="new-description" name="description" rows="6" placeholder="Optional markdown description"></textarea>
778
+
779
+ <div aria-live="polite" role="status" class="new-issue__error" id="new-issue-error"></div>
780
+
781
+ <div class="new-issue__actions" style="grid-column: 1 / -1">
782
+ <button type="button" id="btn-cancel">Cancel (Esc)</button>
783
+ <button type="submit" id="btn-create">Create</button>
784
+ </div>
785
+ </form>
786
+ </div>
787
+ </div>
788
+ `,t.appendChild(r);let i=r.querySelector("#new-issue-form"),o=r.querySelector("#new-title"),l=r.querySelector("#new-type"),a=r.querySelector("#new-priority"),u=r.querySelector("#new-labels"),p=r.querySelector("#new-description"),h=r.querySelector("#new-issue-error"),f=r.querySelector("#btn-cancel"),g=r.querySelector("#btn-create"),m=r.querySelector(".new-issue__close");function A(){l.replaceChildren();let N=document.createElement("option");N.value="",N.textContent="\u2014 Select \u2014",l.appendChild(N);for(let K of xn){let G=document.createElement("option");G.value=K,G.textContent=Jt(K),l.appendChild(G)}a.replaceChildren();for(let K=0;K<=4;K+=1){let G=document.createElement("option");G.value=String(K);let se=rt[K]||"Medium";G.textContent=`${K} \u2013 ${se}`,a.appendChild(G)}}A();function _(){try{typeof r.close=="function"?r.close():r.removeAttribute("open")}catch{r.removeAttribute("open")}}function S(N){o.disabled=N,l.disabled=N,a.disabled=N,u.disabled=N,p.disabled=N,f.disabled=N,g.disabled=N,g.textContent=N?"Creating\u2026":"Create"}function $(){h.textContent=""}function P(N){h.textContent=N}function E(){try{let N=window.localStorage.getItem("beads-ui.new.type");N?l.value=N:l.value="";let K=window.localStorage.getItem("beads-ui.new.priority");K&&/^\d$/.test(K)?a.value=K:a.value="2"}catch{l.value="",a.value="2"}}function F(){let N=l.value||"",K=a.value||"";N.length>0&&window.localStorage.setItem("beads-ui.new.type",N),K.length>0&&window.localStorage.setItem("beads-ui.new.priority",K)}function j(N){let K=/-(\d+)$/.exec(String(N||""));return K&&K[1]?Number(K[1]):-1}async function Z(){$();let N=String(o.value||"").trim();if(N.length===0){P("Title is required"),o.focus();return}let K=Number(a.value||"2");if(!(K>=0&&K<=4)){P("Priority must be 0..4"),a.focus();return}let G=String(l.value||""),se=String(p.value||""),ge=String(u.value||"").split(",").map(v=>v.trim()).filter(v=>v.length>0),X={title:N};G.length>0&&(X.type=G),String(K).length>0&&(X.priority=K),se.length>0&&(X.description=se),S(!0);try{await e("create-issue",X)}catch{S(!1),P("Failed to create issue");return}F();let k=null;try{k=await e("list-issues",{filters:{status:"open",limit:50}})}catch{k=null}let y="";if(Array.isArray(k)){let v=k.filter(D=>String(D.title||"")===N);if(v.length>0){let D=v[0];for(let R of v){let B=j(D.id||"");j(R.id||"")>B&&(D=R)}y=String(D.id||"")}}if(y&&ge.length>0)for(let v of ge)try{await e("label-add",{id:y,label:v})}catch{}if(y){try{n.gotoIssue(y)}catch{}try{s&&s.setState({selected_id:y})}catch{}}S(!1),_()}return r.addEventListener("cancel",N=>{N.preventDefault(),_()}),m.addEventListener("click",()=>_()),f.addEventListener("click",()=>_()),r.addEventListener("keydown",N=>{N.key==="Enter"&&(N.ctrlKey||N.metaKey)&&(N.preventDefault(),Z())}),i.addEventListener("submit",N=>{N.preventDefault(),Z()}),{open(){i.reset(),$(),E();try{"showModal"in r&&typeof r.showModal=="function"?r.showModal():r.setAttribute("open","")}catch{r.setAttribute("open","")}setTimeout(()=>{try{o.focus()}catch{}},0)},close(){_()}}}function Es(t){if(!t)return"Unknown";let e=t.split("/").filter(Boolean);return e.length>0?e[e.length-1]:"Unknown"}function Cs(t,e,n){let s=ce("views:workspace-picker"),r=null,i=!1;async function o(u){let h=u.target.value,g=e.getState().workspace?.current?.path||"";if(h&&h!==g){s("switching workspace to %s",h),i=!0,a();try{await n(h)}catch(m){s("workspace switch failed: %o",m)}finally{i=!1,a()}}}function l(){let u=e.getState(),p=u.workspace?.current,h=u.workspace?.available||[];if(h.length===0)return T``;if(h.length===1){let g=Es(h[0].path);return T`
789
+ <div class="workspace-picker workspace-picker--single">
790
+ <span class="workspace-picker__label" title="${h[0].path}"
791
+ >${g}</span
792
+ >
793
+ </div>
794
+ `}let f=p?.path||"";return T`
795
+ <div class="workspace-picker">
796
+ <select
797
+ class="workspace-picker__select"
798
+ @change=${o}
799
+ ?disabled=${i}
800
+ aria-label="Select project workspace"
801
+ >
802
+ ${h.map(g=>T`
803
+ <option
804
+ value="${g.path}"
805
+ ?selected=${g.path===f}
806
+ title="${g.path}"
807
+ >
808
+ ${Es(g.path)}
809
+ </option>
810
+ `)}
811
+ </select>
812
+ ${i?T`<span
813
+ class="workspace-picker__loading"
814
+ aria-hidden="true"
815
+ ></span>`:""}
816
+ </div>
817
+ `}function a(){Se(l(),t)}return a(),r=e.subscribe(()=>a()),{destroy(){r&&(r(),r=null),Se(T``,t)}}}var Rs=["list-issues","update-status","edit-text","update-priority","create-issue","list-ready","dep-add","dep-remove","epic-status","update-assignee","label-add","label-remove","subscribe-list","unsubscribe-list","snapshot","upsert","delete","get-comments","add-comment","delete-issue","list-workspaces","set-workspace","get-workspace","workspace-changed"];function ar(){let t=Date.now().toString(36),e=Math.random().toString(36).slice(2,8);return`${t}-${e}`}function Is(t,e,n=ar()){return{id:n,type:t,payload:e}}function Ds(t={}){let e=ce("ws"),n={initialMs:t.backoff?.initialMs??1e3,maxMs:t.backoff?.maxMs??3e4,factor:t.backoff?.factor??2,jitterRatio:t.backoff?.jitterRatio??.2},s=()=>t.url&&t.url.length>0?t.url:typeof location<"u"?(location.protocol==="https:"?"wss://":"ws://")+location.host+"/ws":"ws://localhost/ws",r=null,i="closed",o=0,l=null,a=!0,u=new Map,p=[],h=new Map,f=new Set;function g(E){for(let F of Array.from(f))try{F(E)}catch{}}function m(){if(!a||l)return;i="reconnecting",e("ws reconnecting\u2026"),g(i);let E=Math.min(n.maxMs||0,(n.initialMs||0)*Math.pow(n.factor||1,o)),F=(n.jitterRatio||0)*E,j=Math.max(0,Math.round(E+(Math.random()*2-1)*F));e("ws retry in %d ms (attempt %d)",j,o+1),l=setTimeout(()=>{l=null,P()},j)}function A(E){try{r?.send(JSON.stringify(E))}catch(F){e("ws send failed",F)}}function _(){for(i="open",e("ws open"),g(i),o=0;p.length;){let E=p.shift();E&&A(E)}}function S(E){let F;try{F=JSON.parse(String(E.data))}catch{e("ws received non-JSON message");return}if(!F||typeof F.id!="string"||typeof F.type!="string"){e("ws received invalid envelope");return}if(u.has(F.id)){let Z=u.get(F.id);u.delete(F.id),F.ok?Z?.resolve(F.payload):Z?.reject(F.error||new Error("ws error"));return}let j=h.get(F.type);if(j&&j.size>0)for(let Z of Array.from(j))try{Z(F.payload)}catch(N){e("ws event handler error",N)}else e("ws received unhandled message type: %s",F.type)}function $(){i="closed",e("ws closed"),g(i);for(let[E,F]of u.entries())F.reject(new Error("ws disconnected")),u.delete(E);o+=1,m()}function P(){if(!a)return;let E=s();try{r=new WebSocket(E),e("ws connecting %s",E),i="connecting",g(i),r.addEventListener("open",_),r.addEventListener("message",S),r.addEventListener("error",()=>{}),r.addEventListener("close",$)}catch(F){e("ws connect failed %o",F),m()}}return P(),{send(E,F){if(!Rs.includes(E))return Promise.reject(new Error(`unknown message type: ${E}`));let j=ar(),Z=Is(E,F,j);return e("send %s id=%s",E,j),new Promise((N,K)=>{u.set(j,{resolve:N,reject:K,type:E}),r&&r.readyState===r.OPEN?A(Z):(e("queue %s id=%s (state=%s)",E,j,i),p.push(Z))})},on(E,F){h.has(E)||h.set(E,new Set);let j=h.get(E);return j?.add(F),()=>{j?.delete(F)}},onConnection(E){return f.add(E),()=>{f.delete(E)}},close(){a=!1,l&&(clearTimeout(l),l=null);try{r?.close()}catch{}},getState(){return i}}}function go(t){return Array.isArray(t)?t.filter(e=>typeof e=="string"&&e.length>0):typeof t=="string"&&t!==""&&t!=="all"?[t]:[]}function mo(t){let e=go(t?.status);return e.includes("ready")?{type:"ready-issues"}:e.length===1&&e[0]==="in_progress"?{type:"in-progress-issues"}:e.length===1&&e[0]==="closed"?{type:"closed-issues"}:{type:"filtered-issues",params:{statuses:(e.length===0?["open","in_progress","closed"]:e).join(",")}}}function bo(t){let e=ce("main");e("bootstrap start");let n=T`
818
+ <section id="issues-root" class="route issues">
819
+ <aside id="list-panel" class="panel"></aside>
820
+ </section>
821
+ <section id="epics-root" class="route epics" hidden></section>
822
+ <section id="board-root" class="route board" hidden></section>
823
+ <section id="detail-panel" class="route detail" hidden></section>
824
+ `;Se(n,t);let s=document.getElementById("top-nav"),r=document.getElementById("issues-root"),i=document.getElementById("epics-root"),o=document.getElementById("board-root"),l=document.getElementById("list-panel"),a=document.getElementById("detail-panel");if(l&&r&&i&&o&&a){let A=function(w,b){let H="Request failed",V="";if(w&&typeof w=="object"){let be=w;if(typeof be.message=="string"&&be.message.length>0&&(H=be.message),typeof be.details=="string")V=be.details;else if(be.details&&typeof be.details=="object")try{V=JSON.stringify(be.details,null,2)}catch{V=""}}else typeof w=="string"&&w.length>0&&(H=w);let J=b&&b.length>0?`Failed to load ${b}`:"Request failed";m.open(J,H,V)},Z=function(w){if(!w)return"Unknown";let b=w.split("/").filter(Boolean);return b.length>0?b[b.length-1]:"Unknown"},Ge=function(w){if(w.view==="issues"){let b=mo(w.filters||{}),H=JSON.stringify(b);try{P.register("tab:issues",b)}catch(J){e("register issues store failed: %o",J)}let V=`tab:issues:${H}`;(!fe||H!==qe)&&!me.has(V)&&(me.add(V),$.subscribeList("tab:issues",b).then(J=>{fe=J,qe=H}).catch(J=>{e("subscribe issues failed: %o",J),A(J,"issues list")}).finally(()=>{me.delete(V)}))}else if(fe){fe().catch(()=>{}),fe=null,qe=null;try{P.unregister("tab:issues")}catch(b){e("unregister issues store failed: %o",b)}}if(w.view==="epics"){try{P.register("tab:epics",{type:"epics"})}catch(b){e("register epics store failed: %o",b)}!ie&&!me.has("tab:epics")&&(me.add("tab:epics"),$.subscribeList("tab:epics",{type:"epics"}).then(b=>{ie=b}).catch(b=>{e("subscribe epics failed: %o",b),A(b,"epics")}).finally(()=>{me.delete("tab:epics")}))}else if(ie){ie().catch(()=>{}),ie=null;try{P.unregister("tab:epics")}catch(b){e("unregister epics store failed: %o",b)}}if(w.view==="board"){if(!ne&&!me.has("tab:board")){try{P.register("tab:board",{type:"board-issues"})}catch(b){e("register board store failed: %o",b)}me.add("tab:board"),$.subscribeList("tab:board",{type:"board-issues"}).then(b=>ne=b).catch(b=>{e("subscribe board failed: %o",b),A(b,"board")}).finally(()=>{me.delete("tab:board")})}}else if(ne){ne().catch(()=>{}),ne=null;try{P.unregister("tab:board")}catch(b){e("unregister board failed: %o",b)}}};var u=A,p=Z,h=Ge;let f=document.getElementById("header-loading"),g=Ur(f),m=xs(t),_=Ds(),S=g.wrapSend((w,b)=>_.send(w,b)),$=Or(S),P=Pr();_.on("snapshot",w=>{let b=w,H=b&&typeof b.id=="string"?b.id:"",V=H?P.getStore(H):null;if(V&&b&&b.type==="snapshot")try{V.applyPush(b)}catch{}}),_.on("upsert",w=>{let b=w,H=b&&typeof b.id=="string"?b.id:"",V=H?P.getStore(H):null;if(V&&b&&b.type==="upsert")try{V.applyPush(b)}catch{}}),_.on("delete",w=>{let b=w,H=b&&typeof b.id=="string"?b.id:"",V=H?P.getStore(H):null;if(V&&b&&b.type==="delete")try{V.applyPush(b)}catch{}});let E=et(P);async function F(){e("clearing all subscriptions for workspace switch"),fe&&(fe().catch(()=>{}),fe=null),ie&&(ie().catch(()=>{}),ie=null),ne&&(ne().catch(()=>{}),ne=null);let w=["tab:issues","tab:epics","tab:board"];for(let H of w)try{P.unregister(H)}catch{}let b=X.getState();if(b.selected_id)try{P.unregister(`detail:${b.selected_id}`)}catch{}qe=null,Ge(X.getState())}async function j(w){e("requesting workspace switch to %s",w);try{let b=await _.send("set-workspace",{path:w});e("workspace switch result: %o",b),b&&b.workspace&&(X.setState({workspace:{current:{path:b.workspace.root_dir,database:b.workspace.db_path}}}),window.localStorage.setItem("beads-ui.workspace",w),b.changed&&(await F(),ue("Switched to "+Z(w),"success",2e3)))}catch(b){throw e("workspace switch failed: %o",b),ue("Failed to switch workspace","error",3e3),b}}async function N(){try{let w=await _.send("list-workspaces",{});if(e("workspaces loaded: %o",w),w&&Array.isArray(w.workspaces)){let b=w.workspaces.map(J=>({path:J.path,database:J.database,pid:J.pid,version:J.version})),H=w.current?{path:w.current.root_dir,database:w.current.db_path}:null;X.setState({workspace:{current:H,available:b}});let V=window.localStorage.getItem("beads-ui.workspace");V&&H&&V!==H.path&&b.some(be=>be.path===V)&&(e("restoring saved workspace preference: %s",V),await j(V))}}catch(w){e("failed to load workspaces: %o",w)}}_.on("workspace-changed",w=>{e("workspace-changed event: %o",w),w&&w.root_dir&&(X.setState({workspace:{current:{path:w.root_dir,database:w.db_path}}}),N(),F())});let K=!1;if(typeof _.onConnection=="function"){let w=b=>{e("ws state %s",b),b==="reconnecting"||b==="closed"?(K=!0,ue("Connection lost. Reconnecting\u2026","error",4e3)):b==="open"&&K&&(K=!1,ue("Reconnected","success",2200))};_.onConnection(w)}let G={status:["open","in_progress"],search:"",type:""};try{let w=window.localStorage.getItem("beads-ui.filters");if(w){let b=JSON.parse(w);if(b&&typeof b=="object"){let H=["bug","feature","task","epic","chore"],V="";if(typeof b.type=="string"&&H.includes(b.type))V=b.type;else if(Array.isArray(b.types)){let J="";for(let be of b.types)if(H.includes(String(be))){J=be;break}V=J}G={status:Array.isArray(b.status)?b.status.filter(J=>typeof J=="string"&&["open","in_progress","closed","ready"].includes(J)):["open","in_progress","ready","closed"].includes(b.status)?[b.status]:["open","in_progress"],search:typeof b.search=="string"?b.search:"",type:V}}}}catch(w){e("filters parse error: %o",w)}let se="issues";try{let w=window.localStorage.getItem("beads-ui.view");(w==="issues"||w==="epics"||w==="board")&&(se=w)}catch(w){e("view parse error: %o",w)}let ge={closed_filter:"today"};try{let w=window.localStorage.getItem("beads-ui.board");if(w){let b=JSON.parse(w);if(b&&typeof b=="object"){let H=String(b.closed_filter||"today");(H==="today"||H==="3"||H==="7")&&(ge.closed_filter=H)}}}catch(w){e("board prefs parse error: %o",w)}let X=zr({filters:G,view:se,board:ge}),k=Fr(X);k.start();let y=async(w,b)=>{try{return await S(w,b)}catch{return[]}};s&&$s(s,X,k);let v=document.getElementById("workspace-picker");v&&Cs(v,X,j),N();let D=Ts(t,(w,b)=>S(w,b),k,X);try{let w=document.getElementById("new-issue-btn");w&&w.addEventListener("click",()=>D.open())}catch{}let B=Ss(l,async(w,b)=>{if(w==="list-issues")try{return E.selectIssuesFor("tab:issues")}catch(H){return e("list selectors failed: %o",H),[]}return y(w,b)},w=>{let b=dn(w);b&&k.gotoIssue(b)},X,$,P);X.subscribe(w=>{let b={status:w.filters.status,search:w.filters.search,type:typeof w.filters.type=="string"?w.filters.type:""};window.localStorage.setItem("beads-ui.filters",JSON.stringify(b))}),X.subscribe(w=>{window.localStorage.setItem("beads-ui.board",JSON.stringify({closed_filter:w.board.closed_filter}))}),B.load();let W=As(a,X,()=>{let w=X.getState();X.setState({selected_id:null});try{let b=w.view||"issues";k.gotoView(b)}catch{}}),U=null;U=_s(W.getMount(),y,w=>{let b=dn(w);if(b)k.gotoIssue(b);else{let H=At(w);k.gotoView(H)}},P);let Y=X.getState().selected_id;if(Y){a.hidden=!1,W.open(Y),U&&U.load(Y);let w=`detail:${Y}`,b={type:"issue-detail",params:{id:Y}};try{P.register(w,b)}catch(H){e("register detail store failed: %o",H)}$.subscribeList(w,b).catch(H=>{e("detail subscribe failed: %o",H),A(H,"issue details")})}let q=null;X.subscribe(w=>{let b=w.selected_id;if(b){a.hidden=!1,W.open(b),U&&U.load(b);let H=`detail:${b}`,V={type:"issue-detail",params:{id:b}};try{P.register(H,V)}catch{}$.subscribeList(H,V).then(J=>{q&&q().catch(()=>{}),q=J}).catch(J=>{e("detail subscribe failed: %o",J),A(J,"issue details")})}else{try{W.close()}catch{}U&&U.clear(),a.hidden=!0,q&&(q().catch(()=>{}),q=null)}});let pe=Nr(y),te=vs(i,pe,w=>k.gotoIssue(w),$,P),_e=Hr(o,pe,w=>k.gotoIssue(w),X,$,P,y),fe=null,ie=null,ne=null,me=new Set;window.__bdui_debug={getPendingSubscriptions:()=>Array.from(me),getActivityCount:()=>g.getCount(),getActiveRequests:()=>g.getActiveRequests()};let qe=null,Oe=w=>{r&&i&&o&&a&&(r.hidden=w.view!=="issues",i.hidden=w.view!=="epics",o.hidden=w.view!=="board"),Ge(w),!w.selected_id&&w.view==="epics"&&te.load(),!w.selected_id&&w.view==="board"&&_e.load(),window.localStorage.setItem("beads-ui.view",w.view)};X.subscribe(Oe),Oe(X.getState()),window.addEventListener("keydown",w=>{let b=w.ctrlKey||w.metaKey,H=String(w.key||"").toLowerCase(),V=w.target,J=V&&V.tagName?String(V.tagName).toLowerCase():"",be=J==="input"||J==="textarea"||J==="select"||V&&typeof V.isContentEditable=="boolean"&&V.isContentEditable;b&&H==="n"&&(be||(w.preventDefault(),D.open()))})}}typeof window<"u"&&typeof document<"u"&&window.addEventListener("DOMContentLoaded",()=>{try{let n=window.localStorage.getItem("beads-ui.theme"),s=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches,r=n==="dark"||n==="light"?n:s?"dark":"light";document.documentElement.setAttribute("data-theme",r);let i=document.getElementById("theme-switch");i&&(i.checked=r==="dark")}catch{}let t=document.getElementById("theme-switch");t&&t.addEventListener("change",()=>{let n=t.checked?"dark":"light";document.documentElement.setAttribute("data-theme",n),window.localStorage.setItem("beads-ui.theme",n)});let e=document.getElementById("app");e&&bo(e)});export{bo as bootstrap,mo as computeIssuesSpec};
825
+ //# sourceMappingURL=main.bundle.js.map