@spencerboucher/switchyard 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/README.md +2 -2
  2. package/dist/switchyard.mjs +7073 -5396
  3. package/dist/terminal/holder.js +30 -4
  4. package/package.json +1 -1
  5. package/web-dist/assets/AutomationView-BsTwLnMp.js +2 -0
  6. package/web-dist/assets/{AutomationView-D7Syv1En.js.map → AutomationView-BsTwLnMp.js.map} +1 -1
  7. package/web-dist/assets/Card-CAFxHoHd.js +2 -0
  8. package/web-dist/assets/Card-CAFxHoHd.js.map +1 -0
  9. package/web-dist/assets/Checkbox-rDvnQnxc.js +2 -0
  10. package/web-dist/assets/Checkbox-rDvnQnxc.js.map +1 -0
  11. package/web-dist/assets/Copy-D8xhl7eJ.js +2 -0
  12. package/web-dist/assets/{Copy-B6XSAIUd.js.map → Copy-D8xhl7eJ.js.map} +1 -1
  13. package/web-dist/assets/DangerZone-og55TRug.js +2 -0
  14. package/web-dist/assets/DangerZone-og55TRug.js.map +1 -0
  15. package/web-dist/assets/{Field-D-Ty7fKT.js → Field-Dbg_8KTt.js} +2 -2
  16. package/web-dist/assets/{Field-D-Ty7fKT.js.map → Field-Dbg_8KTt.js.map} +1 -1
  17. package/web-dist/assets/{InteractionCard-DF1EcSpm.js → InteractionCard-Yu5wgLC3.js} +4 -4
  18. package/web-dist/assets/{InteractionCard-DF1EcSpm.js.map → InteractionCard-Yu5wgLC3.js.map} +1 -1
  19. package/web-dist/assets/Menu-euseM8yR.js +2 -0
  20. package/web-dist/assets/Menu-euseM8yR.js.map +1 -0
  21. package/web-dist/assets/Overlay-BNPvMjLX.js +2 -0
  22. package/web-dist/assets/{Overlay-DUQwh6_b.js.map → Overlay-BNPvMjLX.js.map} +1 -1
  23. package/web-dist/assets/Priority-Ca1B2yFr.js +2 -0
  24. package/web-dist/assets/{Priority-CHmzfoHg.js.map → Priority-Ca1B2yFr.js.map} +1 -1
  25. package/web-dist/assets/{SegmentedControl-C_hEVQMB.js → SegmentedControl-D2d-NEr-.js} +2 -2
  26. package/web-dist/assets/{SegmentedControl-C_hEVQMB.js.map → SegmentedControl-D2d-NEr-.js.map} +1 -1
  27. package/web-dist/assets/{Select-Cfql4Nwu.js → Select-C9L1HKMm.js} +2 -2
  28. package/web-dist/assets/{Select-Cfql4Nwu.js.map → Select-C9L1HKMm.js.map} +1 -1
  29. package/web-dist/assets/StatusChip-BYuVxYS7.js +2 -0
  30. package/web-dist/assets/StatusChip-BYuVxYS7.js.map +1 -0
  31. package/web-dist/assets/{Switch-DBfzmqkm.js → Switch-DAcUcSbH.js} +2 -2
  32. package/web-dist/assets/{Switch-DBfzmqkm.js.map → Switch-DAcUcSbH.js.map} +1 -1
  33. package/web-dist/assets/{Tabs-BNuL3_Et.js → Tabs-xtagjtA5.js} +2 -2
  34. package/web-dist/assets/{Tabs-BNuL3_Et.js.map → Tabs-xtagjtA5.js.map} +1 -1
  35. package/web-dist/assets/{TextArea-CKybrQyn.js → TextArea-CKGHwURx.js} +2 -2
  36. package/web-dist/assets/{TextArea-CKybrQyn.js.map → TextArea-CKGHwURx.js.map} +1 -1
  37. package/web-dist/assets/{TextLink-OzzyP2-p.js → TextLink-Bub7sMxr.js} +2 -2
  38. package/web-dist/assets/{TextLink-OzzyP2-p.js.map → TextLink-Bub7sMxr.js.map} +1 -1
  39. package/web-dist/assets/attention-CI4dHY81.js +2 -0
  40. package/web-dist/assets/{attention-V86Gye3I.js.map → attention-CI4dHY81.js.map} +1 -1
  41. package/web-dist/assets/auth-308hUVgi.js +2 -0
  42. package/web-dist/assets/auth-308hUVgi.js.map +1 -0
  43. package/web-dist/assets/automations-BzpsJoa3.js +2 -0
  44. package/web-dist/assets/{automations-Cw5Gacgm.js.map → automations-BzpsJoa3.js.map} +1 -1
  45. package/web-dist/assets/bell-DSwa2PAb.js +2 -0
  46. package/web-dist/assets/bell-DSwa2PAb.js.map +1 -0
  47. package/web-dist/assets/board-CeJxBVHC.js +10 -0
  48. package/web-dist/assets/board-CeJxBVHC.js.map +1 -0
  49. package/web-dist/assets/code-DkNQvMI9.js +12 -0
  50. package/web-dist/assets/code-DkNQvMI9.js.map +1 -0
  51. package/web-dist/assets/describe-CVXeUClF.js +5 -0
  52. package/web-dist/assets/{describe-D6KLGKWa.js.map → describe-CVXeUClF.js.map} +1 -1
  53. package/web-dist/assets/enroll-jnKygG4L.js +2 -0
  54. package/web-dist/assets/{enroll-DwT7AcuS.js.map → enroll-jnKygG4L.js.map} +1 -1
  55. package/web-dist/assets/index-BHGZTS2e.js +16 -0
  56. package/web-dist/assets/index-BHGZTS2e.js.map +1 -0
  57. package/web-dist/assets/index-D2ml031z.css +2 -0
  58. package/web-dist/assets/{more-DQR5uu1c.js → more-DvKHMdBk.js} +2 -2
  59. package/web-dist/assets/{more-DQR5uu1c.js.map → more-DvKHMdBk.js.map} +1 -1
  60. package/web-dist/assets/queue-B2Vl0uSh.js +2 -0
  61. package/web-dist/assets/{queue-DUg1rS8t.js.map → queue-B2Vl0uSh.js.map} +1 -1
  62. package/web-dist/assets/repo-BDS8RBxq.js +2 -0
  63. package/web-dist/assets/repo-BDS8RBxq.js.map +1 -0
  64. package/web-dist/assets/settings-CLt7x9u8.js +8 -0
  65. package/web-dist/assets/settings-CLt7x9u8.js.map +1 -0
  66. package/web-dist/assets/states-C773NlHo.js +56 -0
  67. package/web-dist/assets/states-C773NlHo.js.map +1 -0
  68. package/web-dist/assets/{terminal-login-S5CAd5xA.js → terminal-login-BK5UjUir.js} +2 -2
  69. package/web-dist/assets/{terminal-login-S5CAd5xA.js.map → terminal-login-BK5UjUir.js.map} +1 -1
  70. package/web-dist/assets/useBreakpoint-BphHBrzF.js +2 -0
  71. package/web-dist/assets/useBreakpoint-BphHBrzF.js.map +1 -0
  72. package/web-dist/assets/useNow-Cm-tdyod.js +2 -0
  73. package/web-dist/assets/{useNow-Dj7oEiwn.js.map → useNow-Cm-tdyod.js.map} +1 -1
  74. package/web-dist/assets/{useResource-CDGSq2At.js → useResource-BBqCoY2q.js} +2 -2
  75. package/web-dist/assets/{useResource-CDGSq2At.js.map → useResource-BBqCoY2q.js.map} +1 -1
  76. package/web-dist/index.html +7 -3
  77. package/web-dist/sw.js +1 -1
  78. package/web-dist/sw.js.map +1 -1
  79. package/web-dist/assets/AutomationView-D7Syv1En.js +0 -2
  80. package/web-dist/assets/Checkbox-D6tRfEeI.js +0 -2
  81. package/web-dist/assets/Checkbox-D6tRfEeI.js.map +0 -1
  82. package/web-dist/assets/Copy-B6XSAIUd.js +0 -2
  83. package/web-dist/assets/DangerZone-DfYlxDC1.js +0 -2
  84. package/web-dist/assets/DangerZone-DfYlxDC1.js.map +0 -1
  85. package/web-dist/assets/Menu-BfOszNC4.js +0 -2
  86. package/web-dist/assets/Menu-BfOszNC4.js.map +0 -1
  87. package/web-dist/assets/Overlay-DUQwh6_b.js +0 -2
  88. package/web-dist/assets/Priority-CHmzfoHg.js +0 -2
  89. package/web-dist/assets/attention-V86Gye3I.js +0 -2
  90. package/web-dist/assets/automations-Cw5Gacgm.js +0 -2
  91. package/web-dist/assets/board-B8X7TYYR.js +0 -10
  92. package/web-dist/assets/board-B8X7TYYR.js.map +0 -1
  93. package/web-dist/assets/code-BKroYJmR.js +0 -12
  94. package/web-dist/assets/code-BKroYJmR.js.map +0 -1
  95. package/web-dist/assets/describe-D6KLGKWa.js +0 -5
  96. package/web-dist/assets/enroll-DwT7AcuS.js +0 -2
  97. package/web-dist/assets/index-B3F7WcYf.css +0 -2
  98. package/web-dist/assets/index-hxvDvCS7.js +0 -12
  99. package/web-dist/assets/index-hxvDvCS7.js.map +0 -1
  100. package/web-dist/assets/queue-DUg1rS8t.js +0 -2
  101. package/web-dist/assets/repo-XzzzEI0d.js +0 -2
  102. package/web-dist/assets/repo-XzzzEI0d.js.map +0 -1
  103. package/web-dist/assets/search-C6cn5WOo.js +0 -2
  104. package/web-dist/assets/search-C6cn5WOo.js.map +0 -1
  105. package/web-dist/assets/settings-DyUu0tJM.js +0 -8
  106. package/web-dist/assets/settings-DyUu0tJM.js.map +0 -1
  107. package/web-dist/assets/states-ZhrxQa3K.js +0 -56
  108. package/web-dist/assets/states-ZhrxQa3K.js.map +0 -1
  109. package/web-dist/assets/useNow-Dj7oEiwn.js +0 -2
@@ -0,0 +1,10 @@
1
+ import{_ as e,d as t,f as n,i as r,m as i,n as a,t as o}from"./jsx-runtime-D13aM9HY.js";import{S as s,a as c,f as l,g as u,l as d,o as f,p,s as m,t as h,y as g}from"./StatusChip-BYuVxYS7.js";import{A as _,B as v,C as y,E as b,K as x,P as S,T as C,U as w,_ as T,bt as ee,c as E,d as D,f as O,g as te,h as ne,i as re,m as ie,n as ae,o as oe,p as k,q as se,t as A,u as ce,w as j,yt as M,z as N}from"./states-C773NlHo.js";import{a as le,i as ue,t as P}from"./Field-Dbg_8KTt.js";import{t as de}from"./bell-DSwa2PAb.js";import{i as fe,n as pe,r as me,t as F}from"./Menu-euseM8yR.js";import{t as he}from"./chevron-right-evVLS6hq.js";import{n as ge,r as _e}from"./Priority-Ca1B2yFr.js";import{c as ve,i as I,t as ye,u as L}from"./useBreakpoint-BphHBrzF.js";import{t as R}from"./external-link-3jjTxo92.js";import{A as be,C as xe,D as z,E as Se,F as Ce,I as we,M as Te,N as Ee,O as De,P as Oe,S as ke,T as Ae,_ as je,a as Me,b as Ne,c as Pe,d as Fe,f as Ie,g as Le,h as Re,i as ze,j as Be,k as Ve,l as He,m as Ue,n as We,o as Ge,p as B,r as Ke,s as qe,t as Je,u as Ye,v as Xe,w as Ze,x as Qe,y as $e}from"./useNow-Cm-tdyod.js";import{n as et,t as tt}from"./pencil-DI8QbCN8.js";import{t as nt}from"./link-2-CaMlUDRG.js";import{t as rt}from"./play-CjoDg3ws.js";import{i as it,r as at,t as ot}from"./useBackTo-BIrCq3W2.js";import{n as st,t as ct}from"./Checkbox-rDvnQnxc.js";import{t as lt}from"./server-BqZ-w6M8.js";import{C as ut,T as dt,_ as ft,b as pt,c as V,y as mt}from"./index-BHGZTS2e.js";import{i as ht,n as gt,o as _t,r as vt,t as yt}from"./Overlay-BNPvMjLX.js";import{n as bt,r as H}from"./TextArea-CKGHwURx.js";import{t as xt}from"./TextLink-Bub7sMxr.js";import{n as St,r as Ct,t as wt}from"./Tabs-xtagjtA5.js";import{t as Tt}from"./SegmentedControl-D2d-NEr-.js";import{r as Et}from"./useResource-BBqCoY2q.js";import{t as Dt}from"./Select-C9L1HKMm.js";var Ot={name:`arrow-right-left`,size:24,node:[[`path`,{d:`m16 3 4 4-4 4`,key:`1x1c3m`}],[`path`,{d:`M20 7H4`,key:`zbl0bi`}],[`path`,{d:`m8 21-4-4 4-4`,key:`h9nckh`}],[`path`,{d:`M4 17h16`,key:`g4d7ey`}]]};Ot.node;var kt=a(Ot),At={name:`columns-3`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]],aliases:[`panels-left-right`]};At.node;var jt=a(At),Mt={name:`grip-vertical`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]};Mt.node;var Nt=a(Mt),Pt={name:`list`,size:24,node:[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]};Pt.node;var Ft=a(Pt),It={name:`message-square-warning`,size:24,node:[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M12 15h.01`,key:`q59x07`}],[`path`,{d:`M12 7v4`,key:`xawao1`}]]};It.node;var Lt=a(It),Rt=s(),U=e(i()),zt=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function Bt(e){let t=Object.prototype.toString.call(e);return t===`[object Window]`||t===`[object global]`}function Vt(e){return`nodeType`in e}function W(e){return e?Bt(e)?e:Vt(e)?e.ownerDocument?.defaultView??window:window:window}function Ht(e){let{Document:t}=W(e);return e instanceof t}function Ut(e){return!Bt(e)&&e instanceof W(e).HTMLElement}function Wt(e){return e instanceof W(e).SVGElement}function Gt(e){return e?Bt(e)?e.document:Vt(e)?Ht(e)?e:Ut(e)||Wt(e)?e.ownerDocument:document:document:document}var G=zt?U.useLayoutEffect:U.useEffect;function Kt(e){let t=(0,U.useRef)(e);return G(()=>{t.current=e}),(0,U.useCallback)(function(){var e=[...arguments];return t.current==null?void 0:t.current(...e)},[])}function qt(){let e=(0,U.useRef)(null);return[(0,U.useCallback)((t,n)=>{e.current=setInterval(t,n)},[]),(0,U.useCallback)(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[])]}function Jt(e,t){t===void 0&&(t=[e]);let n=(0,U.useRef)(e);return G(()=>{n.current!==e&&(n.current=e)},t),n}function Yt(e,t){let n=(0,U.useRef)();return(0,U.useMemo)(()=>{let t=e(n.current);return n.current=t,t},[...t])}function Xt(e){let t=Kt(e),n=(0,U.useRef)(null);return[n,(0,U.useCallback)(e=>{e!==n.current&&t?.(e,n.current),n.current=e},[])]}function Zt(e){let t=(0,U.useRef)();return(0,U.useEffect)(()=>{t.current=e},[e]),t.current}var Qt={};function $t(e,t){return(0,U.useMemo)(()=>{if(t)return t;let n=Qt[e]==null?0:Qt[e]+1;return Qt[e]=n,e+`-`+n},[e,t])}function en(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>{let r=Object.entries(n);for(let[n,i]of r){let r=t[n];r!=null&&(t[n]=r+e*i)}return t},{...t})}}var tn=en(1),nn=en(-1);function rn(e){return`clientX`in e&&`clientY`in e}function an(e){if(!e)return!1;let{KeyboardEvent:t}=W(e.target);return t&&e instanceof t}function on(e){if(!e)return!1;let{TouchEvent:t}=W(e.target);return t&&e instanceof t}function sn(e){if(on(e)){if(e.touches&&e.touches.length){let{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}if(e.changedTouches&&e.changedTouches.length){let{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return rn(e)?{x:e.clientX,y:e.clientY}:null}var cn=Object.freeze({Translate:{toString(e){if(!e)return;let{x:t,y:n}=e;return`translate3d(`+(t?Math.round(t):0)+`px, `+(n?Math.round(n):0)+`px, 0)`}},Scale:{toString(e){if(!e)return;let{scaleX:t,scaleY:n}=e;return`scaleX(`+t+`) scaleY(`+n+`)`}},Transform:{toString(e){if(e)return[cn.Translate.toString(e),cn.Scale.toString(e)].join(` `)}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+` `+n+`ms `+r}}}),ln=`a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]`;function un(e){return e.matches(ln)?e:e.querySelector(ln)}var dn={display:`none`};function fn(e){let{id:t,value:n}=e;return U.createElement(`div`,{id:t,style:dn},n)}function pn(e){let{id:t,announcement:n,ariaLiveType:r=`assertive`}=e;return U.createElement(`div`,{id:t,style:{position:`fixed`,top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0 0 0 0)`,clipPath:`inset(100%)`,whiteSpace:`nowrap`},role:`status`,"aria-live":r,"aria-atomic":!0},n)}function mn(){let[e,t]=(0,U.useState)(``);return{announce:(0,U.useCallback)(e=>{e!=null&&t(e)},[]),announcement:e}}var hn=(0,U.createContext)(null);function gn(e){let t=(0,U.useContext)(hn);(0,U.useEffect)(()=>{if(!t)throw Error(`useDndMonitor must be used within a children of <DndContext>`);return t(e)},[e,t])}function _n(){let[e]=(0,U.useState)(()=>new Set),t=(0,U.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,U.useCallback)(t=>{let{type:n,event:r}=t;e.forEach(e=>e[n]?.call(e,r))},[e]),t]}var vn={draggable:`
2
+ To pick up a draggable item, press the space bar.
3
+ While dragging, use the arrow keys to move the item.
4
+ Press space again to drop the item in its new position, or press escape to cancel.
5
+ `},yn={onDragStart(e){let{active:t}=e;return`Picked up draggable item `+t.id+`.`},onDragOver(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was moved over droppable area `+n.id+`.`:`Draggable item `+t.id+` is no longer over a droppable area.`},onDragEnd(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was dropped over droppable area `+n.id:`Draggable item `+t.id+` was dropped.`},onDragCancel(e){let{active:t}=e;return`Dragging was cancelled. Draggable item `+t.id+` was dropped.`}};function bn(e){let{announcements:t=yn,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=vn}=e,{announce:a,announcement:o}=mn(),s=$t(`DndLiveRegion`),[c,l]=(0,U.useState)(!1);if((0,U.useEffect)(()=>{l(!0)},[]),gn((0,U.useMemo)(()=>({onDragStart(e){let{active:n}=e;a(t.onDragStart({active:n}))},onDragMove(e){let{active:n,over:r}=e;t.onDragMove&&a(t.onDragMove({active:n,over:r}))},onDragOver(e){let{active:n,over:r}=e;a(t.onDragOver({active:n,over:r}))},onDragEnd(e){let{active:n,over:r}=e;a(t.onDragEnd({active:n,over:r}))},onDragCancel(e){let{active:n,over:r}=e;a(t.onDragCancel({active:n,over:r}))}}),[a,t])),!c)return null;let u=U.createElement(U.Fragment,null,U.createElement(fn,{id:r,value:i.draggable}),U.createElement(pn,{id:s,announcement:o}));return n?(0,Rt.createPortal)(u,n):u}var K;(function(e){e.DragStart=`dragStart`,e.DragMove=`dragMove`,e.DragEnd=`dragEnd`,e.DragCancel=`dragCancel`,e.DragOver=`dragOver`,e.RegisterDroppable=`registerDroppable`,e.SetDroppableDisabled=`setDroppableDisabled`,e.UnregisterDroppable=`unregisterDroppable`})(K||={});function xn(){}function Sn(e,t){return(0,U.useMemo)(()=>({sensor:e,options:t??{}}),[e,t])}function Cn(){var e=[...arguments];return(0,U.useMemo)(()=>[...e].filter(e=>e!=null),[...e])}var q=Object.freeze({x:0,y:0});function wn(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function Tn(e,t){let n=sn(e);if(!n)return`0 0`;let r={x:(n.x-t.left)/t.width*100,y:(n.y-t.top)/t.height*100};return r.x+`% `+r.y+`%`}function En(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function Dn(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function On(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function kn(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}function An(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}var jn=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=An(t,t.left,t.top),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=wn(An(r),i);a.push({id:t,data:{droppableContainer:e,value:n}})}}return a.sort(En)};function Mn(e,t){let n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=i-r,s=a-n;if(r<i&&n<a){let n=t.width*t.height,r=e.width*e.height,i=o*s,a=i/(n+r-i);return Number(a.toFixed(4))}return 0}var Nn=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=[];for(let e of r){let{id:r}=e,a=n.get(r);if(a){let n=Mn(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(Dn)};function Pn(e,t){let{top:n,left:r,bottom:i,right:a}=t;return n<=e.y&&e.y<=i&&r<=e.x&&e.x<=a}var Fn=e=>{let{droppableContainers:t,droppableRects:n,pointerCoordinates:r}=e;if(!r)return[];let i=[];for(let e of t){let{id:t}=e,a=n.get(t);if(a&&Pn(r,a)){let n=On(a).reduce((e,t)=>e+wn(r,t),0),o=Number((n/4).toFixed(4));i.push({id:t,data:{droppableContainer:e,value:o}})}}return i.sort(En)};function In(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function Ln(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:q}function Rn(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}var zn=Rn(1);function Bn(e){if(e.startsWith(`matrix3d(`)){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}if(e.startsWith(`matrix(`)){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function Vn(e,t,n){let r=Bn(t);if(!r)return e;let{scaleX:i,scaleY:a,x:o,y:s}=r,c=e.left-o-(1-i)*parseFloat(n),l=e.top-s-(1-a)*parseFloat(n.slice(n.indexOf(` `)+1)),u=i?e.width/i:e.width,d=a?e.height/a:e.height;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c}}var Hn={ignoreTransform:!1};function Un(e,t){t===void 0&&(t=Hn);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=W(e).getComputedStyle(e);t&&(n=Vn(n,t,r))}let{top:r,left:i,width:a,height:o,bottom:s,right:c}=n;return{top:r,left:i,width:a,height:o,bottom:s,right:c}}function Wn(e){return Un(e,{ignoreTransform:!0})}function Gn(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function Kn(e,t){return t===void 0&&(t=W(e).getComputedStyle(e)),t.position===`fixed`}function qn(e,t){t===void 0&&(t=W(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`&&n.test(r)})}function Jn(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(Ht(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!Ut(i)||Wt(i)||n.includes(i))return n;let a=W(e).getComputedStyle(i);return i!==e&&qn(i,a)&&n.push(i),Kn(i,a)?n:r(i.parentNode)}return e?r(e):n}function Yn(e){let[t]=Jn(e,1);return t??null}function Xn(e){return!zt||!e?null:Bt(e)?e:Vt(e)?Ht(e)||e===Gt(e).scrollingElement?window:Ut(e)?e:null:null}function Zn(e){return Bt(e)?e.scrollX:e.scrollLeft}function Qn(e){return Bt(e)?e.scrollY:e.scrollTop}function $n(e){return{x:Zn(e),y:Qn(e)}}var J;(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(J||={});function er(e){return!zt||!e?!1:e===document.scrollingElement}function tr(e){let t={x:0,y:0},n=er(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}var nr={x:.2,y:.2};function rr(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=nr);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=tr(e),p={x:0,y:0},m={x:0,y:0},h={height:t.height*i.y,width:t.width*i.x};return!l&&a<=t.top+h.height?(p.y=J.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=J.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=J.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=J.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function ir(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function ar(e){return e.reduce((e,t)=>tn(e,$n(t)),q)}function or(e){return e.reduce((e,t)=>e+Zn(t),0)}function sr(e){return e.reduce((e,t)=>e+Qn(t),0)}function cr(e,t){if(t===void 0&&(t=Un),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);Yn(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}var lr=[[`x`,[`left`,`right`],or],[`y`,[`top`,`bottom`],sr]],ur=class{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;let n=Jn(t),r=ar(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of lr)for(let a of t)Object.defineProperty(this,a,{get:()=>{let t=i(n),o=r[e]-t;return this.rect[a]+o},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}},dr=class{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>this.target?.removeEventListener(...e))},this.target=e}add(e,t,n){var r;(r=this.target)==null||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}};function fr(e){let{EventTarget:t}=W(e);return e instanceof t?e:Gt(e)}function pr(e,t){let n=Math.abs(e.x),r=Math.abs(e.y);return typeof t==`number`?Math.sqrt(n**2+r**2)>t:`x`in t&&`y`in t?n>t.x&&r>t.y:`x`in t?n>t.x:`y`in t&&r>t.y}var Y;(function(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(Y||={});function mr(e){e.preventDefault()}function hr(e){e.stopPropagation()}var X;(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})(X||={});var gr={start:[X.Space,X.Enter],cancel:[X.Esc],end:[X.Space,X.Enter,X.Tab]},_r=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case X.Right:return{...n,x:n.x+25};case X.Left:return{...n,x:n.x-25};case X.Down:return{...n,y:n.y+25};case X.Up:return{...n,y:n.y-25}}},vr=class{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;let{event:{target:t}}=e;this.props=e,this.listeners=new dr(Gt(t)),this.windowListeners=new dr(W(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Y.Resize,this.handleCancel),this.windowListeners.add(Y.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Y.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&cr(n),t(q)}handleKeyDown(e){if(an(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=gr,coordinateGetter:a=_r,scrollBehavior:o=`smooth`}=r,{code:s}=e;if(i.end.includes(s)){this.handleEnd(e);return}if(i.cancel.includes(s)){this.handleCancel(e);return}let{collisionRect:c}=n.current,l=c?{x:c.left,y:c.top}:q;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=nn(u,l),r={x:0,y:0},{scrollableAncestors:i}=n.current;for(let n of i){let i=e.code,{isTop:a,isRight:s,isLeft:c,isBottom:l,maxScroll:d,minScroll:f}=tr(n),p=ir(n),m={x:Math.min(i===X.Right?p.right-p.width/2:p.right,Math.max(i===X.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===X.Down?p.bottom-p.height/2:p.bottom,Math.max(i===X.Down?p.top:p.top+p.height/2,u.y))},h=i===X.Right&&!s||i===X.Left&&!c,g=i===X.Down&&!l||i===X.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===X.Right&&e<=d.x||i===X.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}r.x=a?n.scrollLeft-e:i===X.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===X.Down&&e<=d.y||i===X.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}r.y=a?n.scrollTop-e:i===X.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,tn(nn(u,this.referenceCoordinates),r))}}}handleMove(e,t){let{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}};vr.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=gr,onActivation:i}=t,{active:a}=n,{code:o}=e.nativeEvent;if(r.start.includes(o)){let t=a.activatorNode.current;return t&&e.target!==t?!1:(e.preventDefault(),i?.({event:e.nativeEvent}),!0)}return!1}}];function yr(e){return!!(e&&`distance`in e)}function br(e){return!!(e&&`delay`in e)}var xr=class{constructor(e,t,n){n===void 0&&(n=fr(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;let{event:r}=e,{target:i}=r;this.props=e,this.events=t,this.document=Gt(i),this.documentListeners=new dr(this.document),this.listeners=new dr(n),this.windowListeners=new dr(W(i)),this.initialCoordinates=sn(r)??q,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(Y.Resize,this.handleCancel),this.windowListeners.add(Y.DragStart,mr),this.windowListeners.add(Y.VisibilityChange,this.handleCancel),this.windowListeners.add(Y.ContextMenu,mr),this.documentListeners.add(Y.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(br(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(yr(t)){this.handlePending(t);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(Y.Click,hr,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Y.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){let{activated:t,initialCoordinates:n,props:r}=this,{onMove:i,options:{activationConstraint:a}}=r;if(!n)return;let o=sn(e)??q,s=nn(n,o);if(!t&&a){if(yr(a)){if(a.tolerance!=null&&pr(s,a.tolerance))return this.handleCancel();if(pr(s,a.distance))return this.handleStart()}if(br(a)&&pr(s,a.tolerance))return this.handleCancel();this.handlePending(a,s)}else e.cancelable&&e.preventDefault(),i(o)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===X.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},Sr={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},Cr=class extends xr{constructor(e){let{event:t}=e,n=Gt(t.target);super(e,Sr,n)}};Cr.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];var wr={move:{name:`mousemove`},end:{name:`mouseup`}},Tr;(function(e){e[e.RightClick=2]=`RightClick`})(Tr||={});var Er=class extends xr{constructor(e){super(e,wr,Gt(e.event.target))}};Er.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button!==Tr.RightClick&&(r?.({event:n}),!0)}}];var Dr={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},Or=class extends xr{constructor(e){super(e,Dr)}static setup(){return window.addEventListener(Dr.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(Dr.move.name,e)};function e(){}}};Or.activators=[{eventName:`onTouchStart`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t,{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}];var kr;(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(kr||={});var Ar;(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})(Ar||={});function jr(e){let{acceleration:t,activator:n=kr.Pointer,canScroll:r,draggingRect:i,enabled:a,interval:o=5,order:s=Ar.TreeOrder,pointerCoordinates:c,scrollableAncestors:l,scrollableAncestorRects:u,delta:d,threshold:f}=e,p=Nr({delta:d,disabled:!a}),[m,h]=qt(),g=(0,U.useRef)({x:0,y:0}),_=(0,U.useRef)({x:0,y:0}),v=(0,U.useMemo)(()=>{switch(n){case kr.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case kr.DraggableRect:return i}},[n,i,c]),y=(0,U.useRef)(null),b=(0,U.useCallback)(()=>{let e=y.current;if(!e)return;let t=g.current.x*_.current.x,n=g.current.y*_.current.y;e.scrollBy(t,n)},[]),x=(0,U.useMemo)(()=>s===Ar.TreeOrder?[...l].reverse():l,[s,l]);(0,U.useEffect)(()=>{if(!a||!l.length||!v)h();else{for(let e of x){if(r?.(e)===!1)continue;let n=l.indexOf(e),i=u[n];if(!i)continue;let{direction:a,speed:s}=rr(e,i,v,t,f);for(let e of[`x`,`y`])p[e][a[e]]||(s[e]=0,a[e]=0);if(s.x>0||s.y>0){h(),y.current=e,m(b,o),g.current=s,_.current=a;return}}g.current={x:0,y:0},_.current={x:0,y:0},h()}},[t,b,r,h,a,o,JSON.stringify(v),JSON.stringify(p),m,l,x,u,JSON.stringify(f)])}var Mr={x:{[J.Backward]:!1,[J.Forward]:!1},y:{[J.Backward]:!1,[J.Forward]:!1}};function Nr(e){let{delta:t,disabled:n}=e,r=Zt(t);return Yt(e=>{if(n||!r||!e)return Mr;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[J.Backward]:e.x[J.Backward]||i.x===-1,[J.Forward]:e.x[J.Forward]||i.x===1},y:{[J.Backward]:e.y[J.Backward]||i.y===-1,[J.Forward]:e.y[J.Forward]||i.y===1}}},[n,t,r])}function Pr(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return Yt(e=>t==null?null:r??e??null,[r,t])}function Fr(e,t){return(0,U.useMemo)(()=>e.reduce((e,n)=>{let{sensor:r}=n,i=r.activators.map(e=>({eventName:e.eventName,handler:t(e.handler,n)}));return[...e,...i]},[]),[e,t])}var Ir;(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(Ir||={});var Lr;(function(e){e.Optimized=`optimized`})(Lr||={});var Rr=new Map;function zr(e,t){let{dragging:n,dependencies:r,config:i}=t,[a,o]=(0,U.useState)(null),{frequency:s,measure:c,strategy:l}=i,u=(0,U.useRef)(e),d=g(),f=Jt(d),p=(0,U.useCallback)(function(e){e===void 0&&(e=[]),!f.current&&o(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[f]),m=(0,U.useRef)(null),h=Yt(t=>{if(d&&!n)return Rr;if(!t||t===Rr||u.current!==e||a!=null){let t=new Map;for(let n of e){if(!n)continue;if(a&&a.length>0&&!a.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new ur(c(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,a,n,d,c]);return(0,U.useEffect)(()=>{u.current=e},[e]),(0,U.useEffect)(()=>{d||p()},[n,d]),(0,U.useEffect)(()=>{a&&a.length>0&&o(null)},[JSON.stringify(a)]),(0,U.useEffect)(()=>{d||typeof s!=`number`||m.current!==null||(m.current=setTimeout(()=>{p(),m.current=null},s))},[s,d,p,...r]),{droppableRects:h,measureDroppableContainers:p,measuringScheduled:a!=null};function g(){switch(l){case Ir.Always:return!1;case Ir.BeforeDragging:return n;default:return!n}}}function Br(e,t){return Yt(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function Vr(e,t){return Br(e,t)}function Hr(e){let{callback:t,disabled:n}=e,r=Kt(t),i=(0,U.useMemo)(()=>{if(n||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(r)},[r,n]);return(0,U.useEffect)(()=>()=>i?.disconnect(),[i]),i}function Ur(e){let{callback:t,disabled:n}=e,r=Kt(t),i=(0,U.useMemo)(()=>{if(n||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(r)},[n]);return(0,U.useEffect)(()=>()=>i?.disconnect(),[i]),i}function Wr(e){return new ur(Un(e),e)}function Gr(e,t,n){t===void 0&&(t=Wr);let[r,i]=(0,U.useState)(null);function a(){i(r=>{if(!e)return null;if(e.isConnected===!1)return r??n??null;let i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i})}let o=Hr({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){a();break}}}}),s=Ur({callback:a});return G(()=>{a(),e?(s?.observe(e),o?.observe(document.body,{childList:!0,subtree:!0})):(s?.disconnect(),o?.disconnect())},[e]),r}function Kr(e){return Ln(e,Br(e))}var qr=[];function Jr(e){let t=(0,U.useRef)(e),n=Yt(n=>e?n&&n!==qr&&e&&t.current&&e.parentNode===t.current.parentNode?n:Jn(e):qr,[e]);return(0,U.useEffect)(()=>{t.current=e},[e]),n}function Yr(e){let[t,n]=(0,U.useState)(null),r=(0,U.useRef)(e),i=(0,U.useCallback)(e=>{let t=Xn(e.target);t&&n(e=>e?(e.set(t,$n(t)),new Map(e)):null)},[]);return(0,U.useEffect)(()=>{let t=r.current;if(e!==t){a(t);let o=e.map(e=>{let t=Xn(e);return t?(t.addEventListener(`scroll`,i,{passive:!0}),[t,$n(t)]):null}).filter(e=>e!=null);n(o.length?new Map(o):null),r.current=e}return()=>{a(e),a(t)};function a(e){e.forEach(e=>{Xn(e)?.removeEventListener(`scroll`,i)})}},[i,e]),(0,U.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>tn(e,t),q):ar(e):q,[e,t])}function Xr(e,t){t===void 0&&(t=[]);let n=(0,U.useRef)(null);return(0,U.useEffect)(()=>{n.current=null},t),(0,U.useEffect)(()=>{let t=e!==q;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)},[e]),n.current?nn(e,n.current):q}function Zr(e){(0,U.useEffect)(()=>{if(!zt)return;let t=e.map(e=>{let{sensor:t}=e;return t.setup==null?void 0:t.setup()});return()=>{for(let e of t)e?.()}},e.map(e=>{let{sensor:t}=e;return t}))}function Qr(e,t){return(0,U.useMemo)(()=>e.reduce((e,n)=>{let{eventName:r,handler:i}=n;return e[r]=e=>{i(e,t)},e},{}),[e,t])}function $r(e){return(0,U.useMemo)(()=>e?Gn(e):null,[e])}var ei=[];function ti(e,t){t===void 0&&(t=Un);let[n]=e,r=$r(n?W(n):null),[i,a]=(0,U.useState)(ei);function o(){a(()=>e.length?e.map(e=>er(e)?r:new ur(t(e),e)):ei)}let s=Ur({callback:o});return G(()=>{s?.disconnect(),o(),e.forEach(e=>s?.observe(e))},[e]),i}function ni(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return Ut(t)?t:e}function ri(e){let{measure:t}=e,[n,r]=(0,U.useState)(null),i=Ur({callback:(0,U.useCallback)(e=>{for(let{target:n}of e)if(Ut(n)){r(e=>{let r=t(n);return e?{...e,width:r.width,height:r.height}:r});break}},[t])}),[a,o]=Xt((0,U.useCallback)(e=>{let n=ni(e);i?.disconnect(),n&&i?.observe(n),r(n?t(n):null)},[t,i]));return(0,U.useMemo)(()=>({nodeRef:a,rect:n,setRef:o}),[n,a,o])}var ii=[{sensor:Cr,options:{}},{sensor:vr,options:{}}],ai={current:{}},oi={draggable:{measure:Wn},droppable:{measure:Wn,strategy:Ir.WhileDragging,frequency:Lr.Optimized},dragOverlay:{measure:Un}},si=class extends Map{get(e){return e==null?void 0:super.get(e)??void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){return this.get(e)?.node.current??void 0}},ci={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new si,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:xn},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:oi,measureDroppableContainers:xn,windowRect:null,measuringScheduled:!1},li={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:xn,draggableNodes:new Map,over:null,measureDroppableContainers:xn},ui=(0,U.createContext)(li),di=(0,U.createContext)(ci);function fi(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new si}}}function pi(e,t){switch(t.type){case K.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case K.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case K.DragEnd:case K.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case K.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new si(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case K.SetDroppableDisabled:{let{id:n,key:r,disabled:i}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;let o=new si(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case K.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new si(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function mi(e){let{disabled:t}=e,{active:n,activatorEvent:r,draggableNodes:i}=(0,U.useContext)(ui),a=Zt(r),o=Zt(n?.id);return(0,U.useEffect)(()=>{if(!t&&!r&&a&&o!=null){if(!an(a)||document.activeElement===a.target)return;let e=i.get(o);if(!e)return;let{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(let e of[t.current,n.current]){if(!e)continue;let t=un(e);if(t){t.focus();break}}})}},[r,t,i,o,a]),null}function hi(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function gi(e){return(0,U.useMemo)(()=>({draggable:{...oi.draggable,...e?.draggable},droppable:{...oi.droppable,...e?.droppable},dragOverlay:{...oi.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function _i(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e,a=(0,U.useRef)(!1),{x:o,y:s}=typeof i==`boolean`?{x:i,y:i}:i;G(()=>{if(!o&&!s||!t){a.current=!1;return}if(a.current||!r)return;let e=t?.node.current;if(!e||e.isConnected===!1)return;let i=Ln(n(e),r);if(o||(i.x=0),s||(i.y=0),a.current=!0,Math.abs(i.x)>0||Math.abs(i.y)>0){let t=Yn(e);t&&t.scrollBy({top:i.y,left:i.x})}},[t,o,s,r,n])}var vi=(0,U.createContext)({...q,scaleX:1,scaleY:1}),yi;(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(yi||={});var bi=(0,U.memo)(function(e){let{id:t,accessibility:n,autoScroll:r=!0,children:i,sensors:a=ii,collisionDetection:o=Nn,measuring:s,modifiers:c,...l}=e,[u,d]=(0,U.useReducer)(pi,void 0,fi),[f,p]=_n(),[m,h]=(0,U.useState)(yi.Uninitialized),g=m===yi.Initialized,{draggable:{active:_,nodes:v,translate:y},droppable:{containers:b}}=u,x=_==null?null:v.get(_),S=(0,U.useRef)({initial:null,translated:null}),C=(0,U.useMemo)(()=>_==null?null:{id:_,data:x?.data??ai,rect:S},[_,x]),w=(0,U.useRef)(null),[T,ee]=(0,U.useState)(null),[E,D]=(0,U.useState)(null),O=Jt(l,Object.values(l)),te=$t(`DndDescribedBy`,t),ne=(0,U.useMemo)(()=>b.getEnabled(),[b]),re=gi(s),{droppableRects:ie,measureDroppableContainers:ae,measuringScheduled:oe}=zr(ne,{dragging:g,dependencies:[y.x,y.y],config:re.droppable}),k=Pr(v,_),se=(0,U.useMemo)(()=>E?sn(E):null,[E]),A=ke(),ce=Vr(k,re.draggable.measure);_i({activeNode:_==null?null:v.get(_),config:A.layoutShiftCompensation,initialRect:ce,measure:re.draggable.measure});let j=Gr(k,re.draggable.measure,ce),M=Gr(k?k.parentElement:null),N=(0,U.useRef)({activatorEvent:null,active:null,activeNode:k,collisionRect:null,collisions:null,droppableRects:ie,draggableNodes:v,draggingNode:null,draggingNodeRect:null,droppableContainers:b,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),le=b.getNodeFor(N.current.over?.id),ue=ri({measure:re.dragOverlay.measure}),P=ue.nodeRef.current??k,de=g?ue.rect??j:null,fe=!!(ue.nodeRef.current&&ue.rect),pe=Kr(fe?null:j),me=$r(P?W(P):null),F=Jr(g?le??k:null),he=ti(F),ge=hi(c,{transform:{x:y.x-pe.x,y:y.y-pe.y,scaleX:1,scaleY:1},activatorEvent:E,active:C,activeNodeRect:j,containerNodeRect:M,draggingNodeRect:de,over:N.current.over,overlayNodeRect:ue.rect,scrollableAncestors:F,scrollableAncestorRects:he,windowRect:me}),_e=se?tn(se,y):null,ve=Yr(F),I=Xr(ve),ye=Xr(ve,[j]),L=tn(ge,I),R=de?zn(de,ge):null,be=C&&R?o({active:C,collisionRect:R,droppableRects:ie,droppableContainers:ne,pointerCoordinates:_e}):null,xe=kn(be,`id`),[z,Se]=(0,U.useState)(null),Ce=In(fe?ge:tn(ge,ye),z?.rect??null,j),we=(0,U.useRef)(null),Te=(0,U.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(w.current==null)return;let i=v.get(w.current);if(!i)return;let a=e.nativeEvent,o=new n({active:w.current,activeNode:i,event:a,options:r,context:N,onAbort(e){if(!v.get(e))return;let{onDragAbort:t}=O.current,n={id:e};t?.(n),f({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!v.get(e))return;let{onDragPending:i}=O.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),f({type:`onDragPending`,event:a})},onStart(e){let t=w.current;if(t==null)return;let n=v.get(t);if(!n)return;let{onDragStart:r}=O.current,i={activatorEvent:a,active:{id:t,data:n.data,rect:S}};(0,Rt.unstable_batchedUpdates)(()=>{r?.(i),h(yi.Initializing),d({type:K.DragStart,initialCoordinates:e,active:t}),f({type:`onDragStart`,event:i}),ee(we.current),D(a)})},onMove(e){d({type:K.DragMove,coordinates:e})},onEnd:s(K.DragEnd),onCancel:s(K.DragCancel)});we.current=o;function s(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:i}=N.current,o=null;if(t&&i){let{cancelDrop:s}=O.current;o={activatorEvent:a,active:t,collisions:n,delta:i,over:r},e===K.DragEnd&&typeof s==`function`&&await Promise.resolve(s(o))&&(e=K.DragCancel)}w.current=null,(0,Rt.unstable_batchedUpdates)(()=>{d({type:e}),h(yi.Uninitialized),Se(null),ee(null),D(null),we.current=null;let t=e===K.DragEnd?`onDragEnd`:`onDragCancel`;if(o){let e=O.current[t];e?.(o),f({type:t,event:o})}})}}},[v]),Ee=Fr(a,(0,U.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=v.get(r);if(w.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},w.current=r,Te(n,t))},[v,Te]));Zr(a),G(()=>{j&&m===yi.Initializing&&h(yi.Initialized)},[j,m]),(0,U.useEffect)(()=>{let{onDragMove:e}=O.current,{active:t,activatorEvent:n,collisions:r,over:i}=N.current;if(!t||!n)return;let a={active:t,activatorEvent:n,collisions:r,delta:{x:L.x,y:L.y},over:i};(0,Rt.unstable_batchedUpdates)(()=>{e?.(a),f({type:`onDragMove`,event:a})})},[L.x,L.y]),(0,U.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:i}=N.current;if(!e||w.current==null||!t||!i)return;let{onDragOver:a}=O.current,o=r.get(xe),s=o&&o.rect.current?{id:o.id,rect:o.rect.current,data:o.data,disabled:o.disabled}:null,c={active:e,activatorEvent:t,collisions:n,delta:{x:i.x,y:i.y},over:s};(0,Rt.unstable_batchedUpdates)(()=>{Se(s),a?.(c),f({type:`onDragOver`,event:c})})},[xe]),G(()=>{N.current={activatorEvent:E,active:C,activeNode:k,collisionRect:R,collisions:be,droppableRects:ie,draggableNodes:v,draggingNode:P,draggingNodeRect:de,droppableContainers:b,over:z,scrollableAncestors:F,scrollAdjustedTranslate:L},S.current={initial:de,translated:R}},[C,k,be,R,v,P,de,ie,b,z,F,L]),jr({...A,delta:y,draggingRect:R,pointerCoordinates:_e,scrollableAncestors:F,scrollableAncestorRects:he});let De=(0,U.useMemo)(()=>({active:C,activeNode:k,activeNodeRect:j,activatorEvent:E,collisions:be,containerNodeRect:M,dragOverlay:ue,draggableNodes:v,droppableContainers:b,droppableRects:ie,over:z,measureDroppableContainers:ae,scrollableAncestors:F,scrollableAncestorRects:he,measuringConfiguration:re,measuringScheduled:oe,windowRect:me}),[C,k,j,E,be,M,ue,v,b,ie,z,ae,F,he,re,oe,me]),Oe=(0,U.useMemo)(()=>({activatorEvent:E,activators:Ee,active:C,activeNodeRect:j,ariaDescribedById:{draggable:te},dispatch:d,draggableNodes:v,over:z,measureDroppableContainers:ae}),[E,Ee,C,j,d,te,v,z,ae]);return U.createElement(hn.Provider,{value:p},U.createElement(ui.Provider,{value:Oe},U.createElement(di.Provider,{value:De},U.createElement(vi.Provider,{value:Ce},i)),U.createElement(mi,{disabled:n?.restoreFocus===!1})),U.createElement(bn,{...n,hiddenTextDescribedById:te}));function ke(){let e=T?.autoScrollEnabled===!1,t=typeof r==`object`?r.enabled===!1:r===!1,n=g&&!e&&!t;return typeof r==`object`?{...r,enabled:n}:{enabled:n}}}),xi=(0,U.createContext)(null),Si=`button`,Ci=`Draggable`;function wi(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e,a=$t(Ci),{activators:o,activatorEvent:s,active:c,activeNodeRect:l,ariaDescribedById:u,draggableNodes:d,over:f}=(0,U.useContext)(ui),{role:p=Si,roleDescription:m=`draggable`,tabIndex:h=0}=i??{},g=c?.id===t,_=(0,U.useContext)(g?vi:xi),[v,y]=Xt(),[b,x]=Xt(),S=Qr(o,t),C=Jt(n);return G(()=>(d.set(t,{id:t,key:a,node:v,activatorNode:b,data:C}),()=>{let e=d.get(t);e&&e.key===a&&d.delete(t)}),[d,t]),{active:c,activatorEvent:s,activeNodeRect:l,attributes:(0,U.useMemo)(()=>({role:p,tabIndex:h,"aria-disabled":r,"aria-pressed":g&&p===Si?!0:void 0,"aria-roledescription":m,"aria-describedby":u.draggable}),[r,p,h,g,m,u.draggable]),isDragging:g,listeners:r?void 0:S,node:v,over:f,setNodeRef:y,setActivatorNodeRef:x,transform:_}}function Ti(){return(0,U.useContext)(di)}var Ei=`Droppable`,Di={timeout:25};function Oi(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e,a=$t(Ei),{active:o,dispatch:s,over:c,measureDroppableContainers:l}=(0,U.useContext)(ui),u=(0,U.useRef)({disabled:n}),d=(0,U.useRef)(!1),f=(0,U.useRef)(null),p=(0,U.useRef)(null),{disabled:m,updateMeasurementsFor:h,timeout:g}={...Di,...i},_=Jt(h??r),v=Ur({callback:(0,U.useCallback)(()=>{d.current?(p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{l(Array.isArray(_.current)?_.current:[_.current]),p.current=null},g)):d.current=!0},[g]),disabled:m||!o}),[y,b]=Xt((0,U.useCallback)((e,t)=>{v&&(t&&(v.unobserve(t),d.current=!1),e&&v.observe(e))},[v])),x=Jt(t);return(0,U.useEffect)(()=>{v&&y.current&&(v.disconnect(),d.current=!1,v.observe(y.current))},[y,v]),(0,U.useEffect)(()=>(s({type:K.RegisterDroppable,element:{id:r,key:a,disabled:n,node:y,rect:f,data:x}}),()=>s({type:K.UnregisterDroppable,key:a,id:r})),[r]),(0,U.useEffect)(()=>{n!==u.current.disabled&&(s({type:K.SetDroppableDisabled,id:r,key:a,disabled:n}),u.current.disabled=n)},[r,a,n,s]),{active:o,rect:f,isOver:c?.id===r,node:y,over:c,setNodeRef:b}}function ki(e){let{animation:t,children:n}=e,[r,i]=(0,U.useState)(null),[a,o]=(0,U.useState)(null),s=Zt(n);return!n&&!r&&s&&i(s),G(()=>{if(!a)return;let e=r?.key,n=r?.props.id;e==null||n==null?i(null):Promise.resolve(t(n,a)).then(()=>{i(null)})},[t,r,a]),U.createElement(U.Fragment,null,n,r?(0,U.cloneElement)(r,{ref:o}):null)}var Ai={x:0,y:0,scaleX:1,scaleY:1};function ji(e){let{children:t}=e;return U.createElement(ui.Provider,{value:li},U.createElement(vi.Provider,{value:Ai},t))}var Mi={position:`fixed`,touchAction:`none`},Ni=e=>an(e)?`transform 250ms ease`:void 0,Pi=(0,U.forwardRef)((e,t)=>{let{as:n,activatorEvent:r,adjustScale:i,children:a,className:o,rect:s,style:c,transform:l,transition:u=Ni}=e;if(!s)return null;let d=i?l:{...l,scaleX:1,scaleY:1},f={...Mi,width:s.width,height:s.height,top:s.top,left:s.left,transform:cn.Transform.toString(d),transformOrigin:i&&r?Tn(r,s):void 0,transition:typeof u==`function`?u(r):u,...c};return U.createElement(n,{className:o,style:f,ref:t},a)}),Fi={duration:250,easing:`ease`,keyframes:e=>{let{transform:{initial:t,final:n}}=e;return[{transform:cn.Transform.toString(t)},{transform:cn.Transform.toString(n)}]},sideEffects:(e=>t=>{let{active:n,dragOverlay:r}=t,i={},{styles:a,className:o}=e;if(a!=null&&a.active)for(let[e,t]of Object.entries(a.active))t!==void 0&&(i[e]=n.node.style.getPropertyValue(e),n.node.style.setProperty(e,t));if(a!=null&&a.dragOverlay)for(let[e,t]of Object.entries(a.dragOverlay))t!==void 0&&r.node.style.setProperty(e,t);return o!=null&&o.active&&n.node.classList.add(o.active),o!=null&&o.dragOverlay&&r.node.classList.add(o.dragOverlay),function(){for(let[e,t]of Object.entries(i))n.node.style.setProperty(e,t);o!=null&&o.active&&n.node.classList.remove(o.active)}})({styles:{active:{opacity:`0`}}})};function Ii(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:i}=e;return Kt((e,a)=>{if(t===null)return;let o=n.get(e);if(!o)return;let s=o.node.current;if(!s)return;let c=ni(a);if(!c)return;let{transform:l}=W(a).getComputedStyle(a),u=Bn(l);if(!u)return;let d=typeof t==`function`?t:Li(t);return cr(s,i.draggable.measure),d({active:{id:e,data:o.data,node:s,rect:i.draggable.measure(s)},draggableNodes:n,dragOverlay:{node:a,rect:i.dragOverlay.measure(c)},droppableContainers:r,measuringConfiguration:i,transform:u})})}function Li(e){let{duration:t,easing:n,sideEffects:r,keyframes:i}={...Fi,...e};return e=>{let{active:a,dragOverlay:o,transform:s,...c}=e;if(!t)return;let l={x:o.rect.left-a.rect.left,y:o.rect.top-a.rect.top},u={scaleX:s.scaleX===1?1:a.rect.width*s.scaleX/o.rect.width,scaleY:s.scaleY===1?1:a.rect.height*s.scaleY/o.rect.height},d={x:s.x-l.x,y:s.y-l.y,...u},f=i({...c,active:a,dragOverlay:o,transform:{initial:s,final:d}}),[p]=f,m=f[f.length-1];if(JSON.stringify(p)===JSON.stringify(m))return;let h=r?.({active:a,dragOverlay:o,...c}),g=o.node.animate(f,{duration:t,easing:n,fill:`forwards`});return new Promise(e=>{g.onfinish=()=>{h?.(),e()}})}}var Ri=0;function zi(e){return(0,U.useMemo)(()=>{if(e!=null)return Ri++,Ri},[e])}var Bi=U.memo(e=>{let{adjustScale:t=!1,children:n,dropAnimation:r,style:i,transition:a,modifiers:o,wrapperElement:s=`div`,className:c,zIndex:l=999}=e,{activatorEvent:u,active:d,activeNodeRect:f,containerNodeRect:p,draggableNodes:m,droppableContainers:h,dragOverlay:g,over:_,measuringConfiguration:v,scrollableAncestors:y,scrollableAncestorRects:b,windowRect:x}=Ti(),S=(0,U.useContext)(vi),C=zi(d?.id),w=hi(o,{activatorEvent:u,active:d,activeNodeRect:f,containerNodeRect:p,draggingNodeRect:g.rect,over:_,overlayNodeRect:g.rect,scrollableAncestors:y,scrollableAncestorRects:b,transform:S,windowRect:x}),T=Br(f),ee=Ii({config:r,draggableNodes:m,droppableContainers:h,measuringConfiguration:v}),E=T?g.setRef:void 0;return U.createElement(ji,null,U.createElement(ki,{animation:ee},d&&C?U.createElement(Pi,{key:C,id:d.id,ref:E,as:s,activatorEvent:u,adjustScale:t,className:c,transition:a,rect:T,style:{zIndex:l,...i},transform:w},n):null))}),Z=o(),Vi=(0,U.createContext)(null);function Hi(){let e=(0,U.useContext)(Vi);if(!e)throw Error(`useTaskMover must be used inside <MoveProvider>`);return e}var Ui=`Accepting marks the task Done. It does not merge or push.`;function Wi({children:e}){let[t,n]=(0,U.useState)({}),[r,i]=(0,U.useState)(null),[a,o]=(0,U.useState)(null),s=(0,U.useCallback)(async(e,t)=>{n(t=>({...t,[e]:!0}));try{await t()}finally{n(t=>{let{[e]:n,...r}=t;return r})}},[]),c=(0,U.useCallback)(async(e,t)=>{if(t===`ready`)try{let t=await Ve(e.id);I.success(`Moved to Ready. ${je(t)}.`)}catch{I.success(`Moved to Ready. The dispatcher starts it when it is eligible.`)}else I.success(`Moved "${e.title}" to ${B[t]}`)},[]),l=(0,U.useCallback)(async(e,t,n)=>{try{return await Be(e.id,{to:t,...n}),await c(e,t),!0}catch(r){return!n.onRunning&&Ee(r)?(i({kind:`choice`,task:e,to:t,position:n.position,reasons:[],carry:{confirm:n.confirm}}),!1):!n.confirm&&Te(r)?(i({kind:`confirm_done`,task:e,to:t,position:n.position,reasons:[M(r)],carry:{onRunning:n.onRunning}}),!1):(I.error(`Could not move "${e.title}": ${M(r)}`),!1)}},[c]),u=(0,U.useCallback)(e=>s(e.id,async()=>{try{await Ce(e.id,`run-now`),I.info(`Dispatch requested for "${e.title}". Waiting for the host to confirm.`)}catch(t){I.error(`Cannot run "${e.title}" now: ${M(t)}`)}}),[s]),d=(0,U.useCallback)(e=>s(e.id,async()=>{try{await Ce(e.id,`new-attempt`),I.info(`New attempt requested for "${e.title}".`)}catch(t){if(ee(t,`native_session_missing`)){i({kind:`fresh_attempt`,task:e,to:`in_progress`,reasons:[M(t)]});return}I.error(`Could not start a new attempt: ${M(t)}`)}}),[s]),f=(0,U.useCallback)(async(e,t,n={})=>{let r=e.currentRunId?N.getState().runs[e.currentRunId]:void 0,a=xe(e,t,r);switch(a.kind){case`noop`:return;case`invalid`:I.error(a.reason);return;case`run_now`:return u(e);case`new_attempt`:return d(e);case`choose_running`:i({kind:`choice`,task:e,to:t,position:n.position,reasons:[]});return;case`confirm_done`:i({kind:`confirm_done`,task:e,to:t,position:n.position,reasons:a.reasons});return;case`move`:await s(e.id,async()=>{await l(e,t,{position:n.position})})}},[u,d,l,s]),m=(0,U.useCallback)((e,t)=>s(e.id,async()=>{try{await we(e.id,{position:t})}catch(e){I.error(`Could not reorder: ${M(e)}`)}}),[s]),h=async e=>{if(!r)return;let t=r;o(e);try{if(t.kind===`fresh_attempt`)try{await Ce(t.task.id,`new-attempt`,{},`?fresh=true`),I.info(`New attempt in a fresh session requested for "${t.task.title}".`)}catch(e){I.error(`Could not start a new attempt: ${M(e)}`)}else t.via===`accept`?await s(t.task.id,async()=>{try{await Ce(t.task.id,`accept`,{confirm:!0}),I.success(`Accepted "${t.task.title}". It is Done.`)}catch(e){I.error(`Could not accept: ${M(e)}`)}}):await s(t.task.id,async()=>{await l(t.task,t.to,{position:t.position,...t.carry,...e===`confirm`?{confirm:!0}:{onRunning:e}})})}finally{o(null),i(e=>e===t?null:e)}},_=(0,U.useCallback)(e=>s(e.id,async()=>{try{await Ce(e.id,`accept`,{}),I.success(`Accepted "${e.title}". It is Done.`)}catch(t){if(Te(t)){i({kind:`confirm_done`,task:e,to:`done`,reasons:[M(t)],via:`accept`});return}I.error(`Could not accept: ${M(t)}`)}}),[s]),v=(0,U.useMemo)(()=>({move:f,runNow:u,newAttempt:d,reorder:m,accept:_,isBusy:e=>!!t[e]}),[f,u,d,m,_,t]),y=()=>{a||i(null)};return(0,Z.jsxs)(Vi.Provider,{value:v,children:[e,(0,Z.jsx)(gt,{open:r?.kind===`choice`,onClose:y,title:`This task is running`,description:r?`Moving "${r.task.title}" to ${B[r.to]} needs a decision about its active run. Nothing changes until you choose.`:void 0,footer:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(D,{onClick:y,disabled:!!a,children:`Keep running`}),(0,Z.jsx)(D,{icon:(0,Z.jsx)(g,{className:`size-4`}),busy:a===`pause`,disabled:!!a,onClick:()=>void h(`pause`),children:`Pause automation`}),(0,Z.jsx)(D,{variant:`danger`,icon:(0,Z.jsx)(p,{className:`size-4`}),busy:a===`stop`,disabled:!!a,onClick:()=>void h(`stop`),children:`Stop execution`})]}),children:(0,Z.jsxs)(`ul`,{className:`flex flex-col gap-2 text-sm`,children:[(0,Z.jsxs)(`li`,{children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:`Pause automation`}),`: you take over the session. The agent keeps its current turn, and automatic continuations, retries and successor runs stop until you return it to automation.`]}),(0,Z.jsxs)(`li`,{children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:`Stop execution`}),`: aborts the current run. The session and its workspace are kept.`]})]})}),(0,Z.jsxs)(yt,{open:r?.kind===`confirm_done`,onClose:y,title:`Accept and mark Done?`,description:Ui,danger:!1,confirmLabel:`Accept and mark Done`,busy:a===`confirm`,onConfirm:()=>void h(`confirm`),children:[(0,Z.jsx)(`p`,{className:`mb-2 text-sm`,children:`These items are unresolved:`}),(0,Z.jsx)(`ul`,{className:`list-disc space-y-1 pl-5 text-sm`,children:r?.reasons.map(e=>(0,Z.jsx)(`li`,{children:e},e))}),r&&r.task.acceptanceCriteria.length>0&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`p`,{className:`mt-3 mb-1 text-sm font-medium`,children:`Acceptance criteria`}),(0,Z.jsx)(`ul`,{className:`list-disc space-y-1 pl-5 text-sm text-muted`,children:r.task.acceptanceCriteria.map(e=>(0,Z.jsx)(`li`,{children:e},e))})]})]}),(0,Z.jsx)(yt,{open:r?.kind===`fresh_attempt`,onClose:y,title:`Start a fresh session?`,description:r?.reasons[0],danger:!1,confirmLabel:`Start fresh session`,busy:a===`confirm`,onConfirm:()=>void h(`confirm`),children:(0,Z.jsx)(`p`,{className:`text-sm`,children:`The previous Pi session is no longer available on the host, so the new attempt cannot continue it. A fresh session starts with the task objective and your review feedback.`})})]})}function Gi(e){let t=N(e=>e.runs),n=N(e=>e.hosts),r=N(e=>e.sessions),i=N(e=>e.workspaces),a=N(e=>e.projects),o=N(e=>e.attention),s=N(e=>e.interactions);return(0,U.useMemo)(()=>{if(!e)return{run:void 0,hostName:null,hostOffline:!1,branch:null,projectName:null,attention:[],pendingInteraction:void 0};let c=e.currentRunId?t[e.currentRunId]:void 0,l=e.sessionId?r[e.sessionId]:void 0,u=c?.hostId??l?.hostId??e.policy.hostId??null,d=u?n[u]:void 0,f=(l?.workspaceId?i[l.workspaceId]:void 0)?.branch??(e.policy.workspace.mode===`new_worktree`?e.policy.workspace.branch:null)??(e.policy.workspace.mode===`existing`?i[e.policy.workspace.workspaceId]?.branch??null:null),p=Object.values(o).filter(t=>x(t)&&(t.taskId===e.id||!!e.sessionId&&t.sessionId===e.sessionId)),m=e.sessionId?se(s,e.sessionId)[0]:void 0;return{run:c,hostName:d?.name??null,hostOffline:!!d&&d.connectivity!==`connected`,branch:f??null,projectName:a[e.projectId]?.name??null,attention:p,pendingInteraction:m}},[e,t,n,r,i,a,o,s])}function Ki(e,t,n){if(e.blocked)return{icon:C,text:`Blocked: ${e.blocked.reason}`,tone:`danger`};if(e.state===`in_progress`&&t){let e=c[t.state],n=t.controlMode===`human`?` · You have control`:``;return{icon:e.icon,text:`${e.label}${n}`,tone:e.tone,spin:e.spin,pulse:e.pulse}}return e.state===`ready`?n&&!n.eligible?{icon:ve,text:n.message||Ue[n.wait],tone:`warning`}:n?.eligible?{icon:ve,text:`Starting on ${n.hostName}`,tone:`info`}:{icon:ve,text:`Queued for dispatch`,tone:`neutral`}:e.state===`review`?e.review.changesRequested?{icon:C,text:`Changes requested`,tone:`warning`}:t?.outcome?{icon:c.succeeded.icon,text:t.outcome.summary||`Ready for review`,tone:`info`}:{icon:c.succeeded.icon,text:`Ready for review`,tone:`info`}:null}var qi=`Accepting marks the task Done. It does not merge or push.`;function Ji(e){return e.sessionId?`${V.session(e.sessionId)}?tab=changes`:null}function Yi(e){let t=!!e&&(e.state===`ready`||e.state===`backlog`),n=t?`${e.id}:${e.state}:${e.updatedAt}`:null,r=Et(n,t=>Ve(e.id,t)),i=N(e=>e.hosts),a=N(e=>e.tasks),o=N(e=>e.projects),s=N(e=>e.runs),c=N(e=>e.dispatchPaused),l=(0,U.useMemo)(()=>{if(!e)return;let t={};for(let e of Object.values(s)){if(!Xe(e))continue;let n=a[e.taskId]?.projectId;n&&(t[n]=(t[n]??0)+1)}return Ae({project:o[e.projectId],hostId:e.policy.hostId,dependencies:e.dependencies,notBefore:e.notBefore},{hosts:i,tasks:a,dispatchPaused:c,runningByProject:t})},[e,i,a,o,s,c]),u=r.data,d;return t?u?d=!u.eligible&&u.wait===`not_ready`?l:u:r.error&&(d=l):d=void 0,{eligibility:d,loading:r.loading&&!r.data,error:r.error,estimated:!!d&&d===l}}function Xi({title:e,children:t,action:n}){let r=(0,U.useId)();return(0,Z.jsxs)(`section`,{"aria-labelledby":r,className:`flex min-w-0 flex-col gap-2 border-b border-border py-4 last:border-b-0`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`h3`,{id:r,className:`min-w-0 flex-1 text-sm font-semibold`,children:e}),n]}),t]})}function Q({label:e,children:t}){return(0,Z.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[minmax(7rem,auto)_1fr] gap-x-3 text-sm`,children:[(0,Z.jsx)(`dt`,{className:`text-muted`,children:e}),(0,Z.jsx)(`dd`,{className:`min-w-0 break-words`,children:t})]})}function Zi({task:e,eligibility:t,block:n}){let i=Hi(),a=i.isBusy(e.id),o=t?(0,Z.jsx)(Qi,{e:t,prefix:e.state===`backlog`?`If made ready: `:``}):null;switch(e.state){case`backlog`:return(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[(0,Z.jsx)(D,{variant:`primary`,block:n,busy:a,icon:(0,Z.jsx)(rt,{className:`size-4`}),onClick:()=>void i.move(e,`ready`),children:`Make ready`}),o]});case`ready`:return(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[(0,Z.jsx)(D,{variant:`primary`,block:n,busy:a,icon:(0,Z.jsx)(rt,{className:`size-4`}),onClick:()=>void i.runNow(e),children:`Run now`}),o]});case`in_progress`:return e.sessionId?(0,Z.jsxs)(r,{to:V.session(e.sessionId),className:O(`primary`,`md`,n?`w-full`:void 0),children:[(0,Z.jsx)(R,{"aria-hidden":!0,className:`size-4`}),`Open session`]}):(0,Z.jsx)(`p`,{className:`text-sm text-muted`,children:e.blocked?`No session is attached to this task.`:`The session is starting; Open session appears once the host confirms the launch.`});case`review`:{let t=Ji(e);return t?(0,Z.jsxs)(r,{to:t,className:O(`primary`,`md`,n?`w-full`:void 0),children:[(0,Z.jsx)(u,{"aria-hidden":!0,className:`size-4`}),`Review changes`]}):(0,Z.jsxs)(`a`,{href:`#task-review`,className:O(`primary`,`md`,n?`w-full`:void 0),children:[(0,Z.jsx)(u,{"aria-hidden":!0,className:`size-4`}),`Review changes`]})}case`done`:return(0,Z.jsx)(D,{variant:`primary`,block:n,busy:a,icon:(0,Z.jsx)(pe,{className:`size-4`}),onClick:()=>void i.move(e,`backlog`),children:`Reopen to Backlog`});case`canceled`:return(0,Z.jsx)(D,{variant:`primary`,block:n,busy:a,icon:(0,Z.jsx)(pe,{className:`size-4`}),onClick:()=>void i.move(e,`backlog`),children:`Restore to Backlog`})}}function Qi({e,prefix:t=``}){let n=e.eligible?L:ve;return(0,Z.jsxs)(`p`,{role:`status`,className:T(`flex items-start gap-1.5 text-sm`,e.eligible?`text-success`:`text-warning`),children:[(0,Z.jsx)(n,{"aria-hidden":!0,className:`mt-0.5 size-4 shrink-0`}),(0,Z.jsxs)(`span`,{className:`min-w-0 break-words text-text`,children:[t,je(e)]})]})}function $i({task:e,onDeleted:t}){let n=Gi(e),{eligibility:i,error:a}=Yi(e),o=N(e=>e.tasks),s=N(e=>e.hosts),c=N(e=>e.profiles),l=N(e=>e.projects),u=N(e=>e.workspaces),d=N(e=>e.runs),p=Et(`${e.id}:${e.currentRunId??``}`,t=>be(e.id,t)),m=(0,U.useMemo)(()=>{let t=new Map;for(let e of p.data??[])t.set(e.id,e);for(let n of b(d,e.id)){let e=t.get(n.id);(!e||e.updatedAt<=n.updatedAt)&&t.set(n.id,n)}return[...t.values()].sort((e,t)=>t.attempt-e.attempt||t.createdAt.localeCompare(e.createdAt))},[p.data,d,e.id]),[h,g]=(0,U.useState)(!1),_=l[e.projectId],v=n.run,y=Ki(e,v,i),x=e.policy.hostId??_?.defaultHostId??null,S=x?s[x]:void 0,T=v?.hostId?s[v.hostId]:void 0,E=T&&T.connectivity!==`connected`?T:void 0,k=e.policy.profileId??_?.defaultProfileId??null,se=N(t=>e.sessionId?w(t.interactions,e.sessionId):0);return(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col`,"data-testid":`task-detail`,children:[se>0&&e.sessionId&&n.pendingInteraction&&(0,Z.jsx)(oe,{count:se,to:V.interaction(e.sessionId,n.pendingInteraction.id),className:`mt-3`}),E&&(0,Z.jsx)(re,{compact:!0,className:`mt-3`,hostName:E.name,connectivity:E.connectivity===`reconnecting`?`reconnecting`:`unreachable`,lastSeenAt:E.lastSeenAt,detail:`The run keeps its last known state. Switchyard does not restart it on another host.`}),(0,Z.jsx)(Xi,{title:`Objective and acceptance criteria`,action:!h&&(0,Z.jsx)(D,{size:`sm`,variant:`ghost`,icon:(0,Z.jsx)(tt,{className:`size-3.5`}),onClick:()=>g(!0),children:`Edit`}),children:h?(0,Z.jsx)(ra,{task:e,onDone:()=>g(!1)}):(0,Z.jsxs)(Z.Fragment,{children:[e.objective.trim()?(0,Z.jsx)(Ct,{text:e.objective}):(0,Z.jsx)(`p`,{className:`text-sm text-muted`,children:`No objective yet. Edit the task to describe what done looks like.`}),(0,Z.jsx)(`h4`,{className:`pt-1 text-xs font-semibold tracking-wide text-muted uppercase`,children:`Acceptance criteria`}),e.acceptanceCriteria.length>0?(0,Z.jsx)(`ul`,{className:`list-disc space-y-1 pl-5 text-sm`,children:e.acceptanceCriteria.map(e=>(0,Z.jsx)(`li`,{className:`break-words`,children:e},e))}):(0,Z.jsx)(`p`,{className:`text-sm text-muted`,children:`No acceptance criteria.`})]})}),(0,Z.jsxs)(Xi,{title:`State`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(f,{kind:`task`,value:e.state}),(0,Z.jsx)(ge,{priority:e.priority,suffix:` priority`,muted:!0,className:`text-sm`})]}),e.blocked&&(0,Z.jsxs)(`p`,{className:`flex items-start gap-1.5 rounded-md bg-danger-soft px-3 py-2 text-sm`,children:[(0,Z.jsx)(C,{"aria-hidden":!0,className:`mt-0.5 size-4 shrink-0 text-danger`}),(0,Z.jsxs)(`span`,{className:`min-w-0 break-words`,children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:`Blocked:`}),` `,e.blocked.reason]})]}),y&&!e.blocked&&!(e.state===`ready`&&i)&&(0,Z.jsx)(`p`,{className:`text-sm text-muted`,children:y.text}),(e.state===`ready`||e.state===`backlog`)&&i&&(0,Z.jsx)(Qi,{e:i,prefix:e.state===`backlog`?`If made ready: `:``}),a!==null&&ee(a)&&a.status===404&&(0,Z.jsx)(`p`,{className:`text-xs text-muted`,children:`Eligibility is estimated on this device; the coordinator did not report it.`}),e.notBefore&&(0,Z.jsxs)(`p`,{className:`text-sm text-muted`,children:[`Not before `,te(e.notBefore)]})]}),(0,Z.jsxs)(Xi,{title:`Current run`,children:[v?(0,Z.jsxs)(`dl`,{className:`flex flex-col gap-1`,children:[(0,Z.jsx)(Q,{label:`Status`,children:(0,Z.jsx)(f,{kind:`run`,value:v.state,size:`sm`})}),(0,Z.jsx)(Q,{label:`Attempt`,children:v.attempt}),(0,Z.jsx)(Q,{label:`Control`,children:v.controlMode===`human`?`You (taken over from automation)`:`Automation`}),T&&(0,Z.jsx)(Q,{label:`Host`,children:T.name}),v.startedAt&&(0,Z.jsx)(Q,{label:`Started`,children:ne(v.startedAt)}),(0,Z.jsx)(Q,{label:`Continuations`,children:v.continuationsUsed}),(0,Z.jsx)(Q,{label:`Usage`,children:v.usage.accounting===`available`?`${v.usage.tokens??0} tokens${v.usage.costUsd===null?``:` · $${v.usage.costUsd.toFixed(2)}`}`:v.usage.note??`Token/cost accounting not reported`}),v.outcome&&(0,Z.jsx)(Q,{label:`Outcome`,children:v.outcome.summary})]}):(0,Z.jsx)(`p`,{className:`text-sm text-muted`,children:`No run yet.`}),e.sessionId&&e.state!==`in_progress`&&e.state!==`review`&&(0,Z.jsx)(`div`,{children:(0,Z.jsxs)(r,{to:V.session(e.sessionId),className:O(`secondary`,`sm`),children:[(0,Z.jsx)(R,{"aria-hidden":!0,className:`size-3.5`}),`Open session`]})})]}),e.state===`review`&&(0,Z.jsx)(na,{task:e}),(0,Z.jsx)(Xi,{title:`Dependencies`,children:e.dependencies.length===0?(0,Z.jsx)(`p`,{className:`text-sm text-muted`,children:`No dependencies.`}):(0,Z.jsx)(`ul`,{className:`flex flex-col gap-1`,children:e.dependencies.map(e=>{let t=o[e];return(0,Z.jsx)(`li`,{className:`flex min-w-0 items-center gap-2 text-sm`,children:t?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(f,{kind:`task`,value:t.state,size:`sm`}),(0,Z.jsx)(xt,{to:V.task(e),variant:`action`,className:`truncate`,children:t.title})]}):(0,Z.jsx)(`span`,{className:`text-muted`,children:`A task that is no longer available`})},e)})})}),(0,Z.jsxs)(Xi,{title:`Host, profile and workspace`,children:[(0,Z.jsxs)(`dl`,{className:`flex flex-col gap-1`,children:[(0,Z.jsx)(Q,{label:`Project`,children:_?.name??`Unknown project`}),(0,Z.jsx)(Q,{label:`Host`,children:e.policy.hostId?S?.name??`Unknown host`:`Project default${S?` (${S.name})`:``}`}),(0,Z.jsx)(Q,{label:`Profile`,children:e.policy.profileId?c[e.policy.profileId]?.name??`Unknown profile`:`Project default${k&&c[k]?` (${c[k].name})`:``}`}),(0,Z.jsx)(Q,{label:`Workspace`,children:e.policy.workspace.mode===`existing`?`Existing: ${u[e.policy.workspace.workspaceId]?.branch??u[e.policy.workspace.workspaceId]?.path??`unknown workspace`}`:`New worktree${e.policy.workspace.branch?` on ${e.policy.workspace.branch}`:``}${e.policy.workspace.base?` from ${e.policy.workspace.base}`:``}`}),_&&(0,Z.jsx)(Q,{label:`Sharing`,children:_.workspaceSharing===`single_writer`?`Single writer`:`Shared`})]}),S&&!S.piCompatible&&(0,Z.jsx)(ce,{capability:`Running on this host`,reason:`Pi ${S.piVersion??`(unknown version)`} on ${S.name} is not compatible with Switchyard.`})]}),(0,Z.jsxs)(Xi,{title:`Limits and completion`,children:[(0,Z.jsxs)(`dl`,{className:`flex flex-col gap-1`,children:[(0,Z.jsx)(Q,{label:`Continuation`,children:e.policy.continuation.enabled?`Up to ${e.policy.continuation.maxContinuations} continuations within ${e.policy.continuation.maxElapsedMinutes} min${e.policy.continuation.maxTokens?`, ${e.policy.continuation.maxTokens} tokens`:``}${e.policy.continuation.maxCostUsd?`, $${e.policy.continuation.maxCostUsd}`:``}`:`Off`}),(0,Z.jsx)(Q,{label:`Checks`,children:e.policy.completion.checks===null?`Project default${_?.checks.length?` (${_.checks.join(`, `)})`:` (none)`}`:e.policy.completion.checks.length>0?e.policy.completion.checks.join(`, `):`None`}),(0,Z.jsx)(Q,{label:`Human review`,children:e.policy.completion.requireHumanReview?`Required`:`Not required`})]}),v&&v.checks.length>0&&(0,Z.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:v.checks.map(e=>(0,Z.jsxs)(`li`,{className:`flex min-w-0 items-start gap-1.5`,children:[e.exitCode===0?(0,Z.jsx)(L,{"aria-hidden":!0,className:`mt-0.5 size-4 shrink-0 text-success`}):(0,Z.jsx)(C,{"aria-hidden":!0,className:`mt-0.5 size-4 shrink-0 text-danger`}),(0,Z.jsx)(`span`,{className:`min-w-0 break-all font-mono text-xs`,children:e.command}),(0,Z.jsx)(`span`,{className:`shrink-0 text-xs text-muted`,children:e.exitCode===0?`Passed`:`Failed (${e.exitCode??`no exit code`})`})]},e.command))})]}),(0,Z.jsxs)(Xi,{title:`Run history and activity`,children:[p.error!==null&&!p.data&&m.length===0&&(0,Z.jsx)(ae,{compact:!0,title:`Could not load run history`,error:M(p.error),onRetry:p.reload}),m.length===0?(0,Z.jsx)(`p`,{className:`text-sm text-muted`,children:p.loading?`Loading runs…`:`No runs yet.`}):(0,Z.jsx)(`ol`,{className:`flex flex-col gap-2`,children:m.map(e=>(0,Z.jsxs)(`li`,{className:`flex min-w-0 flex-col gap-0.5 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsxs)(`span`,{className:`font-medium`,children:[`Attempt `,e.attempt]}),(0,Z.jsx)(f,{kind:`run`,value:e.state,size:`sm`})]}),e.outcome&&(0,Z.jsx)(`p`,{className:`break-words text-muted`,children:e.outcome.summary}),(0,Z.jsxs)(`p`,{className:`text-xs text-subtle`,children:[e.startedAt?`Started ${te(e.startedAt)}`:`Created ${te(e.createdAt)}`,e.startedAt&&e.endedAt?` · ${ie(Date.parse(e.endedAt)-Date.parse(e.startedAt))}`:``,e.infraRetries>0?` · ${e.infraRetries} infrastructure retries`:``]})]},e.id))}),e.review.feedback.length>0&&(0,Z.jsxs)(`div`,{className:`text-sm`,children:[(0,Z.jsx)(`p`,{className:`font-medium`,children:`Review feedback`}),(0,Z.jsx)(`ul`,{className:`list-disc pl-5 text-muted`,children:e.review.feedback.map(e=>(0,Z.jsx)(`li`,{className:`break-words`,children:e},e))})]}),(0,Z.jsxs)(`p`,{className:`text-xs text-subtle`,children:[`Created `,te(e.createdAt),` · last activity `,ne(e.lastActivityAt),e.origin.kind===`automation`?` · created by an automation`:``]})]}),(0,Z.jsx)(ea,{task:e,onDeleted:t})]})}function ea({task:e,onDeleted:t}){let[n,r]=(0,U.useState)(!1),[i,a]=(0,U.useState)(!1);return e.state!==`backlog`&&e.state!==`canceled`&&e.state!==`done`?null:(0,Z.jsxs)(`div`,{className:`py-4`,children:[(0,Z.jsx)(D,{variant:`ghost`,size:`sm`,icon:(0,Z.jsx)(ue,{className:`size-4`}),className:`text-danger`,onClick:()=>r(!0),children:`Delete task`}),(0,Z.jsx)(yt,{open:n,onClose:()=>r(!1),title:`Delete this task?`,description:`"${e.title}" and its history are removed from the board. Sessions and workspaces are kept.`,confirmLabel:`Delete task`,busy:i,onConfirm:async()=>{a(!0);try{await De(e.id),I.success(`Deleted "${e.title}"`),r(!1),t?.()}catch(e){I.error(`Could not delete: ${M(e)}`)}finally{a(!1)}}})]})}var ta=e=>`sy:feedback:${e}`;function na({task:e}){let t=Hi(),[n,r]=(0,U.useState)(()=>sessionStorage.getItem(ta(e.id))??``),[i,a]=(0,U.useState)(null),o=(0,U.useId)();(0,U.useEffect)(()=>{n?sessionStorage.setItem(ta(e.id),n):sessionStorage.removeItem(ta(e.id))},[n,e.id]);let s=n.split(`
6
+ `).map(e=>e.replace(/^[-*]\s*/,``).trim()).filter(Boolean);return(0,Z.jsxs)(`section`,{id:`task-review`,"aria-labelledby":`${o}-h`,className:`flex min-w-0 flex-col gap-3 border-b border-border py-4`,children:[(0,Z.jsx)(`h3`,{id:`${o}-h`,className:`text-sm font-semibold`,children:`Review`}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Z.jsx)(`label`,{htmlFor:o,className:`text-sm font-medium`,children:`Feedback for the next attempt`}),(0,Z.jsx)(bt,{id:o,minRows:3,maxHeight:`40vh`,placeholder:`One change per line`,value:n,onChange:e=>r(e.target.value)}),(0,Z.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Z.jsx)(D,{icon:(0,Z.jsx)(Lt,{className:`size-4`}),busy:i===`changes`,disabled:i!==null||s.length===0,onClick:async()=>{a(`changes`);try{await Oe(e.id,s),r(``),I.success(`Changes requested. Start a new attempt when ready.`)}catch(e){I.error(`Could not request changes: ${M(e)}`)}finally{a(null)}},children:`Request changes`}),(0,Z.jsx)(D,{icon:(0,Z.jsx)(pe,{className:`size-4`}),busy:t.isBusy(e.id),disabled:i!==null,onClick:()=>void t.newAttempt(e),children:`Start new attempt`})]}),s.length===0&&(0,Z.jsx)(`p`,{className:`text-xs text-muted`,children:`Write at least one line of feedback to request changes.`})]}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Z.jsx)(D,{variant:`primary`,icon:(0,Z.jsx)(L,{className:`size-4`}),busy:t.isBusy(e.id),disabled:i!==null,onClick:()=>void t.accept(e),children:`Accept task`}),(0,Z.jsx)(`p`,{className:`text-xs text-muted`,children:qi})]})]})}function ra({task:e,onDone:t}){let n=N(e=>e.tasks),[r,i]=(0,U.useState)(e.title),[a,o]=(0,U.useState)(e.objective),[s,c]=(0,U.useState)(e.acceptanceCriteria.join(`
7
+ `)),[l,u]=(0,U.useState)(e.priority),[d,f]=(0,U.useState)(e.dependencies),[p,m]=(0,U.useState)(!1),[h,g]=(0,U.useState)(null),_=(0,U.useId)(),v=Object.values(n).filter(t=>t.projectId===e.projectId&&t.id!==e.id&&t.state!==`canceled`&&!t.hiddenFromBoard).sort((e,t)=>e.title.localeCompare(t.title));return(0,Z.jsxs)(`form`,{className:`flex flex-col gap-3`,onSubmit:async n=>{if(n.preventDefault(),!r.trim())g(`Title is required.`);else{m(!0),g(null);try{await we(e.id,{title:r.trim(),objective:a,acceptanceCriteria:s.split(`
8
+ `).map(e=>e.trim()).filter(Boolean),priority:l,dependencies:d}),I.success(`Task saved`),t()}catch(e){g(M(e))}finally{m(!1)}}},children:[(0,Z.jsx)(P,{id:`${_}-title`,label:`Title`,children:(0,Z.jsx)(H,{id:`${_}-title`,value:r,onChange:e=>i(e.target.value),required:!0})}),(0,Z.jsx)(P,{id:`${_}-obj`,label:`Objective`,children:(0,Z.jsx)(bt,{id:`${_}-obj`,minRows:4,maxHeight:`40vh`,value:a,onChange:e=>o(e.target.value)})}),(0,Z.jsx)(P,{id:`${_}-crit`,label:`Acceptance criteria (one per line)`,children:(0,Z.jsx)(bt,{id:`${_}-crit`,minRows:2,maxHeight:`30vh`,value:s,onChange:e=>c(e.target.value)})}),(0,Z.jsx)(P,{id:`${_}-prio`,label:`Priority`,children:e=>(0,Z.jsx)(_e,{...e,value:l,onChange:u})}),(0,Z.jsx)(ia,{candidates:v,value:d,onChange:f}),h&&(0,Z.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:h}),(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Z.jsx)(D,{type:`submit`,variant:`primary`,busy:p,children:`Save`}),(0,Z.jsx)(D,{onClick:t,disabled:p,children:`Cancel`})]})]})}function ia({candidates:e,value:t,onChange:n}){let[r,i]=(0,U.useState)(``),a=(0,U.useId)(),o=e.filter(e=>t.includes(e.id)||e.title.toLowerCase().includes(r.toLowerCase())).slice(0,50);return(0,Z.jsxs)(`fieldset`,{className:`flex min-w-0 flex-col gap-1`,children:[(0,Z.jsx)(`legend`,{className:`text-sm font-medium`,children:`Dependencies`}),e.length===0?(0,Z.jsx)(`p`,{className:`text-sm text-muted`,children:`No other tasks in this project.`}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`label`,{htmlFor:a,className:`sr-only`,children:`Filter tasks`}),(0,Z.jsx)(H,{id:a,placeholder:`Filter tasks`,value:r,onChange:e=>i(e.target.value)}),(0,Z.jsx)(`ul`,{className:`max-h-48 overflow-y-auto rounded-md border border-border`,children:o.map(e=>(0,Z.jsx)(`li`,{children:(0,Z.jsx)(ct,{className:`w-full px-3 py-1.5 hover:bg-surface-2`,label:(0,Z.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.title}),(0,Z.jsx)(`span`,{className:`shrink-0 text-xs text-muted`,children:B[e.state]})]}),checked:t.includes(e.id),onChange:r=>n(r?[...t,e.id]:t.filter(t=>t!==e.id))})},e.id))}),t.length>0&&(0,Z.jsxs)(`p`,{className:`text-xs text-muted`,children:[t.length,` selected. The task waits until they are Done.`]})]})]})}var aa=`sy:new-task-draft`;function oa(e){return{title:``,objective:``,projectId:e,advanced:!1,priority:2,dependencies:[],hostId:``,profileId:``,branch:``,criteria:``,continuation:!1,contObjective:``,maxContinuations:`3`,maxMinutes:`60`,maxTokens:``,maxCost:``,checks:``,checksMode:`default`,humanReview:!0}}function sa(e){try{let t=sessionStorage.getItem(aa);if(t)return{...oa(e),...JSON.parse(t)}}catch{}return oa(e)}var ca=e=>e.split(`
9
+ `).map(e=>e.trim()).filter(Boolean);function la(e){let t={},n={};if(e.hostId&&(n.hostId=e.hostId),e.profileId&&(n.profileId=e.profileId),e.branch.trim()&&(n.workspace={mode:`new_worktree`,branch:e.branch.trim(),base:null}),e.continuation){let r=Number(e.maxContinuations),i=Number(e.maxMinutes),a=e.maxTokens.trim()?Number(e.maxTokens):null,o=e.maxCost.trim()?Number(e.maxCost):null;e.contObjective.trim()||(t.contObjective=`Continuation needs an objective.`),(!Number.isInteger(r)||r<1||r>50)&&(t.maxContinuations=`Use 1 to 50.`),(!Number.isInteger(i)||i<1||i>1440)&&(t.maxMinutes=`Use 1 to 1440 minutes.`),a!==null&&(!Number.isInteger(a)||a<=0)&&(t.maxTokens=`Use a positive whole number.`),o!==null&&(!Number.isFinite(o)||o<=0)&&(t.maxCost=`Use a positive amount.`),n.continuation={enabled:!0,objective:e.contObjective.trim(),maxContinuations:r,maxElapsedMinutes:i,maxTokens:a,maxCostUsd:o}}return e.checksMode!==`custom`&&e.humanReview||(n.completion={checks:e.checksMode===`custom`?ca(e.checks):null,requireHumanReview:e.humanReview}),{policy:n,errors:t}}function ua({defaultProjectId:e,onCreated:t,onCancel:n}){let r=S(),i=_(),a=N(e=>e.profiles),o=N(e=>e.tasks),s=N(e=>e.runs),c=N(e=>e.hosts),l=N(e=>e.dispatchPaused),[u,d]=(0,U.useState)(()=>sa(e??r[0]?.id??``)),[f,p]=(0,U.useState)(null),[m,h]=(0,U.useState)({}),[g,v]=(0,U.useState)(null),y=(0,U.useId)(),b=(e,t)=>d(n=>({...n,[e]:t}));(0,U.useEffect)(()=>{!u.projectId&&r[0]&&d(e=>({...e,projectId:r[0].id}))},[u.projectId,r]),(0,U.useEffect)(()=>{sessionStorage.setItem(aa,JSON.stringify(u))},[u]);let x=r.find(e=>e.id===u.projectId),C=x?.defaultHostId?c[x.defaultHostId]:void 0,w=x?.defaultProfileId?a[x.defaultProfileId]:void 0,T=Object.values(o).filter(e=>e.projectId===u.projectId&&e.state!==`canceled`&&!e.hiddenFromBoard).sort((e,t)=>e.title.localeCompare(t.title)),ee=(0,U.useMemo)(()=>{let e={};for(let t of Object.values(s)){if(!Xe(t))continue;let n=o[t.taskId]?.projectId;n&&(e[n]=(e[n]??0)+1)}return Ae({project:x,hostId:u.hostId||null,dependencies:u.dependencies},{hosts:c,tasks:o,dispatchPaused:l,runningByProject:e})},[x,u.hostId,u.dependencies,c,o,s,l]),E=async e=>{let n={};u.title.trim()||(n.title=`Give the task a title.`),x||(n.projectId=`Choose a project.`);let{policy:r,errors:i}=la(u);if(Object.assign(n,i),h(n),Object.keys(n).length>0)Object.keys(i).length>0&&b(`advanced`,!0);else{p(e),v(null);try{let n=await z({projectId:u.projectId,title:u.title.trim(),objective:u.objective,acceptanceCriteria:ca(u.criteria),dependencies:u.dependencies,priority:u.priority,state:e,...Object.keys(r).length>0?{policy:r}:{}});if(sessionStorage.removeItem(aa),e===`ready`){let e=je(ee);try{e=je(await Ve(n.id))}catch{}I.success(`Created "${n.title}" in Ready. ${e}.`)}else I.success(`Created "${n.title}" in Backlog.`);t(n)}catch(e){v(M(e))}finally{p(null)}}};return(0,Z.jsxs)(`form`,{"data-testid":`new-task-form`,className:`flex min-w-0 flex-col gap-4`,onSubmit:e=>{e.preventDefault(),E(`backlog`)},children:[(0,Z.jsx)(P,{id:`${y}-title`,label:`Title`,error:m.title,children:e=>(0,Z.jsx)(H,{...e,value:u.title,autoFocus:!0,onChange:e=>b(`title`,e.target.value),placeholder:`What should be done?`})}),(0,Z.jsx)(P,{id:`${y}-objective`,label:`Objective`,children:(0,Z.jsx)(bt,{id:`${y}-objective`,minRows:3,maxHeight:`35vh`,value:u.objective,onChange:e=>b(`objective`,e.target.value),placeholder:`Context, constraints and what done looks like`})}),(0,Z.jsx)(P,{id:`${y}-project`,label:`Project`,error:m.projectId,children:e=>(0,Z.jsxs)(Dt,{...e,value:u.projectId,onChange:e=>d(t=>({...t,projectId:e.target.value,dependencies:[]})),children:[r.length===0&&(0,Z.jsx)(`option`,{value:``,children:`No projects yet`}),r.map(e=>(0,Z.jsx)(`option`,{value:e.id,children:e.name},e.id))]})}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(xt,{size:`sm`,"aria-expanded":u.advanced,"aria-controls":`${y}-adv`,icon:u.advanced?(0,Z.jsx)(fe,{"aria-hidden":!0,className:`size-4`}):(0,Z.jsx)(he,{"aria-hidden":!0,className:`size-4`}),onClick:()=>b(`advanced`,!u.advanced),children:`Advanced options`}),(0,Z.jsx)(`p`,{className:`text-xs text-muted`,children:`Unset options inherit the project defaults.`})]}),u.advanced&&(0,Z.jsxs)(`div`,{id:`${y}-adv`,className:`flex flex-col gap-4 rounded-lg border border-border p-3`,children:[(0,Z.jsx)(P,{id:`${y}-prio`,label:`Priority`,children:e=>(0,Z.jsx)(_e,{...e,value:u.priority,onChange:e=>b(`priority`,e)})}),(0,Z.jsx)(P,{id:`${y}-criteria`,label:`Acceptance criteria (one per line)`,children:(0,Z.jsx)(bt,{id:`${y}-criteria`,minRows:2,maxHeight:`25vh`,value:u.criteria,onChange:e=>b(`criteria`,e.target.value)})}),(0,Z.jsx)(ia,{candidates:T,value:u.dependencies,onChange:e=>b(`dependencies`,e)}),(0,Z.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,Z.jsx)(P,{id:`${y}-host`,label:`Host`,children:(0,Z.jsxs)(Dt,{id:`${y}-host`,value:u.hostId,onChange:e=>b(`hostId`,e.target.value),children:[(0,Z.jsxs)(`option`,{value:``,children:[`Project default`,C?` (${C.name})`:``]}),i.map(e=>(0,Z.jsxs)(`option`,{value:e.id,children:[e.name,e.connectivity===`connected`?``:` (offline)`]},e.id))]})}),(0,Z.jsx)(P,{id:`${y}-profile`,label:`Pi profile`,children:(0,Z.jsxs)(Dt,{id:`${y}-profile`,value:u.profileId,onChange:e=>b(`profileId`,e.target.value),children:[(0,Z.jsxs)(`option`,{value:``,children:[`Project default`,w?` (${w.name})`:``]}),Object.values(a).map(e=>(0,Z.jsx)(`option`,{value:e.id,children:e.name},e.id))]})})]}),(0,Z.jsx)(P,{id:`${y}-branch`,label:`Branch`,hint:`Work happens in a new worktree on this branch.`,children:e=>(0,Z.jsx)(H,{...e,value:u.branch,placeholder:`Generated from the title`,onChange:e=>b(`branch`,e.target.value)})}),(0,Z.jsxs)(`fieldset`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(`legend`,{className:`text-sm font-medium`,children:`Continuation limits`}),(0,Z.jsx)(ct,{label:`Continue automatically until done (off by default)`,checked:u.continuation,onChange:e=>b(`continuation`,e)}),u.continuation&&(0,Z.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,Z.jsx)(P,{id:`${y}-cobj`,label:`Continuation objective`,error:m.contObjective,className:`sm:col-span-2`,children:e=>(0,Z.jsx)(H,{...e,value:u.contObjective,onChange:e=>b(`contObjective`,e.target.value)})}),(0,Z.jsx)(P,{id:`${y}-cmax`,label:`Max continuations`,error:m.maxContinuations,children:e=>(0,Z.jsx)(H,{...e,inputMode:`decimal`,value:u.maxContinuations,onChange:e=>b(`maxContinuations`,e.target.value)})}),(0,Z.jsx)(P,{id:`${y}-cmin`,label:`Max minutes`,error:m.maxMinutes,children:e=>(0,Z.jsx)(H,{...e,inputMode:`decimal`,value:u.maxMinutes,onChange:e=>b(`maxMinutes`,e.target.value)})}),(0,Z.jsx)(P,{id:`${y}-ctok`,label:`Max tokens (optional)`,error:m.maxTokens,children:e=>(0,Z.jsx)(H,{...e,inputMode:`decimal`,value:u.maxTokens,onChange:e=>b(`maxTokens`,e.target.value)})}),(0,Z.jsx)(P,{id:`${y}-ccost`,label:`Max cost USD (optional)`,error:m.maxCost,children:e=>(0,Z.jsx)(H,{...e,inputMode:`decimal`,value:u.maxCost,onChange:e=>b(`maxCost`,e.target.value)})}),(0,Z.jsx)(`p`,{className:`text-xs text-muted sm:col-span-2`,children:`Token and cost limits apply only when the Pi provider reports usage.`})]})]}),(0,Z.jsxs)(`fieldset`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(`legend`,{className:`text-sm font-medium`,children:`Checks and review`}),(0,Z.jsx)(ct,{label:(0,Z.jsxs)(Z.Fragment,{children:[`Use custom checks instead of the project's`,x?.checks.length?` (${x.checks.join(`, `)})`:` (none)`]}),checked:u.checksMode===`custom`,onChange:e=>b(`checksMode`,e?`custom`:`default`)}),u.checksMode===`custom`&&(0,Z.jsx)(P,{id:`${y}-checks`,label:`Check commands (one per line; empty means no checks)`,children:(0,Z.jsx)(bt,{id:`${y}-checks`,minRows:2,className:`font-mono`,value:u.checks,onChange:e=>b(`checks`,e.target.value)})}),(0,Z.jsx)(ct,{label:`Require human review before Done`,checked:u.humanReview,onChange:e=>b(`humanReview`,e)})]})]}),g&&(0,Z.jsxs)(`p`,{role:`alert`,className:`rounded-md bg-danger-soft px-3 py-2 text-sm`,children:[`Could not create the task: `,g]}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2 border-t border-border pt-3`,children:[(0,Z.jsx)(Qi,{e:ee,prefix:`Make ready: `}),(0,Z.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Z.jsx)(D,{type:`submit`,icon:(0,Z.jsx)(j,{className:`size-4`}),busy:f===`backlog`,disabled:f!==null,children:`Save to Backlog`}),(0,Z.jsx)(D,{variant:`primary`,icon:(0,Z.jsx)(rt,{className:`size-4`}),busy:f===`ready`,disabled:f!==null,onClick:()=>void E(`ready`),children:`Make ready`}),(0,Z.jsx)(D,{variant:`ghost`,onClick:n,disabled:f!==null,children:`Cancel`})]}),(0,Z.jsx)(`p`,{className:`text-xs text-muted`,children:`Make ready authorizes dispatch. Nothing starts until the coordinator confirms.`})]})]})}function da({task:e,showProject:t,wait:i,onOpen:a,drag:o,full:s,selected:c}){let u=Gi(e),d=N(e=>e.tasks),f=Hi(),p=n(),m=f.isBusy(e.id),g=Ki(e,u.run,i),_=Le(e,d),v=u.attention[0],b=[{id:`open`,label:`Open details`,icon:(0,Z.jsx)(me,{className:`size-4`}),onSelect:()=>a(e)}];if(e.sessionId){let t=e.sessionId;b.push({id:`session`,label:`Open session`,icon:(0,Z.jsx)(R,{className:`size-4`}),onSelect:()=>p(V.session(t))})}b.push(`separator`);for(let t of Ne(e))b.push({id:`move-${t}`,label:ma(e.state,t),icon:(0,Z.jsx)(pa,{state:t}),onSelect:()=>void f.move(e,t)});return(0,Z.jsxs)(`article`,{ref:o?.setNodeRef,"data-testid":`task-card`,"data-task-id":e.id,"aria-label":e.title,"aria-busy":m||void 0,style:o?.style,...o?.cardProps,className:T(`group relative flex min-w-0 flex-col gap-1.5 rounded-lg border bg-surface p-3 text-sm shadow-sm`,c?`border-accent`:`border-border`,o?.dragging&&`opacity-60`,s?`w-full`:``),children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-start gap-1`,children:[o&&(0,Z.jsx)(`button`,{type:`button`,ref:o.setHandleRef,...o.handleProps,"aria-label":`Drag ${e.title}`,title:`Drag to move (Space to pick up, arrows to move, Space to drop)`,className:`tap -ml-1.5 inline-flex h-7 w-5 shrink-0 cursor-grab items-center justify-center rounded text-subtle hover:bg-surface-2 hover:text-text`,children:(0,Z.jsx)(Nt,{"aria-hidden":!0,className:`size-4`})}),(0,Z.jsx)(`button`,{type:`button`,"data-card-open":e.id,onClick:()=>a(e),className:`tap min-w-0 flex-1 rounded text-left font-medium leading-snug`,children:(0,Z.jsx)(`span`,{className:`line-clamp-2 break-words`,children:e.title})}),m&&(0,Z.jsx)(k,{label:`Updating`,className:`mt-0.5 shrink-0`}),(0,Z.jsx)(F,{label:`Actions for ${e.title}`,items:b,trigger:t=>(0,Z.jsx)(`button`,{type:`button`,...t,"aria-label":`Move to… and other actions for ${e.title}`,title:`Move to…`,className:`tap -mr-1.5 inline-flex size-7 shrink-0 items-center justify-center rounded text-muted hover:bg-surface-2 hover:text-text`,children:(0,Z.jsx)(dt,{"aria-hidden":!0,className:`size-4`})})})]}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted`,children:[(0,Z.jsx)(ge,{priority:e.priority}),t&&u.projectName&&(0,Z.jsx)(`span`,{className:`min-w-0 truncate`,children:u.projectName})]}),g&&(0,Z.jsx)(fa,{icon:g.spin?(0,Z.jsx)(k,{className:`size-3.5`}):(0,Z.jsx)(g.icon,{"aria-hidden":!0,className:T(`size-3.5`,g.pulse&&`animate-pulse`)}),className:l[g.tone],children:g.text}),(u.hostName||u.branch)&&(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted`,children:[u.hostName&&(0,Z.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1`,children:[(0,Z.jsx)(lt,{"aria-hidden":!0,className:`size-3.5 shrink-0`}),(0,Z.jsxs)(`span`,{className:`truncate`,children:[u.hostName,u.hostOffline?` (offline)`:``]})]}),u.branch&&(0,Z.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1`,children:[(0,Z.jsx)(et,{"aria-hidden":!0,className:`size-3.5 shrink-0`}),(0,Z.jsx)(`span`,{className:`truncate`,children:u.branch})]})]}),_&&(0,Z.jsx)(fa,{icon:(0,Z.jsx)(nt,{"aria-hidden":!0,className:`size-3.5`}),className:`text-muted`,children:_}),u.pendingInteraction&&e.sessionId?(0,Z.jsxs)(r,{to:V.interaction(e.sessionId,u.pendingInteraction.id),className:`tap inline-flex min-w-0 items-center gap-1 rounded text-xs font-medium text-warning hover:underline`,children:[(0,Z.jsx)(y,{"aria-hidden":!0,className:`size-3.5 shrink-0`}),(0,Z.jsxs)(`span`,{className:`truncate`,children:[`Needs input: `,u.pendingInteraction.title]})]}):v?(0,Z.jsxs)(fa,{icon:(0,Z.jsx)(de,{"aria-hidden":!0,className:`size-3.5`}),className:l[h[v.reason].tone],children:[h[v.reason].label,u.attention.length>1?` (+${u.attention.length-1})`:``]}):null,(0,Z.jsxs)(`div`,{className:`text-xs text-subtle`,children:[`Updated `,(0,Z.jsx)(`time`,{dateTime:e.lastActivityAt,children:ne(e.lastActivityAt)})]})]})}function fa({icon:e,children:t,className:n}){return(0,Z.jsxs)(`div`,{className:T(`flex min-w-0 items-start gap-1 text-xs`,n),children:[(0,Z.jsx)(`span`,{className:`mt-0.5 shrink-0`,children:e}),(0,Z.jsx)(`span`,{className:`min-w-0 break-words line-clamp-2`,children:t})]})}function pa({state:e,className:t}){let n=m[e].icon;return(0,Z.jsx)(n,{"aria-hidden":!0,className:T(`size-4`,t)})}function ma(e,t){return e===`ready`&&t===`in_progress`?`Run now (In progress)`:e===`review`&&t===`in_progress`?`Start new attempt (In progress)`:e===`backlog`&&t===`ready`?`Make ready`:(e===`done`||e===`canceled`)&&t!==`canceled`?`Reopen to ${B[t]}`:t===`canceled`?`Cancel task`:t===`done`?`Accept (Done)`:`Move to ${B[t]}`}function ha(){let e=pt(e=>e.filters.board),t=pt(e=>e.setFilter),n=pt(e=>e.selectedProjectId),r=pt(e=>e.set),i=(0,U.useMemo)(()=>Qe(e),[e]),a=N(e=>e.tasks),o=N(e=>e.runs),s=N(e=>e.attention),c=N(e=>e.projects),l=Je(),u=n&&c[n]?n:null,d=(0,U.useMemo)(()=>{let e=new Set(ke(s).keys());return Re(a,i,{projectId:u,runs:o,attentionTaskIds:e})},[a,i,u,o,s]),f=(0,U.useMemo)(()=>{let e=new Map;for(let t of l.data?.queued??[])e.set(t.taskId,t.eligibility);return e},[l.data]),p=(0,U.useMemo)(()=>l.data?l.data.queued.filter(e=>!u||a[e.taskId]?.projectId===u).length:Object.values(a).filter(e=>e.state===`ready`&&!e.hiddenFromBoard&&(!u||e.projectId===u)).length,[l.data,a,u]),m=Se(i),h=(0,U.useMemo)(()=>Object.values(a).filter(e=>!e.hiddenFromBoard&&(!u||e.projectId===u)).length,[a,u]),g=m.reduce((e,t)=>e+d[t].length,0);return{filters:i,setFilters:e=>t(`board`,e),projectId:u,setProjectId:e=>r(`selectedProjectId`,e),columns:d,states:m,waits:f,queueCount:p,now:l,showProject:!u&&Object.keys(c).length>1,totalTasks:h,visibleCount:g}}var $={mainScrollTop:0,boardScrollLeft:0,columnScroll:{},focusTaskId:null},ga=`col:`,_a=`card:`,va=`task:`,ya=(e,{currentCoordinates:t,context:n})=>{if(e.code===`ArrowDown`)return{...t,y:t.y+72};if(e.code===`ArrowUp`)return{...t,y:t.y-72};if(e.code!==`ArrowRight`&&e.code!==`ArrowLeft`)return;e.preventDefault();let r=n.droppableContainers.toArray().filter(e=>String(e.id).startsWith(ga)).map(e=>({id:e.id,rect:n.droppableRects.get(e.id)})).filter(e=>!!e.rect).sort((e,t)=>e.rect.left-t.rect.left);if(r.length===0)return;let i=n.collisionRect?.width??0,a=t.x+i/2,o=r.findIndex(e=>a>=e.rect.left&&a<=e.rect.left+e.rect.width);o<0&&(o=0);let s=r[Math.max(0,Math.min(r.length-1,o+(e.code===`ArrowRight`?1:-1)))];return{x:s.rect.left+(s.rect.width-i)/2,y:t.y}},ba=e=>{let t=Fn(e);if(t.length>0){let e=t.find(e=>String(e.id).startsWith(_a));return e?[e]:t}return jn(e)};function xa(e,t){if(e.startsWith(ga))return{state:e.slice(4),beforeId:null};if(e.startsWith(_a)){let n=t[e.slice(5)];return n?{state:n.state,beforeId:n.id}:null}return null}function Sa({taskId:e}){let t=ha(),r=N(e=>e.hydrated),i=N(e=>e.projects),a=N(e=>e.tasks),o=Hi(),s=n(),c=at(V.board),l=pt(e=>e.paneSizes.boardColumn),[u,d]=(0,U.useState)(null),[f,p]=(0,U.useState)(!1),m=Cn(Sn(Cr,{activationConstraint:{distance:6}}),Sn(vr,{coordinateGetter:ya,keyboardCodes:{start:[`Space`],cancel:[`Escape`],end:[`Space`,`Enter`]}})),h=(0,U.useCallback)(e=>{e&&(e.scrollLeft=$.boardScrollLeft)},[]);(0,U.useEffect)(()=>{if(e||!$.focusTaskId)return;let t=$.focusTaskId;$.focusTaskId=null,requestAnimationFrame(()=>document.querySelector(`[data-card-open="${CSS.escape(t)}"]`)?.focus({preventScroll:!1}))},[e]);let g=e=>{$.focusTaskId=e.id,s(V.task(e.id),{state:ot})},_=()=>{e&&($.focusTaskId=e),c()},v=e=>d(String(e.active.id).slice(5)),y=e=>{d(null);let n=String(e.active.id).slice(5),r=a[n];if(!r||!e.over)return;let i=xa(String(e.over.id),a);if(!i||i.beforeId===n)return;let s=t.columns[i.state],c=Ze(s,i.beforeId,n);i.state===r.state?t.filters.sort===`priority`&&o.reorder(r,c):o.move(r,i.state,{position:c})},b={onDragStart:({active:e})=>`Picked up ${wa(e.id,a)}.`,onDragOver:({active:e,over:t})=>t?`${wa(e.id,a)} is over ${Ta(String(t.id),a)}.`:void 0,onDragEnd:({active:e,over:t})=>t?`Dropped ${wa(e.id,a)} on ${Ta(String(t.id),a)}.`:`Dropped ${wa(e.id,a)}. It did not move.`,onDragCancel:({active:e})=>`Moving ${wa(e.id,a)} was canceled.`},x=u?a[u]:void 0,S=e?a[e]:void 0,C=r&&Object.keys(i).length===0,w=N(e=>e.runs),T=e=>{if(!x||e===x.state)return null;let t=x.currentRunId?w[x.currentRunId]:void 0;return xe(x,e,t).kind===`invalid`?`invalid`:`valid`};return(0,Z.jsxs)(`div`,{"data-testid":`board`,className:`absolute inset-0 flex min-w-0 flex-col`,children:[(0,Z.jsxs)(`header`,{className:`flex min-w-0 flex-wrap items-center gap-2 border-b border-border px-4 py-2.5`,children:[(0,Z.jsx)(`h1`,{className:`mr-2 text-lg font-semibold`,children:`Board`}),(0,Z.jsx)(Pe,{board:t}),(0,Z.jsx)(He,{board:t,className:`w-56 max-w-full`}),(0,Z.jsx)(Ge,{board:t}),(0,Z.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[C&&(0,Z.jsx)(`span`,{className:`text-xs text-muted`,children:`Add a project first`}),(0,Z.jsx)(D,{variant:`primary`,icon:(0,Z.jsx)(it,{className:`size-4`}),onClick:()=>p(!0),disabled:C,children:`New task`})]})]}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-5 gap-y-2 border-b border-border px-4 py-2`,children:[(0,Z.jsx)(Me,{}),(0,Z.jsxs)(`span`,{className:`text-sm text-muted`,role:`status`,children:[t.queueCount,` queued`]}),(0,Z.jsx)(Ye,{board:t}),(0,Z.jsx)(Ke,{board:t}),(0,Z.jsx)(qe,{board:t})]}),(0,Z.jsx)(We,{board:t}),r?C?(0,Z.jsx)(A,{icon:(0,Z.jsx)(ut,{className:`size-8`}),title:`No projects yet`,description:`Tasks belong to a project. Add a project from a host checkout to start planning work.`,action:{label:`Add a project`,to:V.settings(`projects`)}}):t.totalTasks===0?(0,Z.jsx)(A,{icon:(0,Z.jsx)(ut,{className:`size-8`}),title:`No tasks yet`,description:`Create a task in Backlog, or make it ready so the dispatcher starts it.`,action:{label:`New task`,onClick:()=>p(!0)}}):(0,Z.jsxs)(bi,{sensors:m,collisionDetection:ba,onDragStart:v,onDragEnd:y,onDragCancel:()=>d(null),accessibility:{announcements:b,screenReaderInstructions:{draggable:`To move a task, press Space to pick it up, use the arrow keys to move between columns, then press Space to drop or Escape to cancel. The task menu offers Move to… without dragging.`}},children:[t.visibleCount===0&&(0,Z.jsxs)(`p`,{role:`status`,className:`px-4 pt-3 text-sm text-muted`,children:[`No tasks match the filters.`,` `,(0,Z.jsx)(xt,{onClick:()=>t.setFilters({...Ie,sort:t.filters.sort}),children:`Clear filters`})]}),(0,Z.jsx)(`section`,{ref:h,"aria-label":`Board columns`,onScroll:e=>{$.boardScrollLeft=e.currentTarget.scrollLeft},className:`min-h-0 flex-1 overflow-x-auto overflow-y-hidden overscroll-x-contain`,children:(0,Z.jsx)(`div`,{className:`flex h-full w-max gap-3 p-4`,children:t.states.map(n=>(0,Z.jsx)(Ea,{state:n,board:t,width:l,onOpen:g,selectedId:e,drop:T(n),onNew:()=>p(!0)},n))})}),(0,Z.jsx)(Bi,{dropAnimation:null,children:x&&(0,Z.jsx)(`div`,{className:`rotate-1 shadow-pop`,style:{width:`clamp(272px, ${l-16}px, 344px)`},children:(0,Z.jsx)(da,{task:x,showProject:t.showProject,wait:t.waits.get(x.id),onOpen:()=>void 0})})})]}):(0,Z.jsx)(E,{label:`Loading tasks…`}),(0,Z.jsx)(vt,{open:!!e,onClose:_,width:520,title:S?.title??(r?`Task not found`:`Loading task…`),description:S?B[S.state]:void 0,footer:S?(0,Z.jsx)(Ca,{task:S}):void 0,children:(0,Z.jsx)(`div`,{"data-testid":`task-drawer`,className:`min-w-0`,children:S?(0,Z.jsx)($i,{task:S,onDeleted:()=>s(V.board,{replace:!0})}):r?(0,Z.jsx)(A,{title:`Task not found`,description:`It may have been deleted, or this link is from another coordinator.`,action:{label:`Back to board`,to:V.board}}):(0,Z.jsx)(E,{label:`Loading task…`})})}),(0,Z.jsx)(gt,{open:f,onClose:()=>p(!1),title:`New task`,className:`max-w-xl`,children:(0,Z.jsx)(ua,{defaultProjectId:t.projectId,onCancel:()=>p(!1),onCreated:e=>{p(!1),$.focusTaskId=e.id,requestAnimationFrame(()=>document.querySelector(`[data-card-open="${CSS.escape(e.id)}"]`)?.focus())}})})]})}function Ca({task:e}){let{eligibility:t}=Yi(e),n=Hi(),r=N(t=>e.currentRunId?t.runs[e.currentRunId]:void 0),i=Fe.filter(t=>t!==e.state).map(t=>{let i=xe(e,t,r);return{id:`move-${t}`,label:ma(e.state,t),icon:(0,Z.jsx)(pa,{state:t}),disabled:i.kind===`invalid`,hint:$e(i)??void 0,onSelect:()=>void n.move(e,t)}});return(0,Z.jsxs)(`div`,{className:`flex w-full min-w-0 items-start gap-2`,children:[(0,Z.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Z.jsx)(Zi,{task:e,eligibility:t})}),(0,Z.jsx)(F,{label:`Move ${e.title}`,side:`top`,align:`end`,items:i,trigger:e=>(0,Z.jsx)(D,{...e,icon:(0,Z.jsx)(kt,{className:`size-4`}),children:`Move to…`})})]})}function wa(e,t){let n=t[String(e).replace(va,``)];return n?`task ${n.title}`:`task`}function Ta(e,t){if(e.startsWith(ga))return`the ${B[e.slice(4)]} column`;let n=t[e.slice(5)];return n?`${n.title} in ${B[n.state]}`:`a task`}function Ea({state:e,board:t,width:n,onOpen:r,selectedId:i,drop:a,onNew:o}){let{setNodeRef:s,isOver:c}=Oi({id:`${ga}${e}`}),[l,u]=(0,U.useState)(!1),d=t.columns[e],f=m[e].icon,p=e===`done`&&!t.filters.showCompleted&&!l,h=`col-${e}-title`,g=(0,U.useCallback)(t=>{t&&(t.scrollTop=$.columnScroll[e]??0)},[e]);return(0,Z.jsx)(`section`,{ref:s,"data-testid":`column-${e}`,"aria-labelledby":h,style:{width:`clamp(288px, ${n}px, 360px)`},"data-drop":a??void 0,className:T(`flex h-full shrink-0 flex-col rounded-lg border bg-surface-2`,a===`invalid`?T(`border-dashed opacity-50`,c?`border-danger`:`border-border`):c?`border-accent`:`border-border`),children:(0,Z.jsxs)(`div`,{ref:g,"data-column-scroll":e,onScroll:t=>{$.columnScroll[e]=t.currentTarget.scrollTop},className:`min-h-0 flex-1 overflow-y-auto overscroll-y-contain`,children:[(0,Z.jsxs)(`h2`,{id:h,className:`sticky top-0 z-10 flex items-center gap-2 rounded-t-lg border-b border-border bg-surface-2 px-3 py-2 text-sm font-semibold`,children:[(0,Z.jsx)(f,{"aria-hidden":!0,className:`size-4 text-muted`}),(0,Z.jsx)(`span`,{className:`flex-1`,children:B[e]}),a===`invalid`&&(0,Z.jsx)(`span`,{className:`text-xs font-normal text-muted`,children:`Can't move here`}),(0,Z.jsxs)(`span`,{className:`rounded-full bg-surface px-2 text-xs font-medium text-muted tabular-nums`,children:[d.length,(0,Z.jsx)(`span`,{className:`sr-only`,children:` tasks`})]})]}),(0,Z.jsx)(`ul`,{className:`flex flex-col gap-2 p-2`,children:p?(0,Z.jsxs)(`li`,{className:`flex flex-col items-start gap-1 px-1 py-2 text-sm text-muted`,children:[d.length,` completed `,d.length===1?`task is`:`tasks are`,` hidden.`,d.length>0&&(0,Z.jsx)(xt,{onClick:()=>u(!0),children:`Show completed`})]}):d.length===0?(0,Z.jsx)(`li`,{className:`px-1 py-2 text-sm text-muted`,children:e===`backlog`?(0,Z.jsx)(xt,{icon:(0,Z.jsx)(it,{"aria-hidden":!0,className:`size-4`}),onClick:o,children:`New task`}):`No tasks`}):d.map(e=>(0,Z.jsx)(`li`,{children:(0,Z.jsx)(Da,{task:e,board:t,onOpen:r,selected:e.id===i})},e.id))})]})})}function Da({task:e,board:t,onOpen:n,selected:r}){let i=wi({id:`${va}${e.id}`}),a=Oi({id:`${_a}${e.id}`,disabled:i.isDragging}),{onPointerDown:o,onKeyDown:s}=i.listeners??{},c={setNodeRef:e=>{i.setNodeRef(e),a.setNodeRef(e)},setHandleRef:i.setActivatorNodeRef,cardProps:{onPointerDown:o},handleProps:{...i.attributes,onKeyDown:s},dragging:i.isDragging,style:a.isOver?{boxShadow:`0 -3px 0 0 var(--sy-accent)`}:void 0};return(0,Z.jsx)(da,{task:e,showProject:t.showProject,wait:t.waits.get(e.id),onOpen:n,drag:c,selected:r})}var Oa=()=>document.getElementById(`main`);function ka(){let e=ha(),t=N(e=>e.hydrated),r=N(e=>e.projects),i=n(),[a,o]=mt(`board-mobile`,{tab:`ready`,layout:`column`}),[s,c]=(0,U.useState)(!1),l=(0,U.useId)(),[u,f]=(0,U.useState)(()=>e.filters.search!==``),p=u||e.filters.search!==``,h=e.states.includes(a.tab)?a.tab:`ready`;(0,U.useLayoutEffect)(()=>{if(!t)return;let e=Oa(),n=$.mainScrollTop;e&&(e.scrollTop=n);let r=requestAnimationFrame(()=>{r=requestAnimationFrame(()=>{e&&e.scrollTop<n&&(e.scrollTop=n)})}),i=$.focusTaskId;return $.focusTaskId=null,i&&requestAnimationFrame(()=>document.querySelector(`[data-card-open="${CSS.escape(i)}"]`)?.focus({preventScroll:!0})),()=>cancelAnimationFrame(r)},[t]);let g=e=>{$.mainScrollTop=Oa()?.scrollTop??0,$.focusTaskId=e.id,i(V.task(e.id),{state:ot})},_=t&&Object.keys(r).length===0,v=(t,n)=>t.length===0?(0,Z.jsxs)(`p`,{className:`px-1 py-3 text-sm text-muted`,children:[`No `,B[n],` tasks.`]}):(0,Z.jsx)(`ul`,{className:`flex flex-col gap-2`,children:t.map(t=>(0,Z.jsx)(`li`,{children:(0,Z.jsx)(da,{task:t,full:!0,showProject:e.showProject,wait:e.waits.get(t.id),onOpen:g})},t.id))});return(0,Z.jsxs)(`div`,{"data-testid":`board`,className:`flex min-w-0 flex-col`,children:[(0,Z.jsxs)(`header`,{"data-testid":`board-header`,className:`sticky top-0 z-20 flex min-w-0 flex-col border-b border-border bg-bg safe-pt`,children:[(0,Z.jsxs)(`div`,{className:`flex h-14 min-w-0 items-center gap-1 px-3`,children:[(0,Z.jsx)(`h1`,{className:`min-w-0 flex-1 truncate text-lg font-semibold`,children:`Board`}),(0,Z.jsx)(_t,{label:p?`Hide search`:`Show search`,"aria-expanded":p,"aria-controls":l,icon:(0,Z.jsx)(st,{className:`size-5`}),onClick:()=>{p?(e.setFilters({...e.filters,search:``}),f(!1)):f(!0)}}),(0,Z.jsx)(Ge,{board:e,mobile:!0,extraCount:+!!e.projectId,extra:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Pe,{board:e,labelVisible:!0}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium`,children:`Layout`}),(0,Z.jsx)(Tt,{label:`Board layout`,block:!0,value:a.layout,onChange:e=>o({...a,layout:e}),options:[{value:`column`,label:`Columns`,icon:(0,Z.jsx)(jt,{"aria-hidden":!0,className:`size-4`})},{value:`list`,label:`List`,icon:(0,Z.jsx)(Ft,{"aria-hidden":!0,className:`size-4`})}]})]})]})}),(0,Z.jsx)(D,{variant:`primary`,size:`sm`,icon:(0,Z.jsx)(it,{className:`size-4`}),"aria-label":`New task`,onClick:()=>c(!0),disabled:_,children:`New`})]}),_&&(0,Z.jsx)(`p`,{className:`px-3 pb-2 text-xs text-muted`,children:`Add a project to create tasks.`}),p&&(0,Z.jsx)(`div`,{id:l,className:`px-3 pb-2`,children:(0,Z.jsx)(He,{board:e,autoFocus:u&&!e.filters.search})}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2 px-3 pb-2`,children:[(0,Z.jsx)(ze,{queueCount:e.queueCount}),(0,Z.jsx)(qe,{board:e})]}),a.layout===`column`&&(0,Z.jsx)(`div`,{"data-testid":`status-tabs`,className:`px-1`,children:(0,Z.jsx)(St,{label:`Task status`,idPrefix:`board-tab`,scrollable:!0,className:`border-b-0`,value:h,onChange:e=>o({...a,tab:e}),tabs:e.states.map(t=>{let n=m[t].icon;return{id:t,label:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(n,{"aria-hidden":!0,className:`size-4`}),B[t]]}),badge:(0,Z.jsx)(d,{label:`${e.columns[t].length} tasks`,children:e.columns[t].length})}})})})]}),(0,Z.jsx)(We,{board:e}),(0,Z.jsx)(`div`,{className:`flex min-w-0 flex-col gap-3 px-3 py-3`,children:t?_?(0,Z.jsx)(A,{icon:(0,Z.jsx)(ut,{className:`size-8`}),title:`No projects yet`,description:`Tasks belong to a project. Add a project from a host checkout first.`,action:{label:`Add a project`,to:V.settings(`projects`)}}):e.totalTasks===0?(0,Z.jsx)(A,{icon:(0,Z.jsx)(ut,{className:`size-8`}),title:`No tasks yet`,description:`Create a task in Backlog, or make it ready so the dispatcher starts it.`,action:{label:`New task`,onClick:()=>c(!0)}}):e.visibleCount===0?(0,Z.jsx)(A,{title:`No tasks match the filters`,action:{label:`Clear filters`,onClick:()=>e.setFilters({...Ie,sort:e.filters.sort})}}):a.layout===`column`?(0,Z.jsx)(wt,{idPrefix:`board-tab`,id:h,children:h===`done`&&!e.filters.showCompleted?(0,Z.jsxs)(`p`,{className:`text-sm text-muted`,children:[`Completed tasks are hidden.`,` `,(0,Z.jsx)(xt,{onClick:()=>e.setFilters({...e.filters,showCompleted:!0}),children:`Show completed`})]}):v(e.columns[h],h)}):e.states.filter(t=>t!==`done`||e.filters.showCompleted).map(t=>(0,Z.jsxs)(`section`,{"aria-labelledby":`grp-${t}`,"data-testid":`column-${t}`,className:`flex flex-col gap-2`,children:[(0,Z.jsxs)(`h2`,{id:`grp-${t}`,className:`flex items-center gap-2 pt-1 text-sm font-semibold`,children:[(0,Z.jsx)(pa,{state:t,className:`text-muted`}),B[t],(0,Z.jsxs)(`span`,{className:`text-muted`,children:[`(`,e.columns[t].length,`)`]})]}),v(e.columns[t],t)]},t)):(0,Z.jsx)(E,{label:`Loading tasks…`})}),(0,Z.jsx)(ht,{open:s,onClose:()=>c(!1),title:`New task`,children:(0,Z.jsx)(ua,{defaultProjectId:e.projectId,onCancel:()=>c(!1),onCreated:e=>{c(!1),o({...a,tab:e.state})}})})]})}function Aa({taskId:e}){ft();let t=v(e),n=N(e=>e.hydrated),[r,i]=(0,U.useState)(!1),{eligibility:a}=Yi(t),o=at(V.board);return(0,U.useLayoutEffect)(()=>{let e=Oa();e&&(e.scrollTop=0)},[]),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col`,"data-testid":`task-page`,children:[(0,Z.jsxs)(`header`,{className:`sticky top-0 z-20 flex min-w-0 items-center gap-1 border-b border-border bg-surface px-1 pb-1 safe-pt-1`,children:[(0,Z.jsx)(_t,{label:`Back to board`,icon:(0,Z.jsx)(le,{className:`size-5`}),onClick:o}),(0,Z.jsx)(`h1`,{className:`min-w-0 flex-1 truncate text-base font-semibold`,children:t?.title??`Task`}),t&&(0,Z.jsx)(D,{size:`sm`,icon:(0,Z.jsx)(kt,{className:`size-4`}),onClick:()=>i(!0),children:`Move task`})]}),t?(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col px-4 pt-3 pb-8`,children:[(0,Z.jsx)(`div`,{children:(0,Z.jsx)(Zi,{task:t,eligibility:a,block:!0})}),(0,Z.jsx)($i,{task:t,onDeleted:o}),(0,Z.jsx)(ja,{task:t,open:r,onClose:()=>i(!1)})]}):n?(0,Z.jsx)(A,{title:`Task not found`,description:`It may have been deleted.`,action:{label:`Back to board`,to:V.board}}):(0,Z.jsx)(E,{label:`Loading task…`})]})}function ja({task:e,open:t,onClose:n}){let r=Hi(),i=N(e=>e.runs),a=e.currentRunId?i[e.currentRunId]:void 0,o=new Set(Ne(e));return(0,Z.jsx)(ht,{open:t,onClose:n,title:`Move task`,description:`Currently ${B[e.state]}`,children:(0,Z.jsx)(`ul`,{"data-testid":`move-sheet`,className:`flex flex-col`,children:Fe.filter(t=>t!==e.state).map(t=>{let i=xe(e,t,a),s=$e(i);return(0,Z.jsx)(`li`,{children:(0,Z.jsxs)(`button`,{type:`button`,disabled:!o.has(t),onClick:()=>{n(),r.move(e,t)},className:`tap flex w-full items-start gap-3 rounded-md px-2 py-3 text-left hover:bg-surface-2 disabled:opacity-60`,children:[(0,Z.jsx)(pa,{state:t,className:`mt-0.5 text-muted`}),(0,Z.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`span`,{className:`block font-medium`,children:ma(e.state,t)}),s&&(0,Z.jsx)(`span`,{className:`block text-sm text-muted`,children:s})]})]})},t)})})})}function Ma(){let e=ye(),n=t(`/tasks/:taskId`)?.params.taskId;return(0,Z.jsx)(Wi,{children:e===`mobile`?n?(0,Z.jsx)(Aa,{taskId:n},n):(0,Z.jsx)(ka,{}):(0,Z.jsx)(Sa,{taskId:n})})}export{Ma as default};
10
+ //# sourceMappingURL=board-CeJxBVHC.js.map