@the-bearded-bear/claude-craft 8.10.2 → 8.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/cursor/.cursorrules +1 -1
- package/bundles/windsurf/.windsurfrules +1 -1
- package/cli/kanban/client/dist/assets/{BurndownView-BmUIPoig.js → BurndownView-CX_G3va0.js} +1 -1
- package/cli/kanban/client/dist/assets/{DepsView-CxBIDeB7.js → DepsView-ihavQy0E.js} +1 -1
- package/cli/kanban/client/dist/assets/{DocsView-CqbEnpW7.js → DocsView-B_ZGSOFP.js} +1 -1
- package/cli/kanban/client/dist/assets/index-Bfa1Brzb.css +1 -0
- package/cli/kanban/client/dist/assets/{index-DUAxeExT.js → index-BsBEjSWn.js} +2 -2
- package/cli/kanban/client/dist/index.html +2 -2
- package/cli/kanban/client/src/views/KanbanView.svelte +22 -2
- package/cli/kanban/server/app.js +12 -1
- package/cli/kanban/server/services/repository.js +54 -2
- package/cli/kanban/shared/schemas.js +1 -0
- package/package.json +1 -1
- package/cli/kanban/client/dist/assets/index-BGtyE-fQ.css +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{C as e,D as t,E as n,S as r,T as i,_ as a,a as o,b as s,c,d as l,g as u,h as d,k as f,l as p,m,n as ee,o as te,p as h,r as ne,s as g,u as _,v,w as y,x as re,y as b}from"./index-
|
|
1
|
+
import{C as e,D as t,E as n,S as r,T as i,_ as a,a as o,b as s,c,d as l,g as u,h as d,k as f,l as p,m,n as ee,o as te,p as h,r as ne,s as g,u as _,v,w as y,x as re,y as b}from"./index-BsBEjSWn.js";function ie(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var x=ie();function S(e){x=e}var C={exec:()=>null};function w(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),i=t[r];return i||(i=e(r),t[r]=i),i}}function T(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(D.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var E=((e=``)=>{try{return!!RegExp(`(?<=1)(?<!1)`+e)}catch{return!1}})(),D={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:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:w(e=>RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:w(e=>RegExp(`^ {0,${e}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:w(e=>RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:w(e=>RegExp(`^ {0,${e}}#`)),htmlBeginRegex:w(e=>RegExp(`^ {0,${e}}<(?:[a-z].*>|!--)`,`i`)),blockquoteBeginRegex:w(e=>RegExp(`^ {0,${e}}>`))},ae=/^(?:[ \t]*(?:\n|$))+/,oe=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,se=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,ce=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,O=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,le=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,ue=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,de=T(ue).replace(/bull/g,le).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(),k=T(ue).replace(/bull/g,le).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(),fe=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,A=/^[^\n]+/,pe=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,j=T(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,pe).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),me=T(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,le).getRegex(),he=`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`,M=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,ge=T(`^ {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`,M).replace(`tag`,he).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),_e=T(fe).replace(`hr`,ce).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]+[^ \\t\\n]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,he).getRegex(),ve={blockquote:T(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,_e).getRegex(),code:oe,def:j,fences:se,heading:O,hr:ce,html:ge,lheading:de,list:me,newline:ae,paragraph:_e,table:C,text:A},ye=T(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,ce).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`,he).getRegex(),be={...ve,lheading:k,table:ye,paragraph:T(fe).replace(`hr`,ce).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,ye).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,he).getRegex()},xe={...ve,html:T(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,M).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:C,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:T(fe).replace(`hr`,ce).replace(`heading`,` *#{1,6} *[^
|
|
2
2
|
]`).replace(`lheading`,de).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},Se=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Ce=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,we=/^( {2,}|\\)\n(?!\s*$)/,Te=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,N=/[\p{P}\p{S}]/u,Ee=/[\s\p{P}\p{S}]/u,De=/[^\s\p{P}\p{S}]/u,Oe=T(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,Ee).getRegex(),ke=/(?!~)[\p{P}\p{S}]/u,Ae=/(?!~)[\s\p{P}\p{S}]/u,je=/(?:[^\s\p{P}\p{S}]|~)/u,Me=T(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,E?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),P=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Ne=T(P,`u`).replace(/punct/g,N).getRegex(),Pe=T(P,`u`).replace(/punct/g,ke).getRegex(),Fe=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,Ie=T(Fe,`gu`).replace(/notPunctSpace/g,De).replace(/punctSpace/g,Ee).replace(/punct/g,N).getRegex(),Le=T(Fe,`gu`).replace(/notPunctSpace/g,je).replace(/punctSpace/g,Ae).replace(/punct/g,ke).getRegex(),Re=T(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,De).replace(/punctSpace/g,Ee).replace(/punct/g,N).getRegex(),ze=T(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,N).getRegex(),F=T(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,De).replace(/punctSpace/g,Ee).replace(/punct/g,N).getRegex(),Be=T(/\\(punct)/,`gu`).replace(/punct/g,N).getRegex(),Ve=T(/^<(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(),He=T(M).replace(`(?:-->|$)`,`-->`).getRegex(),Ue=T(`^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`,He).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),We=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Ge=T(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,We).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Ke=T(/^!?\[(label)\]\[(ref)\]/).replace(`label`,We).replace(`ref`,pe).getRegex(),qe=T(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,pe).getRegex(),Je=T(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,Ke).replace(`nolink`,qe).getRegex(),I=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ye={_backpedal:C,anyPunctuation:Be,autolink:Ve,blockSkip:Me,br:we,code:Ce,del:C,delLDelim:C,delRDelim:C,emStrongLDelim:Ne,emStrongRDelimAst:Ie,emStrongRDelimUnd:Re,escape:Se,link:Ge,nolink:qe,punctuation:Oe,reflink:Ke,reflinkSearch:Je,tag:Ue,text:Te,url:C},Xe={...Ye,link:T(/^!?\[(label)\]\((.*?)\)/).replace(`label`,We).getRegex(),reflink:T(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,We).getRegex()},Ze={...Ye,emStrongRDelimAst:Le,emStrongLDelim:Pe,delLDelim:ze,delRDelim:F,url:T(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,I).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:T(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace(`protocol`,I).getRegex()},Qe={...Ze,br:T(we).replace(`{2,}`,`*`).getRegex(),text:T(Ze.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},$e={normal:ve,gfm:be,pedantic:xe},et={normal:Ye,gfm:Ze,breaks:Qe,pedantic:Xe},tt={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`},nt=e=>tt[e];function L(e,t){if(t){if(D.escapeTest.test(e))return e.replace(D.escapeReplace,nt)}else if(D.escapeTestNoEncode.test(e))return e.replace(D.escapeReplaceNoEncode,nt);return e}function rt(e){try{e=encodeURI(e).replace(D.percentDecode,`%`)}catch{return null}return e}function it(e,t){let n=e.replace(D.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(D.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``);for(;r<n.length;r++)n[r]=n[r].trim().replace(D.slashPipe,`|`);return n}function R(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function at(e){let t=e.split(`
|
|
3
3
|
`),n=t.length-1;for(;n>=0&&D.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
|
|
4
4
|
`)}function ot(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function st(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function z(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`);r.state.inLink=!0;let c={type:e[0].charAt(0)===`!`?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,c}function ct(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#fafafa;--bg-elev:#fff;--bg-sidebar:#f3f3f5;--fg:#1a1a1a;--fg-dim:#595f6a;--border:#e4e4e7;--accent:#7c3aed;--accent-fg:#fff;--danger:#dc2626;--warn:#b45309;--ok:#15803d;--info:#0369a1;--badge-fg:#fff;--shadow:0 1px 2px #0000000d;--radius:6px;--font:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", monospace}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0f0f11;--bg-elev:#1a1a1d;--bg-sidebar:#141417;--fg:#f4f4f5;--fg-dim:#a1a1aa;--border:#27272a;--accent:#7c3aed;--danger:#f87171;--warn:#fbbf24;--ok:#4ade80;--info:#38bdf8;--badge-fg:#1a1a1d;--shadow:0 1px 2px #0000004d}}*{box-sizing:border-box}html,body,#app{background:var(--bg);height:100%;color:var(--fg);font-family:var(--font);margin:0;padding:0;font-size:14px;line-height:1.45}button,input,select{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none}.app-shell{grid-template:"sidebar topbar"48px"sidebar main"1fr/240px 1fr;height:100vh;display:grid}.sidebar{background:var(--bg-sidebar);border-right:1px solid var(--border);grid-area:sidebar;padding:16px 12px;overflow-y:auto}.sidebar h1{color:var(--fg-dim);letter-spacing:.04em;text-transform:uppercase;margin:0 0 12px;font-size:13px;font-weight:700}.nav{flex-direction:column;gap:2px;margin-bottom:20px;display:flex}.nav a{border-radius:var(--radius);color:var(--fg);padding:6px 10px;font-weight:500}.nav a:hover{background:var(--border)}.nav a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius)}.nav a[aria-current=page]{background:var(--accent);color:var(--accent-fg)}.topbar{background:var(--bg-elev);border-bottom:1px solid var(--border);grid-area:topbar;align-items:center;gap:16px;padding:0 20px;display:flex}.topbar .title{flex:1;font-weight:600}.topbar .status{color:var(--fg-dim);font-size:12px;font-family:var(--mono)}.topbar .status.connected{color:var(--ok)}.topbar .status.disconnected{color:var(--danger)}.main{grid-area:main;padding:20px;overflow:auto}.empty{text-align:center;color:var(--fg-dim);padding:80px 20px}.toast-layer{z-index:1000;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.toast{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);max-width:360px;padding:10px 14px}.toast.error{border-left:3px solid var(--danger)}.toast.success{border-left:3px solid var(--ok)}.toast.info{border-left:3px solid var(--info)}dialog.svelte-e1h34p{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);min-width:320px;color:var(--fg);padding:24px;box-shadow:0 8px 24px #0006}dialog.svelte-e1h34p::backdrop{background:#0009}.dialog-title.svelte-e1h34p{margin:0 0 14px;font-size:16px;font-weight:600}.dialog-input.svelte-e1h34p{box-sizing:border-box;background:var(--bg-sidebar);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--fg);margin-bottom:16px;padding:8px 10px;font-size:14px;display:block}.dialog-input.svelte-e1h34p:focus{outline:2px solid var(--accent);outline-offset:1px}.dialog-actions.svelte-e1h34p{justify-content:flex-end;gap:8px;display:flex}.btn-cancel.svelte-e1h34p,.btn-confirm.svelte-e1h34p{border-radius:var(--radius);cursor:pointer;border:1px solid var(--border);padding:8px 16px;font-size:14px}.btn-cancel.svelte-e1h34p{background:var(--bg-sidebar);color:var(--fg-dim)}.btn-cancel.svelte-e1h34p:hover,.btn-cancel.svelte-e1h34p:focus{background:var(--border);outline:2px solid var(--accent);outline-offset:1px}.btn-confirm.svelte-e1h34p{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.btn-confirm.svelte-e1h34p:hover,.btn-confirm.svelte-e1h34p:focus{opacity:.9;outline:2px solid var(--accent);outline-offset:1px}.board.svelte-1l5g889{gap:12px;min-height:100%;display:flex;overflow-x:auto}.column.svelte-1l5g889{background:var(--bg-sidebar);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;flex:0 0 280px;display:flex}.column-header.svelte-1l5g889{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.column-label.svelte-1l5g889{text-transform:uppercase;letter-spacing:.04em;color:var(--fg-dim);margin:0;font-size:12px;font-weight:600}.count.svelte-1l5g889{background:var(--bg-elev);border-radius:10px;padding:2px 8px;font-size:11px}.column-body.svelte-1l5g889{flex-direction:column;gap:8px;min-height:120px;margin:0;padding:8px;list-style:none;display:flex}.card.svelte-1l5g889{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);cursor:grab;box-shadow:var(--shadow);padding:10px}.card.svelte-1l5g889:active{cursor:grabbing}.card.read-only.svelte-1l5g889{cursor:default;opacity:.85}.card.read-only.svelte-1l5g889:active{cursor:default}.card-top.svelte-1l5g889 .readonly:where(.svelte-1l5g889){font-size:12px}.card.svelte-1l5g889:focus,.card.svelte-1l5g889:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.card-top.svelte-1l5g889{align-items:center;gap:6px;margin-bottom:4px;font-size:11px;display:flex}.card-top.svelte-1l5g889 .id:where(.svelte-1l5g889){font-family:var(--mono);font-weight:600}.card-top.svelte-1l5g889 .priority:where(.svelte-1l5g889){text-transform:uppercase;font-weight:600}.card-top.svelte-1l5g889 .points:where(.svelte-1l5g889){font-family:var(--mono);color:var(--fg-dim);margin-left:auto}.card-top.svelte-1l5g889 .tdd:where(.svelte-1l5g889){font-size:14px}.title.svelte-1l5g889{margin-bottom:4px;font-weight:500}.meta.svelte-1l5g889{color:var(--fg-dim);font-size:11px;font-family:var(--mono);gap:6px;margin-bottom:6px;display:flex}.progress.svelte-1l5g889{background:var(--bg-sidebar);border-radius:3px;height:6px;margin-bottom:6px;position:relative;overflow:hidden}.bar.svelte-1l5g889{background:var(--accent);height:100%}.progress-label.svelte-1l5g889{color:var(--fg-dim);font-size:10px;position:absolute;top:-14px;right:0}.card-foot.svelte-1l5g889{align-items:center;gap:6px;font-size:11px;display:flex}.assignee.svelte-1l5g889{background:var(--accent);width:20px;height:20px;color:var(--accent-fg);border-radius:50%;justify-content:center;align-items:center;font-size:10px;font-weight:600;display:inline-flex}.blocked.svelte-1l5g889{color:var(--danger);margin-left:auto;font-weight:600}.sr-only.svelte-1l5g889{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.keyboard-help-visible.svelte-1l5g889{z-index:50;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);color:var(--fg-dim);box-shadow:var(--shadow);font-size:11px;position:fixed;bottom:12px;left:50%;transform:translate(-50%)}.keyboard-help-visible.svelte-1l5g889 summary:where(.svelte-1l5g889){cursor:pointer;-webkit-user-select:none;user-select:none;padding:4px 10px;list-style:none}.keyboard-help-visible.svelte-1l5g889 summary:where(.svelte-1l5g889):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.keyboard-help-content.svelte-1l5g889{white-space:nowrap;padding:6px 10px 8px}kbd.svelte-1l5g889{font-size:10px;font-family:var(--mono);background:var(--bg-sidebar);border:1px solid var(--border);border-radius:3px;padding:1px 4px;display:inline-block}.move-menu-dialog.svelte-1l5g889{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);min-width:300px;color:var(--fg);padding:0;box-shadow:0 8px 24px #0000004d}.move-menu-dialog.svelte-1l5g889::backdrop{background:#00000080}.move-menu-content.svelte-1l5g889{padding:20px}.move-menu-content.svelte-1l5g889 h3:where(.svelte-1l5g889){margin:0 0 12px;font-size:16px}.move-menu-content.svelte-1l5g889 button:where(.svelte-1l5g889){background:var(--bg-sidebar);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--fg);cursor:pointer;text-align:left;margin:4px 0;padding:10px;font-size:14px;display:block}.move-menu-content.svelte-1l5g889 button:where(.svelte-1l5g889):hover,.move-menu-content.svelte-1l5g889 button:where(.svelte-1l5g889):focus-visible{background:var(--accent);color:var(--accent-fg);outline:2px solid var(--accent);outline-offset:1px}.backlog.svelte-1ar8rvt{flex-direction:column;gap:12px;max-width:1200px;margin:0 auto;display:flex}.epic-card.svelte-1ar8rvt{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}.epic-card.orphans.svelte-1ar8rvt{border-left:3px solid var(--warn)}.epic-header.svelte-1ar8rvt{align-items:center;gap:10px;margin-bottom:8px;display:flex}.expand-btn.svelte-1ar8rvt{cursor:pointer;color:var(--fg-dim);background:0 0;border:none;border-radius:3px;padding:4px 6px;font-size:14px}.expand-btn.svelte-1ar8rvt:hover{background:var(--border)}.expand-btn.svelte-1ar8rvt:focus{outline:2px solid var(--accent);outline-offset:1px}.epic-id.svelte-1ar8rvt{font-family:var(--mono);color:var(--accent);font-size:12px;font-weight:600}.epic-title.svelte-1ar8rvt{flex:1;font-weight:600}.business-value.svelte-1ar8rvt{text-transform:uppercase;color:var(--accent-fg);border-radius:10px;padding:3px 8px;font-size:10px;font-weight:700}.story-count.svelte-1ar8rvt{color:var(--fg-dim);font-size:12px;font-family:var(--mono)}.total-points.svelte-1ar8rvt{color:var(--accent);font-size:12px;font-weight:600;font-family:var(--mono)}.epic-status.svelte-1ar8rvt{margin-bottom:8px}.status-badge.svelte-1ar8rvt{text-transform:uppercase;font-size:11px;font-weight:600}.epic-progress.svelte-1ar8rvt{align-items:center;gap:10px;margin-bottom:12px;display:flex}.progress-bar-bg.svelte-1ar8rvt{background:var(--bg-sidebar);border-radius:4px;flex:1;height:8px;overflow:hidden}.progress-bar.svelte-1ar8rvt{background:var(--accent);height:100%;transition:width .3s}.progress-text.svelte-1ar8rvt{color:var(--fg-dim);font-size:11px;font-family:var(--mono);text-align:right;min-width:80px}.stories-list.svelte-1ar8rvt{border-top:1px solid var(--border);flex-direction:column;gap:6px;margin-top:12px;padding-top:12px;display:flex}.story-item.svelte-1ar8rvt{background:var(--bg-sidebar);border-radius:var(--radius);align-items:center;gap:8px;padding:6px 10px;font-size:13px;display:flex}.story-id.svelte-1ar8rvt{font-family:var(--mono);color:var(--accent);font-size:11px;font-weight:600}.story-title.svelte-1ar8rvt{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.story-status.svelte-1ar8rvt{text-transform:uppercase;font-size:10px;font-weight:600}.story-points.svelte-1ar8rvt{font-family:var(--mono);color:var(--fg-dim);font-size:11px}.story-tdd.svelte-1ar8rvt{font-size:13px}.sidebar-section-title.svelte-sgl18p{color:var(--fg-dim);letter-spacing:.04em;text-transform:uppercase;margin:16px 0 8px;font-size:13px;font-weight:700}.skip-link.svelte-sgl18p{background:var(--accent,#7c3aed);color:#fff;z-index:9999;border-radius:4px;width:1px;height:1px;padding:8px 16px;font-size:14px;font-weight:600;text-decoration:none;position:absolute;top:auto;left:-9999px;overflow:hidden}.skip-link.svelte-sgl18p:focus{width:auto;height:auto;position:absolute;top:8px;left:8px;overflow:visible}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/BurndownView-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/BurndownView-CX_G3va0.js","assets/BurndownView-DjBZsOr6.css","assets/DepsView-ihavQy0E.js","assets/DepsView-DVVlRhBM.css","assets/DocsView-B_ZGSOFP.js","assets/DocsView-Cany8VOk.css"])))=>i.map(i=>d[i]);
|
|
2
2
|
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible,d=()=>{};function f(e){return typeof e?.then==`function`}function p(e){for(var t=0;t<e.length;t++)e[t]()}function m(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var h=1024,g=2048,_=4096,v=8192,y=16384,b=32768,x=1<<25,S=65536,C=1<<19,w=1<<20,ee=1<<25,T=65536,te=1<<21,ne=1<<22,re=1<<23,ie=Symbol(`$state`),ae=Symbol(``),oe=Symbol(`attributes`),se=Symbol(`class`),ce=Symbol(`style`),le=Symbol(`text`),ue=Symbol(`form reset`),de=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},fe=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function pe(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function me(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function he(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function ge(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function _e(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function ve(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function ye(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function be(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function xe(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Se(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Ce(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var we={},E=Symbol(`uninitialized`),Te=`http://www.w3.org/1999/xhtml`,Ee=`http://www.w3.org/2000/svg`,De=`http://www.w3.org/1998/Math/MathML`;function Oe(){console.warn(`https://svelte.dev/e/derived_inert`)}function ke(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Ae(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var D=!1;function je(e){D=e}var O;function k(e){if(e===null)throw ke(),we;return O=e}function Me(){return k(tn(O))}function A(e){if(D){if(tn(O)!==null)throw ke(),we;O=e}}function Ne(e=1){if(D){for(var t=e,n=O;t--;)n=tn(n);O=n}}function Pe(e=!0){for(var t=0,n=O;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else (r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=tn(n);e&&n.remove(),n=i}}function Fe(e){if(!e||e.nodeType!==8)throw ke(),we;return e.data}function Ie(e){return e===this.v}function Le(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Re(e){return!Le(e,this.v)}var ze=!1,Be=!1,j=null;function Ve(e){j=e}function He(e,t=!1,n){j={p:j,i:!1,c:null,e:null,s:e,x:null,r:W,l:Be&&!t?{s:null,u:null,$:[]}:null}}function Ue(e){var t=j,n=t.e;if(n!==null){t.e=null;for(var r of n)vn(r)}return e!==void 0&&(t.x=e),t.i=!0,j=t.p,e??{}}function We(){return!Be||j!==null&&j.l===null}var Ge=[];function Ke(){var e=Ge;Ge=[],p(e)}function qe(e){if(Ge.length===0&&!Ct){var t=Ge;queueMicrotask(()=>{t===Ge&&Ke()})}Ge.push(e)}function Je(){for(;Ge.length>0;)Ke()}function Ye(e){var t=W;if(t===null)return U.f|=re,e;if(!(t.f&32768)&&!(t.f&4))throw e;Xe(e,t)}function Xe(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var Ze=~(g|_|h);function M(e,t){e.f=e.f&Ze|t}function Qe(e){e.f&512||e.deps===null?M(e,h):M(e,_)}function $e(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=T,$e(t.deps))}function et(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),$e(e.deps),M(e,h)}var tt=!1;function nt(e){let t=0,n=Ht(0),r;return()=>{hn()&&(q(n),Sn(()=>(t===0&&(r=or(()=>e(()=>Kt(n)))),t+=1,()=>{qe(()=>{--t,t===0&&(r?.(),r=void 0,Kt(n))})})))}}var rt=S|C;function it(e,t,n,r){new at(e,t,n,r)}var at=class{parent;is_pending=!1;transform_error;#e;#t=D?O:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=nt(()=>(this.#m=Ht(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=W;t.b=this,t.f|=128,n(e)},this.parent=W.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Cn(()=>{if(D){let e=this.#t;Me();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},rt),D&&(this.#e=O)}#g(){try{this.#a=wn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=wn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=wn(()=>e(this.#e)),qe(()=>{var e=this.#c=document.createDocumentFragment(),t=R();e.append(t),this.#a=this.#x(()=>wn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,An(this.#o,()=>{this.#o=null}),this.#b(P))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=wn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Pn(this.#a,e);let t=this.#n.pending;this.#o=wn(()=>t(this.#e))}else this.#b(P)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){et(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=W,n=U,r=j;Vn(this.#i),Bn(this.#i),Ve(this.#i.ctx);try{return kt.ensure(),e()}catch(e){return Ye(e),null}finally{Vn(t),Bn(n),Ve(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&An(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,qe(()=>{this.#d=!1,this.#m&&Wt(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),q(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;P?.is_fork?(this.#a&&P.skip_effect(this.#a),this.#o&&P.skip_effect(this.#o),this.#s&&P.skip_effect(this.#s),P.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(H(this.#a),null),this.#o&&=(H(this.#o),null),this.#s&&=(H(this.#s),null),D&&(k(this.#t),Ne(),k(Pe()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Ae();return}r=!0,i&&Ce(),this.#s!==null&&An(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){Xe(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return wn(()=>{var t=W;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return Xe(e,this.#i.parent),null}}))};qe(()=>{var t;try{t=this.transform_error(e)}catch(e){Xe(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>Xe(e,this.#i&&this.#i.parent)):o(t)})}};function ot(e,t,n,r){let i=We()?ut:pt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=W,c=st(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){Xe(e,s)}ct()}}var d=lt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>ft(e))).then(u).catch(e=>Xe(e,s)).finally(d)}l?l.then(()=>{c(),f(),ct()}):f()}function st(){var e=W,t=U,n=j,r=P;return function(i=!0){Vn(e),Bn(t),Ve(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function ct(e=!0){Vn(null),Bn(null),Ve(null),e&&P?.deactivate()}function lt(){var e=W,t=e.b,n=P,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function ut(e){var t=2|g;return W!==null&&(W.f|=C),{ctx:j,deps:null,effects:null,equals:Ie,f:t,fn:e,reactions:null,rv:0,v:E,wv:0,parent:W,ac:null}}var dt=Symbol(`obsolete`);function ft(e,t,n){let r=W;r===null&&me();var i=void 0,a=Ht(E),o=!U,s=new Set;return xn(()=>{var t=W,n=m();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==de&&n.reject(e)}).finally(ct)}catch(e){n.reject(e),ct()}var c=P;if(o){if(t.f&32768)var l=lt();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(dt);else for(let e of s.values())e.reject(dt);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==dt&&(c.activate(),t?(a.f|=re,Wt(a,t)):(a.f&8388608&&(a.f^=re),Wt(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),gn(()=>{for(let e of s)e.reject(dt)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function N(e){let t=ut(e);return ze||Un(t),t}function pt(e){let t=ut(e);return t.equals=Re,t}function mt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)H(t[n])}}function ht(e){var t,n=W,r=e.parent;if(!Ln&&r!==null&&e.v!==E&&r.f&24576)return Oe(),e.v;Vn(r);try{e.f&=~T,mt(e),t=$n(e)}finally{Vn(n)}return t}function gt(e){var t=ht(e);if(!e.equals(t)&&(e.wv=Xn(),(!P?.is_fork||e.deps===null)&&(P===null?e.v=t:(P.capture(e,t,!0),xt?.capture(e,t,!0)),e.deps===null))){M(e,h);return}Ln||(F===null?Qe(e):(hn()||P?.is_fork)&&F.set(e,t))}function _t(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(de),t.fn!==null&&(t.teardown=d),t.ac=null,tr(t,0),En(t))}function vt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&nr(t)}var yt=null,bt=null,P=null,xt=null,F=null,St=null,Ct=!1,wt=!1,Tt=null,Et=null,Dt=0,Ot=1,kt=class e{id=Ot++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){bt===null?yt=bt=this:(bt.#n=this,this.#t=bt),bt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)M(r,g),t(r);for(r of n.m)M(r,_),t(r)}this.#p.add(e)}#g(){this.#e=!0,Dt++>1e3&&(this.#S(),jt());for(let e of this.#u)this.#d.delete(e),M(e,g),this.schedule(e);for(let e of this.#d)M(e,_),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=Tt=[],r=[],i=Et=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw Rt(e),this.#h()||this.discard(),t}if(P=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(Tt=null,Et=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)Lt(e,t);i.length>0&&P.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),xt=this,Nt(r),Nt(n),xt=null,this.#s?.resolve();var s=P;if(this.#a===0&&(this.#c.length===0||s!==null)&&(this.#S(),ze&&(this.#x(),P=s)),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=h;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=h:i&4?t.push(r):ze&&i&16777224?n.push(r):Zn(r)&&(i&16&&this.#d.add(r),nr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null)for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),M(i,g),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#S(),P=this,this.#g()}#b(e){for(var t=0;t<e.length;t+=1)et(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==E&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),F?.set(e,t)),this.is_fork||(e.v=t)}activate(){P=this}deactivate(){P=null,F=null}flush(){try{wt=!0,P=this,this.#g()}finally{Dt=0,St=null,Tt=null,Et=null,wt=!1,P=null,F=null,Bt.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear();for(let e of this.async_deriveds.values())e.reject(dt);this.#S(),this.#s?.resolve()}register_created_effect(e){this.#l.push(e)}#x(){for(let u=yt;u!==null;u=u.#n){var e=u.id<this.id,t=[];for(let[r,[i,a]]of this.current){if(u.current.has(r)){var n=u.current.get(r)[0];if(e&&i!==n)u.current.set(r,[i,a]);else continue}t.push(r)}if(e)for(let[e,t]of this.async_deriveds){let n=u.async_deriveds.get(e);n&&t.promise.then(n.resolve).catch(n.reject)}var r=[...u.current.keys()].filter(e=>!u.current.get(e)[1]);if(!(!u.#e||r.length===0)){var i=r.filter(e=>!this.current.has(e));if(i.length===0)e&&u.discard();else if(t.length>0){if(e)for(let e of this.#p)u.unskip_effect(e,e=>{e.f&4194320?u.schedule(e):u.#b([e])});u.activate();var a=new Set,o=new Map;for(var s of t)Pt(s,i,a,o);o=new Map;var c=[...u.current].filter(([e,t])=>{let n=this.current.get(e);return n?n[0]!==t[0]||n[1]!==t[1]:!0}).map(([e])=>e);if(c.length>0)for(let e of this.#l)!(e.f&155648)&&Ft(e,c,o)&&(e.f&4194320?(M(e,g),u.schedule(e)):u.#u.add(e));if(u.#c.length>0&&!u.#m){u.apply();for(var l of u.#c)u.#_(l,[],[]);u.#c=[]}u.deactivate()}}}}increment(e,t){if(this.#a+=1,e){let e=this.#o.get(t)??0;this.#o.set(t,e+1)}}decrement(e,t){if(--this.#a,e){let e=this.#o.get(t)??0;e===1?this.#o.delete(t):this.#o.set(t,e-1)}this.#m||(this.#m=!0,qe(()=>{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=m()).promise}static ensure(){if(P===null){let t=P=new e;!wt&&!Ct&&qe(()=>{t.#e||t.flush()})}return P}apply(){if(!ze||!this.is_fork&&this.#t===null&&this.#n===null){F=null;return}F=new Map;for(let[e,[t]]of this.current)F.set(e,t);for(let t=yt;t!==null;t=t.#n)if(!(t===this||t.is_fork)){var e=!1;if(t.id<this.id){for(let[n,[,r]]of t.current)if(!r&&this.current.has(n)){e=!0;break}}if(!e)for(let[e,n]of t.previous)F.has(e)||F.set(e,n)}}schedule(e){if(St=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(Tt!==null&&t===W&&(ze||(U===null||!(U.f&2))&&!tt))return;if(n&96){if(!(n&1024))return;t.f^=h}}this.#c.push(t)}#S(){if(this.linked){var e=this.#t,t=this.#n;e===null?yt=t:e.#n=t,t===null?bt=e:t.#t=e,this.linked=!1}}};function At(e){var t=Ct;Ct=!0;try{var n;for(e&&(P!==null&&!P.is_fork&&P.flush(),n=e());;){if(Je(),P===null)return n;P.flush()}}finally{Ct=t}}function jt(){try{ye()}catch(e){Xe(e,St)}}var Mt=null;function Nt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&Zn(r)&&(Mt=new Set,nr(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&kn(r),Mt?.size>0)){Bt.clear();for(let e of Mt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Mt.has(n)&&(Mt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||nr(n)}}Mt.clear()}}Mt=null}}function Pt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Pt(i,t,n,r):e&4194320&&!(e&2048)&&Ft(i,t,r)&&(M(i,g),It(i))}}function Ft(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Ft(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function It(e){P.schedule(e)}function Lt(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),M(e,h);for(var n=e.first;n!==null;)Lt(n,t),n=n.next}}function Rt(e){M(e,h);for(var t=e.first;t!==null;)Rt(t),t=t.next}var zt=new Set,Bt=new Map,Vt=!1;function Ht(e,t){return{f:0,v:e,reactions:null,equals:Ie,rv:0,wv:0}}function I(e,t){let n=Ht(e,t);return Un(n),n}function Ut(e,t=!1,n=!0){let r=Ht(e);return t||(r.equals=Re),Be&&n&&j!==null&&j.l!==null&&(j.l.s??=[]).push(r),r}function L(e,t,n=!1){return U!==null&&(!zn||U.f&131072)&&We()&&U.f&4325394&&(Hn===null||!Hn.has(e))&&Se(),Wt(e,n?Jt(t):t,Et)}function Wt(e,t,n=null){if(!e.equals(t)){Bt.set(e,Ln?t:e.v);var r=kt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&ht(t),F===null&&Qe(t)}e.wv=Xn(),qt(e,g,n),We()&&W!==null&&W.f&1024&&!(W.f&96)&&(Wn===null?Gn([e]):Wn.push(e)),!r.is_fork&&zt.size>0&&!Vt&&Gt()}return t}function Gt(){Vt=!1;for(let e of zt){e.f&1024&&M(e,_);let t;try{t=Zn(e)}catch{t=!0}t&&nr(e)}zt.clear()}function Kt(e){L(e,e.v+1)}function qt(e,t,n){var r=e.reactions;if(r!==null)for(var i=We(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(!(!i&&s===W)){var l=(c&g)===0;if(l&&M(s,t),c&131072)zt.add(s);else if(c&2){var u=s;F?.delete(u),c&65536||(c&512&&(W===null||!(W.f&2097152))&&(s.f|=T),qt(u,_,n))}else if(l){var d=s;c&16&&Mt!==null&&Mt.add(d),n===null?It(d):n.push(d)}}}}function Jt(t){if(typeof t!=`object`||!t||ie in t)return t;let n=l(t);if(n!==s&&n!==c)return t;var r=new Map,i=e(t),o=I(0),u=null,d=Jn,f=e=>{if(Jn===d)return e();var t=U,n=Jn;Bn(null),Yn(d);var r=e();return Bn(t),Yn(n),r};return i&&r.set(`length`,I(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&be();var i=r.get(t);return i===void 0?f(()=>{var e=I(n.value,u);return r.set(t,e),e}):L(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>I(E,u));r.set(t,e),Kt(o)}}else L(n,E),Kt(o);return!0},get(e,n,i){if(n===ie)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>I(Jt(s?e[n]:E),u)),r.set(n,o)),o!==void 0){var c=q(o);return c===E?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=q(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==E)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===ie)return!0;var n=r.get(t),i=n!==void 0&&n.v!==E||Reflect.has(e,t);return(n!==void 0||W!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>I(i?Jt(e[t]):E,u)),r.set(t,n)),q(n)===E)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;d<c.v;d+=1){var p=r.get(d+``);p===void 0?d in e&&(p=f(()=>I(E,u)),r.set(d+``,p)):L(p,E)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>I(void 0,u)),L(c,Jt(n)),r.set(t,c));else{l=c.v!==E;var m=f(()=>Jt(n));L(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&L(g,_+1)}Kt(o)}return!0},ownKeys(e){q(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==E});for(var[n,i]of r)i.v!==E&&!(n in e)&&t.push(n);return t},setPrototypeOf(){xe()}})}new Set([`copyWithin`,`fill`,`pop`,`push`,`reverse`,`shift`,`sort`,`splice`,`unshift`]);var Yt,Xt,Zt,Qt;function $t(){if(Yt===void 0){Yt=window,Xt=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Zt=a(t,`firstChild`).get,Qt=a(t,`nextSibling`).get,u(e)&&(e[se]=void 0,e[oe]=null,e[ce]=void 0,e.__e=void 0),u(n)&&(n[le]=void 0)}}function R(e=``){return document.createTextNode(e)}function en(e){return Zt.call(e)}function tn(e){return Qt.call(e)}function z(e,t){if(!D)return en(e);var n=en(O);if(n===null)n=O.appendChild(R());else if(t&&n.nodeType!==3){var r=R();return n?.before(r),k(r),r}return t&&sn(n),k(n),n}function nn(e,t=!1){if(!D){var n=en(e);return n instanceof Comment&&n.data===``?tn(n):n}if(t){if(O?.nodeType!==3){var r=R();return O?.before(r),k(r),r}sn(O)}return O}function B(e,t=1,n=!1){let r=D?O:e;for(var i;t--;)i=r,r=tn(r);if(!D)return r;if(n){if(r?.nodeType!==3){var a=R();return r===null?i?.after(a):r.before(a),k(a),a}sn(r)}return k(r),r}function rn(e){e.textContent=``}function an(){return!ze||Mt!==null?!1:(W.f&b)!==0}function on(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function sn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}var cn=!1;function ln(){cn||(cn=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[ue]?.()})},{capture:!0}))}function un(e){var t=U,n=W;Bn(null),Vn(null);try{return e()}finally{Bn(t),Vn(n)}}function dn(e,t,n,r=n){e.addEventListener(t,()=>un(n));let i=e[ue];i?e[ue]=()=>{i(),r(!0)}:e[ue]=()=>r(!0),ln()}function fn(e){W===null&&(U===null&&ve(e),_e()),Ln&&ge(e)}function pn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function mn(e,t){var n=W;n!==null&&n.f&8192&&(e|=v);var r={ctx:j,deps:null,nodes:null,f:e|g|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};P?.register_created_effect(r);var i=r;if(e&4)Tt===null?kt.ensure().schedule(r):Tt.push(r);else if(t!==null){try{nr(r)}catch(e){throw H(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=S))}if(i!==null&&(i.parent=n,n!==null&&pn(i,n),U!==null&&U.f&2&&!(e&64))){var a=U;(a.effects??=[]).push(i)}return r}function hn(){return U!==null&&!zn}function gn(e){let t=mn(8,null);return M(t,h),t.teardown=e,t}function _n(e){fn(`$effect`);var t=W.f;if(!U&&t&32&&j!==null&&!j.i){var n=j;(n.e??=[]).push(e)}else return vn(e)}function vn(e){return mn(4|w,e)}function yn(e){kt.ensure();let t=mn(64|C,e);return(e={})=>new Promise(n=>{e.outro?An(t,()=>{H(t),n(void 0)}):(H(t),n(void 0))})}function bn(e){return mn(4,e)}function xn(e){return mn(ne|C,e)}function Sn(e,t=0){return mn(8|t,e)}function V(e,t=[],n=[],r=[]){ot(r,t,n,t=>{mn(8,()=>{e(...t.map(q))})})}function Cn(e,t=0){return mn(16|t,e)}function wn(e){return mn(32|C,e)}function Tn(e){var t=e.teardown;if(t!==null){let e=Ln,n=U;Rn(!0),Bn(null);try{t.call(null)}finally{Rn(e),Bn(n)}}}function En(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&un(()=>{e.abort(de)});var r=n.next;n.f&64?n.parent=null:H(n,t),n=r}}function Dn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||H(t),t=n}}function H(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(On(e.nodes.start,e.nodes.end),n=!0),e.f|=x,En(e,t&&!n),tr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Tn(e),e.f^=x,e.f|=y;var i=e.parent;i!==null&&i.first!==null&&kn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function On(e,t){for(;e!==null;){var n=e===t?null:tn(e);e.remove(),e=n}}function kn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function An(e,t,n=!0){var r=[];jn(e,r,!0);var i=()=>{n&&H(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function jn(e,t,n){if(!(e.f&8192)){e.f^=v;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;jn(i,t,o?n:!1)}i=a}}}function Mn(e){Nn(e,!0)}function Nn(e,t){if(e.f&8192){e.f^=v,e.f&1024||(M(e,g),kt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Nn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Pn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:tn(n);t.append(n),n=i}}var Fn=null,In=!1,Ln=!1;function Rn(e){Ln=e}var U=null,zn=!1;function Bn(e){U=e}var W=null;function Vn(e){W=e}var Hn=null;function Un(e){U!==null&&(!ze||U.f&2)&&(Hn??=new Set).add(e)}var G=null,K=0,Wn=null;function Gn(e){Wn=e}var Kn=1,qn=0,Jn=qn;function Yn(e){Jn=e}function Xn(){return++Kn}function Zn(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~T),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(Zn(a)&>(a),a.wv>e.wv)return!0}t&512&&F===null&&M(e,h)}return!1}function Qn(e,t,n=!0){var r=e.reactions;if(r!==null&&!(!ze&&Hn!==null&&Hn.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?Qn(a,t,!1):t===a&&(n?M(a,g):a.f&1024&&M(a,_),It(a))}}function $n(e){var t=G,n=K,r=Wn,i=U,a=Hn,o=j,s=zn,c=Jn,l=e.f;G=null,K=0,Wn=null,U=l&96?null:e,Hn=null,Ve(e.ctx),zn=!1,Jn=++qn,e.ac!==null&&(un(()=>{e.ac.abort(de)}),e.ac=null);try{e.f|=te;var u=e.fn,d=u();e.f|=b;var f=e.deps,p=P?.is_fork;if(G!==null){var m;if(p||tr(e,K),f!==null&&K>0)for(f.length=K+G.length,m=0;m<G.length;m++)f[K+m]=G[m];else e.deps=f=G;if(hn()&&e.f&512)for(m=K;m<f.length;m++)(f[m].reactions??=[]).push(e)}else !p&&f!==null&&K<f.length&&(tr(e,K),f.length=K);if(We()&&Wn!==null&&!zn&&f!==null&&!(e.f&6146))for(m=0;m<Wn.length;m++)Qn(Wn[m],e);if(i!==null&&i!==e){if(qn++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=qn;if(t!==null)for(let e of t)e.rv=qn;Wn!==null&&(r===null?r=Wn:r.push(...Wn))}return e.f&8388608&&(e.f^=re),d}catch(e){return Ye(e)}finally{e.f^=te,G=t,K=n,Wn=r,U=i,Hn=a,Ve(o),zn=s,Jn=c}}function er(e,r){let i=r.reactions;if(i!==null){var a=t.call(i,e);if(a!==-1){var o=i.length-1;o===0?i=r.reactions=null:(i[a]=i[o],i.pop())}}if(i===null&&r.f&2&&(G===null||!n.call(G,r))){var s=r;s.f&512&&(s.f^=512,s.f&=~T),s.v!==E&&Qe(s),_t(s),tr(s,0)}}function tr(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)er(e,n[r])}function nr(e){var t=e.f;if(!(t&16384)){M(e,h);var n=W,r=In;W=e,In=!0;try{t&16777232?Dn(e):En(e),Tn(e);var i=$n(e);e.teardown=typeof i==`function`?i:null,e.wv=Kn}finally{In=r,W=n}}}async function rr(){if(ze)return new Promise(e=>{requestAnimationFrame(()=>e()),setTimeout(()=>e())});await Promise.resolve(),At()}function q(e){var t=(e.f&2)!=0;if(Fn?.add(e),U!==null&&!zn&&!(W!==null&&W.f&16384)&&(Hn===null||!Hn.has(e))){var r=U.deps;if(U.f&2097152)e.rv<qn&&(e.rv=qn,G===null&&r!==null&&r[K]===e?K++:G===null?G=[e]:G.push(e));else{U.deps??=[],n.call(U.deps,e)||U.deps.push(e);var i=e.reactions;i===null?e.reactions=[U]:n.call(i,U)||i.push(U)}}if(Ln&&Bt.has(e))return Bt.get(e);if(t){var a=e;if(Ln){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||ar(a))&&(o=ht(a)),Bt.set(a,o),o}var s=(a.f&512)==0&&!zn&&U!==null&&(In||(U.f&512)!=0),c=(a.f&b)===0;Zn(a)&&(s&&(a.f|=512),gt(a)),s&&!c&&(vt(a),ir(a))}if(F?.has(e))return F.get(e);if(e.f&8388608)throw e.v;return e.v}function ir(e){if(e.f|=512,e.deps!==null)for(let t of e.deps)(t.reactions??=[]).push(e),t.f&2&&!(t.f&512)&&(vt(t),ir(t))}function ar(e){if(e.v===E)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(Bt.has(t)||t.f&2&&ar(t))return!0;return!1}function or(e){var t=zn;try{return zn=!0,e()}finally{zn=t}}[...`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`)];var sr=[`touchstart`,`touchmove`];function cr(e){return sr.includes(e)}var lr=Symbol(`events`),ur=new Set,dr=new Set;function fr(e,t,n,r={}){function i(e){if(r.capture||_r.call(t,e),!e.cancelBubble)return un(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?qe(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function pr(e,t,n,r,i){var a={capture:r,passive:i},o=fr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&gn(()=>{t.removeEventListener(e,o,a)})}function mr(e,t,n){(t[lr]??={})[e]=n}function hr(e){for(var t=0;t<e.length;t++)ur.add(e[t]);for(var n of dr)n(e)}var gr=null;function _r(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;gr=e;var s=0,c=gr===e&&e[lr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[lr]=t;return}var u=a.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(o=a[s]||e.target,o!==t){i(e,`currentTarget`,{configurable:!0,get(){return o||n}});var d=U,f=W;Bn(null),Vn(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[lr]?.[r];h!=null&&(!o.disabled||e.target===o)&&h.call(o,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;s++,o=s<a.length?a[s]:null}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[lr]=t,delete e.currentTarget,Bn(d),Vn(f)}}}var vr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function yr(e){return vr?.createHTML(e)??e}function br(e){var t=on(`template`);return t.innerHTML=yr(e.replaceAll(`<!>`,`<!---->`)),t.content}function xr(e,t){var n=W;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function J(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(`<!>`);return()=>{if(D)return xr(O,null),O;i===void 0&&(i=br(a?e:`<!>`+e),n||(i=en(i)));var t=r||Xt?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=en(t),s=t.lastChild;xr(o,s)}else xr(t,t);return t}}function Sr(e=``){if(!D){var t=R(e+``);return xr(t,t),t}var n=O;return n.nodeType===3?sn(n):(n.before(n=R()),k(n)),xr(n,n),n}function Cr(){if(D)return xr(O,null),O;var e=document.createDocumentFragment(),t=document.createComment(``),n=R();return e.append(t,n),xr(t,n),e}function Y(e,t){if(D){var n=W;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=O),Me();return}e!==null&&e.before(t)}function X(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[le]??=e.nodeValue)&&(e[le]=n,e.nodeValue=`${n}`)}function wr(e,t){return Er(e,t)}var Tr=new Map;function Er(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){$t();var l=void 0,u=yn(()=>{var s=n??t.appendChild(R());it(s,{pending:()=>{}},t=>{He({});var n=j;if(o&&(n.c=o),a&&(i.$$events=a),D&&xr(t,null),l=e(t,i)||{},D&&(W.nodes.end=O,O===null||O.nodeType!==8||O.data!==`]`))throw ke(),we;Ue()},c);var u=new Set,d=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!u.has(r)){u.add(r);var i=cr(r);for(let e of[t,document]){var a=Tr.get(e);a===void 0&&(a=new Map,Tr.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,_r,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(r(ur)),dr.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=Tr.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,_r),r.delete(e),r.size===0&&Tr.delete(n)):r.set(e,i)}dr.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return Dr.set(l,u),l}var Dr=new WeakMap,Or=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Mn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Mn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(H(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();Pn(r,t),t.append(R()),this.#n.set(e,{effect:r,fragment:t})}else H(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),An(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(H(n.effect),this.#n.delete(e))};ensure(e,t){var n=P,r=an();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=R();i.append(a),this.#n.set(e,{effect:wn(()=>t(a)),fragment:i})}else this.#t.set(e,wn(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else D&&(this.anchor=O),this.#a(n)}},kr=0,Ar=1,jr=2;function Mr(e,t,n,r,i){D&&Me();var a=We(),o=E,s=a?Ht(o):Ut(o,!1,!1),c=a?Ht(o):Ut(o,!1,!1),l=new Or(e);Cn(()=>{var a=P,o=t(),u=!1;let d=D&&f(o)===(e.data===`[!`);if(d&&(k(Pe()),je(!1)),f(o)){var p=st(),m=!1;let e=e=>{if(!u){m=!0,p(!1),P===a&&a.deactivate(),kt.ensure();try{e()}finally{ct(!1),Ct||At()}}};o.then(t=>{e(()=>{Wt(s,t),l.ensure(Ar,r&&(e=>r(e,s)))})},t=>{e(()=>{if(Wt(c,t),l.ensure(jr,i&&(e=>i(e,c))),!i)throw c.v})}),D?l.ensure(kr,n):qe(()=>{m||e(()=>{l.ensure(kr,n)})})}else Wt(s,o),l.ensure(Ar,r&&(e=>r(e,s)));return d&&je(!0),()=>{u=!0}})}function Z(e,t,n=!1){var r;D&&(r=O,Me());var i=new Or(e),a=n?S:0;function o(e,t){if(D){var n=Fe(r);if(e!==parseInt(n.substring(1))){var a=Pe();k(a),i.anchor=a,je(!1),i.ensure(e,t),je(!0);return}}i.ensure(e,t)}Cn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function Nr(e,t){return t}function Pr(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];An(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Fr(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else --s},!1)}if(s===0){var l=i.length===0&&n!==null;if(l){var u=n,d=u.parentNode;rn(d),d.append(u),e.items.clear()}Fr(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Fr(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=ee,Pn(a,document.createDocumentFragment())):H(t[i],n)}}var Ir;function Lr(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=D?k(en(u)):u.appendChild(R())}D&&Me();var d=null,f=pt(()=>{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,zr(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=ee,Vr(d,null,c)):Mn(d):An(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Cn(()=>{p=q(f);var e=p.length;let t=!1;D&&Fe(c)===`[!`!=(e===0)&&(c=Pe(),k(c),je(!1),t=!0);for(var r=new Set,u=P,v=an(),y=0;y<e;y+=1){D&&O.nodeType===8&&O.data===`]`&&(c=O,t=!0,je(!1));var b=p[y],x=a(b,y),S=h?null:l.get(x);S?(S.v&&Wt(S.v,b),S.i&&Wt(S.i,y),v&&u.unskip_effect(S.e)):(S=Br(l,h?c:Ir??=R(),b,x,y,o,n,i),h||(S.e.f|=ee),l.set(x,S)),r.add(x)}if(e===0&&s&&!d&&(h?d=wn(()=>s(c)):(d=wn(()=>s(Ir??=R())),d.f|=ee)),e>r.size&&he(``,``,``),D&&e>0&&k(Pe()),!h)if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&je(!0),q(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,D&&(c=O)}function Rr(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function zr(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=Rr(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v<s;v+=1)h=t[v],g=a(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=a(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(Mn(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432)if(_.f^=ee,_===l)Vr(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Hr(e,d,_),Hr(e,_,y),Vr(_,y,n),d=_,p=[],m=[],l=Rr(d.next);continue}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],C=p[p.length-1];for(x=0;x<p.length;x+=1)Vr(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Hr(e,S.prev,C.next),Hr(e,d,S),Hr(e,C,b),l=b,d=C,--v,p=[],m=[]}else u.delete(_),Vr(_,l,n),Hr(e,_.prev,_.next),Hr(e,_,d===null?e.effect.first:d.next),Hr(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=Rr(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=Rr(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Fr(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var w=[];if(u!==void 0)for(_ of u)_.f&8192||w.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&w.push(l),l=Rr(l.next);var T=w.length;if(T>0){var te=i&4&&s===0?n:null;if(o){for(v=0;v<T;v+=1)w[v].nodes?.a?.measure();for(v=0;v<T;v+=1)w[v].nodes?.a?.fix()}Pr(e,w,te)}}o&&qe(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Br(e,t,n,r,i,a,o,s){var c=o&1?o&16?Ht(n):Ut(n,!1,!1):null,l=o&2?Ht(i):null;return{v:c,i:l,e:wn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Vr(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=tn(r);if(a.before(r),r===i)return;r=o}}function Hr(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Ur(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;D&&(o=k(en(c)))}V(()=>{var e=W;if(s===(s=t()??``)){D&&Me();return}if(n&&!D){e.nodes=null,c.innerHTML=s,s!==``&&xr(en(c),c.lastChild);return}if(e.nodes!==null&&(On(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(D){for(var a=O.data,l=Me(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=tn(l);if(l===null)throw ke(),we;xr(O,u),o=k(l);return}var d=on(r?`svg`:i?`math`:`template`,r?Ee:i?De:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(xr(en(f),f.lastChild),r||i)for(;en(f);)o.before(en(f));else o.before(f)}})}function Wr(e,t,n){var r;D&&(r=O,Me());var i=new Or(e);Cn(()=>{var e=t()??null;if(D&&Fe(r)===`[`!=(e!==null)){var a=Pe();k(a),i.anchor=a,je(!1),i.ensure(e,e&&(t=>n(t,e))),je(!0);return}i.ensure(e,e&&(t=>n(t,e)))},S)}var Gr=[...`
|
|
3
|
-
\r\f\xA0\v`];function Kr(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||Gr.includes(r[o-1]))&&(s===r.length||Gr.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function qr(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Jr(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Yr(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Jr)),i&&c.push(...Object.keys(i).map(Jr));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=Jr(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=qr(r)),i&&(n+=qr(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function Xr(e,t,n,r,i,a){var o=e[se];if(D||o!==n||o===void 0){var s=Kr(n,r,a);(!D||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[se]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function Zr(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function Qr(e,t,n,r){var i=e[ce];if(D||i!==t){var a=Yr(t,r);(!D||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[ce]=t}else r&&(Array.isArray(r)?(Zr(e,n?.[0],r[0]),Zr(e,n?.[1],r[1],`important`)):Zr(e,n,r));return r}var $r=Symbol(`is custom element`),ei=Symbol(`is html`),ti=fe?`link`:`LINK`;function ni(e){if(D){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;Q(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;Q(e,`checked`,null),e.checked=r}}};e[ue]=n,qe(n),ln()}}function Q(e,t,n,r){var i=ri(e);D&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===ti)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ae]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ai(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ri(e){return e[oe]??={[$r]:e.nodeName.includes(`-`),[ei]:e.namespaceURI===Te}}var ii=new Map;function ai(e){var t=e.getAttribute(`is`)||e.nodeName,n=ii.get(t);if(n)return n;ii.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.push(s);i=l(i)}return n}function oi(e,t,n=t){var r=new WeakSet;dn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=si(e)?ci(a):a,n(a),P!==null&&r.add(P),await rr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(D&&e.defaultValue!==e.value||or(t)==null&&e.value)&&(n(si(e)?ci(e.value):e.value),P!==null&&r.add(P)),Sn(()=>{var n=t();if(e===document.activeElement){var i=ze?xt:P;if(r.has(i))return}si(e)&&n===ci(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function si(e){var t=e.type;return t===`number`||t===`range`}function ci(e){return e===``?null:+e}function li(e,t){return e===t||e?.[ie]===t}function ui(e={},t,n,r){var i=j.r,a=W;return bn(()=>{var o,s;return Sn(()=>{o=s,s=r?.()||[],or(()=>{li(n(...s),e)||(t(e,...s),o&&li(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&li(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function di(e){j===null&&pe(`onMount`),Be&&j.l!==null?pi(j).m.push(e):_n(()=>{let t=or(e);if(typeof t==`function`)return t})}function fi(e){j===null&&pe(`onDestroy`),di(()=>()=>or(e))}function pi(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);function mi(){let[e,t=``]=(window.location.hash.slice(1)||`/kanban`).split(`?`);return{pathname:e,parts:e.split(`/`).filter(Boolean),query:t}}var hi=Jt(mi());window.addEventListener(`hashchange`,()=>{Object.assign(hi,mi())});var $=Jt({stories:[],epics:[],sprint:null,burndown:null,connected:!1,loading:!1,error:null,toasts:[]}),gi=null,_i=0;function vi({kind:e=`info`,message:t,ttl:n=3500}){let r=++_i;$.toasts.push({id:r,kind:e,message:t}),setTimeout(()=>{let e=$.toasts.findIndex(e=>e.id===r);e>=0&&$.toasts.splice(e,1)},n)}function yi(e){let t=$.toasts.findIndex(t=>t.id===e);t>=0&&$.toasts.splice(t,1)}async function bi(e,t={}){let n=await fetch(e,{...t,headers:{"Content-Type":`application/json`,...t.headers??{}}});if(!n.ok){let e;try{e=await n.json()}catch{e={error:n.statusText}}let t=Error(e.error||`HTTP ${n.status}`);throw t.status=n.status,t.body=e,t}return n.json()}async function xi(){$.loading=!0;try{let e=await bi(`/api/stories`);$.stories=e.stories,$.epics=e.epics,$.error=null}catch(e){$.error=e.message,vi({kind:`error`,message:`Failed to load stories: ${e.message}`})}finally{$.loading=!1}}async function Si(){try{let e=await bi(`/api/sprints/current`);$.sprint=e.sprint,$.burndown=e.burndown}catch(e){e.status!==404&&vi({kind:`error`,message:`Sprint load failed: ${e.message}`}),$.sprint=null,$.burndown=null}}async function Ci(e,t){let n=$.stories.find(t=>t.id===e);if(!n)throw Error(`story not found`);let r=$.stories.findIndex(t=>t.id===e),i={...n};$.stories[r]={...n,status:t.status};try{let n=await bi(`/api/stories/${e}/status`,{method:`PATCH`,body:JSON.stringify(t)});return $.stories[r]=n.story,vi({kind:`success`,message:`${e} -> ${n.story.status}`}),n.story}catch(e){$.stories[r]=i;let t=e.body?.missing?.length?` (${e.body.missing.join(`, `)})`:``;throw vi({kind:`error`,message:`Transition failed: ${e.body?.reason??e.message}${t}`,ttl:5e3}),e}}function wi(){gi||(gi=new EventSource(`/api/events`),gi.addEventListener(`open`,()=>{$.connected=!0}),gi.addEventListener(`error`,()=>{$.connected=!1}),gi.addEventListener(`story:updated`,async()=>{await xi()}),gi.addEventListener(`file:changed`,async e=>{try{let{payload:t}=JSON.parse(e.data);(t?.category===`story`||t?.category===`task`||t?.category===`epic`)&&await xi()}catch{await xi()}}))}function Ti(){gi&&(gi.close(),gi=null,$.connected=!1)}var Ei=J(`<dialog aria-labelledby="prompt-dialog-title" aria-modal="true" class="svelte-e1h34p"><form method="dialog"><h2 id="prompt-dialog-title" class="dialog-title svelte-e1h34p"> </h2> <input type="text" class="dialog-input svelte-e1h34p"/> <div class="dialog-actions svelte-e1h34p"><button type="submit" value="cancel" class="btn-cancel svelte-e1h34p">Cancel</button> <button type="button" class="btn-confirm svelte-e1h34p">OK</button></div></form></dialog>`);function Di(e,t){He(t,!0);let n=I(null),r=I(null),i=I(``),a=I(``),o=null;function s(e){return L(i,e,!0),L(a,``),q(n).showModal(),Promise.resolve().then(()=>q(r)?.focus()),new Promise(e=>{o=e})}function c(){let e=q(n).returnValue===`confirm`&&q(a).trim()?q(a):null;o?.(e),o=null}function l(e){e.key===`Enter`&&(e.preventDefault(),q(n).returnValue=`confirm`,q(n).close())}var u={prompt:s},d=Ei(),f=z(d),p=z(f),m=z(p,!0);A(p);var h=B(p,2);ni(h),ui(h,e=>L(r,e),()=>q(r));var g=B(h,2),_=B(z(g),2);return A(g),A(f),A(d),ui(d,e=>L(n,e),()=>q(n)),V(()=>{X(m,q(i)),Q(h,`aria-label`,q(i))}),pr(`close`,d,c),mr(`keydown`,h,l),oi(h,()=>q(a),e=>L(a,e)),mr(`click`,_,()=>{q(n).returnValue=`confirm`,q(n).close()}),Y(e,d),Ue(u)}hr([`keydown`,`click`]);var Oi=J(`<span class="tdd svelte-1l5g889" role="img"> </span>`),ki=J(`<span class="epic"> </span>`),Ai=J(`<span class="persona"> </span>`),ji=J(`<div class="progress svelte-1l5g889" role="progressbar"><div class="bar svelte-1l5g889"></div> <span class="progress-label svelte-1l5g889" aria-hidden="true"> </span></div>`),Mi=J(`<span class="assignee svelte-1l5g889"> </span>`),Ni=J(`<span class="blocked svelte-1l5g889">⚠ blocked</span>`),Pi=J(`<li class="card svelte-1l5g889" draggable="true" tabindex="0" role="listitem" aria-describedby="keyboard-help"><div class="card-top svelte-1l5g889"><span class="id svelte-1l5g889"> </span> <span class="priority svelte-1l5g889"> </span> <span class="points svelte-1l5g889"> </span> <!></div> <div class="title svelte-1l5g889"> </div> <div class="meta svelte-1l5g889"><!> <!></div> <!> <footer class="card-foot svelte-1l5g889"><!> <!></footer></li>`),Fi=J(`<section class="column svelte-1l5g889"><header class="column-header svelte-1l5g889"><h2 class="column-label svelte-1l5g889"> </h2> <span class="count svelte-1l5g889"> </span></header> <ul class="column-body svelte-1l5g889" role="list"></ul></section>`),Ii=J(`<button class="svelte-1l5g889"> </button>`),Li=J(`<dialog class="move-menu-dialog svelte-1l5g889" aria-labelledby="move-menu-title"><div class="move-menu-content svelte-1l5g889"><h3 id="move-menu-title" class="svelte-1l5g889">Déplacer la carte vers :</h3> <!> <button class="svelte-1l5g889">Annuler (Échap)</button></div></dialog>`),Ri=J(`<div class="board svelte-1l5g889"></div> <!> <div id="keyboard-help" class="sr-only svelte-1l5g889">Flèches pour naviguer. Alt+M pour ouvrir le menu de déplacement. Chiffres 1 à 6 pour déplacer dans une colonne. Échap pour fermer. Entrée pour les détails.</div> <div aria-live="polite" aria-atomic="true" class="sr-only svelte-1l5g889"> </div> <details class="keyboard-help-visible svelte-1l5g889"><summary aria-label="Raccourcis clavier du tableau Kanban" class="svelte-1l5g889">⌨ Raccourcis</summary> <div class="keyboard-help-content svelte-1l5g889"><kbd class="svelte-1l5g889">↑↓</kbd> Naviguer les cartes   <kbd class="svelte-1l5g889">←→</kbd> Changer de colonne   <kbd class="svelte-1l5g889">Alt+M</kbd> Menu déplacement   <kbd class="svelte-1l5g889">1–6</kbd> Déplacer vers colonne   <kbd class="svelte-1l5g889">Échap</kbd> Fermer   <kbd class="svelte-1l5g889">Entrée</kbd> Détails</div></details> <!>`,1);function zi(e,t){He(t,!0);let n=I(null),r=I(null),i=I(null),a=[{key:`backlog`,label:`Backlog`},{key:`ready-for-dev`,label:`Ready for Dev`},{key:`in-progress`,label:`In Progress`},{key:`review`,label:`Review`},{key:`done`,label:`Done`},{key:`blocked`,label:`Blocked`}],o=I(-1),s=I(0),c=I(!1),l=I(``),u=N(()=>{let e=Object.fromEntries(a.map(e=>[e.key,[]]));for(let t of $.stories)(e[t.status]??=[]).push(t);return e});function d(e){return e===`red`?{char:`●`,color:`var(--danger)`,label:`red`}:e===`green`?{char:`●`,color:`var(--ok)`,label:`green`}:e===`refactor`?{char:`●`,color:`var(--info)`,label:`refactor`}:e===`done`?{char:`✓`,color:`var(--ok)`,label:`done`}:null}function f(e){return e===`must`?`var(--danger)`:e===`should`?`var(--warn)`:e===`could`?`var(--info)`:`var(--fg-dim)`}let p=I(null);function m(e,t){L(p,t,!0),e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,t)}function h(e){e.preventDefault(),e.dataTransfer.dropEffect=`move`}async function g(e,t){e.preventDefault();let r=e.dataTransfer.getData(`text/plain`)||q(p);if(L(p,null),!r)return;let i=$.stories.find(e=>e.id===r);if(!i||i.status===t)return;let a={status:t};if(t===`blocked`){let e=await q(n).prompt(`Blocked reason?`);if(!e)return;a.blocked_reason=e}try{await Ci(r,a),y(i.id,t)}catch{}}di(()=>{function e(e){let t=document.activeElement?.closest(`.board`),n=q(c);if(!(!t&&!n)){if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=a[q(s)],n=q(u)[t.key];if(n.length===0)return;e.key===`ArrowDown`?L(o,Math.min(q(o)+1,n.length-1),!0):L(o,Math.max(0,q(o)-1),!0),_(n[q(o)]?.id)}if(e.key===`ArrowRight`||e.key===`ArrowLeft`){e.preventDefault(),e.key===`ArrowRight`?L(s,Math.min(q(s)+1,a.length-1),!0):L(s,Math.max(0,q(s)-1),!0),L(o,0);let t=a[q(s)],n=q(u)[t.key];n.length>0&&_(n[0].id)}if(e.altKey&&e.key===`m`){e.preventDefault();let t=a[q(s)],n=q(u)[t.key];q(o)>=0&&n[q(o)]&&(q(c)?S():x())}if(q(c)&&/^[1-6]$/.test(e.key)){e.preventDefault();let t=a[parseInt(e.key)-1];if(t){let e=a[q(s)],n=q(u)[e.key][q(o)];n&&v(n,t.key)}}if(e.key===`Escape`&&q(c)&&S(),e.key===`Enter`&&!q(c)){let e=a[q(s)],t=q(u)[e.key][q(o)];t&&b(t)}}}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)});function _(e){if(!e)return;let t=document.querySelector(`[data-card-id="${e}"]`);t&&t.focus()}async function v(e,t){let r={status:t};if(t===`blocked`){let e=await q(n).prompt(`Blocked reason?`);if(!e){S();return}r.blocked_reason=e}try{await Ci(e.id,r),S(),y(e.id,t)}catch{S()}}function y(e,t){L(l,`Card ${e} moved to ${a.find(e=>e.key===t)?.label||t}`),setTimeout(()=>L(l,``),2e3)}function b(e){L(l,`Card ${e.id}: ${e.title}. Status: ${e.status}. Priority: ${e.priority}. ${e.story_points} story points.`),setTimeout(()=>L(l,``),3e3)}function x(){L(i,document.activeElement,!0),L(c,!0),Promise.resolve().then(()=>q(r)?.showModal())}function S(){L(c,!1),q(r)?.close(),q(i)&&(q(i).focus(),L(i,null))}var C=Ri(),w=nn(C);Lr(w,21,()=>a,Nr,(e,t)=>{var n=Fi(),r=z(n),i=z(r),a=z(i,!0);A(i);var o=B(i,2),s=z(o,!0);A(o),A(r);var c=B(r,2);Lr(c,21,()=>q(u)[q(t).key],e=>e.id,(e,t)=>{let n=N(()=>d(q(t).tdd_phase));var r=Pi(),i=z(r),a=z(i),o=z(a,!0);A(a);var s=B(a,2),c=z(s,!0);A(s);var l=B(s,2),u=z(l);A(l);var p=B(l,2),h=e=>{var t=Oi(),r=z(t,!0);A(t),V(()=>{Qr(t,`color: ${q(n).color??``}`),Q(t,`aria-label`,`TDD phase : ${q(n).label??``}`),X(r,q(n).char)}),Y(e,t)};Z(p,e=>{q(n)&&e(h)}),A(i);var g=B(i,2),_=z(g,!0);A(g);var v=B(g,2),y=z(v),b=e=>{var n=ki(),r=z(n,!0);A(n),V(()=>X(r,q(t).epic_id)),Y(e,n)};Z(y,e=>{q(t).epic_id&&e(b)});var x=B(y,2),S=e=>{var n=Ai(),r=z(n,!0);A(n),V(()=>X(r,q(t).persona)),Y(e,n)};Z(x,e=>{q(t).persona&&e(S)}),A(v);var C=B(v,2),w=e=>{var n=ji();Q(n,`aria-valuemin`,0);var r=z(n),i=B(r,2),a=z(i);A(i),A(n),V(()=>{Q(n,`aria-label`,`Tâches : ${q(t).tasks.completed??``} sur ${q(t).tasks.total??``} complétées`),Q(n,`aria-valuenow`,q(t).tasks.completed),Q(n,`aria-valuemax`,q(t).tasks.total),Qr(r,`width: ${q(t).tasks.completed/q(t).tasks.total*100}%`),X(a,`${q(t).tasks.completed??``}/${q(t).tasks.total??``}`)}),Y(e,n)};Z(C,e=>{q(t).tasks?.total>0&&e(w)});var ee=B(C,2),T=z(ee),te=e=>{var n=Mi(),r=z(n,!0);A(n),V(e=>{Q(n,`aria-label`,`Assigné à : ${q(t).assigned_to??``}`),X(r,e)},[()=>q(t).assigned_to.slice(0,2).toUpperCase()]),Y(e,n)};Z(T,e=>{q(t).assigned_to&&e(te)});var ne=B(T,2),re=e=>{var n=Ni();V(()=>Q(n,`aria-label`,`Bloqué : ${q(t).blocked_reason??``}`)),Y(e,n)};Z(ne,e=>{q(t).status===`blocked`&&q(t).blocked_reason&&e(re)}),A(ee),A(r),V(e=>{Q(r,`aria-label`,`${q(t).id??``} ${q(t).title??``}`),Q(r,`data-card-id`,q(t).id),X(o,q(t).id),Qr(s,`color: ${e??``}`),X(c,q(t).priority),X(u,`${q(t).story_points??``}p`),X(_,q(t).title)},[()=>f(q(t).priority)]),pr(`dragstart`,r,e=>m(e,q(t).id)),Y(e,r)}),A(c),A(n),V(()=>{Q(n,`aria-labelledby`,`col-${q(t).key??``}`),Q(i,`id`,`col-${q(t).key??``}`),X(a,q(t).label),Q(o,`aria-label`,`${q(u)[q(t).key].length??``} cartes`),X(s,q(u)[q(t).key].length)}),pr(`dragover`,n,h),pr(`drop`,n,e=>g(e,q(t).key)),Y(e,n)}),A(w);var ee=B(w,2);ui(Di(ee,{}),e=>L(n,e,!0),()=>q(n));var T=B(ee,4),te=z(T,!0);A(T);var ne=B(T,4),re=e=>{var t=Li(),n=z(t),i=B(z(n),2);Lr(i,17,()=>a,Nr,(e,t,n)=>{var r=Ii(),i=z(r);A(r),V(()=>X(i,`${n+1}. ${q(t).label??``}`)),mr(`click`,r,()=>{let e=a[q(s)],n=q(u)[e.key][q(o)];n&&v(n,q(t).key)}),Y(e,r)});var l=B(i,2);A(n),A(t),ui(t,e=>L(r,e),()=>q(r)),pr(`close`,t,()=>{q(c)&&S()}),mr(`click`,l,()=>S()),Y(e,t)};Z(ne,e=>{q(c)&&e(re)}),V(()=>X(te,q(l))),Y(e,C),Ue()}hr([`click`]);var Bi=J(`<div class="empty">No epics or stories yet</div>`),Vi=J(`<span class="story-tdd svelte-1ar8rvt"> </span>`),Hi=J(`<div class="story-item svelte-1ar8rvt"><span class="story-id svelte-1ar8rvt"> </span> <span class="story-title svelte-1ar8rvt"> </span> <span class="story-status svelte-1ar8rvt"> </span> <span class="story-points svelte-1ar8rvt"> </span> <!></div>`),Ui=J(`<div class="stories-list svelte-1ar8rvt"></div>`),Wi=J(`<article class="epic-card svelte-1ar8rvt"><header class="epic-header svelte-1ar8rvt"><button class="expand-btn svelte-1ar8rvt"> </button> <span class="epic-id svelte-1ar8rvt"> </span> <span class="epic-title svelte-1ar8rvt"> </span> <span class="business-value svelte-1ar8rvt"> </span> <span class="story-count svelte-1ar8rvt"> </span> <span class="total-points svelte-1ar8rvt"> </span></header> <div class="epic-status svelte-1ar8rvt"><span class="status-badge svelte-1ar8rvt"> </span></div> <div class="epic-progress svelte-1ar8rvt" role="region" aria-label="epic progress"><div class="progress-bar-bg svelte-1ar8rvt"><div class="progress-bar svelte-1ar8rvt"></div></div> <span class="progress-text svelte-1ar8rvt"> </span></div> <!></article>`),Gi=J(`<article class="epic-card orphans svelte-1ar8rvt"><header class="epic-header svelte-1ar8rvt"><button class="expand-btn svelte-1ar8rvt"> </button> <span class="epic-title svelte-1ar8rvt">No Epic</span> <span class="story-count svelte-1ar8rvt"> </span> <span class="total-points svelte-1ar8rvt"> </span></header> <!></article>`),Ki=J(`<!> <!>`,1),qi=J(`<div class="backlog svelte-1ar8rvt"><!></div>`);function Ji(e,t){He(t,!0);let n=N(()=>{let e=new Map,t=[];for(let t of $.epics)e.set(t.id,{epic:t,stories:[],expanded:!1});for(let n of $.stories)n.epic_id&&e.has(n.epic_id)?e.get(n.epic_id).stories.push(n):n.epic_id||t.push(n);let n=Array.from(e.values()).sort((e,t)=>e.epic.id.localeCompare(t.epic.id));for(let e of n)e.stories.sort((e,t)=>e.id.localeCompare(t.id));return t.sort((e,t)=>e.id.localeCompare(t.id)),{groups:n,orphans:t}}),r=I(Jt(new Set));function i(e){let t=new Set(q(r));t.has(e)?t.delete(e):t.add(e),L(r,t,!0)}function a(e){let t=e.filter(e=>e.status===`done`).length,n=e.length;return{done:t,total:n,percent:n>0?Math.round(t/n*100):0}}function o(e){return e.reduce((e,t)=>e+(t.story_points||0),0)}function s(e){return e===`high`?`var(--danger)`:e===`medium`?`var(--warn)`:e===`low`?`var(--info)`:`var(--fg-dim)`}function c(e){return e===`done`?`var(--ok)`:e===`blocked`?`var(--danger)`:e===`in-progress`?`var(--accent)`:e===`review`?`var(--info)`:`var(--fg-dim)`}function l(e){return e===`red`?{char:`●`,color:`var(--danger)`,label:`red`}:e===`green`?{char:`●`,color:`var(--ok)`,label:`green`}:e===`refactor`?{char:`●`,color:`var(--info)`,label:`refactor`}:e===`done`?{char:`✓`,color:`var(--ok)`,label:`done`}:null}var u=qi(),d=z(u),f=e=>{Y(e,Bi())},p=e=>{var t=Ki(),u=nn(t);Lr(u,17,()=>q(n).groups,({epic:e,stories:t})=>e.id,(e,t)=>{let n=()=>q(t).epic,u=()=>q(t).stories,d=N(()=>a(u())),f=N(()=>o(u())),p=N(()=>q(r).has(n().id));var m=Wi(),h=z(m),g=z(h),_=z(g,!0);A(g);var v=B(g,2),y=z(v,!0);A(v);var b=B(v,2),x=z(b,!0);A(b);var S=B(b,2),C=z(S,!0);A(S);var w=B(S,2),ee=z(w);A(w);var T=B(w,2),te=z(T);A(T),A(h);var ne=B(h,2),re=z(ne),ie=z(re,!0);A(re),A(ne);var ae=B(ne,2),oe=z(ae),se=z(oe);A(oe);var ce=B(oe,2),le=z(ce);A(ce),A(ae);var ue=B(ae,2),de=e=>{var t=Ui();Lr(t,21,u,e=>e.id,(e,t)=>{let n=N(()=>l(q(t).tdd_phase));var r=Hi(),i=z(r),a=z(i,!0);A(i);var o=B(i,2),s=z(o,!0);A(o);var u=B(o,2),d=z(u,!0);A(u);var f=B(u,2),p=z(f);A(f);var m=B(f,2),h=e=>{var t=Vi(),r=z(t,!0);A(t),V(()=>{Qr(t,`color: ${q(n).color??``}`),Q(t,`title`,`TDD: ${q(n).label??``}`),X(r,q(n).char)}),Y(e,t)};Z(m,e=>{q(n)&&e(h)}),A(r),V(e=>{X(a,q(t).id),X(s,q(t).title),Qr(u,`color: ${e??``}`),X(d,q(t).status),X(p,`${q(t).story_points??``}p`)},[()=>c(q(t).status)]),Y(e,r)}),A(t),Y(e,t)};Z(ue,e=>{q(p)&&u().length>0&&e(de)}),A(m),V((e,t)=>{Q(g,`aria-label`,q(p)?`Collapse`:`Expand`),Q(g,`aria-expanded`,q(p)),X(_,q(p)?`▾`:`▸`),X(y,n().id),X(x,n().title),Qr(S,`background: ${e??``}`),X(C,n().business_value),X(ee,`${u().length??``} stories`),X(te,`${q(f)??``}p`),Qr(re,`color: ${t??``}`),X(ie,n().status),Qr(se,`width: ${q(d).percent??``}%`),X(le,`${q(d).done??``}/${q(d).total??``} (${q(d).percent??``}%)`)},[()=>s(n().business_value),()=>c(n().status)]),mr(`click`,g,()=>i(n().id)),Y(e,m)});var d=B(u,2),f=e=>{var t=Gi(),a=z(t),s=z(a),u=z(s,!0);A(s);var d=B(s,4),f=z(d);A(d);var p=B(d,2),m=z(p);A(p),A(a);var h=B(a,2),g=e=>{var t=Ui();Lr(t,21,()=>q(n).orphans,e=>e.id,(e,t)=>{let n=N(()=>l(q(t).tdd_phase));var r=Hi(),i=z(r),a=z(i,!0);A(i);var o=B(i,2),s=z(o,!0);A(o);var u=B(o,2),d=z(u,!0);A(u);var f=B(u,2),p=z(f);A(f);var m=B(f,2),h=e=>{var t=Vi(),r=z(t,!0);A(t),V(()=>{Qr(t,`color: ${q(n).color??``}`),Q(t,`title`,`TDD: ${q(n).label??``}`),X(r,q(n).char)}),Y(e,t)};Z(m,e=>{q(n)&&e(h)}),A(r),V(e=>{X(a,q(t).id),X(s,q(t).title),Qr(u,`color: ${e??``}`),X(d,q(t).status),X(p,`${q(t).story_points??``}p`)},[()=>c(q(t).status)]),Y(e,r)}),A(t),Y(e,t)},_=N(()=>q(r).has(`__orphans__`));Z(h,e=>{q(_)&&e(g)}),A(t),V((e,t,r,i)=>{Q(s,`aria-label`,e),Q(s,`aria-expanded`,t),X(u,r),X(f,`${q(n).orphans.length??``} stories`),X(m,`${i??``}p`)},[()=>q(r).has(`__orphans__`)?`Collapse`:`Expand`,()=>q(r).has(`__orphans__`),()=>q(r).has(`__orphans__`)?`▾`:`▸`,()=>o(q(n).orphans)]),mr(`click`,s,()=>i(`__orphans__`)),Y(e,t)};Z(d,e=>{q(n).orphans.length>0&&e(f)}),Y(e,t)};Z(d,e=>{$.epics.length===0&&$.stories.length===0?e(f):e(p,-1)}),A(u),Y(e,u),Ue()}hr([`click`]);var Yi=`modulepreload`,Xi=function(e){return`/`+e},Zi={},Qi=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Xi(t,n),t in Zi)return;Zi[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Yi,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},$i=J(`<a> </a>`),ea=J(`<div class="empty"><strong>Cannot reach server.</strong><br/> </div>`),ta=J(`<div class="empty">Loading…</div>`),na=J(`<div role="status"> </div>`),ra=J(`<a href="#main" class="skip-link svelte-sgl18p">Skip to main content</a> <div class="app-shell"><aside class="sidebar" aria-label="Navigation"><h1>claude-craft</h1> <nav class="nav" aria-label="Views"></nav> <h2 class="sidebar-section-title svelte-sgl18p">Sprint</h2> <div style="font-size:12px; color: var(--fg-dim); padding: 0 10px;"> </div></aside> <header class="topbar" role="banner"><div class="title"><!></div> <div aria-live="polite"> </div></header> <main class="main" id="main"><!></main></div> <div class="toast-layer" aria-live="polite"></div>`,1);function ia(e,t){He(t,!0);let n=()=>Qi(()=>import(`./BurndownView-BmUIPoig.js`),__vite__mapDeps([0,1])),r=()=>Qi(()=>import(`./DepsView-CxBIDeB7.js`),__vite__mapDeps([2,3])),i=()=>Qi(()=>import(`./DocsView-CqbEnpW7.js`),__vite__mapDeps([4,5]));di(async()=>{await Promise.all([xi(),Si()]),wi()}),fi(()=>Ti());let a=[{path:`/kanban`,label:`Kanban`},{path:`/backlog`,label:`Backlog`},{path:`/burndown`,label:`Burndown`},{path:`/deps`,label:`Dependencies`},{path:`/docs`,label:`Docs`}];function o(){return`/`+(hi.parts[0]??`kanban`)}let s=N(()=>$.sprint?`${$.sprint.name} (${$.sprint.sprint_id})`:`no sprint`);var c=ra(),l=B(nn(c),2),u=z(l),d=B(z(u),2);Lr(d,21,()=>a,Nr,(e,t)=>{var n=$i(),r=z(n,!0);A(n),V(e=>{Q(n,`href`,`#`+q(t).path),Q(n,`aria-current`,e),X(r,q(t).label)},[()=>o()===q(t).path?`page`:void 0]),Y(e,n)}),A(d);var f=B(d,4),p=z(f,!0);A(f),A(u);var m=B(u,2),h=z(m),g=z(h),_=e=>{var t=Sr();V(()=>X(t,$.sprint.goal||$.sprint.name)),Y(e,t)},v=e=>{Y(e,Sr(`Kanban`))};Z(g,e=>{$.sprint?e(_):e(v,-1)}),A(h);var y=B(h,2),b=z(y,!0);A(y),A(m);var x=B(m,2),S=z(x),C=e=>{var t=ea(),n=B(z(t),2);A(t),V(()=>X(n,` ${$.error??``}`)),Y(e,t)},w=e=>{zi(e,{})},ee=N(()=>o()===`/kanban`),T=e=>{Ji(e,{})},te=N(()=>o()===`/backlog`),ne=e=>{var t=Cr();Mr(nn(t),n,e=>{Y(e,ta())},(e,t)=>{let n=N(()=>q(t).default);var r=Cr();Wr(nn(r),()=>q(n),(e,t)=>{t(e,{})}),Y(e,r)}),Y(e,t)},re=N(()=>o()===`/burndown`),ie=e=>{var t=Cr();Mr(nn(t),r,e=>{Y(e,ta())},(e,t)=>{let n=N(()=>q(t).default);var r=Cr();Wr(nn(r),()=>q(n),(e,t)=>{t(e,{})}),Y(e,r)}),Y(e,t)},ae=N(()=>o()===`/deps`),oe=e=>{var t=Cr();Mr(nn(t),i,e=>{Y(e,ta())},(e,t)=>{let n=N(()=>q(t).default);var r=Cr();Wr(nn(r),()=>q(n),(e,t)=>{t(e,{})}),Y(e,r)}),Y(e,t)},se=N(()=>o()===`/docs`);Z(S,e=>{$.error&&$.stories.length===0?e(C):q(ee)?e(w,1):q(te)?e(T,2):q(re)?e(ne,3):q(ae)?e(ie,4):q(se)&&e(oe,5)}),A(x),A(l);var ce=B(l,2);Lr(ce,21,()=>$.toasts,e=>e.id,(e,t)=>{var n=na(),r=z(n,!0);A(n),V(()=>{Xr(n,1,`toast ${q(t).kind??``}`,`svelte-sgl18p`),X(r,q(t).message)}),mr(`click`,n,()=>yi(q(t).id)),Y(e,n)}),A(ce),V(()=>{X(p,q(s)),Xr(y,1,`status ${$.connected?`connected`:`disconnected`}`),X(b,$.connected?`● live`:`○ offline`)}),Y(e,c),Ue()}hr([`click`]),wr(ia,{target:document.getElementById(`app`)});export{L as C,He as D,Ue as E,Ne as O,Jt as S,N as T,V as _,Xr as a,nn as b,Nr as c,Y as d,Cr as f,q as g,mr as h,Qr as i,A as k,Z as l,hr as m,ui as n,Ur as o,J as p,Q as r,Lr as s,$ as t,X as u,_n as v,I as w,B as x,z as y};
|
|
3
|
+
\r\f\xA0\v`];function Kr(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||Gr.includes(r[o-1]))&&(s===r.length||Gr.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function qr(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Jr(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Yr(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Jr)),i&&c.push(...Object.keys(i).map(Jr));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=Jr(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=qr(r)),i&&(n+=qr(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function Xr(e,t,n,r,i,a){var o=e[se];if(D||o!==n||o===void 0){var s=Kr(n,r,a);(!D||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[se]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function Zr(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function Qr(e,t,n,r){var i=e[ce];if(D||i!==t){var a=Yr(t,r);(!D||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[ce]=t}else r&&(Array.isArray(r)?(Zr(e,n?.[0],r[0]),Zr(e,n?.[1],r[1],`important`)):Zr(e,n,r));return r}var $r=Symbol(`is custom element`),ei=Symbol(`is html`),ti=fe?`link`:`LINK`;function ni(e){if(D){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;Q(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;Q(e,`checked`,null),e.checked=r}}};e[ue]=n,qe(n),ln()}}function Q(e,t,n,r){var i=ri(e);D&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===ti)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ae]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ai(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ri(e){return e[oe]??={[$r]:e.nodeName.includes(`-`),[ei]:e.namespaceURI===Te}}var ii=new Map;function ai(e){var t=e.getAttribute(`is`)||e.nodeName,n=ii.get(t);if(n)return n;ii.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.push(s);i=l(i)}return n}function oi(e,t,n=t){var r=new WeakSet;dn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=si(e)?ci(a):a,n(a),P!==null&&r.add(P),await rr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(D&&e.defaultValue!==e.value||or(t)==null&&e.value)&&(n(si(e)?ci(e.value):e.value),P!==null&&r.add(P)),Sn(()=>{var n=t();if(e===document.activeElement){var i=ze?xt:P;if(r.has(i))return}si(e)&&n===ci(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function si(e){var t=e.type;return t===`number`||t===`range`}function ci(e){return e===``?null:+e}function li(e,t){return e===t||e?.[ie]===t}function ui(e={},t,n,r){var i=j.r,a=W;return bn(()=>{var o,s;return Sn(()=>{o=s,s=r?.()||[],or(()=>{li(n(...s),e)||(t(e,...s),o&&li(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&li(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function di(e){j===null&&pe(`onMount`),Be&&j.l!==null?pi(j).m.push(e):_n(()=>{let t=or(e);if(typeof t==`function`)return t})}function fi(e){j===null&&pe(`onDestroy`),di(()=>()=>or(e))}function pi(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);function mi(){let[e,t=``]=(window.location.hash.slice(1)||`/kanban`).split(`?`);return{pathname:e,parts:e.split(`/`).filter(Boolean),query:t}}var hi=Jt(mi());window.addEventListener(`hashchange`,()=>{Object.assign(hi,mi())});var $=Jt({stories:[],epics:[],sprint:null,burndown:null,connected:!1,loading:!1,error:null,toasts:[]}),gi=null,_i=0;function vi({kind:e=`info`,message:t,ttl:n=3500}){let r=++_i;$.toasts.push({id:r,kind:e,message:t}),setTimeout(()=>{let e=$.toasts.findIndex(e=>e.id===r);e>=0&&$.toasts.splice(e,1)},n)}function yi(e){let t=$.toasts.findIndex(t=>t.id===e);t>=0&&$.toasts.splice(t,1)}async function bi(e,t={}){let n=await fetch(e,{...t,headers:{"Content-Type":`application/json`,...t.headers??{}}});if(!n.ok){let e;try{e=await n.json()}catch{e={error:n.statusText}}let t=Error(e.error||`HTTP ${n.status}`);throw t.status=n.status,t.body=e,t}return n.json()}async function xi(){$.loading=!0;try{let e=await bi(`/api/stories`);$.stories=e.stories,$.epics=e.epics,$.error=null}catch(e){$.error=e.message,vi({kind:`error`,message:`Failed to load stories: ${e.message}`})}finally{$.loading=!1}}async function Si(){try{let e=await bi(`/api/sprints/current`);$.sprint=e.sprint,$.burndown=e.burndown}catch(e){e.status!==404&&vi({kind:`error`,message:`Sprint load failed: ${e.message}`}),$.sprint=null,$.burndown=null}}async function Ci(e,t){let n=$.stories.find(t=>t.id===e);if(!n)throw Error(`story not found`);let r=$.stories.findIndex(t=>t.id===e),i={...n};$.stories[r]={...n,status:t.status};try{let n=await bi(`/api/stories/${e}/status`,{method:`PATCH`,body:JSON.stringify(t)});return $.stories[r]=n.story,vi({kind:`success`,message:`${e} -> ${n.story.status}`}),n.story}catch(e){$.stories[r]=i;let t=e.body?.missing?.length?` (${e.body.missing.join(`, `)})`:``;throw vi({kind:`error`,message:`Transition failed: ${e.body?.reason??e.message}${t}`,ttl:5e3}),e}}function wi(){gi||(gi=new EventSource(`/api/events`),gi.addEventListener(`open`,()=>{$.connected=!0}),gi.addEventListener(`error`,()=>{$.connected=!1}),gi.addEventListener(`story:updated`,async()=>{await xi()}),gi.addEventListener(`file:changed`,async e=>{try{let{payload:t}=JSON.parse(e.data);(t?.category===`story`||t?.category===`task`||t?.category===`epic`)&&await xi()}catch{await xi()}}))}function Ti(){gi&&(gi.close(),gi=null,$.connected=!1)}var Ei=J(`<dialog aria-labelledby="prompt-dialog-title" aria-modal="true" class="svelte-e1h34p"><form method="dialog"><h2 id="prompt-dialog-title" class="dialog-title svelte-e1h34p"> </h2> <input type="text" class="dialog-input svelte-e1h34p"/> <div class="dialog-actions svelte-e1h34p"><button type="submit" value="cancel" class="btn-cancel svelte-e1h34p">Cancel</button> <button type="button" class="btn-confirm svelte-e1h34p">OK</button></div></form></dialog>`);function Di(e,t){He(t,!0);let n=I(null),r=I(null),i=I(``),a=I(``),o=null;function s(e){return L(i,e,!0),L(a,``),q(n).showModal(),Promise.resolve().then(()=>q(r)?.focus()),new Promise(e=>{o=e})}function c(){let e=q(n).returnValue===`confirm`&&q(a).trim()?q(a):null;o?.(e),o=null}function l(e){e.key===`Enter`&&(e.preventDefault(),q(n).returnValue=`confirm`,q(n).close())}var u={prompt:s},d=Ei(),f=z(d),p=z(f),m=z(p,!0);A(p);var h=B(p,2);ni(h),ui(h,e=>L(r,e),()=>q(r));var g=B(h,2),_=B(z(g),2);return A(g),A(f),A(d),ui(d,e=>L(n,e),()=>q(n)),V(()=>{X(m,q(i)),Q(h,`aria-label`,q(i))}),pr(`close`,d,c),mr(`keydown`,h,l),oi(h,()=>q(a),e=>L(a,e)),mr(`click`,_,()=>{q(n).returnValue=`confirm`,q(n).close()}),Y(e,d),Ue(u)}hr([`keydown`,`click`]);var Oi=J(`<span class="readonly svelte-1l5g889" aria-label="Lecture seule — gérée par .bmad/sprint-status.yaml" role="img">🔒</span>`),ki=J(`<span class="tdd svelte-1l5g889" role="img"> </span>`),Ai=J(`<span class="epic"> </span>`),ji=J(`<span class="persona"> </span>`),Mi=J(`<div class="progress svelte-1l5g889" role="progressbar"><div class="bar svelte-1l5g889"></div> <span class="progress-label svelte-1l5g889" aria-hidden="true"> </span></div>`),Ni=J(`<span class="assignee svelte-1l5g889"> </span>`),Pi=J(`<span class="blocked svelte-1l5g889">⚠ blocked</span>`),Fi=J(`<li tabindex="0" role="listitem" aria-describedby="keyboard-help"><div class="card-top svelte-1l5g889"><span class="id svelte-1l5g889"> </span> <!> <span class="priority svelte-1l5g889"> </span> <span class="points svelte-1l5g889"> </span> <!></div> <div class="title svelte-1l5g889"> </div> <div class="meta svelte-1l5g889"><!> <!></div> <!> <footer class="card-foot svelte-1l5g889"><!> <!></footer></li>`),Ii=J(`<section class="column svelte-1l5g889"><header class="column-header svelte-1l5g889"><h2 class="column-label svelte-1l5g889"> </h2> <span class="count svelte-1l5g889"> </span></header> <ul class="column-body svelte-1l5g889" role="list"></ul></section>`),Li=J(`<button class="svelte-1l5g889"> </button>`),Ri=J(`<dialog class="move-menu-dialog svelte-1l5g889" aria-labelledby="move-menu-title"><div class="move-menu-content svelte-1l5g889"><h3 id="move-menu-title" class="svelte-1l5g889">Déplacer la carte vers :</h3> <!> <button class="svelte-1l5g889">Annuler (Échap)</button></div></dialog>`),zi=J(`<div class="board svelte-1l5g889"></div> <!> <div id="keyboard-help" class="sr-only svelte-1l5g889">Flèches pour naviguer. Alt+M pour ouvrir le menu de déplacement. Chiffres 1 à 6 pour déplacer dans une colonne. Échap pour fermer. Entrée pour les détails.</div> <div aria-live="polite" aria-atomic="true" class="sr-only svelte-1l5g889"> </div> <details class="keyboard-help-visible svelte-1l5g889"><summary aria-label="Raccourcis clavier du tableau Kanban" class="svelte-1l5g889">⌨ Raccourcis</summary> <div class="keyboard-help-content svelte-1l5g889"><kbd class="svelte-1l5g889">↑↓</kbd> Naviguer les cartes   <kbd class="svelte-1l5g889">←→</kbd> Changer de colonne   <kbd class="svelte-1l5g889">Alt+M</kbd> Menu déplacement   <kbd class="svelte-1l5g889">1–6</kbd> Déplacer vers colonne   <kbd class="svelte-1l5g889">Échap</kbd> Fermer   <kbd class="svelte-1l5g889">Entrée</kbd> Détails</div></details> <!>`,1);function Bi(e,t){He(t,!0);let n=I(null),r=I(null),i=I(null),a=[{key:`backlog`,label:`Backlog`},{key:`ready-for-dev`,label:`Ready for Dev`},{key:`in-progress`,label:`In Progress`},{key:`review`,label:`Review`},{key:`done`,label:`Done`},{key:`blocked`,label:`Blocked`}],o=I(-1),s=I(0),c=I(!1),l=I(``),u=N(()=>{let e=Object.fromEntries(a.map(e=>[e.key,[]]));for(let t of $.stories)(e[t.status]??=[]).push(t);return e});function d(e){return e===`red`?{char:`●`,color:`var(--danger)`,label:`red`}:e===`green`?{char:`●`,color:`var(--ok)`,label:`green`}:e===`refactor`?{char:`●`,color:`var(--info)`,label:`refactor`}:e===`done`?{char:`✓`,color:`var(--ok)`,label:`done`}:null}function f(e){return e===`must`?`var(--danger)`:e===`should`?`var(--warn)`:e===`could`?`var(--info)`:`var(--fg-dim)`}let p=I(null);function m(e,t){L(p,t,!0),e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,t)}function h(e){e.preventDefault(),e.dataTransfer.dropEffect=`move`}async function g(e,t){e.preventDefault();let r=e.dataTransfer.getData(`text/plain`)||q(p);if(L(p,null),!r)return;let i=$.stories.find(e=>e.id===r);if(!i||i.status===t)return;if(i._writable===!1){b(i.id);return}let a={status:t};if(t===`blocked`){let e=await q(n).prompt(`Blocked reason?`);if(!e)return;a.blocked_reason=e}try{await Ci(r,a),y(i.id,t)}catch{}}di(()=>{function e(e){let t=document.activeElement?.closest(`.board`),n=q(c);if(!(!t&&!n)){if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=a[q(s)],n=q(u)[t.key];if(n.length===0)return;e.key===`ArrowDown`?L(o,Math.min(q(o)+1,n.length-1),!0):L(o,Math.max(0,q(o)-1),!0),_(n[q(o)]?.id)}if(e.key===`ArrowRight`||e.key===`ArrowLeft`){e.preventDefault(),e.key===`ArrowRight`?L(s,Math.min(q(s)+1,a.length-1),!0):L(s,Math.max(0,q(s)-1),!0),L(o,0);let t=a[q(s)],n=q(u)[t.key];n.length>0&&_(n[0].id)}if(e.altKey&&e.key===`m`){e.preventDefault();let t=a[q(s)],n=q(u)[t.key];q(o)>=0&&n[q(o)]&&(q(c)?C():S())}if(q(c)&&/^[1-6]$/.test(e.key)){e.preventDefault();let t=a[parseInt(e.key)-1];if(t){let e=a[q(s)],n=q(u)[e.key][q(o)];n&&v(n,t.key)}}if(e.key===`Escape`&&q(c)&&C(),e.key===`Enter`&&!q(c)){let e=a[q(s)],t=q(u)[e.key][q(o)];t&&x(t)}}}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)});function _(e){if(!e)return;let t=document.querySelector(`[data-card-id="${e}"]`);t&&t.focus()}async function v(e,t){if(e._writable===!1){b(e.id),C();return}let r={status:t};if(t===`blocked`){let e=await q(n).prompt(`Blocked reason?`);if(!e){C();return}r.blocked_reason=e}try{await Ci(e.id,r),C(),y(e.id,t)}catch{C()}}function y(e,t){L(l,`Card ${e} moved to ${a.find(e=>e.key===t)?.label||t}`),setTimeout(()=>L(l,``),2e3)}function b(e){L(l,`Card ${e} is read-only (managed by .bmad/sprint-status.yaml — use team:/qa: commands)`),setTimeout(()=>L(l,``),3e3)}function x(e){L(l,`Card ${e.id}: ${e.title}. Status: ${e.status}. Priority: ${e.priority}. ${e.story_points} story points.`),setTimeout(()=>L(l,``),3e3)}function S(){L(i,document.activeElement,!0),L(c,!0),Promise.resolve().then(()=>q(r)?.showModal())}function C(){L(c,!1),q(r)?.close(),q(i)&&(q(i).focus(),L(i,null))}var w=zi(),ee=nn(w);Lr(ee,21,()=>a,Nr,(e,t)=>{var n=Ii(),r=z(n),i=z(r),a=z(i,!0);A(i);var o=B(i,2),s=z(o,!0);A(o),A(r);var c=B(r,2);Lr(c,21,()=>q(u)[q(t).key],e=>e.id,(e,t)=>{let n=N(()=>d(q(t).tdd_phase));var r=Fi();let i;var a=z(r),o=z(a),s=z(o,!0);A(o);var c=B(o,2),l=e=>{Y(e,Oi())};Z(c,e=>{q(t)._writable===!1&&e(l)});var u=B(c,2),p=z(u,!0);A(u);var h=B(u,2),g=z(h);A(h);var _=B(h,2),v=e=>{var t=ki(),r=z(t,!0);A(t),V(()=>{Qr(t,`color: ${q(n).color??``}`),Q(t,`aria-label`,`TDD phase : ${q(n).label??``}`),X(r,q(n).char)}),Y(e,t)};Z(_,e=>{q(n)&&e(v)}),A(a);var y=B(a,2),b=z(y,!0);A(y);var x=B(y,2),S=z(x),C=e=>{var n=Ai(),r=z(n,!0);A(n),V(()=>X(r,q(t).epic_id)),Y(e,n)};Z(S,e=>{q(t).epic_id&&e(C)});var w=B(S,2),ee=e=>{var n=ji(),r=z(n,!0);A(n),V(()=>X(r,q(t).persona)),Y(e,n)};Z(w,e=>{q(t).persona&&e(ee)}),A(x);var T=B(x,2),te=e=>{var n=Mi();Q(n,`aria-valuemin`,0);var r=z(n),i=B(r,2),a=z(i);A(i),A(n),V(()=>{Q(n,`aria-label`,`Tâches : ${q(t).tasks.completed??``} sur ${q(t).tasks.total??``} complétées`),Q(n,`aria-valuenow`,q(t).tasks.completed),Q(n,`aria-valuemax`,q(t).tasks.total),Qr(r,`width: ${q(t).tasks.completed/q(t).tasks.total*100}%`),X(a,`${q(t).tasks.completed??``}/${q(t).tasks.total??``}`)}),Y(e,n)};Z(T,e=>{q(t).tasks?.total>0&&e(te)});var ne=B(T,2),re=z(ne),ie=e=>{var n=Ni(),r=z(n,!0);A(n),V(e=>{Q(n,`aria-label`,`Assigné à : ${q(t).assigned_to??``}`),X(r,e)},[()=>q(t).assigned_to.slice(0,2).toUpperCase()]),Y(e,n)};Z(re,e=>{q(t).assigned_to&&e(ie)});var ae=B(re,2),oe=e=>{var n=Pi();V(()=>Q(n,`aria-label`,`Bloqué : ${q(t).blocked_reason??``}`)),Y(e,n)};Z(ae,e=>{q(t).status===`blocked`&&q(t).blocked_reason&&e(oe)}),A(ne),A(r),V(e=>{i=Xr(r,1,`card svelte-1l5g889`,null,i,{"read-only":q(t)._writable===!1}),Q(r,`draggable`,q(t)._writable!==!1),Q(r,`aria-label`,`${q(t).id??``} ${q(t).title??``}${q(t)._writable===!1?` (lecture seule)`:``}`),Q(r,`data-card-id`,q(t).id),X(s,q(t).id),Qr(u,`color: ${e??``}`),X(p,q(t).priority),X(g,`${q(t).story_points??``}p`),X(b,q(t).title)},[()=>f(q(t).priority)]),pr(`dragstart`,r,e=>m(e,q(t).id)),Y(e,r)}),A(c),A(n),V(()=>{Q(n,`aria-labelledby`,`col-${q(t).key??``}`),Q(i,`id`,`col-${q(t).key??``}`),X(a,q(t).label),Q(o,`aria-label`,`${q(u)[q(t).key].length??``} cartes`),X(s,q(u)[q(t).key].length)}),pr(`dragover`,n,h),pr(`drop`,n,e=>g(e,q(t).key)),Y(e,n)}),A(ee);var T=B(ee,2);ui(Di(T,{}),e=>L(n,e,!0),()=>q(n));var te=B(T,4),ne=z(te,!0);A(te);var re=B(te,4),ie=e=>{var t=Ri(),n=z(t),i=B(z(n),2);Lr(i,17,()=>a,Nr,(e,t,n)=>{var r=Li(),i=z(r);A(r),V(()=>X(i,`${n+1}. ${q(t).label??``}`)),mr(`click`,r,()=>{let e=a[q(s)],n=q(u)[e.key][q(o)];n&&v(n,q(t).key)}),Y(e,r)});var l=B(i,2);A(n),A(t),ui(t,e=>L(r,e),()=>q(r)),pr(`close`,t,()=>{q(c)&&C()}),mr(`click`,l,()=>C()),Y(e,t)};Z(re,e=>{q(c)&&e(ie)}),V(()=>X(ne,q(l))),Y(e,w),Ue()}hr([`click`]);var Vi=J(`<div class="empty">No epics or stories yet</div>`),Hi=J(`<span class="story-tdd svelte-1ar8rvt"> </span>`),Ui=J(`<div class="story-item svelte-1ar8rvt"><span class="story-id svelte-1ar8rvt"> </span> <span class="story-title svelte-1ar8rvt"> </span> <span class="story-status svelte-1ar8rvt"> </span> <span class="story-points svelte-1ar8rvt"> </span> <!></div>`),Wi=J(`<div class="stories-list svelte-1ar8rvt"></div>`),Gi=J(`<article class="epic-card svelte-1ar8rvt"><header class="epic-header svelte-1ar8rvt"><button class="expand-btn svelte-1ar8rvt"> </button> <span class="epic-id svelte-1ar8rvt"> </span> <span class="epic-title svelte-1ar8rvt"> </span> <span class="business-value svelte-1ar8rvt"> </span> <span class="story-count svelte-1ar8rvt"> </span> <span class="total-points svelte-1ar8rvt"> </span></header> <div class="epic-status svelte-1ar8rvt"><span class="status-badge svelte-1ar8rvt"> </span></div> <div class="epic-progress svelte-1ar8rvt" role="region" aria-label="epic progress"><div class="progress-bar-bg svelte-1ar8rvt"><div class="progress-bar svelte-1ar8rvt"></div></div> <span class="progress-text svelte-1ar8rvt"> </span></div> <!></article>`),Ki=J(`<article class="epic-card orphans svelte-1ar8rvt"><header class="epic-header svelte-1ar8rvt"><button class="expand-btn svelte-1ar8rvt"> </button> <span class="epic-title svelte-1ar8rvt">No Epic</span> <span class="story-count svelte-1ar8rvt"> </span> <span class="total-points svelte-1ar8rvt"> </span></header> <!></article>`),qi=J(`<!> <!>`,1),Ji=J(`<div class="backlog svelte-1ar8rvt"><!></div>`);function Yi(e,t){He(t,!0);let n=N(()=>{let e=new Map,t=[];for(let t of $.epics)e.set(t.id,{epic:t,stories:[],expanded:!1});for(let n of $.stories)n.epic_id&&e.has(n.epic_id)?e.get(n.epic_id).stories.push(n):n.epic_id||t.push(n);let n=Array.from(e.values()).sort((e,t)=>e.epic.id.localeCompare(t.epic.id));for(let e of n)e.stories.sort((e,t)=>e.id.localeCompare(t.id));return t.sort((e,t)=>e.id.localeCompare(t.id)),{groups:n,orphans:t}}),r=I(Jt(new Set));function i(e){let t=new Set(q(r));t.has(e)?t.delete(e):t.add(e),L(r,t,!0)}function a(e){let t=e.filter(e=>e.status===`done`).length,n=e.length;return{done:t,total:n,percent:n>0?Math.round(t/n*100):0}}function o(e){return e.reduce((e,t)=>e+(t.story_points||0),0)}function s(e){return e===`high`?`var(--danger)`:e===`medium`?`var(--warn)`:e===`low`?`var(--info)`:`var(--fg-dim)`}function c(e){return e===`done`?`var(--ok)`:e===`blocked`?`var(--danger)`:e===`in-progress`?`var(--accent)`:e===`review`?`var(--info)`:`var(--fg-dim)`}function l(e){return e===`red`?{char:`●`,color:`var(--danger)`,label:`red`}:e===`green`?{char:`●`,color:`var(--ok)`,label:`green`}:e===`refactor`?{char:`●`,color:`var(--info)`,label:`refactor`}:e===`done`?{char:`✓`,color:`var(--ok)`,label:`done`}:null}var u=Ji(),d=z(u),f=e=>{Y(e,Vi())},p=e=>{var t=qi(),u=nn(t);Lr(u,17,()=>q(n).groups,({epic:e,stories:t})=>e.id,(e,t)=>{let n=()=>q(t).epic,u=()=>q(t).stories,d=N(()=>a(u())),f=N(()=>o(u())),p=N(()=>q(r).has(n().id));var m=Gi(),h=z(m),g=z(h),_=z(g,!0);A(g);var v=B(g,2),y=z(v,!0);A(v);var b=B(v,2),x=z(b,!0);A(b);var S=B(b,2),C=z(S,!0);A(S);var w=B(S,2),ee=z(w);A(w);var T=B(w,2),te=z(T);A(T),A(h);var ne=B(h,2),re=z(ne),ie=z(re,!0);A(re),A(ne);var ae=B(ne,2),oe=z(ae),se=z(oe);A(oe);var ce=B(oe,2),le=z(ce);A(ce),A(ae);var ue=B(ae,2),de=e=>{var t=Wi();Lr(t,21,u,e=>e.id,(e,t)=>{let n=N(()=>l(q(t).tdd_phase));var r=Ui(),i=z(r),a=z(i,!0);A(i);var o=B(i,2),s=z(o,!0);A(o);var u=B(o,2),d=z(u,!0);A(u);var f=B(u,2),p=z(f);A(f);var m=B(f,2),h=e=>{var t=Hi(),r=z(t,!0);A(t),V(()=>{Qr(t,`color: ${q(n).color??``}`),Q(t,`title`,`TDD: ${q(n).label??``}`),X(r,q(n).char)}),Y(e,t)};Z(m,e=>{q(n)&&e(h)}),A(r),V(e=>{X(a,q(t).id),X(s,q(t).title),Qr(u,`color: ${e??``}`),X(d,q(t).status),X(p,`${q(t).story_points??``}p`)},[()=>c(q(t).status)]),Y(e,r)}),A(t),Y(e,t)};Z(ue,e=>{q(p)&&u().length>0&&e(de)}),A(m),V((e,t)=>{Q(g,`aria-label`,q(p)?`Collapse`:`Expand`),Q(g,`aria-expanded`,q(p)),X(_,q(p)?`▾`:`▸`),X(y,n().id),X(x,n().title),Qr(S,`background: ${e??``}`),X(C,n().business_value),X(ee,`${u().length??``} stories`),X(te,`${q(f)??``}p`),Qr(re,`color: ${t??``}`),X(ie,n().status),Qr(se,`width: ${q(d).percent??``}%`),X(le,`${q(d).done??``}/${q(d).total??``} (${q(d).percent??``}%)`)},[()=>s(n().business_value),()=>c(n().status)]),mr(`click`,g,()=>i(n().id)),Y(e,m)});var d=B(u,2),f=e=>{var t=Ki(),a=z(t),s=z(a),u=z(s,!0);A(s);var d=B(s,4),f=z(d);A(d);var p=B(d,2),m=z(p);A(p),A(a);var h=B(a,2),g=e=>{var t=Wi();Lr(t,21,()=>q(n).orphans,e=>e.id,(e,t)=>{let n=N(()=>l(q(t).tdd_phase));var r=Ui(),i=z(r),a=z(i,!0);A(i);var o=B(i,2),s=z(o,!0);A(o);var u=B(o,2),d=z(u,!0);A(u);var f=B(u,2),p=z(f);A(f);var m=B(f,2),h=e=>{var t=Hi(),r=z(t,!0);A(t),V(()=>{Qr(t,`color: ${q(n).color??``}`),Q(t,`title`,`TDD: ${q(n).label??``}`),X(r,q(n).char)}),Y(e,t)};Z(m,e=>{q(n)&&e(h)}),A(r),V(e=>{X(a,q(t).id),X(s,q(t).title),Qr(u,`color: ${e??``}`),X(d,q(t).status),X(p,`${q(t).story_points??``}p`)},[()=>c(q(t).status)]),Y(e,r)}),A(t),Y(e,t)},_=N(()=>q(r).has(`__orphans__`));Z(h,e=>{q(_)&&e(g)}),A(t),V((e,t,r,i)=>{Q(s,`aria-label`,e),Q(s,`aria-expanded`,t),X(u,r),X(f,`${q(n).orphans.length??``} stories`),X(m,`${i??``}p`)},[()=>q(r).has(`__orphans__`)?`Collapse`:`Expand`,()=>q(r).has(`__orphans__`),()=>q(r).has(`__orphans__`)?`▾`:`▸`,()=>o(q(n).orphans)]),mr(`click`,s,()=>i(`__orphans__`)),Y(e,t)};Z(d,e=>{q(n).orphans.length>0&&e(f)}),Y(e,t)};Z(d,e=>{$.epics.length===0&&$.stories.length===0?e(f):e(p,-1)}),A(u),Y(e,u),Ue()}hr([`click`]);var Xi=`modulepreload`,Zi=function(e){return`/`+e},Qi={},$i=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Zi(t,n),t in Qi)return;Qi[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Xi,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},ea=J(`<a> </a>`),ta=J(`<div class="empty"><strong>Cannot reach server.</strong><br/> </div>`),na=J(`<div class="empty">Loading…</div>`),ra=J(`<div role="status"> </div>`),ia=J(`<a href="#main" class="skip-link svelte-sgl18p">Skip to main content</a> <div class="app-shell"><aside class="sidebar" aria-label="Navigation"><h1>claude-craft</h1> <nav class="nav" aria-label="Views"></nav> <h2 class="sidebar-section-title svelte-sgl18p">Sprint</h2> <div style="font-size:12px; color: var(--fg-dim); padding: 0 10px;"> </div></aside> <header class="topbar" role="banner"><div class="title"><!></div> <div aria-live="polite"> </div></header> <main class="main" id="main"><!></main></div> <div class="toast-layer" aria-live="polite"></div>`,1);function aa(e,t){He(t,!0);let n=()=>$i(()=>import(`./BurndownView-CX_G3va0.js`),__vite__mapDeps([0,1])),r=()=>$i(()=>import(`./DepsView-ihavQy0E.js`),__vite__mapDeps([2,3])),i=()=>$i(()=>import(`./DocsView-B_ZGSOFP.js`),__vite__mapDeps([4,5]));di(async()=>{await Promise.all([xi(),Si()]),wi()}),fi(()=>Ti());let a=[{path:`/kanban`,label:`Kanban`},{path:`/backlog`,label:`Backlog`},{path:`/burndown`,label:`Burndown`},{path:`/deps`,label:`Dependencies`},{path:`/docs`,label:`Docs`}];function o(){return`/`+(hi.parts[0]??`kanban`)}let s=N(()=>$.sprint?`${$.sprint.name} (${$.sprint.sprint_id})`:`no sprint`);var c=ia(),l=B(nn(c),2),u=z(l),d=B(z(u),2);Lr(d,21,()=>a,Nr,(e,t)=>{var n=ea(),r=z(n,!0);A(n),V(e=>{Q(n,`href`,`#`+q(t).path),Q(n,`aria-current`,e),X(r,q(t).label)},[()=>o()===q(t).path?`page`:void 0]),Y(e,n)}),A(d);var f=B(d,4),p=z(f,!0);A(f),A(u);var m=B(u,2),h=z(m),g=z(h),_=e=>{var t=Sr();V(()=>X(t,$.sprint.goal||$.sprint.name)),Y(e,t)},v=e=>{Y(e,Sr(`Kanban`))};Z(g,e=>{$.sprint?e(_):e(v,-1)}),A(h);var y=B(h,2),b=z(y,!0);A(y),A(m);var x=B(m,2),S=z(x),C=e=>{var t=ta(),n=B(z(t),2);A(t),V(()=>X(n,` ${$.error??``}`)),Y(e,t)},w=e=>{Bi(e,{})},ee=N(()=>o()===`/kanban`),T=e=>{Yi(e,{})},te=N(()=>o()===`/backlog`),ne=e=>{var t=Cr();Mr(nn(t),n,e=>{Y(e,na())},(e,t)=>{let n=N(()=>q(t).default);var r=Cr();Wr(nn(r),()=>q(n),(e,t)=>{t(e,{})}),Y(e,r)}),Y(e,t)},re=N(()=>o()===`/burndown`),ie=e=>{var t=Cr();Mr(nn(t),r,e=>{Y(e,na())},(e,t)=>{let n=N(()=>q(t).default);var r=Cr();Wr(nn(r),()=>q(n),(e,t)=>{t(e,{})}),Y(e,r)}),Y(e,t)},ae=N(()=>o()===`/deps`),oe=e=>{var t=Cr();Mr(nn(t),i,e=>{Y(e,na())},(e,t)=>{let n=N(()=>q(t).default);var r=Cr();Wr(nn(r),()=>q(n),(e,t)=>{t(e,{})}),Y(e,r)}),Y(e,t)},se=N(()=>o()===`/docs`);Z(S,e=>{$.error&&$.stories.length===0?e(C):q(ee)?e(w,1):q(te)?e(T,2):q(re)?e(ne,3):q(ae)?e(ie,4):q(se)&&e(oe,5)}),A(x),A(l);var ce=B(l,2);Lr(ce,21,()=>$.toasts,e=>e.id,(e,t)=>{var n=ra(),r=z(n,!0);A(n),V(()=>{Xr(n,1,`toast ${q(t).kind??``}`,`svelte-sgl18p`),X(r,q(t).message)}),mr(`click`,n,()=>yi(q(t).id)),Y(e,n)}),A(ce),V(()=>{X(p,q(s)),Xr(y,1,`status ${$.connected?`connected`:`disconnected`}`),X(b,$.connected?`● live`:`○ offline`)}),Y(e,c),Ue()}hr([`click`]),wr(aa,{target:document.getElementById(`app`)});export{L as C,He as D,Ue as E,Ne as O,Jt as S,N as T,V as _,Xr as a,nn as b,Nr as c,Y as d,Cr as f,q as g,mr as h,Qr as i,A as k,Z as l,hr as m,ui as n,Ur as o,J as p,Q as r,Lr as s,$ as t,X as u,_n as v,I as w,B as x,z as y};
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
http-equiv="Content-Security-Policy"
|
|
9
9
|
content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self';"
|
|
10
10
|
/>
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-BsBEjSWn.js"></script>
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Bfa1Brzb.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<div id="app"></div>
|
|
@@ -59,6 +59,7 @@
|
|
|
59
59
|
if (!id) return;
|
|
60
60
|
const story = store.stories.find((s) => s.id === id);
|
|
61
61
|
if (!story || story.status === targetStatus) return;
|
|
62
|
+
if (story._writable === false) { announceReadOnly(story.id); return; }
|
|
62
63
|
const body = { status: targetStatus };
|
|
63
64
|
if (targetStatus === 'blocked') {
|
|
64
65
|
const reason = await promptDialog.prompt('Blocked reason?');
|
|
@@ -168,6 +169,11 @@
|
|
|
168
169
|
}
|
|
169
170
|
|
|
170
171
|
async function moveCard(card, targetStatus) {
|
|
172
|
+
if (card._writable === false) {
|
|
173
|
+
announceReadOnly(card.id);
|
|
174
|
+
closeMoveMenu();
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
171
177
|
const body = { status: targetStatus };
|
|
172
178
|
if (targetStatus === 'blocked') {
|
|
173
179
|
const reason = await promptDialog.prompt('Blocked reason?');
|
|
@@ -192,6 +198,12 @@
|
|
|
192
198
|
setTimeout(() => liveRegion = '', 2000);
|
|
193
199
|
}
|
|
194
200
|
|
|
201
|
+
/** Story issue de .bmad/sprint-status.yaml : statut non modifiable depuis le board. */
|
|
202
|
+
function announceReadOnly(cardId) {
|
|
203
|
+
liveRegion = `Card ${cardId} is read-only (managed by .bmad/sprint-status.yaml — use team:/qa: commands)`;
|
|
204
|
+
setTimeout(() => liveRegion = '', 3000);
|
|
205
|
+
}
|
|
206
|
+
|
|
195
207
|
function announceCardDetails(card) {
|
|
196
208
|
liveRegion = `Card ${card.id}: ${card.title}. Status: ${card.status}. Priority: ${card.priority}. ${card.story_points} story points.`;
|
|
197
209
|
setTimeout(() => liveRegion = '', 3000);
|
|
@@ -237,9 +249,10 @@
|
|
|
237
249
|
{@const tdd = tddBadge(s.tdd_phase)}
|
|
238
250
|
<li
|
|
239
251
|
class="card"
|
|
240
|
-
|
|
252
|
+
class:read-only={s._writable === false}
|
|
253
|
+
draggable={s._writable !== false}
|
|
241
254
|
ondragstart={(e) => onDragStart(e, s.id)}
|
|
242
|
-
aria-label="{s.id} {s.title}"
|
|
255
|
+
aria-label="{s.id} {s.title}{s._writable === false ? ' (lecture seule)' : ''}"
|
|
243
256
|
data-card-id={s.id}
|
|
244
257
|
tabindex="0"
|
|
245
258
|
role="listitem"
|
|
@@ -247,6 +260,9 @@
|
|
|
247
260
|
>
|
|
248
261
|
<div class="card-top">
|
|
249
262
|
<span class="id">{s.id}</span>
|
|
263
|
+
{#if s._writable === false}
|
|
264
|
+
<span class="readonly" aria-label="Lecture seule — gérée par .bmad/sprint-status.yaml" role="img">🔒</span>
|
|
265
|
+
{/if}
|
|
250
266
|
<span class="priority" style="color: {priorityColor(s.priority)}">{s.priority}</span>
|
|
251
267
|
<span class="points">{s.story_points}p</span>
|
|
252
268
|
{#if tdd}
|
|
@@ -402,6 +418,10 @@
|
|
|
402
418
|
box-shadow: var(--shadow);
|
|
403
419
|
}
|
|
404
420
|
.card:active { cursor: grabbing; }
|
|
421
|
+
/* Story issue de .bmad/sprint-status.yaml : non déplaçable depuis le board */
|
|
422
|
+
.card.read-only { cursor: default; opacity: 0.85; }
|
|
423
|
+
.card.read-only:active { cursor: default; }
|
|
424
|
+
.card-top .readonly { font-size: 12px; }
|
|
405
425
|
/* Focus visible explicite (WCAG 2.2 SC 2.4.11) */
|
|
406
426
|
.card:focus,
|
|
407
427
|
.card:focus-visible {
|
package/cli/kanban/server/app.js
CHANGED
|
@@ -76,7 +76,18 @@ export function createApp({ repository, port, readonly = false, eventBus = null,
|
|
|
76
76
|
const id = c.req.param('id');
|
|
77
77
|
const filepath = repository.getStoryFile(id);
|
|
78
78
|
const story = repository.getStory(id);
|
|
79
|
-
if (!story
|
|
79
|
+
if (!story) return c.json({ error: 'not_found' }, 404);
|
|
80
|
+
// YAML-only story (BMAD v6 single-writer): no markdown file to rewrite.
|
|
81
|
+
if (!filepath) {
|
|
82
|
+
return c.json(
|
|
83
|
+
{
|
|
84
|
+
error: 'read_only_source',
|
|
85
|
+
reason:
|
|
86
|
+
'story gérée par .bmad/sprint-status.yaml (BMAD v6) ; utilisez les commandes team:/qa: pour changer le statut',
|
|
87
|
+
},
|
|
88
|
+
409
|
|
89
|
+
);
|
|
90
|
+
}
|
|
80
91
|
|
|
81
92
|
let body;
|
|
82
93
|
try {
|
|
@@ -2,6 +2,7 @@ import path from 'node:path';
|
|
|
2
2
|
import { readFile } from 'node:fs/promises';
|
|
3
3
|
import { scan, groupByCategory } from './file-scanner.js';
|
|
4
4
|
import { parseAndValidate } from './frontmatter.js';
|
|
5
|
+
import { loadSprintStatus } from './sprint-cache.js';
|
|
5
6
|
import { StoryFrontmatterSchema, EpicFrontmatterSchema, TaskFrontmatterSchema } from '../../shared/schemas.js';
|
|
6
7
|
|
|
7
8
|
/**
|
|
@@ -75,6 +76,57 @@ export class Repository {
|
|
|
75
76
|
if (f.category === 'sprint-goal') s.goalPath = f.path;
|
|
76
77
|
this.sprints.set(f.sprintId, s);
|
|
77
78
|
}
|
|
79
|
+
|
|
80
|
+
// BMAD v6 single-writer track stores stories only in .bmad/sprint-status.yaml
|
|
81
|
+
// (no individual markdown files). Surface them so the board isn't empty.
|
|
82
|
+
await this.#ingestSprintStatusStories();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Overlay stories declared in <projectRoot>/.bmad/sprint-status.yaml that have
|
|
87
|
+
* no backing markdown file. Markdown-backed stories (already in this.stories)
|
|
88
|
+
* always win — the YAML entry is ignored for a colliding id so there is no
|
|
89
|
+
* double source of truth. Synthetic stories are read-only (path === null).
|
|
90
|
+
*/
|
|
91
|
+
async #ingestSprintStatusStories() {
|
|
92
|
+
const projectRoot = path.dirname(this.rootDir);
|
|
93
|
+
let ss;
|
|
94
|
+
try {
|
|
95
|
+
ss = await loadSprintStatus(projectRoot);
|
|
96
|
+
} catch {
|
|
97
|
+
// A broken sprint-status.yaml must not break the whole board scan.
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (!ss || ss._invalid || !ss.stories) return;
|
|
101
|
+
|
|
102
|
+
const sprintId = ss.metadata?.sprint_id ?? null;
|
|
103
|
+
const epicFromMeta = ss.metadata?.epic ?? null;
|
|
104
|
+
|
|
105
|
+
for (const [id, s] of Object.entries(ss.stories)) {
|
|
106
|
+
if (this.stories.has(id)) continue; // markdown-backed story wins
|
|
107
|
+
this.stories.set(id, {
|
|
108
|
+
path: null, // no backing file -> read-only
|
|
109
|
+
mtime: 0,
|
|
110
|
+
ok: true,
|
|
111
|
+
source: 'sprint-status',
|
|
112
|
+
data: {
|
|
113
|
+
id,
|
|
114
|
+
title: s.title ?? id,
|
|
115
|
+
status: s.status,
|
|
116
|
+
previous_status: s.previous_status ?? '',
|
|
117
|
+
assigned_to: s.assigned_to ?? '',
|
|
118
|
+
tdd_phase: s.tdd_phase ?? '',
|
|
119
|
+
story_points: s.story_points ?? 0,
|
|
120
|
+
epic_id: s.epic_id || epicFromMeta || null,
|
|
121
|
+
// BMAD priorities are P0..P3 (outside the must/should/could/wont enum),
|
|
122
|
+
// so we don't map them; the board just needs a valid default.
|
|
123
|
+
priority: 'should',
|
|
124
|
+
sprint_id: sprintId,
|
|
125
|
+
tasks: s.tasks ?? { total: 0, completed: 0, list: [] },
|
|
126
|
+
dependencies: [],
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
}
|
|
78
130
|
}
|
|
79
131
|
|
|
80
132
|
listStories({ sprintId, status, epicId } = {}) {
|
|
@@ -85,7 +137,7 @@ export class Repository {
|
|
|
85
137
|
if (sprintId && d.sprint_id !== sprintId) continue;
|
|
86
138
|
if (status && d.status !== status) continue;
|
|
87
139
|
if (epicId && d.epic_id !== epicId) continue;
|
|
88
|
-
out.push({ ...d, _mtime: entry.mtime });
|
|
140
|
+
out.push({ ...d, _mtime: entry.mtime, _source: entry.source ?? 'markdown', _writable: entry.path !== null });
|
|
89
141
|
}
|
|
90
142
|
return out.sort((a, b) => a.id.localeCompare(b.id));
|
|
91
143
|
}
|
|
@@ -97,7 +149,7 @@ export class Repository {
|
|
|
97
149
|
getStory(id) {
|
|
98
150
|
const entry = this.stories.get(id);
|
|
99
151
|
if (!entry || !entry.ok) return null;
|
|
100
|
-
return { ...entry.data, _mtime: entry.mtime };
|
|
152
|
+
return { ...entry.data, _mtime: entry.mtime, _source: entry.source ?? 'markdown', _writable: entry.path !== null };
|
|
101
153
|
}
|
|
102
154
|
|
|
103
155
|
getStoryFile(id) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@the-bearded-bear/claude-craft",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.11.0",
|
|
4
4
|
"description": "A comprehensive framework for AI-assisted development with Claude Code. Install standardized rules, agents, and commands for your projects.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "cli/index.js",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#fafafa;--bg-elev:#fff;--bg-sidebar:#f3f3f5;--fg:#1a1a1a;--fg-dim:#595f6a;--border:#e4e4e7;--accent:#7c3aed;--accent-fg:#fff;--danger:#dc2626;--warn:#b45309;--ok:#15803d;--info:#0369a1;--badge-fg:#fff;--shadow:0 1px 2px #0000000d;--radius:6px;--font:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", monospace}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0f0f11;--bg-elev:#1a1a1d;--bg-sidebar:#141417;--fg:#f4f4f5;--fg-dim:#a1a1aa;--border:#27272a;--accent:#7c3aed;--danger:#f87171;--warn:#fbbf24;--ok:#4ade80;--info:#38bdf8;--badge-fg:#1a1a1d;--shadow:0 1px 2px #0000004d}}*{box-sizing:border-box}html,body,#app{background:var(--bg);height:100%;color:var(--fg);font-family:var(--font);margin:0;padding:0;font-size:14px;line-height:1.45}button,input,select{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none}.app-shell{grid-template:"sidebar topbar"48px"sidebar main"1fr/240px 1fr;height:100vh;display:grid}.sidebar{background:var(--bg-sidebar);border-right:1px solid var(--border);grid-area:sidebar;padding:16px 12px;overflow-y:auto}.sidebar h1{color:var(--fg-dim);letter-spacing:.04em;text-transform:uppercase;margin:0 0 12px;font-size:13px;font-weight:700}.nav{flex-direction:column;gap:2px;margin-bottom:20px;display:flex}.nav a{border-radius:var(--radius);color:var(--fg);padding:6px 10px;font-weight:500}.nav a:hover{background:var(--border)}.nav a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius)}.nav a[aria-current=page]{background:var(--accent);color:var(--accent-fg)}.topbar{background:var(--bg-elev);border-bottom:1px solid var(--border);grid-area:topbar;align-items:center;gap:16px;padding:0 20px;display:flex}.topbar .title{flex:1;font-weight:600}.topbar .status{color:var(--fg-dim);font-size:12px;font-family:var(--mono)}.topbar .status.connected{color:var(--ok)}.topbar .status.disconnected{color:var(--danger)}.main{grid-area:main;padding:20px;overflow:auto}.empty{text-align:center;color:var(--fg-dim);padding:80px 20px}.toast-layer{z-index:1000;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.toast{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);max-width:360px;padding:10px 14px}.toast.error{border-left:3px solid var(--danger)}.toast.success{border-left:3px solid var(--ok)}.toast.info{border-left:3px solid var(--info)}dialog.svelte-e1h34p{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);min-width:320px;color:var(--fg);padding:24px;box-shadow:0 8px 24px #0006}dialog.svelte-e1h34p::backdrop{background:#0009}.dialog-title.svelte-e1h34p{margin:0 0 14px;font-size:16px;font-weight:600}.dialog-input.svelte-e1h34p{box-sizing:border-box;background:var(--bg-sidebar);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--fg);margin-bottom:16px;padding:8px 10px;font-size:14px;display:block}.dialog-input.svelte-e1h34p:focus{outline:2px solid var(--accent);outline-offset:1px}.dialog-actions.svelte-e1h34p{justify-content:flex-end;gap:8px;display:flex}.btn-cancel.svelte-e1h34p,.btn-confirm.svelte-e1h34p{border-radius:var(--radius);cursor:pointer;border:1px solid var(--border);padding:8px 16px;font-size:14px}.btn-cancel.svelte-e1h34p{background:var(--bg-sidebar);color:var(--fg-dim)}.btn-cancel.svelte-e1h34p:hover,.btn-cancel.svelte-e1h34p:focus{background:var(--border);outline:2px solid var(--accent);outline-offset:1px}.btn-confirm.svelte-e1h34p{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.btn-confirm.svelte-e1h34p:hover,.btn-confirm.svelte-e1h34p:focus{opacity:.9;outline:2px solid var(--accent);outline-offset:1px}.board.svelte-1l5g889{gap:12px;min-height:100%;display:flex;overflow-x:auto}.column.svelte-1l5g889{background:var(--bg-sidebar);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;flex:0 0 280px;display:flex}.column-header.svelte-1l5g889{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.column-label.svelte-1l5g889{text-transform:uppercase;letter-spacing:.04em;color:var(--fg-dim);margin:0;font-size:12px;font-weight:600}.count.svelte-1l5g889{background:var(--bg-elev);border-radius:10px;padding:2px 8px;font-size:11px}.column-body.svelte-1l5g889{flex-direction:column;gap:8px;min-height:120px;margin:0;padding:8px;list-style:none;display:flex}.card.svelte-1l5g889{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);cursor:grab;box-shadow:var(--shadow);padding:10px}.card.svelte-1l5g889:active{cursor:grabbing}.card.svelte-1l5g889:focus,.card.svelte-1l5g889:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.card-top.svelte-1l5g889{align-items:center;gap:6px;margin-bottom:4px;font-size:11px;display:flex}.card-top.svelte-1l5g889 .id:where(.svelte-1l5g889){font-family:var(--mono);font-weight:600}.card-top.svelte-1l5g889 .priority:where(.svelte-1l5g889){text-transform:uppercase;font-weight:600}.card-top.svelte-1l5g889 .points:where(.svelte-1l5g889){font-family:var(--mono);color:var(--fg-dim);margin-left:auto}.card-top.svelte-1l5g889 .tdd:where(.svelte-1l5g889){font-size:14px}.title.svelte-1l5g889{margin-bottom:4px;font-weight:500}.meta.svelte-1l5g889{color:var(--fg-dim);font-size:11px;font-family:var(--mono);gap:6px;margin-bottom:6px;display:flex}.progress.svelte-1l5g889{background:var(--bg-sidebar);border-radius:3px;height:6px;margin-bottom:6px;position:relative;overflow:hidden}.bar.svelte-1l5g889{background:var(--accent);height:100%}.progress-label.svelte-1l5g889{color:var(--fg-dim);font-size:10px;position:absolute;top:-14px;right:0}.card-foot.svelte-1l5g889{align-items:center;gap:6px;font-size:11px;display:flex}.assignee.svelte-1l5g889{background:var(--accent);width:20px;height:20px;color:var(--accent-fg);border-radius:50%;justify-content:center;align-items:center;font-size:10px;font-weight:600;display:inline-flex}.blocked.svelte-1l5g889{color:var(--danger);margin-left:auto;font-weight:600}.sr-only.svelte-1l5g889{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.keyboard-help-visible.svelte-1l5g889{z-index:50;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);color:var(--fg-dim);box-shadow:var(--shadow);font-size:11px;position:fixed;bottom:12px;left:50%;transform:translate(-50%)}.keyboard-help-visible.svelte-1l5g889 summary:where(.svelte-1l5g889){cursor:pointer;-webkit-user-select:none;user-select:none;padding:4px 10px;list-style:none}.keyboard-help-visible.svelte-1l5g889 summary:where(.svelte-1l5g889):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.keyboard-help-content.svelte-1l5g889{white-space:nowrap;padding:6px 10px 8px}kbd.svelte-1l5g889{font-size:10px;font-family:var(--mono);background:var(--bg-sidebar);border:1px solid var(--border);border-radius:3px;padding:1px 4px;display:inline-block}.move-menu-dialog.svelte-1l5g889{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);min-width:300px;color:var(--fg);padding:0;box-shadow:0 8px 24px #0000004d}.move-menu-dialog.svelte-1l5g889::backdrop{background:#00000080}.move-menu-content.svelte-1l5g889{padding:20px}.move-menu-content.svelte-1l5g889 h3:where(.svelte-1l5g889){margin:0 0 12px;font-size:16px}.move-menu-content.svelte-1l5g889 button:where(.svelte-1l5g889){background:var(--bg-sidebar);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--fg);cursor:pointer;text-align:left;margin:4px 0;padding:10px;font-size:14px;display:block}.move-menu-content.svelte-1l5g889 button:where(.svelte-1l5g889):hover,.move-menu-content.svelte-1l5g889 button:where(.svelte-1l5g889):focus-visible{background:var(--accent);color:var(--accent-fg);outline:2px solid var(--accent);outline-offset:1px}.backlog.svelte-1ar8rvt{flex-direction:column;gap:12px;max-width:1200px;margin:0 auto;display:flex}.epic-card.svelte-1ar8rvt{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}.epic-card.orphans.svelte-1ar8rvt{border-left:3px solid var(--warn)}.epic-header.svelte-1ar8rvt{align-items:center;gap:10px;margin-bottom:8px;display:flex}.expand-btn.svelte-1ar8rvt{cursor:pointer;color:var(--fg-dim);background:0 0;border:none;border-radius:3px;padding:4px 6px;font-size:14px}.expand-btn.svelte-1ar8rvt:hover{background:var(--border)}.expand-btn.svelte-1ar8rvt:focus{outline:2px solid var(--accent);outline-offset:1px}.epic-id.svelte-1ar8rvt{font-family:var(--mono);color:var(--accent);font-size:12px;font-weight:600}.epic-title.svelte-1ar8rvt{flex:1;font-weight:600}.business-value.svelte-1ar8rvt{text-transform:uppercase;color:var(--accent-fg);border-radius:10px;padding:3px 8px;font-size:10px;font-weight:700}.story-count.svelte-1ar8rvt{color:var(--fg-dim);font-size:12px;font-family:var(--mono)}.total-points.svelte-1ar8rvt{color:var(--accent);font-size:12px;font-weight:600;font-family:var(--mono)}.epic-status.svelte-1ar8rvt{margin-bottom:8px}.status-badge.svelte-1ar8rvt{text-transform:uppercase;font-size:11px;font-weight:600}.epic-progress.svelte-1ar8rvt{align-items:center;gap:10px;margin-bottom:12px;display:flex}.progress-bar-bg.svelte-1ar8rvt{background:var(--bg-sidebar);border-radius:4px;flex:1;height:8px;overflow:hidden}.progress-bar.svelte-1ar8rvt{background:var(--accent);height:100%;transition:width .3s}.progress-text.svelte-1ar8rvt{color:var(--fg-dim);font-size:11px;font-family:var(--mono);text-align:right;min-width:80px}.stories-list.svelte-1ar8rvt{border-top:1px solid var(--border);flex-direction:column;gap:6px;margin-top:12px;padding-top:12px;display:flex}.story-item.svelte-1ar8rvt{background:var(--bg-sidebar);border-radius:var(--radius);align-items:center;gap:8px;padding:6px 10px;font-size:13px;display:flex}.story-id.svelte-1ar8rvt{font-family:var(--mono);color:var(--accent);font-size:11px;font-weight:600}.story-title.svelte-1ar8rvt{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.story-status.svelte-1ar8rvt{text-transform:uppercase;font-size:10px;font-weight:600}.story-points.svelte-1ar8rvt{font-family:var(--mono);color:var(--fg-dim);font-size:11px}.story-tdd.svelte-1ar8rvt{font-size:13px}.sidebar-section-title.svelte-sgl18p{color:var(--fg-dim);letter-spacing:.04em;text-transform:uppercase;margin:16px 0 8px;font-size:13px;font-weight:700}.skip-link.svelte-sgl18p{background:var(--accent,#7c3aed);color:#fff;z-index:9999;border-radius:4px;width:1px;height:1px;padding:8px 16px;font-size:14px;font-weight:600;text-decoration:none;position:absolute;top:auto;left:-9999px;overflow:hidden}.skip-link.svelte-sgl18p:focus{width:auto;height:auto;position:absolute;top:8px;left:8px;overflow:visible}
|