scrum-skills 0.2.8 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/assets/board/200.html +1 -1
- package/assets/board/404.html +1 -1
- package/assets/board/_nuxt/{CgsIgLAl.js → 1eqboJxR.js} +1 -1
- package/assets/board/_nuxt/{D2y4OEzn.js → 2K7ag6ES.js} +1 -1
- package/assets/board/_nuxt/{Cdq1mu9k.js → BDK2Hj7B.js} +1 -1
- package/assets/board/_nuxt/{BTUFQZje.js → BDcnzXHq.js} +1 -1
- package/assets/board/_nuxt/{CcuuI9Sq.js → BodFvto3.js} +1 -1
- package/assets/board/_nuxt/{DiNoFn-l.js → BpWeHLuN.js} +1 -1
- package/assets/board/_nuxt/{CCu-GrP6.js → C40iTe-x.js} +1 -1
- package/assets/board/_nuxt/{CdUK5KDt.js → CGI_ZV79.js} +1 -1
- package/assets/board/_nuxt/{C0MJr2p5.js → CJMBJQuf.js} +1 -1
- package/assets/board/_nuxt/{C71fhlb8.js → CMUi2-Lj.js} +1 -1
- package/assets/board/_nuxt/{D_ozsr87.js → COf6E6h4.js} +1 -1
- package/assets/board/_nuxt/{CbWqy_D-.js → CPCUMJnF.js} +1 -1
- package/assets/board/_nuxt/{BPk90EtV.js → CPcKlmSm.js} +1 -1
- package/assets/board/_nuxt/{B6vVYM-p.js → CSSb154I.js} +1 -1
- package/assets/board/_nuxt/{Bx4QbBZW.js → CvLiA4_O.js} +1 -1
- package/assets/board/_nuxt/{DZyjheFK.js → Cvs12oA0.js} +1 -1
- package/assets/board/_nuxt/{_Cm6pyB6.js → CyEXFe3V.js} +1 -1
- package/assets/board/_nuxt/{B2IHsbSE.js → D2FhHl1o.js} +1 -1
- package/assets/board/_nuxt/{CEL9RA0c.js → D75vbfSb.js} +1 -1
- package/assets/board/_nuxt/{C_TkjLEl.js → DEfLc7p3.js} +1 -1
- package/assets/board/_nuxt/{Dx9JzdjR.js → DRPlYvb3.js} +1 -1
- package/assets/board/_nuxt/{D-o97j5o.js → DRlQgul3.js} +1 -1
- package/assets/board/_nuxt/{CJztj5jW.js → D_S6N7_b.js} +1 -1
- package/assets/board/_nuxt/{SHOVXANq.js → DfR3IZN_.js} +1 -1
- package/assets/board/_nuxt/{DLGnIg-4.js → DhuleNnm.js} +1 -1
- package/assets/board/_nuxt/{B8DfudjI.js → DnDHGSYI.js} +1 -1
- package/assets/board/_nuxt/{DzYai7fG.js → Dtsa-1NS.js} +1 -1
- package/assets/board/_nuxt/{k704SI9z.js → Dx1wcYFo.js} +1 -1
- package/assets/board/_nuxt/{B6Iz-Z6W.js → EYTShbt4.js} +1 -1
- package/assets/board/_nuxt/{a79OLqPB.js → P9x67aq2.js} +1 -1
- package/assets/board/_nuxt/S08nFESZ.js +3 -0
- package/assets/board/_nuxt/{SW1IUsvK.js → assMu_Wn.js} +1 -1
- package/assets/board/_nuxt/builds/latest.json +1 -1
- package/assets/board/_nuxt/builds/meta/4a212bd2-438f-4b26-b8f3-57db47ca0799.json +1 -0
- package/assets/board/_nuxt/last-change.1Su4GrCN.css +1 -0
- package/assets/board/_nuxt/{D7I69gaq.js → pIF8vEtK.js} +3 -3
- package/assets/board/_nuxt/{BO6qoy1z.js → rlePnzpc.js} +1 -1
- package/assets/board/_nuxt/{Yl0W9gdf.js → vwxaNGfc.js} +1 -1
- package/assets/board/burndown/index.html +1 -1
- package/assets/board/epics/index.html +1 -1
- package/assets/board/gantt/index.html +1 -1
- package/assets/board/index.html +1 -1
- package/assets/board/last-change/index.html +1 -1
- package/assets/board/milestones/index.html +1 -1
- package/package.json +1 -1
- package/tools/git-commit.mjs +216 -0
- package/tools/projects.mjs +16 -1
- package/assets/board/_nuxt/Dchb4IZl.js +0 -2
- package/assets/board/_nuxt/builds/meta/db579fb7-3d7f-417a-ab2b-7c3e33c91a0b.json +0 -1
- package/assets/board/_nuxt/last-change.D5qqZdbS.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,E as t,On as n,Zn as r,_ as i,b as a,bt as o,er as s,g as c,k as l,mt as u,o as d,qt as f,tr as p,un as m,v as h,vn as g,y as _}from"./DZo3dYLJ.js";import{C as v,w as y}from"./51OWHj8c.js";import{t as ee}from"./CJ2mz0WY.js";import{t as te}from"./BTUFQZje.js";import{t as ne}from"./BO6qoy1z.js";import{O as b,a as x,i as S,n as re,o as C,r as ie,s as w}from"#entry";var ae={class:`stats`},oe={class:`stat-top`},se={class:`stat-label`},ce={class:`stat-pill`},le={class:`stat-value`},ue={class:`stat-sub`},de={class:`stat-delta`},fe={class:`split`},pe={class:`spark`},me=[`title`],he={class:`stat-top`},ge={class:`stat-label`},_e={class:`stat-pill`},ve={class:`stat-value`},ye={class:`stat-sub`},be={class:`stat-rows`},xe={class:`stat-row`},Se={class:`v`},Ce={class:`stat-row`},we={class:`v`},Te={class:`stat-row`},Ee={class:`v`},De={class:`stat-row`},Oe={class:`v`},ke={class:`stat-foot`},Ae={class:`row`},je={class:`bar`},Me={class:`stat-top`},Ne={class:`stat-label`},Pe={class:`stat-value`},Fe={class:`unit`},Ie={class:`stat-sub`},Le={class:`stat-rows`},Re={class:`stat-row`},ze={class:`v`},Be={class:`stat-row`},Ve={class:`v`},He={class:`stat-row`},Ue={class:`v`},We={class:`stat-row`},Ge={class:`v`},Ke={class:`stat-foot`},qe={class:`row`},Je={class:`bar lilac`},Ye={class:`stat-top`},Xe={class:`stat-label`},Ze={class:`stat-value`},Qe={class:`stat-rows`},$e={class:`stat-row`},et={class:`v`},tt={class:`stat-row`},nt={class:`v`},rt={class:`stat-row`},it={class:`v`},at={class:`stat-row`},ot={class:`v`},st={class:`stat-foot`},ct={class:`row`},lt={class:`bar on-dark`},ut={class:`card tb`},dt={class:`tb-l`},ft={class:`tb-r`},pt={class:`mono`},mt={class:`mono`},ht={key:0,class:`card act-error`},gt={class:`act-error-txt`},_t={class:`card board`},vt={class:`lanes`},yt=[`title`,`onClick`],bt={class:`stub-name`},xt={class:`stub-ct`},St={class:`stub-pts`},Ct={class:`lane-hd`},wt={class:`lane-ct`},Tt={class:`lane-pts`},Et=[`aria-expanded`,`title`,`onClick`],Dt={class:`lane-bd`},Ot={class:`sc-id mono`},kt={class:`sc-c-pts`},At=[`title`],jt={class:`sc-top`},Mt={class:`sc-id mono`},Nt={class:`dim sc-wsjf`},Pt=[`title`],Ft={class:`sc-title`},It={class:`sc-meta`},Lt={class:`sc-tags`},Rt={class:`tag tag-ghost`},zt={key:0,class:`tag tag-neutral mono`},Bt=[`title`],Vt=[`title`],Ht={class:`bar slim sc-bar`},Ut={class:`sc-ask`},Wt=[`aria-label`,`onClick`,`onKeydown`],Gt=[`aria-label`,`onClick`,`onKeydown`],Kt=[`aria-label`,`onClick`,`onKeydown`],qt=[`aria-label`,`onClick`,`onKeydown`],Jt={key:0,class:`lane-empty`},T=`board.foldedLanes.v1`,E=S(l({__name:`index`,setup(l){let{stories:S,epics:E,states:D,progress:O,milestoneOfStory:Yt,pointsOf:Xt,milestones:Zt,refresh:Qt,STATE_LABEL:k,STATE_SHORT:$t,STATE_DOT:A,TYPE_LABEL:en,TYPE_COLOR:tn,TYPE_ICON:nn,PRIORITY_COLOR:rn,SCOPE_LABEL:an,wsjf:j,blockedStories:on}=w(),M=g(`all`),N=g(`all`),P=g(`rank`),sn=c(()=>[{label:`全部史诗`,value:`all`,icon:`i-lucide-layers`},...E.value.map(e=>({label:`${e.id} ${e.title}`,value:e.id,icon:`i-lucide-layer-group`}))]),cn=c(()=>[{label:`全部里程碑`,value:`all`,icon:`i-lucide-flag`},...Zt.value.map(e=>({label:`${e.id} ${e.title}`,value:e.id,icon:e.kind===`mvp`?`i-lucide-star`:`i-lucide-map-pin`}))]),ln=[{label:`默认顺序`,value:`rank`,icon:`i-lucide-list-ordered`},{label:`按优先级 P0 → P3`,value:`priority`,icon:`i-lucide-alert-circle`},{label:`按 WSJF 价值/点数`,value:`wsjf`,icon:`i-lucide-scale`},{label:`按点数`,value:`points`,icon:`i-lucide-signal`}],un={P0:0,P1:1,P2:2,P3:3},F=[`done`,`cancelled`],I=[`done`,`cancelled`],L=g((()=>{try{if(typeof localStorage>`u`)return[...I];let e=localStorage.getItem(T);if(!e)return[...I];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>F.includes(e)):[...I]}catch{return[...I]}})()),R=e=>F.includes(e),z=e=>L.value.includes(e),B=e=>F.includes(e),dn=e=>{if(R(e)){L.value=z(e)?L.value.filter(t=>t!==e):[...L.value,e];try{localStorage.setItem(T,JSON.stringify(L.value))}catch{}}},V=c(()=>{let e=S.value.filter(e=>!(M.value!==`all`&&e.epicId!==M.value||N.value!==`all`&&!Yt(e.id).some(e=>e.id===N.value)));return P.value===`priority`?[...e].sort((e,t)=>(un[e.priority]??9)-(un[t.priority]??9)||j(t)-j(e)):P.value===`wsjf`?[...e].sort((e,t)=>j(t)-j(e)):P.value===`points`?[...e].sort((e,t)=>t.points-e.points):e}),H=e=>V.value.filter(t=>t.status===e),U=e=>Xt(H(e).map(e=>e.id)),W=c(()=>{let e=V.value,t=e.filter(e=>e.status===`done`),n=e.filter(e=>e.status===`in-progress`||e.status===`review`),r=e.filter(e=>e.status===`ready`||e.status===`draft`),i=e.filter(e=>e.status===`cancelled`),a=e.filter(e=>e.status!==`cancelled`),o=e.flatMap(e=>e.tasks??[]),s=e=>o.filter(t=>t.status===e).length;return{count:e.length,points:e.reduce((e,t)=>e+t.points,0),liveCount:a.length,livePoints:a.reduce((e,t)=>e+t.points,0),donePoints:t.reduce((e,t)=>e+t.points,0),done:t.length,running:n.length,idle:r.length,cancelled:i.length,cancelledPoints:i.reduce((e,t)=>e+t.points,0),tasks:o.length,tasksDone:s(`done`),taskRed:s(`red`),taskGreen:s(`green`),taskRefactor:s(`refactored`),taskTodo:s(`todo`),bugs:e.filter(e=>e.type===`bug`).length,debt:e.filter(e=>e.type===`debt`).length,scope:e.filter(e=>e.scopeChange).length}}),G=c(()=>W.value.livePoints?Math.round(W.value.donePoints/W.value.livePoints*100):0),fn=c(()=>W.value.liveCount?Math.round(W.value.livePoints/W.value.liveCount*10)/10:0),K=c(()=>W.value.tasks?Math.round(W.value.tasksDone/W.value.tasks*100):0),pn=c(()=>on.value.length+W.value.bugs),mn=c(()=>Math.max(1,...D.map(e=>H(e).length))),hn=e=>8+Math.round(H(e).length/mn.value*34),q=[`draft`,`ready`,`in-progress`,`review`,`done`],gn=e=>q[q.indexOf(e)+1]??null,_n=e=>q.indexOf(e)>0?q[q.indexOf(e)-1]:null,J=e=>(e.tasks??[]).filter(e=>e.status!==`done`).length,vn=e=>{let t=gn(e.status);return t?!(t===`done`&&J(e)>0):!1},yn=e=>{let t=gn(e.status);return t?t===`done`&&J(e)?`还有 ${J(e)} 个任务没完成,先做完再收尾`:`推进到「${k[t]}」`:`已经是最后一个状态`},bn=e=>_n(e.status)!==null,Y={content:`bg-[#1b1526]! text-white! ring-0 shadow-lg`},xn=g(``),X=g(``),Z=g(``),Q=g(``);async function $(e,t){if(!X.value&&(t!==`next`||vn(e))&&(t!==`prev`||bn(e))){X.value=e.id,Q.value=``;try{xn.value||=(await b(`/api/projects`)).token,await b(`/api/agile/story-status`,{method:`POST`,headers:{"x-project-token":xn.value},body:{id:e.id,action:t}}),Z.value=``,await Qt()}catch(t){Q.value=`${e.id}:${t?.data?.error??t?.message??`改状态失败`}`}finally{X.value=``}}}let Sn=c(()=>{if(M.value===`all`)return`全部史诗`;let e=E.value.find(e=>e.id===M.value);return e?e.title.slice(0,6):`全部史诗`}),Cn=e=>Yt(e).filter(e=>e.kind===`mvp`);return(c,l)=>{let g=ie,b=ne,S=te,w=re,T=ee;return u(),a(`div`,null,[i(`div`,ae,[i(`article`,{class:r([`stat`,(`cardToneClass`in c?c.cardToneClass:n(C))(0)])},[e(g,{tone:(`cardTone`in c?c.cardTone:n(x))(0)},null,8,[`tone`]),i(`div`,oe,[i(`span`,se,[e(b,{name:`i-lucide-gauge`,class:`size-3.5`}),l[7]||=t(`看板完成度`,-1)]),i(`span`,ce,p(n(Sn)),1)]),i(`div`,le,[t(p(n(G)),1),l[8]||=i(`span`,{class:`unit`},`%`,-1)]),i(`div`,ue,[i(`span`,de,[e(b,{name:`i-lucide-check`,class:`size-3`}),t(p(n(W).donePoints)+` 点`,1)]),t(` 已交付 · 共 `+p(n(W).livePoints)+` 点 `,1)]),i(`div`,fe,[i(`div`,null,[l[9]||=i(`span`,{class:`k`},`完成故事`,-1),i(`b`,null,[t(p(n(W).done),1),i(`small`,null,`/`+p(n(W).liveCount),1)])]),i(`div`,null,[l[11]||=i(`span`,{class:`k`},`剩余点`,-1),i(`b`,null,[t(p(n(W).livePoints-n(W).donePoints),1),l[10]||=i(`small`,null,`点`,-1)])])]),i(`div`,pe,[(u(!0),a(d,null,o(n(D),e=>(u(),a(`div`,{key:e,class:`spark-col`,title:`${n(k)[e]}:${H(e).length} 个`},[i(`div`,{class:r([`spark-bar`,{done:e===`done`,cancel:e===`cancelled`}]),style:s({height:hn(e)+`px`})},null,6),i(`span`,null,p(n($t)[e]),1)],8,me))),128))])],2),i(`article`,{class:r([`stat`,(`cardToneClass`in c?c.cardToneClass:n(C))(1)])},[e(g,{tone:(`cardTone`in c?c.cardTone:n(x))(1)},null,8,[`tone`]),i(`div`,he,[i(`span`,ge,[e(b,{name:`i-lucide-book-open`,class:`size-3.5`}),l[12]||=t(`故事`,-1)]),i(`span`,_e,p(Math.round(n(fn)))+` 点/个`,1)]),i(`div`,ve,[t(p(n(W).count),1),l[13]||=i(`span`,{class:`unit`},`个`,-1)]),i(`div`,ye,`共 `+p(n(W).livePoints)+` 点 · 任务 `+p(n(W).tasks)+` 个`,1),i(`div`,be,[i(`div`,xe,[l[14]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#6aa844`}}),t(`已完成`)],-1),i(`span`,Se,p(n(W).done),1)]),i(`div`,Ce,[l[15]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#3f7fd4`}}),t(`进行中`)],-1),i(`span`,we,p(n(W).running),1)]),i(`div`,Te,[l[16]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#b6bac1`}}),t(`未开始`)],-1),i(`span`,Ee,p(n(W).idle),1)]),i(`div`,De,[l[17]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#cf4759`}}),t(`已取消`)],-1),i(`span`,Oe,p(n(W).cancelled)+p(n(W).cancelledPoints?` · ${n(W).cancelledPoints} 点`:``),1)])]),i(`div`,ke,[i(`div`,Ae,[i(`span`,null,`任务完成 `+p(n(W).tasksDone)+`/`+p(n(W).tasks),1),i(`span`,null,p(n(K))+`%`,1)]),i(`div`,je,[i(`i`,{style:s({width:n(K)+`%`})},null,4)])])],2),i(`article`,{class:r([`stat`,(`cardToneClass`in c?c.cardToneClass:n(C))(2)])},[e(g,{tone:(`cardTone`in c?c.cardTone:n(x))(2)},null,8,[`tone`]),i(`div`,Me,[i(`span`,Ne,[e(b,{name:`i-lucide-list-checks`,class:`size-3.5`}),l[18]||=t(`TDD 任务`,-1)]),l[19]||=i(`span`,{class:`stat-pill`},`红 → 绿 → 重构`,-1)]),i(`div`,Pe,[t(p(n(W).tasksDone),1),i(`span`,Fe,`/ `+p(n(W).tasks)+` 项`,1)]),i(`div`,Ie,`已完成任务占 `+p(n(K))+`%`,1),i(`div`,Le,[i(`div`,Re,[l[20]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#cf4759`}}),t(`红(测试失败)`)],-1),i(`span`,ze,p(n(W).taskRed),1)]),i(`div`,Be,[l[21]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#6aa844`}}),t(`绿(测试通过)`)],-1),i(`span`,Ve,p(n(W).taskGreen),1)]),i(`div`,He,[l[22]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#6d4ff0`}}),t(`已重构`)],-1),i(`span`,Ue,p(n(W).taskRefactor),1)]),i(`div`,We,[l[23]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#b6bac1`}}),t(`待办`)],-1),i(`span`,Ge,p(n(W).taskTodo),1)])]),i(`div`,Ke,[i(`div`,qe,[i(`span`,null,`已完成 `+p(n(W).tasksDone)+`/`+p(n(W).tasks),1),i(`span`,null,p(n(K))+`%`,1)]),i(`div`,Je,[i(`i`,{style:s({width:n(K)+`%`})},null,4)])])],2),i(`article`,{class:r([`stat`,(`cardToneClass`in c?c.cardToneClass:n(C))(3)])},[e(g,{tone:(`cardTone`in c?c.cardTone:n(x))(3)},null,8,[`tone`]),i(`div`,Ye,[i(`span`,Xe,[e(b,{name:`i-lucide-shield-alert`,class:`size-3.5`}),l[24]||=t(`风险面`,-1)]),l[25]||=i(`span`,{class:`stat-pill`},`需处理`,-1)]),i(`div`,Ze,[t(p(n(pn)),1),l[26]||=i(`span`,{class:`unit`},`项`,-1)]),l[32]||=i(`div`,{class:`stat-sub`},`阻塞故事与缺陷合计`,-1),i(`div`,Qe,[i(`div`,$e,[l[27]||=i(`span`,{class:`k`},`阻塞故事`,-1),i(`span`,et,p(n(on).length),1)]),i(`div`,tt,[l[28]||=i(`span`,{class:`k`},`缺陷`,-1),i(`span`,nt,p(n(W).bugs),1)]),i(`div`,rt,[l[29]||=i(`span`,{class:`k`},`技术债`,-1),i(`span`,it,p(n(W).debt),1)]),i(`div`,at,[l[30]||=i(`span`,{class:`k`},`范围变更`,-1),i(`span`,ot,p(n(W).scope),1)])]),i(`div`,st,[i(`div`,ct,[l[31]||=i(`span`,null,`完成度`,-1),i(`span`,null,p(n(G))+`%`,1)]),i(`div`,lt,[i(`i`,{style:s({width:n(G)+`%`})},null,4)])])],2)]),i(`div`,ut,[i(`div`,dt,[l[33]||=i(`span`,{class:`lbl`},`筛选`,-1),e(S,{modelValue:n(M),"onUpdate:modelValue":l[0]||=e=>m(M)?M.value=e:null,items:n(sn),icon:`i-lucide-layers`,"aria-label":`按史诗筛选`},null,8,[`modelValue`,`items`]),e(S,{modelValue:n(N),"onUpdate:modelValue":l[1]||=e=>m(N)?N.value=e:null,items:n(cn),icon:`i-lucide-flag`,"aria-label":`按里程碑筛选`},null,8,[`modelValue`,`items`]),e(S,{modelValue:n(P),"onUpdate:modelValue":l[2]||=e=>m(P)?P.value=e:null,items:ln,icon:`i-lucide-arrow-up-down`,"aria-label":`排序方式`},null,8,[`modelValue`])]),i(`div`,ft,[i(`span`,pt,p(n(V).length),1),l[34]||=t(` 个故事 `,-1),l[35]||=i(`i`,{class:`sep`},null,-1),i(`span`,mt,p(n(Xt)(n(V).map(e=>e.id))),1),l[36]||=t(` 点 `,-1)])]),n(Q)?(u(),a(`div`,ht,[e(b,{name:`i-lucide-circle-alert`,class:`size-4`}),i(`span`,gt,p(n(Q)),1),i(`button`,{class:`btn btn-sm`,onClick:l[3]||=e=>Q.value=``},`知道了`)])):_(``,!0),i(`div`,_t,[i(`div`,vt,[(u(!0),a(d,null,o(n(D),c=>(u(),a(`section`,{key:c,class:r([`lane`,{folded:z(c)}])},[z(c)?(u(),a(`button`,{key:0,class:`lane-stub`,title:`展开${n(k)[c]}:${H(c).length} 个 · ${U(c)} 点`,onClick:e=>dn(c)},[i(`i`,{class:`lane-dot`,style:s({background:n(A)[c]})},null,4),i(`span`,bt,p(n(k)[c]),1),i(`span`,xt,p(H(c).length),1),i(`span`,St,p(U(c))+` 点`,1),e(b,{name:`i-lucide-chevrons-right`,class:`stub-ic`})],8,yt)):(u(),a(d,{key:1},[i(`header`,Ct,[i(`i`,{class:`lane-dot`,style:s({background:n(A)[c]})},null,4),i(`b`,null,p(n(k)[c]),1),i(`span`,wt,p(H(c).length),1),i(`span`,Tt,p(U(c))+` 点`,1),R(c)?(u(),a(`button`,{key:0,class:`lane-fold`,"aria-expanded":!z(c),title:`收起${n(k)[c]}`,onClick:e=>dn(c)},[e(b,{name:`i-lucide-chevron-left`,class:`size-3`})],8,Et)):_(``,!0)]),i(`div`,Dt,[(u(!0),a(d,null,o(H(c),m=>(u(),h(T,{key:m.id,to:`/story/${m.id}`,class:r([`scard`,{"scard-compact":B(c)}])},{default:f(()=>[B(c)?(u(),a(d,{key:0},[i(`span`,Ot,p(m.id),1),i(`span`,kt,p(m.points)+` 点`,1),i(`span`,{class:`sc-c-title`,title:m.title},p(m.title),9,At)],64)):(u(),a(d,{key:1},[i(`div`,jt,[i(`span`,Mt,p(m.id),1),i(`span`,{class:r([`tag`,`tag-${n(rn)[m.priority]}`])},p(m.priority),3),i(`span`,Nt,`WSJF `+p(n(j)(m)),1),m.blocked?(u(),a(`span`,{key:0,class:`tag tag-error tag-dot`,title:`阻塞中:${m.blocked.reason}(自 ${m.blocked.since})`},`阻塞`,8,Pt)):_(``,!0)]),i(`p`,Ft,p(m.title),1),i(`div`,It,[i(`span`,null,p(m.points)+` 点`,1),l[37]||=i(`span`,{class:`dim`},`·`,-1),i(`span`,null,`任务 `+p(n(O)(m).done)+`/`+p(n(O)(m).total),1)]),i(`div`,Lt,[i(`span`,{class:r([`tag`,`tag-${n(tn)[m.type]}`])},[e(b,{name:n(nn)[m.type],class:`size-3`},null,8,[`name`]),t(p(n(en)[m.type]),1)],2),i(`span`,Rt,p(m.epicId),1),m.sprintId?(u(),a(`span`,zt,p(m.sprintId),1)):_(``,!0),(u(!0),a(d,null,o(Cn(m.id),e=>(u(),a(`span`,{key:e.id,class:`tag tag-mint`,title:`${e.id} ${e.title} · ${e.criteria}`},`MVP`,8,Bt))),128)),m.scopeChange?(u(),a(`span`,{key:1,class:`tag tag-info`,title:`${n(an)[m.scopeChange.kind]}(${m.scopeChange.at}):${m.scopeChange.reason}`},p(n(an)[m.scopeChange.kind]),9,Vt)):_(``,!0)]),i(`div`,Ht,[i(`i`,{style:s({width:n(O)(m).pct+`%`})},null,4)]),i(`div`,{class:`sc-actions`,style:{backdropFilter:`blur(10px) saturate(125%)`},onMouseleave:l[6]||=e=>Z.value=``},[n(Z)===m.id?(u(),a(d,{key:0},[i(`span`,Ut,`取消 `+p(m.id)+`?`,1),i(`span`,{class:`sc-act danger`,role:`button`,tabindex:`0`,"data-act":`cancel-confirm`,"aria-label":`确认取消 ${m.id}`,onClick:y(e=>$(m,`cancel`),[`stop`,`prevent`]),onKeydown:v(y(e=>$(m,`cancel`),[`prevent`]),[`enter`])},`确认`,40,Wt),i(`span`,{class:`sc-act`,role:`button`,tabindex:`0`,"data-act":`cancel-abort`,onClick:l[4]||=y(e=>Z.value=``,[`stop`,`prevent`]),onKeydown:l[5]||=v(y(e=>Z.value=``,[`prevent`]),[`enter`])},`返回`,32)],64)):(u(),a(d,{key:1},[bn(m)?(u(),h(w,{key:0,text:`退回「${n(k)[_n(m.status)??``]}」`,"delay-duration":150,ui:Y},{default:f(()=>[i(`span`,{class:`sc-act`,role:`button`,tabindex:`0`,"data-act":`prev`,"aria-label":`退回 ${m.id}`,onClick:y(e=>$(m,`prev`),[`stop`,`prevent`]),onKeydown:v(y(e=>$(m,`prev`),[`prevent`]),[`enter`])},[e(b,{name:`i-lucide-arrow-left`,class:`size-3.5`})],40,Gt)]),_:2},1032,[`text`])):_(``,!0),e(w,{text:yn(m),"delay-duration":150,ui:Y},{default:f(()=>[i(`span`,{class:r([`sc-act`,{off:!vn(m)}]),role:`button`,tabindex:`0`,"data-act":`next`,"aria-label":`推进 ${m.id}`,onClick:y(e=>$(m,`next`),[`stop`,`prevent`]),onKeydown:v(y(e=>$(m,`next`),[`prevent`]),[`enter`])},[e(b,{name:`i-lucide-arrow-right`,class:`size-3.5`})],42,Kt)]),_:2},1032,[`text`]),e(w,{text:`标记 ${m.id} 已取消`,"delay-duration":150,ui:Y},{default:f(()=>[i(`span`,{class:`sc-act danger`,role:`button`,tabindex:`0`,"data-act":`cancel`,"aria-label":`取消 ${m.id}`,onClick:y(e=>Z.value=m.id,[`stop`,`prevent`]),onKeydown:v(y(e=>Z.value=m.id,[`prevent`]),[`enter`])},[e(b,{name:`i-lucide-x`,class:`size-3.5`})],40,qt)]),_:2},1032,[`text`])],64))],32)],64))]),_:2},1032,[`to`,`class`]))),128)),H(c).length?_(``,!0):(u(),a(`p`,Jt,`暂无故事`))])],64))],2))),128))])])])}}}),[[`__scopeId`,`data-v-3d44e42e`]]);export{E as default};
|
|
1
|
+
import{D as e,E as t,On as n,Zn as r,_ as i,b as a,bt as o,er as s,g as c,k as l,mt as u,o as d,qt as f,tr as p,un as m,v as h,vn as g,y as _}from"./DZo3dYLJ.js";import{C as v,w as y}from"./51OWHj8c.js";import{t as ee}from"./CJ2mz0WY.js";import{t as te}from"./BDcnzXHq.js";import{t as ne}from"./rlePnzpc.js";import{O as b,a as x,i as S,n as re,o as C,r as ie,s as w}from"#entry";var ae={class:`stats`},oe={class:`stat-top`},se={class:`stat-label`},ce={class:`stat-pill`},le={class:`stat-value`},ue={class:`stat-sub`},de={class:`stat-delta`},fe={class:`split`},pe={class:`spark`},me=[`title`],he={class:`stat-top`},ge={class:`stat-label`},_e={class:`stat-pill`},ve={class:`stat-value`},ye={class:`stat-sub`},be={class:`stat-rows`},xe={class:`stat-row`},Se={class:`v`},Ce={class:`stat-row`},we={class:`v`},Te={class:`stat-row`},Ee={class:`v`},De={class:`stat-row`},Oe={class:`v`},ke={class:`stat-foot`},Ae={class:`row`},je={class:`bar`},Me={class:`stat-top`},Ne={class:`stat-label`},Pe={class:`stat-value`},Fe={class:`unit`},Ie={class:`stat-sub`},Le={class:`stat-rows`},Re={class:`stat-row`},ze={class:`v`},Be={class:`stat-row`},Ve={class:`v`},He={class:`stat-row`},Ue={class:`v`},We={class:`stat-row`},Ge={class:`v`},Ke={class:`stat-foot`},qe={class:`row`},Je={class:`bar lilac`},Ye={class:`stat-top`},Xe={class:`stat-label`},Ze={class:`stat-value`},Qe={class:`stat-rows`},$e={class:`stat-row`},et={class:`v`},tt={class:`stat-row`},nt={class:`v`},rt={class:`stat-row`},it={class:`v`},at={class:`stat-row`},ot={class:`v`},st={class:`stat-foot`},ct={class:`row`},lt={class:`bar on-dark`},ut={class:`card tb`},dt={class:`tb-l`},ft={class:`tb-r`},pt={class:`mono`},mt={class:`mono`},ht={key:0,class:`card act-error`},gt={class:`act-error-txt`},_t={class:`card board`},vt={class:`lanes`},yt=[`title`,`onClick`],bt={class:`stub-name`},xt={class:`stub-ct`},St={class:`stub-pts`},Ct={class:`lane-hd`},wt={class:`lane-ct`},Tt={class:`lane-pts`},Et=[`aria-expanded`,`title`,`onClick`],Dt={class:`lane-bd`},Ot={class:`sc-id mono`},kt={class:`sc-c-pts`},At=[`title`],jt={class:`sc-top`},Mt={class:`sc-id mono`},Nt={class:`dim sc-wsjf`},Pt=[`title`],Ft={class:`sc-title`},It={class:`sc-meta`},Lt={class:`sc-tags`},Rt={class:`tag tag-ghost`},zt={key:0,class:`tag tag-neutral mono`},Bt=[`title`],Vt=[`title`],Ht={class:`bar slim sc-bar`},Ut={class:`sc-ask`},Wt=[`aria-label`,`onClick`,`onKeydown`],Gt=[`aria-label`,`onClick`,`onKeydown`],Kt=[`aria-label`,`onClick`,`onKeydown`],qt=[`aria-label`,`onClick`,`onKeydown`],Jt={key:0,class:`lane-empty`},T=`board.foldedLanes.v1`,E=S(l({__name:`index`,setup(l){let{stories:S,epics:E,states:D,progress:O,milestoneOfStory:Yt,pointsOf:Xt,milestones:Zt,refresh:Qt,STATE_LABEL:k,STATE_SHORT:$t,STATE_DOT:A,TYPE_LABEL:en,TYPE_COLOR:tn,TYPE_ICON:nn,PRIORITY_COLOR:rn,SCOPE_LABEL:an,wsjf:j,blockedStories:on}=w(),M=g(`all`),N=g(`all`),P=g(`rank`),sn=c(()=>[{label:`全部史诗`,value:`all`,icon:`i-lucide-layers`},...E.value.map(e=>({label:`${e.id} ${e.title}`,value:e.id,icon:`i-lucide-layer-group`}))]),cn=c(()=>[{label:`全部里程碑`,value:`all`,icon:`i-lucide-flag`},...Zt.value.map(e=>({label:`${e.id} ${e.title}`,value:e.id,icon:e.kind===`mvp`?`i-lucide-star`:`i-lucide-map-pin`}))]),ln=[{label:`默认顺序`,value:`rank`,icon:`i-lucide-list-ordered`},{label:`按优先级 P0 → P3`,value:`priority`,icon:`i-lucide-alert-circle`},{label:`按 WSJF 价值/点数`,value:`wsjf`,icon:`i-lucide-scale`},{label:`按点数`,value:`points`,icon:`i-lucide-signal`}],un={P0:0,P1:1,P2:2,P3:3},F=[`done`,`cancelled`],I=[`done`,`cancelled`],L=g((()=>{try{if(typeof localStorage>`u`)return[...I];let e=localStorage.getItem(T);if(!e)return[...I];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>F.includes(e)):[...I]}catch{return[...I]}})()),R=e=>F.includes(e),z=e=>L.value.includes(e),B=e=>F.includes(e),dn=e=>{if(R(e)){L.value=z(e)?L.value.filter(t=>t!==e):[...L.value,e];try{localStorage.setItem(T,JSON.stringify(L.value))}catch{}}},V=c(()=>{let e=S.value.filter(e=>!(M.value!==`all`&&e.epicId!==M.value||N.value!==`all`&&!Yt(e.id).some(e=>e.id===N.value)));return P.value===`priority`?[...e].sort((e,t)=>(un[e.priority]??9)-(un[t.priority]??9)||j(t)-j(e)):P.value===`wsjf`?[...e].sort((e,t)=>j(t)-j(e)):P.value===`points`?[...e].sort((e,t)=>t.points-e.points):e}),H=e=>V.value.filter(t=>t.status===e),U=e=>Xt(H(e).map(e=>e.id)),W=c(()=>{let e=V.value,t=e.filter(e=>e.status===`done`),n=e.filter(e=>e.status===`in-progress`||e.status===`review`),r=e.filter(e=>e.status===`ready`||e.status===`draft`),i=e.filter(e=>e.status===`cancelled`),a=e.filter(e=>e.status!==`cancelled`),o=e.flatMap(e=>e.tasks??[]),s=e=>o.filter(t=>t.status===e).length;return{count:e.length,points:e.reduce((e,t)=>e+t.points,0),liveCount:a.length,livePoints:a.reduce((e,t)=>e+t.points,0),donePoints:t.reduce((e,t)=>e+t.points,0),done:t.length,running:n.length,idle:r.length,cancelled:i.length,cancelledPoints:i.reduce((e,t)=>e+t.points,0),tasks:o.length,tasksDone:s(`done`),taskRed:s(`red`),taskGreen:s(`green`),taskRefactor:s(`refactored`),taskTodo:s(`todo`),bugs:e.filter(e=>e.type===`bug`).length,debt:e.filter(e=>e.type===`debt`).length,scope:e.filter(e=>e.scopeChange).length}}),G=c(()=>W.value.livePoints?Math.round(W.value.donePoints/W.value.livePoints*100):0),fn=c(()=>W.value.liveCount?Math.round(W.value.livePoints/W.value.liveCount*10)/10:0),K=c(()=>W.value.tasks?Math.round(W.value.tasksDone/W.value.tasks*100):0),pn=c(()=>on.value.length+W.value.bugs),mn=c(()=>Math.max(1,...D.map(e=>H(e).length))),hn=e=>8+Math.round(H(e).length/mn.value*34),q=[`draft`,`ready`,`in-progress`,`review`,`done`],gn=e=>q[q.indexOf(e)+1]??null,_n=e=>q.indexOf(e)>0?q[q.indexOf(e)-1]:null,J=e=>(e.tasks??[]).filter(e=>e.status!==`done`).length,vn=e=>{let t=gn(e.status);return t?!(t===`done`&&J(e)>0):!1},yn=e=>{let t=gn(e.status);return t?t===`done`&&J(e)?`还有 ${J(e)} 个任务没完成,先做完再收尾`:`推进到「${k[t]}」`:`已经是最后一个状态`},bn=e=>_n(e.status)!==null,Y={content:`bg-[#1b1526]! text-white! ring-0 shadow-lg`},xn=g(``),X=g(``),Z=g(``),Q=g(``);async function $(e,t){if(!X.value&&(t!==`next`||vn(e))&&(t!==`prev`||bn(e))){X.value=e.id,Q.value=``;try{xn.value||=(await b(`/api/projects`)).token,await b(`/api/agile/story-status`,{method:`POST`,headers:{"x-project-token":xn.value},body:{id:e.id,action:t}}),Z.value=``,await Qt()}catch(t){Q.value=`${e.id}:${t?.data?.error??t?.message??`改状态失败`}`}finally{X.value=``}}}let Sn=c(()=>{if(M.value===`all`)return`全部史诗`;let e=E.value.find(e=>e.id===M.value);return e?e.title.slice(0,6):`全部史诗`}),Cn=e=>Yt(e).filter(e=>e.kind===`mvp`);return(c,l)=>{let g=ie,b=ne,S=te,w=re,T=ee;return u(),a(`div`,null,[i(`div`,ae,[i(`article`,{class:r([`stat`,(`cardToneClass`in c?c.cardToneClass:n(C))(0)])},[e(g,{tone:(`cardTone`in c?c.cardTone:n(x))(0)},null,8,[`tone`]),i(`div`,oe,[i(`span`,se,[e(b,{name:`i-lucide-gauge`,class:`size-3.5`}),l[7]||=t(`看板完成度`,-1)]),i(`span`,ce,p(n(Sn)),1)]),i(`div`,le,[t(p(n(G)),1),l[8]||=i(`span`,{class:`unit`},`%`,-1)]),i(`div`,ue,[i(`span`,de,[e(b,{name:`i-lucide-check`,class:`size-3`}),t(p(n(W).donePoints)+` 点`,1)]),t(` 已交付 · 共 `+p(n(W).livePoints)+` 点 `,1)]),i(`div`,fe,[i(`div`,null,[l[9]||=i(`span`,{class:`k`},`完成故事`,-1),i(`b`,null,[t(p(n(W).done),1),i(`small`,null,`/`+p(n(W).liveCount),1)])]),i(`div`,null,[l[11]||=i(`span`,{class:`k`},`剩余点`,-1),i(`b`,null,[t(p(n(W).livePoints-n(W).donePoints),1),l[10]||=i(`small`,null,`点`,-1)])])]),i(`div`,pe,[(u(!0),a(d,null,o(n(D),e=>(u(),a(`div`,{key:e,class:`spark-col`,title:`${n(k)[e]}:${H(e).length} 个`},[i(`div`,{class:r([`spark-bar`,{done:e===`done`,cancel:e===`cancelled`}]),style:s({height:hn(e)+`px`})},null,6),i(`span`,null,p(n($t)[e]),1)],8,me))),128))])],2),i(`article`,{class:r([`stat`,(`cardToneClass`in c?c.cardToneClass:n(C))(1)])},[e(g,{tone:(`cardTone`in c?c.cardTone:n(x))(1)},null,8,[`tone`]),i(`div`,he,[i(`span`,ge,[e(b,{name:`i-lucide-book-open`,class:`size-3.5`}),l[12]||=t(`故事`,-1)]),i(`span`,_e,p(Math.round(n(fn)))+` 点/个`,1)]),i(`div`,ve,[t(p(n(W).count),1),l[13]||=i(`span`,{class:`unit`},`个`,-1)]),i(`div`,ye,`共 `+p(n(W).livePoints)+` 点 · 任务 `+p(n(W).tasks)+` 个`,1),i(`div`,be,[i(`div`,xe,[l[14]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#6aa844`}}),t(`已完成`)],-1),i(`span`,Se,p(n(W).done),1)]),i(`div`,Ce,[l[15]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#3f7fd4`}}),t(`进行中`)],-1),i(`span`,we,p(n(W).running),1)]),i(`div`,Te,[l[16]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#b6bac1`}}),t(`未开始`)],-1),i(`span`,Ee,p(n(W).idle),1)]),i(`div`,De,[l[17]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#cf4759`}}),t(`已取消`)],-1),i(`span`,Oe,p(n(W).cancelled)+p(n(W).cancelledPoints?` · ${n(W).cancelledPoints} 点`:``),1)])]),i(`div`,ke,[i(`div`,Ae,[i(`span`,null,`任务完成 `+p(n(W).tasksDone)+`/`+p(n(W).tasks),1),i(`span`,null,p(n(K))+`%`,1)]),i(`div`,je,[i(`i`,{style:s({width:n(K)+`%`})},null,4)])])],2),i(`article`,{class:r([`stat`,(`cardToneClass`in c?c.cardToneClass:n(C))(2)])},[e(g,{tone:(`cardTone`in c?c.cardTone:n(x))(2)},null,8,[`tone`]),i(`div`,Me,[i(`span`,Ne,[e(b,{name:`i-lucide-list-checks`,class:`size-3.5`}),l[18]||=t(`TDD 任务`,-1)]),l[19]||=i(`span`,{class:`stat-pill`},`红 → 绿 → 重构`,-1)]),i(`div`,Pe,[t(p(n(W).tasksDone),1),i(`span`,Fe,`/ `+p(n(W).tasks)+` 项`,1)]),i(`div`,Ie,`已完成任务占 `+p(n(K))+`%`,1),i(`div`,Le,[i(`div`,Re,[l[20]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#cf4759`}}),t(`红(测试失败)`)],-1),i(`span`,ze,p(n(W).taskRed),1)]),i(`div`,Be,[l[21]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#6aa844`}}),t(`绿(测试通过)`)],-1),i(`span`,Ve,p(n(W).taskGreen),1)]),i(`div`,He,[l[22]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#6d4ff0`}}),t(`已重构`)],-1),i(`span`,Ue,p(n(W).taskRefactor),1)]),i(`div`,We,[l[23]||=i(`span`,{class:`k`},[i(`i`,{class:`dot`,style:{background:`#b6bac1`}}),t(`待办`)],-1),i(`span`,Ge,p(n(W).taskTodo),1)])]),i(`div`,Ke,[i(`div`,qe,[i(`span`,null,`已完成 `+p(n(W).tasksDone)+`/`+p(n(W).tasks),1),i(`span`,null,p(n(K))+`%`,1)]),i(`div`,Je,[i(`i`,{style:s({width:n(K)+`%`})},null,4)])])],2),i(`article`,{class:r([`stat`,(`cardToneClass`in c?c.cardToneClass:n(C))(3)])},[e(g,{tone:(`cardTone`in c?c.cardTone:n(x))(3)},null,8,[`tone`]),i(`div`,Ye,[i(`span`,Xe,[e(b,{name:`i-lucide-shield-alert`,class:`size-3.5`}),l[24]||=t(`风险面`,-1)]),l[25]||=i(`span`,{class:`stat-pill`},`需处理`,-1)]),i(`div`,Ze,[t(p(n(pn)),1),l[26]||=i(`span`,{class:`unit`},`项`,-1)]),l[32]||=i(`div`,{class:`stat-sub`},`阻塞故事与缺陷合计`,-1),i(`div`,Qe,[i(`div`,$e,[l[27]||=i(`span`,{class:`k`},`阻塞故事`,-1),i(`span`,et,p(n(on).length),1)]),i(`div`,tt,[l[28]||=i(`span`,{class:`k`},`缺陷`,-1),i(`span`,nt,p(n(W).bugs),1)]),i(`div`,rt,[l[29]||=i(`span`,{class:`k`},`技术债`,-1),i(`span`,it,p(n(W).debt),1)]),i(`div`,at,[l[30]||=i(`span`,{class:`k`},`范围变更`,-1),i(`span`,ot,p(n(W).scope),1)])]),i(`div`,st,[i(`div`,ct,[l[31]||=i(`span`,null,`完成度`,-1),i(`span`,null,p(n(G))+`%`,1)]),i(`div`,lt,[i(`i`,{style:s({width:n(G)+`%`})},null,4)])])],2)]),i(`div`,ut,[i(`div`,dt,[l[33]||=i(`span`,{class:`lbl`},`筛选`,-1),e(S,{modelValue:n(M),"onUpdate:modelValue":l[0]||=e=>m(M)?M.value=e:null,items:n(sn),icon:`i-lucide-layers`,"aria-label":`按史诗筛选`},null,8,[`modelValue`,`items`]),e(S,{modelValue:n(N),"onUpdate:modelValue":l[1]||=e=>m(N)?N.value=e:null,items:n(cn),icon:`i-lucide-flag`,"aria-label":`按里程碑筛选`},null,8,[`modelValue`,`items`]),e(S,{modelValue:n(P),"onUpdate:modelValue":l[2]||=e=>m(P)?P.value=e:null,items:ln,icon:`i-lucide-arrow-up-down`,"aria-label":`排序方式`},null,8,[`modelValue`])]),i(`div`,ft,[i(`span`,pt,p(n(V).length),1),l[34]||=t(` 个故事 `,-1),l[35]||=i(`i`,{class:`sep`},null,-1),i(`span`,mt,p(n(Xt)(n(V).map(e=>e.id))),1),l[36]||=t(` 点 `,-1)])]),n(Q)?(u(),a(`div`,ht,[e(b,{name:`i-lucide-circle-alert`,class:`size-4`}),i(`span`,gt,p(n(Q)),1),i(`button`,{class:`btn btn-sm`,onClick:l[3]||=e=>Q.value=``},`知道了`)])):_(``,!0),i(`div`,_t,[i(`div`,vt,[(u(!0),a(d,null,o(n(D),c=>(u(),a(`section`,{key:c,class:r([`lane`,{folded:z(c)}])},[z(c)?(u(),a(`button`,{key:0,class:`lane-stub`,title:`展开${n(k)[c]}:${H(c).length} 个 · ${U(c)} 点`,onClick:e=>dn(c)},[i(`i`,{class:`lane-dot`,style:s({background:n(A)[c]})},null,4),i(`span`,bt,p(n(k)[c]),1),i(`span`,xt,p(H(c).length),1),i(`span`,St,p(U(c))+` 点`,1),e(b,{name:`i-lucide-chevrons-right`,class:`stub-ic`})],8,yt)):(u(),a(d,{key:1},[i(`header`,Ct,[i(`i`,{class:`lane-dot`,style:s({background:n(A)[c]})},null,4),i(`b`,null,p(n(k)[c]),1),i(`span`,wt,p(H(c).length),1),i(`span`,Tt,p(U(c))+` 点`,1),R(c)?(u(),a(`button`,{key:0,class:`lane-fold`,"aria-expanded":!z(c),title:`收起${n(k)[c]}`,onClick:e=>dn(c)},[e(b,{name:`i-lucide-chevron-left`,class:`size-3`})],8,Et)):_(``,!0)]),i(`div`,Dt,[(u(!0),a(d,null,o(H(c),m=>(u(),h(T,{key:m.id,to:`/story/${m.id}`,class:r([`scard`,{"scard-compact":B(c)}])},{default:f(()=>[B(c)?(u(),a(d,{key:0},[i(`span`,Ot,p(m.id),1),i(`span`,kt,p(m.points)+` 点`,1),i(`span`,{class:`sc-c-title`,title:m.title},p(m.title),9,At)],64)):(u(),a(d,{key:1},[i(`div`,jt,[i(`span`,Mt,p(m.id),1),i(`span`,{class:r([`tag`,`tag-${n(rn)[m.priority]}`])},p(m.priority),3),i(`span`,Nt,`WSJF `+p(n(j)(m)),1),m.blocked?(u(),a(`span`,{key:0,class:`tag tag-error tag-dot`,title:`阻塞中:${m.blocked.reason}(自 ${m.blocked.since})`},`阻塞`,8,Pt)):_(``,!0)]),i(`p`,Ft,p(m.title),1),i(`div`,It,[i(`span`,null,p(m.points)+` 点`,1),l[37]||=i(`span`,{class:`dim`},`·`,-1),i(`span`,null,`任务 `+p(n(O)(m).done)+`/`+p(n(O)(m).total),1)]),i(`div`,Lt,[i(`span`,{class:r([`tag`,`tag-${n(tn)[m.type]}`])},[e(b,{name:n(nn)[m.type],class:`size-3`},null,8,[`name`]),t(p(n(en)[m.type]),1)],2),i(`span`,Rt,p(m.epicId),1),m.sprintId?(u(),a(`span`,zt,p(m.sprintId),1)):_(``,!0),(u(!0),a(d,null,o(Cn(m.id),e=>(u(),a(`span`,{key:e.id,class:`tag tag-mint`,title:`${e.id} ${e.title} · ${e.criteria}`},`MVP`,8,Bt))),128)),m.scopeChange?(u(),a(`span`,{key:1,class:`tag tag-info`,title:`${n(an)[m.scopeChange.kind]}(${m.scopeChange.at}):${m.scopeChange.reason}`},p(n(an)[m.scopeChange.kind]),9,Vt)):_(``,!0)]),i(`div`,Ht,[i(`i`,{style:s({width:n(O)(m).pct+`%`})},null,4)]),i(`div`,{class:`sc-actions`,style:{backdropFilter:`blur(10px) saturate(125%)`},onMouseleave:l[6]||=e=>Z.value=``},[n(Z)===m.id?(u(),a(d,{key:0},[i(`span`,Ut,`取消 `+p(m.id)+`?`,1),i(`span`,{class:`sc-act danger`,role:`button`,tabindex:`0`,"data-act":`cancel-confirm`,"aria-label":`确认取消 ${m.id}`,onClick:y(e=>$(m,`cancel`),[`stop`,`prevent`]),onKeydown:v(y(e=>$(m,`cancel`),[`prevent`]),[`enter`])},`确认`,40,Wt),i(`span`,{class:`sc-act`,role:`button`,tabindex:`0`,"data-act":`cancel-abort`,onClick:l[4]||=y(e=>Z.value=``,[`stop`,`prevent`]),onKeydown:l[5]||=v(y(e=>Z.value=``,[`prevent`]),[`enter`])},`返回`,32)],64)):(u(),a(d,{key:1},[bn(m)?(u(),h(w,{key:0,text:`退回「${n(k)[_n(m.status)??``]}」`,"delay-duration":150,ui:Y},{default:f(()=>[i(`span`,{class:`sc-act`,role:`button`,tabindex:`0`,"data-act":`prev`,"aria-label":`退回 ${m.id}`,onClick:y(e=>$(m,`prev`),[`stop`,`prevent`]),onKeydown:v(y(e=>$(m,`prev`),[`prevent`]),[`enter`])},[e(b,{name:`i-lucide-arrow-left`,class:`size-3.5`})],40,Gt)]),_:2},1032,[`text`])):_(``,!0),e(w,{text:yn(m),"delay-duration":150,ui:Y},{default:f(()=>[i(`span`,{class:r([`sc-act`,{off:!vn(m)}]),role:`button`,tabindex:`0`,"data-act":`next`,"aria-label":`推进 ${m.id}`,onClick:y(e=>$(m,`next`),[`stop`,`prevent`]),onKeydown:v(y(e=>$(m,`next`),[`prevent`]),[`enter`])},[e(b,{name:`i-lucide-arrow-right`,class:`size-3.5`})],42,Kt)]),_:2},1032,[`text`]),e(w,{text:`标记 ${m.id} 已取消`,"delay-duration":150,ui:Y},{default:f(()=>[i(`span`,{class:`sc-act danger`,role:`button`,tabindex:`0`,"data-act":`cancel`,"aria-label":`取消 ${m.id}`,onClick:y(e=>Z.value=m.id,[`stop`,`prevent`]),onKeydown:v(y(e=>Z.value=m.id,[`prevent`]),[`enter`])},[e(b,{name:`i-lucide-x`,class:`size-3.5`})],40,qt)]),_:2},1032,[`text`])],64))],32)],64))]),_:2},1032,[`to`,`class`]))),128)),H(c).length?_(``,!0):(u(),a(`p`,Jt,`暂无故事`))])],64))],2))),128))])])])}}}),[[`__scopeId`,`data-v-3d44e42e`]]);export{E as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,D as t,Ft as n,On as r,Zn as i,_ as a,b as o,g as s,mt as c,xt as l}from"./DZo3dYLJ.js";import{r as u}from"./Csqgy925.js";import{n as d,t as f}from"./6gFtTBwm.js";import{t as p}from"./
|
|
1
|
+
import{$ as e,D as t,Ft as n,On as r,Zn as i,_ as a,b as o,g as s,mt as c,xt as l}from"./DZo3dYLJ.js";import{r as u}from"./Csqgy925.js";import{n as d,t as f}from"./6gFtTBwm.js";import{t as p}from"./EYTShbt4.js";import{u as m}from"#entry";var h={slots:{root:`relative my-5 bg-muted [&>div]:my-0 [&_pre]:max-h-[80vh] [&_pre]:pb-12`,footer:`h-16 absolute inset-x-px bottom-px rounded-b-md flex items-center justify-center`,trigger:`group`,triggerIcon:`group-data-[state=open]:rotate-180`},variants:{open:{true:{root:`rounded-md`},false:{root:`max-h-[200px] overflow-hidden rounded-b-md [&_pre]:overflow-hidden`,footer:`inset-x-0 bottom-0 border border-t-0 border-muted bg-linear-to-t from-muted`}}}},g={__name:`ProseCodeCollapse`,props:e({icon:{type:null,required:!1},name:{type:String,required:!1},openText:{type:String,required:!1},closeText:{type:String,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:[`update:open`],setup(e){let g=d(`prose.codeCollapse`,e),_=n(e,`open`,{type:Boolean,default:!1}),{t:v}=m(),y=u(),b=s(()=>f({extend:h,...y.ui?.prose?.codeCollapse||{}})({open:_.value}));return(e,n)=>(c(),o(`div`,{class:i(b.value.root({class:[r(g).ui?.root,r(g).class]}))},[l(e.$slots,`default`),a(`div`,{class:i(b.value.footer({class:r(g).ui?.footer}))},[t(p,{icon:r(g).icon||r(y).ui.icons.chevronDown,color:`neutral`,variant:`outline`,"data-state":_.value?`open`:`closed`,label:`${_.value?r(g).closeText||r(v)(`prose.codeCollapse.closeText`):r(g).openText||r(v)(`prose.codeCollapse.openText`)} ${r(g).name||r(v)(`prose.codeCollapse.name`)}`,class:i(b.value.trigger({class:r(g).ui?.trigger})),ui:{leadingIcon:b.value.triggerIcon({class:r(g).ui?.triggerIcon})},onClick:n[0]||=e=>_.value=!_.value},null,8,[`icon`,`data-state`,`label`,`class`,`ui`])],2)],2))}};export{g as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{On as e,mt as t,qt as n,v as r}from"./DZo3dYLJ.js";import{r as i}from"./Csqgy925.js";import{t as a}from"./CQTvWh4i.js";import o from"./
|
|
1
|
+
import{On as e,mt as t,qt as n,v as r}from"./DZo3dYLJ.js";import{r as i}from"./Csqgy925.js";import{t as a}from"./CQTvWh4i.js";import o from"./vwxaNGfc.js";var s={__name:`ProseWarning`,setup(s){let c=i();return(i,s)=>(t(),r(o,{color:`warning`,icon:e(c).ui.icons.warning},{default:n(()=>[a(i.$slots,`default`,{mdcUnwrap:`p`})]),_:3},8,[`icon`]))}};export{s as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{On as e,mt as t,qt as n,v as r}from"./DZo3dYLJ.js";import{r as i}from"./Csqgy925.js";import{t as a}from"./CQTvWh4i.js";import o from"./
|
|
1
|
+
import{On as e,mt as t,qt as n,v as r}from"./DZo3dYLJ.js";import{r as i}from"./Csqgy925.js";import{t as a}from"./CQTvWh4i.js";import o from"./vwxaNGfc.js";var s={__name:`ProseTip`,setup(s){let c=i();return(i,s)=>(t(),r(o,{color:`success`,icon:e(c).ui.icons.tip},{default:n(()=>[a(i.$slots,`default`,{mdcUnwrap:`p`})]),_:3},8,[`icon`]))}};export{s as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as e,mt as t,v as n,y as r}from"./DZo3dYLJ.js";import{t as i}from"./DSaWoFHS.js";import{r as a}from"./Csqgy925.js";import{t as o}from"./
|
|
1
|
+
import{g as e,mt as t,v as n,y as r}from"./DZo3dYLJ.js";import{t as i}from"./DSaWoFHS.js";import{r as a}from"./Csqgy925.js";import{t as o}from"./rlePnzpc.js";var s={".editorconfig":`i-vscode-icons-file-type-editorconfig`,".env":`i-vscode-icons-file-type-dotenv`,".env.example":`i-vscode-icons-file-type-dotenv`,".eslintignore":`i-vscode-icons-file-type-eslint`,".eslintrc":`i-vscode-icons-file-type-eslint`,".eslintrc.cjs":`i-vscode-icons-file-type-eslint`,".gitignore":`i-vscode-icons-file-type-git`,".npmrc":`i-vscode-icons-file-type-npm`,".nuxtignore":`i-vscode-icons-file-type-nuxt`,".nuxtrc":`i-vscode-icons-file-type-nuxt`,".vscode/settings.json":`i-vscode-icons-file-type-vscode`,asm:`i-vscode-icons-file-type-assembly`,bicep:`i-vscode-icons-file-type-bicep`,bicepparam:`i-vscode-icons-file-type-bicep`,bun:`i-vscode-icons-file-type-bun`,cjs:`i-vscode-icons-file-type-js`,cs:`i-vscode-icons-file-type-csharp`,dart:`i-vscode-icons-file-type-dartlang`,deno:`i-vscode-icons-file-type-deno`,erl:`i-vscode-icons-file-type-erlang`,"eslint.config.cjs":`i-vscode-icons-file-type-eslint`,"eslint.config.js":`i-vscode-icons-file-type-eslint`,"eslint.config.mjs":`i-vscode-icons-file-type-eslint`,exs:`i-vscode-icons-file-type-elixir`,f:`i-vscode-icons-file-type-fortran`,fs:`i-vscode-icons-file-type-fsharp`,gleam:`i-vscode-icons-file-type-gleam`,go:`i-vscode-icons-file-type-go`,h:`i-vscode-icons-file-type-cppheader`,hs:`i-vscode-icons-file-type-haskell`,ico:`i-vscode-icons-file-type-favicon`,ino:`i-vscode-icons-file-type-arduino`,jl:`i-vscode-icons-file-type-julia`,js:`i-vscode-icons-file-type-js`,jsx:`i-vscode-icons-file-type-js`,kt:`i-vscode-icons-file-type-kotlin`,lsp:`i-vscode-icons-file-type-lisp`,md:`i-vscode-icons-file-type-markdown`,mjs:`i-vscode-icons-file-type-js`,npm:`i-vscode-icons-file-type-npm`,npx:`i-vscode-icons-file-type-npm`,nuxt:`i-vscode-icons-file-type-nuxt`,"nuxt.config.js":`i-vscode-icons-file-type-nuxt`,"nuxt.config.ts":`i-vscode-icons-file-type-nuxt`,"nuxt.schema.ts":`i-vscode-icons-file-type-nuxt`,"package.json":`i-vscode-icons-file-type-node`,pl:`i-vscode-icons-file-type-perl`,pnpm:`i-vscode-icons-file-type-pnpm`,ps1:`i-vscode-icons-file-type-powershell`,psd1:`i-vscode-icons-file-type-powershell`,psm1:`i-vscode-icons-file-type-powershell`,py:`i-vscode-icons-file-type-python`,rb:`i-vscode-icons-file-type-ruby`,rs:`i-vscode-icons-file-type-rust`,sbt:`i-vscode-icons-file-type-scala`,"tailwind.config.js":`i-vscode-icons-file-type-tailwind`,"tailwind.config.ts":`i-vscode-icons-file-type-tailwind`,terminal:`i-lucide-terminal`,ts:`i-vscode-icons-file-type-typescript`,"tsconfig.json":`i-vscode-icons-file-type-tsconfig`,tsx:`i-vscode-icons-file-type-typescript`,vue:`i-vscode-icons-file-type-vue`,yarn:`i-vscode-icons-file-type-yarn`,"yarn.lock":`i-vscode-icons-file-type-yarn`,yml:`i-vscode-icons-file-type-yaml`},c={__name:`ProseCodeIcon`,props:{icon:{type:null,required:!1},filename:{type:String,required:!1}},setup(c){let l=c,u=a(),d=e(()=>i(u.ui?.prose?.codeIcon||{},s)),f=e(()=>{if(l.icon)return l.icon;if(!l.filename)return;let e=l.filename.replace(/\s*\(.*\)\s*$/,``),t=e.includes(`.`)&&e.split(`.`).pop(),n=e.split(`/`).pop();return(n&&d.value[n.toLowerCase()])??(t&&(d.value[t]??`i-vscode-icons-file-type-${t}`))});return(e,i)=>f.value?(t(),n(o,{key:0,name:f.value},null,8,[`name`])):r(``,!0)}};export{c as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,Lt as t,On as n,Zn as r,_ as i,et as a,g as o,mt as s,qt as c,tr as l,v as u,xt as d,y as f}from"./DZo3dYLJ.js";import{r as p}from"./Csqgy925.js";import{m,n as h,t as g}from"./6gFtTBwm.js";import{m as _}from"./CuJUHLl8.js";import{t as v}from"./BuOKDFiJ.js";import{t as y}from"./
|
|
1
|
+
import{D as e,Lt as t,On as n,Zn as r,_ as i,et as a,g as o,mt as s,qt as c,tr as l,v as u,xt as d,y as f}from"./DZo3dYLJ.js";import{r as p}from"./Csqgy925.js";import{m,n as h,t as g}from"./6gFtTBwm.js";import{m as _}from"./CuJUHLl8.js";import{t as v}from"./BuOKDFiJ.js";import{t as y}from"./rlePnzpc.js";import{E as b,T as x,u as S,w as C}from"#entry";var w={slots:{root:``,content:`data-[state=open]:animate-[collapsible-down_200ms_var(--ease-out)] data-[state=closed]:animate-[collapsible-up_200ms_var(--ease-out)] data-[state=closed]:overflow-hidden`}},T={__name:`UCollapsible`,props:{as:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(i,{emit:l}){let m=i,y=l,S=t(),T=h(`collapsible`,m),E=p(),D=v(_(T,`as`,`defaultOpen`,`open`,`disabled`,`unmountOnHide`),y),O=o(()=>g({extend:w,...E.ui?.collapsible||{}})());return(t,i)=>(s(),u(n(b),a(n(D),{"data-slot":`root`,class:O.value.root({class:[n(T).ui?.root,n(T).class]})}),{default:c(({open:i})=>[S.default?(s(),u(n(C),{key:0,"as-child":``},{default:c(()=>[d(t.$slots,`default`,{open:i})]),_:2},1024)):f(``,!0),e(n(x),{"data-slot":`content`,class:r(O.value.content({class:n(T).ui?.content}))},{default:c(()=>[d(t.$slots,`content`)]),_:3},8,[`class`])]),_:3},16,[`class`]))}},E={slots:{root:`my-5`,trigger:[`group relative rounded-xs inline-flex items-center gap-1.5 text-muted hover:text-default text-sm outline-primary/25 focus-visible:outline-3`,`transition-colors`],triggerIcon:`size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200 ease-out motion-reduce:transition-none`,triggerLabel:`truncate`,content:`*:first:mt-2.5 *:last:mb-0 *:my-1.5`}},D={__name:`ProseCollapsible`,props:{icon:{type:null,required:!1},name:{type:String,required:!1},openText:{type:String,required:!1},closeText:{type:String,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(t){let a=h(`prose.collapsible`,t),{t:f}=S(),_=p(),v=o(()=>g({extend:E,..._.ui?.prose?.collapsible||{}})());return(t,o)=>(s(),u(T,{"unmount-on-hide":!1,class:r(n(a).class),ui:n(m)(v.value,n(a).ui)},{default:c(({open:t})=>[i(`button`,{class:r(v.value.trigger({class:n(a).ui?.trigger}))},[e(y,{name:n(a).icon||n(_).ui.icons.chevronDown,class:r(v.value.triggerIcon({class:n(a).ui?.triggerIcon}))},null,8,[`name`,`class`]),i(`span`,{class:r(v.value.triggerLabel({class:n(a).ui?.triggerLabel}))},l(t?n(a).closeText||n(f)(`prose.collapsible.closeText`):n(a).openText||n(f)(`prose.collapsible.openText`))+` `+l(n(a).name||n(f)(`prose.collapsible.name`)),3)],2)]),content:c(()=>[d(t.$slots,`default`)]),_:3},8,[`class`,`ui`]))}};export{D as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,E as t,On as n,Zn as r,_ as i,b as a,bt as o,er as s,g as c,k as l,mt as u,o as d,qt as ee,tr as f,y as p}from"./DZo3dYLJ.js";import{t as m}from"./CJ2mz0WY.js";import{t as h}from"./
|
|
1
|
+
import{D as e,E as t,On as n,Zn as r,_ as i,b as a,bt as o,er as s,g as c,k as l,mt as u,o as d,qt as ee,tr as f,y as p}from"./DZo3dYLJ.js";import{t as m}from"./CJ2mz0WY.js";import{t as h}from"./rlePnzpc.js";import{a as g,i as _,o as v,r as te,s as y}from"#entry";var b={class:`kpis`},x={class:`v`},S={class:`v`},C={class:`v`},w={class:`v`},T={class:`v`},E={class:`grid`},D={class:`hero`},O={class:`hero-top`},k={class:`tag tag-ghost`},A={class:`tag tag-neutral`},j={key:0,class:`tag tag-error`},M={key:1,class:`tag tag-warning`},N={class:`hero-pct`},P={class:`epic-title`},F={class:`goal`},I={class:`bar ink hero-bar`},L={class:`hero-foot`},R={class:`bd`},z={class:`h3`},ne={key:0,class:`dim empty`},B={class:`kr-top`},V={class:`kr-text`},H={class:`kr-num mono`},U={class:`h3 stories-hd`},W={class:`stlist`},G={class:`st-id mono`},K={class:`st-title`},q={class:`st-pts dim`},J={class:`st-state dim`},Y=_(l({__name:`epics`,setup(l){let{epics:_,storyById:Y,STATE_LABEL:X,STATE_DOT:Z,TYPE_LABEL:re,TYPE_COLOR:ie,TYPE_ICON:ae,PRIORITY_COLOR:oe}=y(),se={draft:`neutral`,active:`primary`,done:`success`,cancelled:`error`},ce={draft:`草稿`,active:`进行中`,done:`已完成`,cancelled:`已取消`},Q=c(()=>_.value.map(e=>{let t=(e.stories??[]).map(e=>Y.value.get(e)).filter(Boolean),n=t.filter(e=>e.status===`done`),r=t.reduce((e,t)=>e+t.points,0),i=n.reduce((e,t)=>e+t.points,0),a=(e.keyResults??[]).map(e=>{let t=e.target>0?Math.min(100,Math.round((e.current??0)/e.target*100)):(e.current??0)<=0?100:0;return{...e,pct:t,ok:t>=100}});return{...e,list:t,done:n,points:r,donePoints:i,pct:r?Math.round(i/r*100):0,krs:a,krOk:a.filter(e=>e.ok).length,blocked:t.filter(e=>e.blocked),bugs:t.filter(e=>e.type===`bug`)}})),$=c(()=>({epics:Q.value.length,stories:Q.value.reduce((e,t)=>e+t.list.length,0),points:Q.value.reduce((e,t)=>e+t.points,0),donePoints:Q.value.reduce((e,t)=>e+t.donePoints,0),kr:Q.value.reduce((e,t)=>e+t.krs.length,0),krOk:Q.value.reduce((e,t)=>e+t.krOk,0),blocked:Q.value.reduce((e,t)=>e+t.blocked.length,0)}));return(c,l)=>{let _=te,y=h,Y=m;return u(),a(`div`,null,[i(`div`,b,[i(`div`,{class:r([`kpi`,(`cardToneClass`in c?c.cardToneClass:n(v))(0)])},[e(_,{tone:(`cardTone`in c?c.cardTone:n(g))(0),size:`sm`},null,8,[`tone`]),l[1]||=i(`p`,{class:`k`},`史诗`,-1),i(`p`,x,[t(f(n($).epics),1),l[0]||=i(`small`,null,`个`,-1)])],2),i(`div`,{class:r([`kpi`,(`cardToneClass`in c?c.cardToneClass:n(v))(1)])},[e(_,{tone:(`cardTone`in c?c.cardTone:n(g))(1),size:`sm`},null,8,[`tone`]),l[2]||=i(`p`,{class:`k`},`关键结果达成`,-1),i(`p`,S,[t(f(n($).krOk),1),i(`small`,null,`/ `+f(n($).kr),1)])],2),i(`div`,{class:r([`kpi`,(`cardToneClass`in c?c.cardToneClass:n(v))(2)])},[e(_,{tone:(`cardTone`in c?c.cardTone:n(g))(2),size:`sm`},null,8,[`tone`]),l[3]||=i(`p`,{class:`k`},`故事点交付`,-1),i(`p`,C,[t(f(n($).donePoints),1),i(`small`,null,`/ `+f(n($).points),1)])],2),i(`div`,{class:r([`kpi`,(`cardToneClass`in c?c.cardToneClass:n(v))(3)])},[e(_,{tone:(`cardTone`in c?c.cardTone:n(g))(3),size:`sm`},null,8,[`tone`]),l[5]||=i(`p`,{class:`k`},`覆盖故事`,-1),i(`p`,w,[t(f(n($).stories),1),l[4]||=i(`small`,null,`个`,-1)])],2),i(`div`,{class:r([`kpi`,(`cardToneClass`in c?c.cardToneClass:n(v))(4)])},[e(_,{tone:(`cardTone`in c?c.cardTone:n(g))(4),size:`sm`},null,8,[`tone`]),l[7]||=i(`p`,{class:`k`},`阻塞`,-1),i(`p`,T,[t(f(n($).blocked),1),l[6]||=i(`small`,null,`个故事`,-1)])],2)]),i(`div`,E,[(u(!0),a(d,null,o(n(Q),c=>(u(),a(`article`,{key:c.id,class:`card epic`},[i(`div`,D,[i(`div`,O,[i(`span`,k,f(c.id),1),i(`span`,{class:r([`tag`,`tag-${se[c.status]}`])},f(ce[c.status]),3),i(`span`,A,f(c.list.length)+` 个故事`,1),c.bugs.length?(u(),a(`span`,j,[e(y,{name:`i-lucide-bug`,class:`size-3`}),t(f(c.bugs.length),1)])):p(``,!0),c.blocked.length?(u(),a(`span`,M,[e(y,{name:`i-lucide-octagon-alert`,class:`size-3`}),t(f(c.blocked.length),1)])):p(``,!0),i(`span`,N,[t(f(c.pct),1),l[8]||=i(`small`,null,`%`,-1)])]),i(`h2`,P,f(c.title),1),i(`p`,F,f(c.goal),1),i(`div`,I,[i(`i`,{style:s({width:c.pct+`%`})},null,4)]),i(`div`,L,[i(`span`,null,[i(`b`,null,f(c.donePoints),1),t(`/`+f(c.points)+` 点`,1)]),l[9]||=i(`i`,{class:`sep`},null,-1),i(`span`,null,`关键结果 `+f(c.krOk)+`/`+f(c.krs.length)+` 达成`,1),l[10]||=i(`i`,{class:`sep`},null,-1),i(`span`,null,f(c.done.length)+`/`+f(c.list.length)+` 个故事完成`,1)])]),i(`div`,R,[i(`p`,z,[e(y,{name:`i-lucide-target`,class:`size-3`}),l[11]||=t(`关键结果`,-1)]),c.krs.length?p(``,!0):(u(),a(`p`,ne,`这个史诗还没写 keyResults。`)),(u(!0),a(d,null,o(c.krs,e=>(u(),a(`div`,{key:e.id,class:`kr`},[i(`div`,B,[i(`span`,V,f(e.text),1),i(`span`,H,f(e.current??`—`)+` / `+f(e.target)+` `+f(e.unit??``),1),i(`span`,{class:r([`tag`,e.ok?`tag-success`:`tag-warning`])},f(e.pct)+`%`,3)]),i(`div`,{class:r([`bar slim`,e.ok?`mint`:`lilac`])},[i(`i`,{style:s({width:e.pct+`%`})},null,4)],2)]))),128)),i(`p`,U,[e(y,{name:`i-lucide-list-checks`,class:`size-3`}),l[12]||=t(`故事`,-1)]),i(`ul`,W,[(u(!0),a(d,null,o(c.list,o=>(u(),a(`li`,{key:o.id},[e(Y,{to:`/story/${o.id}`,class:`strow`},{default:ee(()=>[i(`i`,{class:`sdot`,style:s({background:n(Z)[o.status]})},null,4),i(`span`,G,f(o.id),1),i(`span`,K,f(o.title),1),i(`span`,{class:r([`tag`,`tag-${n(ie)[o.type]}`])},[e(y,{name:n(ae)[o.type],class:`size-3`},null,8,[`name`]),t(f(n(re)[o.type]),1)],2),i(`span`,{class:r([`tag`,`tag-${n(oe)[o.priority]}`])},f(o.priority),3),i(`span`,q,f(o.points)+` 点`,1),i(`span`,J,f(n(X)[o.status]),1),e(y,{name:`i-lucide-chevron-right`,class:`st-chev`})]),_:2},1032,[`to`])]))),128))])])]))),128))])])}}}),[[`__scopeId`,`data-v-4bf98db6`]]);export{Y as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{On as e,Zn as t,g as n,mt as r,v as i}from"./DZo3dYLJ.js";import{r as a}from"./Csqgy925.js";import{n as o,t as s}from"./6gFtTBwm.js";import{t as c}from"./
|
|
1
|
+
import{On as e,Zn as t,g as n,mt as r,v as i}from"./DZo3dYLJ.js";import{r as a}from"./Csqgy925.js";import{n as o,t as s}from"./6gFtTBwm.js";import{t as c}from"./rlePnzpc.js";var l={base:`size-4 shrink-0 align-sub`},u={__name:`ProseIcon`,props:{name:{type:String,required:!0},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(u){let d=o(`prose.icon`,u),f=a(),p=n(()=>s({extend:l,...f.ui?.prose?.icon||{}}));return(n,a)=>(r(),i(c,{name:e(d).name,class:t(p.value({class:[e(d).ui?.base,e(d).class]}))},null,8,[`name`,`class`]))}};export{u as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{On as e,mt as t,qt as n,v as r}from"./DZo3dYLJ.js";import{r as i}from"./Csqgy925.js";import{t as a}from"./CQTvWh4i.js";import o from"./
|
|
1
|
+
import{On as e,mt as t,qt as n,v as r}from"./DZo3dYLJ.js";import{r as i}from"./Csqgy925.js";import{t as a}from"./CQTvWh4i.js";import o from"./vwxaNGfc.js";var s={__name:`ProseNote`,setup(s){let c=i();return(i,s)=>(t(),r(o,{color:`info`,icon:e(c).ui.icons.info},{default:n(()=>[a(i.$slots,`default`,{mdcUnwrap:`p`})]),_:3},8,[`icon`]))}};export{s as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{$n as e,D as t,E as n,Ht as r,Lt as i,On as a,Rt as o,Ut as s,Zn as c,_ as l,b as u,bt as d,ct as f,er as p,et as m,ft as h,g,gn as _,k as v,mt as y,o as b,pn as x,qt as S,tr as C,tt as w,u as T,v as E,vn as D,wn as O,wt as k,xn as A,xt as j,y as M}from"./DZo3dYLJ.js";import{w as N}from"./51OWHj8c.js";import{r as P}from"./Csqgy925.js";import{h as F,n as I,t as L}from"./6gFtTBwm.js";import{r as ee,t as R}from"./DLkAKotw.js";import{t as z}from"./DHihWhf5.js";import{S as B,m as V,s as te}from"./CuJUHLl8.js";import{d as ne,f as re,p as H,r as ie}from"./Vo4wMbnS.js";import{t as U}from"./CK9_veoz.js";import{t as W}from"./BuOKDFiJ.js";import{t as G}from"./D3YCAmfu.js";import{t as K}from"./C9StZL3D.js";import{t as q}from"./Bi9Axj3V.js";import{t as J}from"./
|
|
1
|
+
import{$n as e,D as t,E as n,Ht as r,Lt as i,On as a,Rt as o,Ut as s,Zn as c,_ as l,b as u,bt as d,ct as f,er as p,et as m,ft as h,g,gn as _,k as v,mt as y,o as b,pn as x,qt as S,tr as C,tt as w,u as T,v as E,vn as D,wn as O,wt as k,xn as A,xt as j,y as M}from"./DZo3dYLJ.js";import{w as N}from"./51OWHj8c.js";import{r as P}from"./Csqgy925.js";import{h as F,n as I,t as L}from"./6gFtTBwm.js";import{r as ee,t as R}from"./DLkAKotw.js";import{t as z}from"./DHihWhf5.js";import{S as B,m as V,s as te}from"./CuJUHLl8.js";import{d as ne,f as re,p as H,r as ie}from"./Vo4wMbnS.js";import{t as U}from"./CK9_veoz.js";import{t as W}from"./BuOKDFiJ.js";import{t as G}from"./D3YCAmfu.js";import{t as K}from"./C9StZL3D.js";import{t as q}from"./Bi9Axj3V.js";import{t as J}from"./rlePnzpc.js";import{n as Y}from"./DfR3IZN_.js";import{t as X}from"./EYTShbt4.js";import{_ as ae,b as oe,g as se,h as ce,u as Z,v as Q,y as le}from"#entry";var $=100,[ue,de]=F(`ProgressRoot`),fe=e=>typeof e==`number`;function pe(e,t){return z(e)||fe(e)&&!Number.isNaN(e)&&e<=t&&e>=0?e:(console.error(`Invalid prop \`value\` of value \`${e}\` supplied to \`ProgressRoot\`. The \`value\` prop must be:
|
|
2
2
|
- a positive number
|
|
3
3
|
- less than the value passed to \`max\` (or ${$} if no \`max\` prop is set)
|
|
4
4
|
- \`null\` or \`undefined\` if the progress is indeterminate.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,E as t,On as n,T as r,Ut as i,Yt as ee,Zn as a,_ as o,b as s,bt as c,er as te,g as l,k as u,mt as d,o as f,qt as ne,tr as p,un as re,vn as m,y as h}from"./DZo3dYLJ.js";import{S as ie}from"./51OWHj8c.js";import{t as ae}from"./CJ2mz0WY.js";import{t as oe}from"./
|
|
1
|
+
import{D as e,E as t,On as n,T as r,Ut as i,Yt as ee,Zn as a,_ as o,b as s,bt as c,er as te,g as l,k as u,mt as d,o as f,qt as ne,tr as p,un as re,vn as m,y as h}from"./DZo3dYLJ.js";import{S as ie}from"./51OWHj8c.js";import{t as ae}from"./CJ2mz0WY.js";import{t as oe}from"./BDcnzXHq.js";import{t as se}from"./rlePnzpc.js";import{a as g,i as _,o as v,r as ce,s as y}from"#entry";var le={class:`kpis`},ue={class:`v`},de={class:`v`},fe={class:`v`},pe={class:`v`},me={key:0,class:`card panel`},he={class:`panel-hd`},ge={class:`ph-l`},_e={class:`sp-name`},ve={class:`sub mono`},ye={class:`goal`},be={class:`chart-wrap`},xe=[`viewBox`],Se=[`y1`,`x2`,`y2`],b=[`x`,`y`],x=[`d`],S=[`d`],C=[`points`],w=[`cx`,`cy`],T=[`x1`,`y1`,`x2`,`y2`],E=[`x`,`y`],D=[`x`,`y`],O=[`x1`,`y1`,`x2`,`y2`],k=[`cx`,`cy`],A={class:`cells`},j={class:`cd mono`},Ce={class:`ca`},we={class:`ci dim`},Te={key:0,class:`scope`},Ee={class:`h3`},De={class:`tag tag-info`},Oe={class:`dim`},ke={key:1,class:`callout soft`},Ae={class:`card`},je={class:`card-hd`},Me={class:`tag tag-neutral`},M={class:`card-bd`},Ne={class:`tbl`},Pe=[`onClick`],Fe={class:`mono`},Ie={class:`mono dim`},Le={class:`r`},Re={class:`r mono`},ze=980,Be=300,N=42,P=_(u({__name:`burndown`,setup(u){let{sprints:_,burndown:P,sprintCommit:F,md:I,now:L,sprintById:R,storyById:Ve,SCOPE_LABEL:z}=y(),B=m(``),He=l(()=>[..._.value].reverse().map(e=>({label:`${e.id} · ${e.name}`,value:e.id,icon:`i-lucide-calendar-range`}))),V=l(()=>R.value.get(B.value)??_.value[_.value.length-1]),H=l(()=>V.value?P(V.value):{total:0,days:[]});i(()=>{B.value&&!R.value.has(B.value)&&(B.value=``),!B.value&&_.value.length&&(B.value=_.value[_.value.length-1].id)});let U=l(()=>H.value.days.length||1),W=l(()=>H.value.total||1),G=e=>N+e*896/(U.value-1||1),K=e=>258-e*216/W.value,Ue=e=>H.value.days.map((t,n)=>`${G(n)},${K(t[e])}`).join(` `),We=l(()=>{let e=H.value.days.map((e,t)=>`${G(t)},${K(e.actual)}`).join(` `),t=H.value.days.length-1;return`M${G(0)},${K(0)} L${e.replaceAll(` `,` L`)} L${G(t)},${K(0)} Z`}),q=l(()=>H.value.days.findIndex(e=>e.date===L)),J=l(()=>H.value.days.find(e=>e.date===L)??H.value.days[H.value.days.length-1]),Y=l(()=>J.value?.actual??0),X=l(()=>J.value?.ideal??0),Z=l(()=>Math.round((Y.value-X.value)*10)/10),Q=l(()=>{let e=V.value;return e?(e.stories??[]).map(e=>Ve.value.get(e)).filter(Boolean).filter(t=>t.scopeChange&&t.scopeChange.at>=e.start&&t.scopeChange.at<=e.end).map(e=>({id:e.id,title:e.title,at:e.scopeChange.at,kind:e.scopeChange.kind,reason:e.scopeChange.reason,points:e.points,idx:H.value.days.findIndex(t=>t.date===e.scopeChange.at)})).filter(e=>e.idx>=0):[]}),Ge=l(()=>new Set(Q.value.map(e=>e.at))),$=l(()=>[..._.value].reverse().map(e=>{let t=e.start<=L&&e.end>=L;return{id:e.id,name:e.name,period:`${I(e.start)} ~ ${I(e.end)}`,stories:(e.stories??[]).length,commit:F(e),capacity:e.capacity,status:t?`进行中`:e.end<L?`已结束`:`未开始`,tone:t?`tag-primary`:e.end<L?`tag-neutral`:`tag-info`}}));return(i,l)=>{let u=ce,m=oe,_=se,y=ae;return d(),s(`div`,null,[o(`div`,le,[o(`div`,{class:a([`kpi`,(`cardToneClass`in i?i.cardToneClass:n(v))(0)])},[e(u,{tone:(`cardTone`in i?i.cardTone:n(g))(0),size:`sm`},null,8,[`tone`]),l[1]||=o(`p`,{class:`k`},`剩余故事点`,-1),o(`p`,ue,[t(p(n(Y)),1),o(`small`,null,`/ `+p(n(H).total),1)])],2),o(`div`,{class:a([`kpi`,(`cardToneClass`in i?i.cardToneClass:n(v))(1)])},[e(u,{tone:(`cardTone`in i?i.cardTone:n(g))(1),size:`sm`},null,8,[`tone`]),l[3]||=o(`p`,{class:`k`},`理想剩余(今天)`,-1),o(`p`,de,[t(p(n(X)),1),l[2]||=o(`small`,null,`点`,-1)])],2),o(`div`,{class:a([`kpi`,(`cardToneClass`in i?i.cardToneClass:n(v))(2)])},[e(u,{tone:(`cardTone`in i?i.cardTone:n(g))(2),size:`sm`},null,8,[`tone`]),l[5]||=o(`p`,{class:`k`},`偏差`,-1),o(`p`,{class:a([`v`,{bad:n(Z)>0,good:n(Z)<=0}])},[t(p(n(Z)>0?`+`+n(Z):n(Z)),1),l[4]||=o(`small`,null,`点`,-1)],2)],2),o(`div`,{class:a([`kpi`,(`cardToneClass`in i?i.cardToneClass:n(v))(3)])},[e(u,{tone:(`cardTone`in i?i.cardTone:n(g))(3),size:`sm`},null,8,[`tone`]),l[6]||=o(`p`,{class:`k`},`承诺 / 容量`,-1),o(`p`,fe,[t(p(n(V)?n(F)(n(V)):0),1),o(`small`,null,`/ `+p(n(V)?.capacity??0),1)])],2),o(`div`,{class:a([`kpi`,(`cardToneClass`in i?i.cardToneClass:n(v))(4)])},[e(u,{tone:(`cardTone`in i?i.cardTone:n(g))(4),size:`sm`},null,8,[`tone`]),l[8]||=o(`p`,{class:`k`},`范围变更`,-1),o(`p`,pe,[t(p(n(Q).length),1),l[7]||=o(`small`,null,`次`,-1)])],2)]),n(V)?(d(),s(`div`,me,[o(`div`,he,[o(`div`,ge,[o(`h2`,_e,p(n(V).name),1),o(`p`,ve,p(n(V).id)+` · `+p(n(I)(n(V).start))+` ~ `+p(n(I)(n(V).end)),1),o(`p`,ye,p(n(V).goal),1)]),e(m,{modelValue:n(B),"onUpdate:modelValue":l[0]||=e=>re(B)?B.value=e:null,items:n(He),icon:`i-lucide-calendar-range`,"aria-label":`选择迭代`,class:`bd-select`},null,8,[`modelValue`,`items`])]),o(`div`,be,[l[10]||=r(`<div class="chart-legend" data-v-d8ba9a67><span class="lg" data-v-d8ba9a67><i class="sw actual" data-v-d8ba9a67></i>实际剩余</span><span class="lg" data-v-d8ba9a67><i class="sw ideal" data-v-d8ba9a67></i>理想线</span><span class="lg" data-v-d8ba9a67><i class="sw scope" data-v-d8ba9a67></i>范围变更</span></div>`,1),(d(),s(`svg`,{viewBox:`0 0 ${ze} ${Be}`,class:`chart`,role:`img`},[l[9]||=r(`<defs data-v-d8ba9a67><linearGradient id="bd-line" x1="0" y1="0" x2="1" y2="0" data-v-d8ba9a67><stop offset="0%" stop-color="#8a63f7" data-v-d8ba9a67></stop><stop offset="100%" stop-color="#c3aefb" data-v-d8ba9a67></stop></linearGradient><linearGradient id="bd-area" x1="0" y1="0" x2="0" y2="1" data-v-d8ba9a67><stop offset="0%" stop-color="#8a63f7" stop-opacity="0.16" data-v-d8ba9a67></stop><stop offset="100%" stop-color="#8a63f7" stop-opacity="0" data-v-d8ba9a67></stop></linearGradient></defs>`,1),o(`g`,null,[(d(),s(f,null,c([0,.25,.5,.75,1],e=>o(`line`,{key:`grid`+e,x1:N,y1:K(n(W)*e),x2:938,y2:K(n(W)*e),stroke:`#f1f0ea`,"stroke-width":`1`},null,8,Se)),64)),(d(),s(f,null,c([0,.25,.5,.75,1],e=>o(`text`,{key:`gl`+e,x:32,y:K(n(W)*e)+3.5,"text-anchor":`end`,"font-size":`9.5`,fill:`#b0b4ba`},p(Math.round(n(W)*e)),9,b)),64))]),o(`path`,{d:n(We),fill:`url(#bd-area)`},null,8,x),o(`path`,{d:`M${G(0)},${K(n(W))} L${G(n(U)-1)},${K(0)}`,stroke:`#cdc9d8`,"stroke-width":`1.4`,"stroke-dasharray":`5 5`,fill:`none`},null,8,S),o(`polyline`,{points:Ue(`actual`),stroke:`url(#bd-line)`,"stroke-width":`2.6`,fill:`none`,"stroke-linejoin":`round`,"stroke-linecap":`round`},null,8,C),(d(!0),s(f,null,c(n(H).days,(e,t)=>(d(),s(`circle`,{key:e.date,cx:G(t),cy:K(e.actual),r:`3`,fill:`#fff`,stroke:`#8a63f7`,"stroke-width":`1.8`},null,8,w))),128)),n(q)>=0?(d(),s(`line`,{key:0,x1:G(n(q)),y1:34,x2:G(n(q)),y2:K(0),stroke:`#cf4759`,"stroke-dasharray":`3 3`,"stroke-width":`1.2`,opacity:`0.7`},null,8,T)):h(``,!0),n(q)>=0?(d(),s(`text`,{key:1,x:G(n(q)),y:28,"text-anchor":`middle`,"font-size":`9.5`,fill:`#a5382f`},`今天`,8,E)):h(``,!0),(d(!0),s(f,null,c(n(H).days,(e,t)=>ee((d(),s(`text`,{key:`t`+e.date,x:G(t),y:286,"text-anchor":`middle`,"font-size":`9.5`,fill:`#b0b4ba`},p(n(I)(e.date)),9,D)),[[ie,t%Math.ceil(n(U)/10)===0]])),128)),(d(!0),s(f,null,c(n(Q),e=>(d(),s(`g`,{key:e.at+e.id},[o(`title`,null,p(e.id)+` `+p(e.title)+`:`+p(n(z)[e.kind])+`(`+p(e.at)+`,`+p(e.points)+` 点)—— `+p(e.reason),1),o(`line`,{x1:G(e.idx),y1:36,x2:G(e.idx),y2:K(0),stroke:`#3f7fd4`,"stroke-dasharray":`4 3`,"stroke-width":`1.2`,opacity:`0.8`},null,8,O),o(`circle`,{cx:G(e.idx),cy:34,r:`3`,fill:`#3f7fd4`},null,8,k)]))),128))],8,xe))]),o(`div`,A,[(d(!0),s(f,null,c(n(H).days,e=>(d(),s(`div`,{key:`row`+e.date,class:a([`cell`,{today:e.date===n(L),future:e.date>n(L),scope:n(Ge).has(e.date)}])},[o(`span`,j,p(n(I)(e.date)),1),o(`span`,Ce,p(e.actual),1),o(`span`,we,p(e.ideal),1),o(`i`,{class:`underline`,style:te({width:(n(W)?e.actual/n(W)*100:0)+`%`})},null,4)],2))),128))]),l[12]||=o(`p`,{class:`foot dim`},`每格:日期 / 实际剩余 / 理想剩余`,-1),n(Q).length?(d(),s(`div`,Te,[o(`p`,Ee,[e(_,{name:`i-lucide-git-branch`,class:`size-3`}),t(`本迭代范围变更(`+p(n(Q).length)+`)`,1)]),o(`ul`,null,[(d(!0),s(f,null,c(n(Q),r=>(d(),s(`li`,{key:r.id},[o(`span`,De,p(n(z)[r.kind]),1),e(y,{to:`/story/${r.id}`,class:`mono link`},{default:ne(()=>[t(p(r.id),1)]),_:2},1032,[`to`]),o(`span`,null,p(r.title),1),o(`span`,Oe,`· `+p(r.at)+` · `+p(r.points)+` 点 · `+p(r.reason),1)]))),128))]),l[11]||=o(`p`,{class:`foot dim`},`竖线标出的那几天,实际剩余没有按理想线下滑,是插了活而不是团队拖。`,-1)])):h(``,!0)])):(d(),s(`div`,ke,[e(_,{name:`i-lucide-info`,class:`size-4`}),l[13]||=t(`还没有迭代数据。 `,-1)])),o(`div`,Ae,[o(`div`,je,[l[14]||=o(`h2`,{class:`h2`},`迭代对照`,-1),o(`span`,Me,p(n($).length),1),l[15]||=o(`span`,{class:`dim tip`},`点一行切换上面的燃尽图`,-1)]),o(`div`,M,[o(`table`,Ne,[l[16]||=o(`thead`,null,[o(`tr`,null,[o(`th`,null,`迭代`),o(`th`,null,`名称`),o(`th`,null,`周期`),o(`th`,{class:`r`},`故事`),o(`th`,{class:`r`},`承诺 / 容量`),o(`th`,null,`状态`)])],-1),o(`tbody`,null,[(d(!0),s(f,null,c(n($),e=>(d(),s(`tr`,{key:e.id,class:a({on:e.id===n(B)}),onClick:t=>B.value=e.id},[o(`td`,Fe,p(e.id),1),o(`td`,null,p(e.name),1),o(`td`,Ie,p(e.period),1),o(`td`,Le,p(e.stories),1),o(`td`,Re,p(e.commit)+`/`+p(e.capacity),1),o(`td`,null,[o(`span`,{class:a([`tag`,e.tone])},p(e.status),3)])],10,Pe))),128))])])])])])}}}),[[`__scopeId`,`data-v-d8ba9a67`]]);export{P as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{D as e,Ht as t,Lt as n,On as r,Tn as i,Zn as a,_ as o,at as s,b as c,bt as l,ct as u,et as d,g as f,k as p,mt as m,o as h,qt as g,tr as _,tt as v,v as y,vn as b,wt as x,xt as S,y as C}from"./DZo3dYLJ.js";import{C as w,w as T}from"./51OWHj8c.js";import{r as E}from"./Csqgy925.js";import{t as D}from"./Cm9lkUvP.js";import{h as O,n as k,t as A}from"./6gFtTBwm.js";import{r as j,t as M}from"./DLkAKotw.js";import{n as N,r as P}from"./Bb3Limos.js";import{r as F}from"./CuJUHLl8.js";import{p as I,t as L}from"./Vo4wMbnS.js";import{t as R}from"./CK9_veoz.js";import{t as z}from"./Ci0qbkgh.js";import{r as B}from"./BPTrRhcw.js";import{t as V}from"./V0uynWE2.js";import{t as H}from"./BO6qoy1z.js";import{x as U}from"#entry";import W from"./C0MJr2p5.js";function G(e,t){let n=b(),r=(r,i)=>{if(t.multiple&&Array.isArray(e.value)){if(t.selectionBehavior===`replace`)e.value=[r],n.value=r;else{let t=e.value.findIndex(e=>i(e));e.value=t===-1?[...e.value,r]:e.value.filter((e,n)=>n!==t)}}else e.value=t.selectionBehavior===`replace`?{...r}:!Array.isArray(e.value)&&i(e.value)?void 0:{...r};return e.value};function i(r,i,a,o){if(!n?.value||!t.multiple||!Array.isArray(e.value))return;let s=a().filter(e=>e.ref.dataset.disabled!==``).find(e=>e.ref===i)?.value;if(!s)return;let c=null;switch(r){case`prev`:case`next`:c=D(o,n.value,s);break;case`first`:c=D(o,n.value,o?.[0]);break;case`last`:c=D(o,n.value,o.at(-1))}e.value=c}return{firstValue:n,onSelectItem:r,handleMultipleReplace:i}}function K(e){return e.reduce((e,t)=>(e.push(t),t.children&&e.push(...K(t.children)),e),[])}var[q,J]=O(`TreeRoot`),Y=p({__name:`TreeRoot`,props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},items:{type:Array,required:!1},expanded:{type:Array,required:!1},defaultExpanded:{type:Array,required:!1},getKey:{type:Function,required:!0},getChildren:{type:Function,required:!1,default:e=>e.children},selectionBehavior:{type:String,required:!1,default:`toggle`},multiple:{type:Boolean,required:!1,skipCheck:!0},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},propagateSelect:{type:Boolean,required:!1},bubbleSelect:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`ul`}},emits:[`update:modelValue`,`update:expanded`],setup(t,{emit:n}){let a=t,o=n,{items:s,multiple:c,disabled:l,propagateSelect:u,dir:d,bubbleSelect:p,loop:h}=i(a),{handleTypeaheadSearch:_}=N(),x=z(d),C=b(),E=b(!1),D=F(),O=I(a,`modelValue`,o,{defaultValue:a.defaultValue??(c.value?[]:void 0),passive:!0,deep:!0}),k=I(a,`expanded`,o,{defaultValue:a.defaultExpanded??[],passive:a.expanded===void 0,deep:!0}),{onSelectItem:A,handleMultipleReplace:M}=G(O,a),P=f(()=>c.value&&Array.isArray(O.value)?O.value.map(e=>a.getKey(e)):[a.getKey(O.value??{})]);function L(e,t=1,n){return e.reduce((r,i,o)=>{let s=a.getKey(i),c=a.getChildren(i),l=k.value.includes(s),u={_id:s,value:i,index:o,level:t,parentItem:n,hasChildren:!!c,bind:{value:i,level:t,"aria-setsize":e.length,"aria-posinset":o+1}};return r.push(u),c&&l&&r.push(...L(c,t+1,i)),r},[])}let V=f(()=>{let e=a.items;return k.value.map(e=>e),L(e??[])}),H=[`input`,`textarea`,`select`];function W(e){let t=e.target;return t?H.includes(t.tagName.toLowerCase())||t.isContentEditable:!1}function q(e){if(!W(e)){if(E.value)D.trigger(e);else{let t=C.value?.getItems()??[];_(e.key,t)}}}function Y(e){if(E.value||W(e))return;let t=B[e.key];v(()=>{M(t,j(),C.value?.getItems,V.value.map(e=>e.value))})}function X(e){if(e.parentItem!=null&&Array.isArray(O.value)&&a.multiple){let t=V.value.find(t=>e.parentItem!=null&&a.getKey(t.value)===a.getKey(e.parentItem));t!=null&&(a.getChildren(t.value)?.every(e=>O.value.find(t=>a.getKey(t)===a.getKey(e)))?O.value=[...O.value,t.value]:O.value=O.value.filter(e=>a.getKey(e)!==a.getKey(t.value)),X(t))}}return J({modelValue:O,selectedKeys:P,onSelect:e=>{let t=t=>a.getKey(t??{})===a.getKey(e),n=a.multiple&&Array.isArray(O.value)?O.value?.findIndex(t)!==-1:void 0;if(A(e,t),a.bubbleSelect&&a.multiple&&Array.isArray(O.value)){let t=V.value.find(t=>a.getKey(t.value)===a.getKey(e));t!=null&&X(t)}if(a.propagateSelect&&a.multiple&&Array.isArray(O.value)){let t=K(a.getChildren(e)??[]);n?O.value=[...O.value].filter(e=>!t.some(t=>a.getKey(e??{})===a.getKey(t))):O.value=[...O.value,...t]}},expanded:k,onToggle(e){if(!(e&&a.getChildren(e)))return;let t=a.getKey(e)??e;k.value.includes(t)?k.value=k.value.filter(e=>e!==t):k.value=[...k.value,t]},getKey:a.getKey,getChildren:a.getChildren,items:s,expandedItems:V,disabled:l,multiple:c,dir:x,propagateSelect:u,bubbleSelect:p,loop:h,isVirtual:E,virtualKeydownHook:D,handleMultipleReplace:M}),(n,i)=>(m(),y(r(U),{ref_key:`rovingFocusGroupRef`,ref:C,"as-child":``,orientation:`vertical`,dir:r(x),loop:r(h)&&!E.value},{default:g(()=>[e(r(R),{role:`tree`,as:t.as,"as-child":t.asChild,"aria-multiselectable":r(c)?!0:void 0,onKeydown:[q,w(T(Y,[`shift`]),[`up`,`down`])]},{default:g(()=>[S(n.$slots,`default`,{flattenItems:V.value,modelValue:r(O),expanded:r(k)})]),_:3},8,[`as`,`as-child`,`aria-multiselectable`,`onKeydown`])]),_:3},8,[`dir`,`loop`]))}}),X=`tree.select`,Z=`tree.toggle`,Q=p({inheritAttrs:!1,__name:`TreeItem`,props:{value:{type:null,required:!0},level:{type:Number,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`li`}},emits:[`select`,`toggle`],setup(t,{expose:n,emit:i}){let a=t,o=i,s=q(),{getItems:c}=M(),l=f(()=>!!s.getChildren(a.value)),u=f(()=>{let e=s.getKey(a.value);return s.expanded.value.includes(e)}),p=f(()=>{let e=s.getKey(a.value);return s.selectedKeys.value.includes(e)}),h=f(()=>{if(s.bubbleSelect.value&&l.value&&Array.isArray(s.modelValue.value)){let e=K(s.getChildren(a.value)||[]);return e.some(e=>s.modelValue.value.find(t=>s.getKey(t)===s.getKey(e)))&&!e.every(e=>s.modelValue.value.find(t=>s.getKey(t)===s.getKey(e)))}if(s.propagateSelect.value&&p.value&&l.value&&Array.isArray(s.modelValue.value))return!K(s.getChildren(a.value)||[]).every(e=>s.modelValue.value.find(t=>s.getKey(t)===s.getKey(e)))}),_=f(()=>s.disabled.value||a.disabled);function v(e){if(!_.value&&l.value){if(u.value){let e=c().map(e=>e.ref),t=j(),n=e.indexOf(t),r=[...e].slice(n).find(e=>Number(e.getAttribute(`data-indent`))===a.level+1);r&&r.focus()}else D(e)}}function b(e){if(!_.value){if(u.value)D(e);else{let e=c().map(e=>e.ref),t=j(),n=e.indexOf(t),r=[...e].slice(0,n).reverse().find(e=>Number(e.getAttribute(`data-indent`))===a.level-1);r&&r.focus()}}}async function x(e){_.value||(o(`select`,e),!e?.defaultPrevented&&s.onSelect(a.value))}async function C(e){_.value||(o(`toggle`,e),!e?.defaultPrevented&&s.onToggle(a.value))}async function E(e){if(!e)return;let t={originalEvent:e,value:a.value,isExpanded:u.value,isSelected:p.value};P(X,x,t)}async function D(e){if(!e)return;let t={originalEvent:e,value:a.value,isExpanded:u.value,isSelected:p.value};P(Z,C,t)}return n({isExpanded:u,isSelected:p,isIndeterminate:h,isDisabled:_,handleToggle:()=>s.onToggle(a.value),handleSelect:()=>s.onSelect(a.value)}),(n,i)=>(m(),y(r(V),{"as-child":``,value:t.value,"allow-shift-key":``,focusable:!_.value},{default:g(()=>[e(r(R),d(n.$attrs,{role:`treeitem`,as:t.as,"as-child":t.asChild,"aria-selected":p.value,"aria-expanded":l.value?u.value:void 0,"aria-level":t.level,"aria-disabled":_.value?!0:void 0,"data-indent":t.level,"data-selected":p.value?``:void 0,"data-expanded":u.value?``:void 0,"data-disabled":_.value?``:void 0,onKeydown:[w(T(E,[`self`,`prevent`]),[`enter`,`space`]),i[0]||=w(T(e=>r(s).dir.value===`ltr`?v(e):b(e),[`self`,`prevent`]),[`right`]),i[1]||=w(T(e=>r(s).dir.value===`ltr`?b(e):v(e),[`self`,`prevent`]),[`left`])],onClick:i[2]||=T(e=>{E(e),D(e)},[`stop`])}),{default:g(()=>[S(n.$slots,`default`,{isExpanded:u.value,isSelected:p.value,isIndeterminate:h.value,isDisabled:_.value,handleSelect:()=>r(s).onSelect(t.value),handleToggle:()=>r(s).onToggle(t.value)})]),_:3},16,[`as`,`as-child`,`aria-selected`,`aria-expanded`,`aria-level`,`aria-disabled`,`data-indent`,`data-selected`,`data-expanded`,`data-disabled`,`onKeydown`])]),_:3},8,[`value`,`focusable`]))}}),$={slots:{root:`relative lg:h-[450px] my-5 grid lg:grid-cols-3 border border-muted rounded-md`,list:`isolate relative p-2 border-b lg:border-b-0 lg:border-e border-muted overflow-y-auto`,item:``,listWithChildren:`ms-4.5 border-s border-default`,itemWithChildren:`ps-1.5 -ms-px`,link:`relative group peer w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none before:outline-primary/25 focus-visible:before:outline-3`,linkLeadingIcon:`size-4 shrink-0`,linkLabel:`truncate`,linkTrailing:`ms-auto inline-flex gap-1.5 items-center`,linkTrailingIcon:`size-5 transform transition-transform duration-200 ease-out motion-reduce:transition-none shrink-0 group-data-expanded:rotate-180`,content:`overflow-hidden lg:col-span-2 flex flex-col [&>div]:my-0 [&>div]:flex-1 [&>div]:flex [&>div]:flex-col [&>div>div]:border-0 [&>div>pre]:border-b-0 [&>div>pre]:border-s-0 [&>div>pre]:border-e-0 [&>div>pre]:rounded-s-none [&>div>pre]:flex-1 [&>div]:overflow-y-auto`},variants:{active:{true:{link:`text-highlighted before:bg-elevated`},false:{link:[`hover:text-highlighted hover:before:bg-elevated/50`,`transition-colors before:transition-colors`]}}}},ee=Object.assign({inheritAttrs:!1},{__name:`ProseCodeTree`,props:{items:{type:Array,required:!1},modelValue:{type:String,required:!1},defaultValue:{type:String,required:!1},expandAll:{type:Boolean,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},emits:[`update:modelValue`],setup(i,{emit:p}){let v=i,S=p,w=n(),T=k(`prose.codeTree`,v),D=E(),[O,j]=L(),M=f(()=>A({extend:$,...D.ui?.prose?.codeTree||{}})()),N=T.modelValue??T.defaultValue,P=b(N?{path:N}:void 0);t(P,e=>{e?.path!==T.modelValue&&S(`update:modelValue`,e?.path)}),t(()=>T.modelValue,e=>{if(e===P.value?.path)return;P.value=e?{path:e}:void 0;let t=[...G.value];for(let n of V(e))t.includes(n)||t.push(n);G.value=t});let F=b(1),I=f(()=>(F.value,T.items||w.default?.()?.flatMap(B).filter(Boolean)||[])),R=f(()=>z(I.value));function z(e){let t=new Map,n=[];e.forEach(e=>{let r=e.label.split(`/`),i=``;r.forEach((e,a)=>{if(i=i?`${i}/${e}`:e,!t.has(i)){let o={label:e,path:i,...a<r.length-1&&{children:[]}};t.set(i,o),a===0?n.push(o):t.get(r.slice(0,a).join(`/`))?.children?.push(o)}})});let r=e=>e.sort((e,t)=>!!e.children==!!t.children?e.label.localeCompare(t.label):t.children?1:-1).map(e=>({...e,children:e.children&&r(e.children)}));return r(n)}function B(e,t){return typeof e.type==`symbol`?e.children?.map(B):{label:e.props?.filename||e.props?.label||`${t}`,icon:e.props?.icon,component:e}}function V(e){if(T.expandAll){let e=new Set;return I.value.forEach(t=>{let n=t.label.split(`/`);for(let t=1;t<n.length;t++)e.add(n.slice(0,t).join(`/`))}),Array.from(e)}if(!e)return[];let t=e.split(`/`);return t.slice(0,-1).map((e,n)=>t.slice(0,n+1).join(`/`))}let U=b(T.expandAll?null:V(P.value?.path)),G=f({get:()=>U.value??V(),set:e=>{U.value=e}});t(()=>T.expandAll,e=>{U.value=e?null:V(P.value?.path)}),u(()=>{t(I,(e,t)=>{T.expandAll&&e.map(e=>e.label).join(`
|
|
1
|
+
import{D as e,Ht as t,Lt as n,On as r,Tn as i,Zn as a,_ as o,at as s,b as c,bt as l,ct as u,et as d,g as f,k as p,mt as m,o as h,qt as g,tr as _,tt as v,v as y,vn as b,wt as x,xt as S,y as C}from"./DZo3dYLJ.js";import{C as w,w as T}from"./51OWHj8c.js";import{r as E}from"./Csqgy925.js";import{t as D}from"./Cm9lkUvP.js";import{h as O,n as k,t as A}from"./6gFtTBwm.js";import{r as j,t as M}from"./DLkAKotw.js";import{n as N,r as P}from"./Bb3Limos.js";import{r as F}from"./CuJUHLl8.js";import{p as I,t as L}from"./Vo4wMbnS.js";import{t as R}from"./CK9_veoz.js";import{t as z}from"./Ci0qbkgh.js";import{r as B}from"./BPTrRhcw.js";import{t as V}from"./V0uynWE2.js";import{t as H}from"./rlePnzpc.js";import{x as U}from"#entry";import W from"./CJMBJQuf.js";function G(e,t){let n=b(),r=(r,i)=>{if(t.multiple&&Array.isArray(e.value)){if(t.selectionBehavior===`replace`)e.value=[r],n.value=r;else{let t=e.value.findIndex(e=>i(e));e.value=t===-1?[...e.value,r]:e.value.filter((e,n)=>n!==t)}}else e.value=t.selectionBehavior===`replace`?{...r}:!Array.isArray(e.value)&&i(e.value)?void 0:{...r};return e.value};function i(r,i,a,o){if(!n?.value||!t.multiple||!Array.isArray(e.value))return;let s=a().filter(e=>e.ref.dataset.disabled!==``).find(e=>e.ref===i)?.value;if(!s)return;let c=null;switch(r){case`prev`:case`next`:c=D(o,n.value,s);break;case`first`:c=D(o,n.value,o?.[0]);break;case`last`:c=D(o,n.value,o.at(-1))}e.value=c}return{firstValue:n,onSelectItem:r,handleMultipleReplace:i}}function K(e){return e.reduce((e,t)=>(e.push(t),t.children&&e.push(...K(t.children)),e),[])}var[q,J]=O(`TreeRoot`),Y=p({__name:`TreeRoot`,props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},items:{type:Array,required:!1},expanded:{type:Array,required:!1},defaultExpanded:{type:Array,required:!1},getKey:{type:Function,required:!0},getChildren:{type:Function,required:!1,default:e=>e.children},selectionBehavior:{type:String,required:!1,default:`toggle`},multiple:{type:Boolean,required:!1,skipCheck:!0},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},propagateSelect:{type:Boolean,required:!1},bubbleSelect:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`ul`}},emits:[`update:modelValue`,`update:expanded`],setup(t,{emit:n}){let a=t,o=n,{items:s,multiple:c,disabled:l,propagateSelect:u,dir:d,bubbleSelect:p,loop:h}=i(a),{handleTypeaheadSearch:_}=N(),x=z(d),C=b(),E=b(!1),D=F(),O=I(a,`modelValue`,o,{defaultValue:a.defaultValue??(c.value?[]:void 0),passive:!0,deep:!0}),k=I(a,`expanded`,o,{defaultValue:a.defaultExpanded??[],passive:a.expanded===void 0,deep:!0}),{onSelectItem:A,handleMultipleReplace:M}=G(O,a),P=f(()=>c.value&&Array.isArray(O.value)?O.value.map(e=>a.getKey(e)):[a.getKey(O.value??{})]);function L(e,t=1,n){return e.reduce((r,i,o)=>{let s=a.getKey(i),c=a.getChildren(i),l=k.value.includes(s),u={_id:s,value:i,index:o,level:t,parentItem:n,hasChildren:!!c,bind:{value:i,level:t,"aria-setsize":e.length,"aria-posinset":o+1}};return r.push(u),c&&l&&r.push(...L(c,t+1,i)),r},[])}let V=f(()=>{let e=a.items;return k.value.map(e=>e),L(e??[])}),H=[`input`,`textarea`,`select`];function W(e){let t=e.target;return t?H.includes(t.tagName.toLowerCase())||t.isContentEditable:!1}function q(e){if(!W(e)){if(E.value)D.trigger(e);else{let t=C.value?.getItems()??[];_(e.key,t)}}}function Y(e){if(E.value||W(e))return;let t=B[e.key];v(()=>{M(t,j(),C.value?.getItems,V.value.map(e=>e.value))})}function X(e){if(e.parentItem!=null&&Array.isArray(O.value)&&a.multiple){let t=V.value.find(t=>e.parentItem!=null&&a.getKey(t.value)===a.getKey(e.parentItem));t!=null&&(a.getChildren(t.value)?.every(e=>O.value.find(t=>a.getKey(t)===a.getKey(e)))?O.value=[...O.value,t.value]:O.value=O.value.filter(e=>a.getKey(e)!==a.getKey(t.value)),X(t))}}return J({modelValue:O,selectedKeys:P,onSelect:e=>{let t=t=>a.getKey(t??{})===a.getKey(e),n=a.multiple&&Array.isArray(O.value)?O.value?.findIndex(t)!==-1:void 0;if(A(e,t),a.bubbleSelect&&a.multiple&&Array.isArray(O.value)){let t=V.value.find(t=>a.getKey(t.value)===a.getKey(e));t!=null&&X(t)}if(a.propagateSelect&&a.multiple&&Array.isArray(O.value)){let t=K(a.getChildren(e)??[]);n?O.value=[...O.value].filter(e=>!t.some(t=>a.getKey(e??{})===a.getKey(t))):O.value=[...O.value,...t]}},expanded:k,onToggle(e){if(!(e&&a.getChildren(e)))return;let t=a.getKey(e)??e;k.value.includes(t)?k.value=k.value.filter(e=>e!==t):k.value=[...k.value,t]},getKey:a.getKey,getChildren:a.getChildren,items:s,expandedItems:V,disabled:l,multiple:c,dir:x,propagateSelect:u,bubbleSelect:p,loop:h,isVirtual:E,virtualKeydownHook:D,handleMultipleReplace:M}),(n,i)=>(m(),y(r(U),{ref_key:`rovingFocusGroupRef`,ref:C,"as-child":``,orientation:`vertical`,dir:r(x),loop:r(h)&&!E.value},{default:g(()=>[e(r(R),{role:`tree`,as:t.as,"as-child":t.asChild,"aria-multiselectable":r(c)?!0:void 0,onKeydown:[q,w(T(Y,[`shift`]),[`up`,`down`])]},{default:g(()=>[S(n.$slots,`default`,{flattenItems:V.value,modelValue:r(O),expanded:r(k)})]),_:3},8,[`as`,`as-child`,`aria-multiselectable`,`onKeydown`])]),_:3},8,[`dir`,`loop`]))}}),X=`tree.select`,Z=`tree.toggle`,Q=p({inheritAttrs:!1,__name:`TreeItem`,props:{value:{type:null,required:!0},level:{type:Number,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`li`}},emits:[`select`,`toggle`],setup(t,{expose:n,emit:i}){let a=t,o=i,s=q(),{getItems:c}=M(),l=f(()=>!!s.getChildren(a.value)),u=f(()=>{let e=s.getKey(a.value);return s.expanded.value.includes(e)}),p=f(()=>{let e=s.getKey(a.value);return s.selectedKeys.value.includes(e)}),h=f(()=>{if(s.bubbleSelect.value&&l.value&&Array.isArray(s.modelValue.value)){let e=K(s.getChildren(a.value)||[]);return e.some(e=>s.modelValue.value.find(t=>s.getKey(t)===s.getKey(e)))&&!e.every(e=>s.modelValue.value.find(t=>s.getKey(t)===s.getKey(e)))}if(s.propagateSelect.value&&p.value&&l.value&&Array.isArray(s.modelValue.value))return!K(s.getChildren(a.value)||[]).every(e=>s.modelValue.value.find(t=>s.getKey(t)===s.getKey(e)))}),_=f(()=>s.disabled.value||a.disabled);function v(e){if(!_.value&&l.value){if(u.value){let e=c().map(e=>e.ref),t=j(),n=e.indexOf(t),r=[...e].slice(n).find(e=>Number(e.getAttribute(`data-indent`))===a.level+1);r&&r.focus()}else D(e)}}function b(e){if(!_.value){if(u.value)D(e);else{let e=c().map(e=>e.ref),t=j(),n=e.indexOf(t),r=[...e].slice(0,n).reverse().find(e=>Number(e.getAttribute(`data-indent`))===a.level-1);r&&r.focus()}}}async function x(e){_.value||(o(`select`,e),!e?.defaultPrevented&&s.onSelect(a.value))}async function C(e){_.value||(o(`toggle`,e),!e?.defaultPrevented&&s.onToggle(a.value))}async function E(e){if(!e)return;let t={originalEvent:e,value:a.value,isExpanded:u.value,isSelected:p.value};P(X,x,t)}async function D(e){if(!e)return;let t={originalEvent:e,value:a.value,isExpanded:u.value,isSelected:p.value};P(Z,C,t)}return n({isExpanded:u,isSelected:p,isIndeterminate:h,isDisabled:_,handleToggle:()=>s.onToggle(a.value),handleSelect:()=>s.onSelect(a.value)}),(n,i)=>(m(),y(r(V),{"as-child":``,value:t.value,"allow-shift-key":``,focusable:!_.value},{default:g(()=>[e(r(R),d(n.$attrs,{role:`treeitem`,as:t.as,"as-child":t.asChild,"aria-selected":p.value,"aria-expanded":l.value?u.value:void 0,"aria-level":t.level,"aria-disabled":_.value?!0:void 0,"data-indent":t.level,"data-selected":p.value?``:void 0,"data-expanded":u.value?``:void 0,"data-disabled":_.value?``:void 0,onKeydown:[w(T(E,[`self`,`prevent`]),[`enter`,`space`]),i[0]||=w(T(e=>r(s).dir.value===`ltr`?v(e):b(e),[`self`,`prevent`]),[`right`]),i[1]||=w(T(e=>r(s).dir.value===`ltr`?b(e):v(e),[`self`,`prevent`]),[`left`])],onClick:i[2]||=T(e=>{E(e),D(e)},[`stop`])}),{default:g(()=>[S(n.$slots,`default`,{isExpanded:u.value,isSelected:p.value,isIndeterminate:h.value,isDisabled:_.value,handleSelect:()=>r(s).onSelect(t.value),handleToggle:()=>r(s).onToggle(t.value)})]),_:3},16,[`as`,`as-child`,`aria-selected`,`aria-expanded`,`aria-level`,`aria-disabled`,`data-indent`,`data-selected`,`data-expanded`,`data-disabled`,`onKeydown`])]),_:3},8,[`value`,`focusable`]))}}),$={slots:{root:`relative lg:h-[450px] my-5 grid lg:grid-cols-3 border border-muted rounded-md`,list:`isolate relative p-2 border-b lg:border-b-0 lg:border-e border-muted overflow-y-auto`,item:``,listWithChildren:`ms-4.5 border-s border-default`,itemWithChildren:`ps-1.5 -ms-px`,link:`relative group peer w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none before:outline-primary/25 focus-visible:before:outline-3`,linkLeadingIcon:`size-4 shrink-0`,linkLabel:`truncate`,linkTrailing:`ms-auto inline-flex gap-1.5 items-center`,linkTrailingIcon:`size-5 transform transition-transform duration-200 ease-out motion-reduce:transition-none shrink-0 group-data-expanded:rotate-180`,content:`overflow-hidden lg:col-span-2 flex flex-col [&>div]:my-0 [&>div]:flex-1 [&>div]:flex [&>div]:flex-col [&>div>div]:border-0 [&>div>pre]:border-b-0 [&>div>pre]:border-s-0 [&>div>pre]:border-e-0 [&>div>pre]:rounded-s-none [&>div>pre]:flex-1 [&>div]:overflow-y-auto`},variants:{active:{true:{link:`text-highlighted before:bg-elevated`},false:{link:[`hover:text-highlighted hover:before:bg-elevated/50`,`transition-colors before:transition-colors`]}}}},ee=Object.assign({inheritAttrs:!1},{__name:`ProseCodeTree`,props:{items:{type:Array,required:!1},modelValue:{type:String,required:!1},defaultValue:{type:String,required:!1},expandAll:{type:Boolean,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},emits:[`update:modelValue`],setup(i,{emit:p}){let v=i,S=p,w=n(),T=k(`prose.codeTree`,v),D=E(),[O,j]=L(),M=f(()=>A({extend:$,...D.ui?.prose?.codeTree||{}})()),N=T.modelValue??T.defaultValue,P=b(N?{path:N}:void 0);t(P,e=>{e?.path!==T.modelValue&&S(`update:modelValue`,e?.path)}),t(()=>T.modelValue,e=>{if(e===P.value?.path)return;P.value=e?{path:e}:void 0;let t=[...G.value];for(let n of V(e))t.includes(n)||t.push(n);G.value=t});let F=b(1),I=f(()=>(F.value,T.items||w.default?.()?.flatMap(B).filter(Boolean)||[])),R=f(()=>z(I.value));function z(e){let t=new Map,n=[];e.forEach(e=>{let r=e.label.split(`/`),i=``;r.forEach((e,a)=>{if(i=i?`${i}/${e}`:e,!t.has(i)){let o={label:e,path:i,...a<r.length-1&&{children:[]}};t.set(i,o),a===0?n.push(o):t.get(r.slice(0,a).join(`/`))?.children?.push(o)}})});let r=e=>e.sort((e,t)=>!!e.children==!!t.children?e.label.localeCompare(t.label):t.children?1:-1).map(e=>({...e,children:e.children&&r(e.children)}));return r(n)}function B(e,t){return typeof e.type==`symbol`?e.children?.map(B):{label:e.props?.filename||e.props?.label||`${t}`,icon:e.props?.icon,component:e}}function V(e){if(T.expandAll){let e=new Set;return I.value.forEach(t=>{let n=t.label.split(`/`);for(let t=1;t<n.length;t++)e.add(n.slice(0,t).join(`/`))}),Array.from(e)}if(!e)return[];let t=e.split(`/`);return t.slice(0,-1).map((e,n)=>t.slice(0,n+1).join(`/`))}let U=b(T.expandAll?null:V(P.value?.path)),G=f({get:()=>U.value??V(),set:e=>{U.value=e}});t(()=>T.expandAll,e=>{U.value=e?null:V(P.value?.path)}),u(()=>{t(I,(e,t)=>{T.expandAll&&e.map(e=>e.label).join(`
|
|
2
2
|
`)!==(t?.map(e=>e.label).join(`
|
|
3
3
|
`)??``)&&(U.value=null)})});let K,q=f(()=>{let e=I.value.find(e=>P.value?.path===e.label);return e?.component&&(K=e),K});return s(()=>F.value++),(t,n)=>(m(),c(h,null,[e(r(O),null,{default:g(({items:t,level:n})=>[(m(!0),c(h,null,l(t,(t,i)=>(m(),c(`li`,{key:`${n}-${i}`,role:`presentation`,class:a(n>1?M.value.itemWithChildren({class:r(T).ui?.itemWithChildren}):M.value.item({class:r(T).ui?.item}))},[e(r(Q),{level:n,value:t,"as-child":``},{default:g(({isExpanded:i,isSelected:s})=>[o(`button`,{type:`button`,class:a(M.value.link({class:r(T).ui?.link,active:s}))},[t.children?.length?(m(),y(H,{key:0,name:i?r(D).ui.icons.folderOpen:r(D).ui.icons.folder,class:a(M.value.linkLeadingIcon({class:r(T).ui?.linkLeadingIcon}))},null,8,[`name`,`class`])):(m(),y(W,{key:1,filename:t.label,class:a(M.value.linkLeadingIcon({class:r(T).ui?.linkLeadingIcon}))},null,8,[`filename`,`class`])),o(`span`,{class:a(M.value.linkLabel({class:r(T).ui?.linkLabel}))},_(t.label),3),t.children?.length?(m(),c(`span`,{key:2,class:a(M.value.linkTrailing({class:r(T).ui?.linkTrailing}))},[e(H,{name:r(D).ui.icons.chevronDown,class:a(M.value.linkTrailingIcon({class:r(T).ui?.linkTrailingIcon}))},null,8,[`name`,`class`])],2)):C(``,!0)],2),t.children?.length&&i?(m(),c(`ul`,{key:0,role:`group`,class:a(M.value.listWithChildren({class:r(T).ui?.listWithChildren}))},[e(r(j),{items:t.children,level:n+1},null,8,[`items`,`level`])],2)):C(``,!0)]),_:2},1032,[`level`,`value`])],2))),128))]),_:1}),o(`div`,d(t.$attrs,{class:M.value.root({class:[r(T).ui?.root,r(T).class]})}),[e(r(Y),{modelValue:P.value,"onUpdate:modelValue":n[0]||=e=>P.value=e,expanded:G.value,"onUpdate:expanded":n[1]||=e=>G.value=e,class:a(M.value.list({class:r(T).ui?.list})),items:R.value,"get-key":e=>e.path},{default:g(()=>[e(r(j),{items:R.value,level:1},null,8,[`items`])]),_:1},8,[`modelValue`,`expanded`,`class`,`items`,`get-key`]),o(`div`,{class:a(M.value.content({class:r(T).ui?.content}))},[(m(),y(x(q.value?.component)))],2)],16)],64))}});export{ee as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,On as t,Rt as n,Zn as r,_ as i,b as a,et as o,g as s,mt as c,tr as l,v as u,xt as d,y as f}from"./DZo3dYLJ.js";import{r as p}from"./Csqgy925.js";import{n as m,t as h}from"./6gFtTBwm.js";import{a as g}from"./Vo4wMbnS.js";import{t as _}from"./
|
|
1
|
+
import{D as e,On as t,Rt as n,Zn as r,_ as i,b as a,et as o,g as s,mt as c,tr as l,v as u,xt as d,y as f}from"./DZo3dYLJ.js";import{r as p}from"./Csqgy925.js";import{n as m,t as h}from"./6gFtTBwm.js";import{a as g}from"./Vo4wMbnS.js";import{t as _}from"./EYTShbt4.js";import{u as v}from"#entry";import y from"./CJMBJQuf.js";var b={slots:{root:`relative my-5 group`,header:`flex items-center gap-1.5 border border-muted bg-default border-b-0 relative rounded-t-md px-4 py-3`,filename:`text-default text-sm/6`,icon:`size-4 shrink-0`,copy:`absolute top-[11px] end-[11px] lg:opacity-0 lg:group-hover:opacity-100 lg:focus-visible:opacity-100 transition`,base:`group font-mono text-sm/6 border border-muted bg-muted rounded-md px-4 py-3 whitespace-pre-wrap wrap-break-word overflow-x-auto outline-primary/25 focus-visible:outline-3 focus-visible:border-primary **:[.line]:block **:[.line.highlight]:-mx-4 **:[.line.highlight]:px-4 **:[.line.highlight]:bg-accented/50!`},variants:{filename:{true:{root:`[&>pre]:rounded-t-none [&>pre]:my-0 my-5`}}}},x={__name:`ProsePre`,props:{icon:{type:null,required:!1},code:{type:String,required:!1},language:{type:String,required:!1},filename:{type:String,required:!1},highlights:{type:Array,required:!1},hideHeader:{type:Boolean,required:!1},meta:{type:String,required:!1},copy:{type:[Boolean,Object],required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(x){let S=m(`prose.pre`,x),{t:C}=v(),{copy:w,copied:T}=g(),E=p(),D=n(`baseRef`),O=s(()=>h({extend:b,...E.ui?.prose?.pre||{}})());function k(){let e=S.code??D.value?.textContent??``;w(e)}return(n,s)=>(c(),a(`div`,{class:r(O.value.root({class:[t(S).ui?.root],filename:!!t(S).filename}))},[t(S).filename&&!t(S).hideHeader?(c(),a(`div`,{key:0,class:r(O.value.header({class:t(S).ui?.header}))},[e(y,{icon:t(S).icon,filename:t(S).filename,class:r(O.value.icon({class:t(S).ui?.icon}))},null,8,[`icon`,`filename`,`class`]),i(`span`,{class:r(O.value.filename({class:t(S).ui?.filename}))},l(t(S).filename),3)],2)):f(``,!0),t(S).copy?(c(),u(_,o({key:1,icon:t(T)?t(E).ui.icons.copyCheck:t(E).ui.icons.copy,color:`neutral`,variant:`outline`,size:`sm`,"aria-label":t(C)(`prose.pre.copy`)},typeof t(S).copy==`object`?t(S).copy:{},{class:O.value.copy({class:t(S).ui?.copy}),onClick:k}),null,16,[`icon`,`aria-label`,`class`])):f(``,!0),i(`pre`,o({ref_key:`baseRef`,ref:D,class:O.value.base({class:[t(S).ui?.base,t(S).class]})},n.$attrs),[d(n.$slots,`default`)],16)],2))}};export{x as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,D as t,Ft as n,Ht as r,Lt as i,On as a,Zn as o,_ as s,at as c,b as l,bt as u,ct as d,g as f,mt as p,o as m,qt as h,tr as g,v as _,vn as v,wt as y}from"./DZo3dYLJ.js";import{r as b}from"./Csqgy925.js";import{n as x,t as S}from"./6gFtTBwm.js";import{a as C,i as w,n as T,r as E,t as D}from"./DWO9c9yp.js";import{c as O}from"#entry";import k from"./
|
|
1
|
+
import{$ as e,D as t,Ft as n,Ht as r,Lt as i,On as a,Zn as o,_ as s,at as c,b as l,bt as u,ct as d,g as f,mt as p,o as m,qt as h,tr as g,v as _,vn as v,wt as y}from"./DZo3dYLJ.js";import{r as b}from"./Csqgy925.js";import{n as x,t as S}from"./6gFtTBwm.js";import{a as C,i as w,n as T,r as E,t as D}from"./DWO9c9yp.js";import{c as O}from"#entry";import k from"./CJMBJQuf.js";var A={slots:{root:`relative group *:not-first:my-0! *:not-first:static! my-5`,list:`relative flex items-center gap-1 border border-muted bg-default border-b-0 rounded-t-md overflow-x-auto p-2`,indicator:`absolute left-0 inset-y-2 w-(--reka-tabs-indicator-size) translate-x-(--reka-tabs-indicator-position) transition-[translate,width] duration-200 ease-out motion-reduce:transition-none bg-elevated rounded-md shadow-xs`,trigger:[`relative inline-flex items-center gap-1.5 text-default data-[state=active]:text-highlighted hover:bg-elevated/50 px-2 py-1.5 text-sm rounded-md disabled:cursor-not-allowed disabled:opacity-75 outline-primary/25 focus-visible:outline-3`,`transition-colors`],triggerIcon:`size-4 shrink-0`,triggerLabel:`truncate`}},j={__name:`ProseCodeGroup`,props:e({defaultValue:{type:String,required:!1,default:`0`},sync:{type:String,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},{modelValue:{type:String},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let j=e,M=i(),N=x(`prose.codeGroup`,j),P=n(e,`modelValue`),F=b(),I=f(()=>S({extend:A,...F.ui?.prose?.codeGroup||{}})()),L=v(1),R=f(()=>(L.value,M.default?.()?.flatMap(z).filter(Boolean)||[]));function z(e,t){return typeof e.type==`symbol`?e.children?.map(z):{label:e.props?.filename||e.props?.label||`${t}`,icon:e.props?.icon,component:e}}return d(()=>{if(N.sync){let e=`code-group-${N.sync}`,t=O(e,()=>localStorage.getItem(e));r(t,()=>{t.value&&(P.value=t.value)},{immediate:!0}),r(P,()=>{P.value&&(t.value=P.value,localStorage.setItem(e,P.value))})}}),c(()=>L.value++),(e,n)=>(p(),_(a(C),{modelValue:P.value,"onUpdate:modelValue":n[0]||=e=>P.value=e,"default-value":a(N).defaultValue,"unmount-on-hide":!1,class:o(I.value.root({class:[a(N).ui?.root,a(N).class]}))},{default:h(()=>[t(a(T),{class:o(I.value.list({class:a(N).ui?.list}))},{default:h(()=>[t(a(E),{class:o(I.value.indicator({class:a(N).ui?.indicator}))},null,8,[`class`]),(p(!0),l(m,null,u(R.value,(e,n)=>(p(),_(a(D),{key:n,value:String(n),class:o(I.value.trigger({class:a(N).ui?.trigger}))},{default:h(()=>[t(k,{icon:e.icon,filename:e.label,class:o(I.value.triggerIcon({class:a(N).ui?.triggerIcon}))},null,8,[`icon`,`filename`,`class`]),s(`span`,{class:o(I.value.triggerLabel({class:a(N).ui?.triggerLabel}))},g(e.label),3)]),_:2},1032,[`value`,`class`]))),128))]),_:1},8,[`class`]),(p(!0),l(m,null,u(R.value,(e,t)=>(p(),_(a(w),{key:t,value:String(t),"as-child":``},{default:h(()=>[(p(),_(y(e.component),{"hide-header":``,tabindex:`-1`}))]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`,`default-value`,`class`]))}};export{j as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./D2O8Q8x9.js";import{D as t,On as n,Zn as r,_ as i,b as a,g as o,mt as s,xt as c}from"./DZo3dYLJ.js";import{r as l}from"./Csqgy925.js";import{n as u,t as d}from"./6gFtTBwm.js";import{t as f}from"./
|
|
1
|
+
import{s as e}from"./D2O8Q8x9.js";import{D as t,On as n,Zn as r,_ as i,b as a,g as o,mt as s,xt as c}from"./DZo3dYLJ.js";import{r as l}from"./Csqgy925.js";import{n as u,t as d}from"./6gFtTBwm.js";import{t as f}from"./rlePnzpc.js";var p={slots:{base:[`relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:rounded-sm [&>a]:outline-primary/25 [&>a]:focus-visible:outline-3 [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold`,`[&>a>code]:transition-colors`],leading:[`absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated group-hover:text-primary group-focus:text-primary rounded-md hidden lg:flex text-muted`,`transition`],leadingIcon:`size-4 shrink-0`,link:`group lg:after:absolute lg:after:inset-y-0 lg:after:-inset-s-2 lg:after:w-2`}},m=[`id`],h=[`href`],g={__name:`ProseH3`,props:{id:{type:String,required:!1},anchor:{type:Boolean,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(g){let _=u(`prose.h3`,g),v=l(),{headings:y}=e().public?.mdc||{},b=o(()=>d({extend:p,...v.ui?.prose?.h3||{}})()),x=o(()=>_.id&&(_.anchor??(typeof y?.anchorLinks==`boolean`?y.anchorLinks:y?.anchorLinks?.h3)??!1));return(e,o)=>(s(),a(`h3`,{id:n(_).id,class:r(b.value.base({class:[n(_).ui?.base,n(_).class]}))},[n(_).id&&x.value?(s(),a(`a`,{key:0,href:`#${n(_).id}`,class:r(b.value.link({class:n(_).ui?.link}))},[i(`span`,{class:r(b.value.leading({class:n(_).ui?.leading}))},[t(f,{name:n(v).ui.icons.hash,class:r(b.value.leadingIcon({class:n(_).ui?.leadingIcon}))},null,8,[`name`,`class`])],2),c(e.$slots,`default`)],10,h)):c(e.$slots,`default`,{},void 0,void 0,1)],10,m))}};export{g as default};
|