@agent-plan/pi-adapter 0.2.19-next.2 → 0.2.19-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iCAAiC,CAAC;AA6uBtF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iCAAiC,CAAC;AA6uBtF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA67F9D"}
|
package/dist/index.js
CHANGED
|
@@ -416,7 +416,7 @@ async function buildHandoffMarkdown(st, reason, overrides) {
|
|
|
416
416
|
...recentActivityLines,
|
|
417
417
|
"",
|
|
418
418
|
"## Reminder",
|
|
419
|
-
"-
|
|
419
|
+
"- This handoff is KEPT until a task in this phase starts (then auto-archived to .planner/handoff-archive/) or the phase completes. No need to clear it manually.",
|
|
420
420
|
].join("\n");
|
|
421
421
|
}
|
|
422
422
|
async function writeProjectHandoff(st, reason, overrides) {
|
|
@@ -757,6 +757,10 @@ export default function planPiExtension(pi) {
|
|
|
757
757
|
const handoffs = await st.listHandoffs().catch(() => []);
|
|
758
758
|
if (handoffs.length > 0) {
|
|
759
759
|
ctx.ui.notify(`ℹ️ ${handoffs.length} phase handoff(s) pending — review with /planner handoff list.`, "info");
|
|
760
|
+
// Mark each handoff as read (recap presented). Do NOT clear — content is
|
|
761
|
+
// kept until a task in the phase starts (auto-archived) or phase completes.
|
|
762
|
+
for (const h of handoffs)
|
|
763
|
+
await st.markHandoffRead(h.phaseId).catch(() => { });
|
|
760
764
|
}
|
|
761
765
|
}
|
|
762
766
|
// If the user declined enablement, skip EVERYTHING (no web prompt, no migration, no summary).
|
|
@@ -1557,6 +1561,8 @@ export default function planPiExtension(pi) {
|
|
|
1557
1561
|
openQuestions: [], decisions: [], acceptedDecisions: [], completionCriteria: [], taskIds: [], tasks: [],
|
|
1558
1562
|
createdAt: nowISO(), updatedAt: nowISO(),
|
|
1559
1563
|
handoff: "", handoffUpdatedAt: "",
|
|
1564
|
+
handoffReadAt: "",
|
|
1565
|
+
handoffHistory: [],
|
|
1560
1566
|
};
|
|
1561
1567
|
await st.savePhase(phase);
|
|
1562
1568
|
await st.updateFeatures((doc) => {
|
|
@@ -2002,12 +2008,16 @@ export default function planPiExtension(pi) {
|
|
|
2002
2008
|
ctx.ui.notify(`Task "${task.title}" is already in-progress.`, "info");
|
|
2003
2009
|
return;
|
|
2004
2010
|
}
|
|
2005
|
-
//
|
|
2006
|
-
//
|
|
2007
|
-
//
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
ctx.ui.notify("
|
|
2011
|
+
// Auto-archive the handoff on THIS task's phase (reason: task-started) —
|
|
2012
|
+
// the agent is now actively working, so the captured context is consumed.
|
|
2013
|
+
// Other phases' handoffs are left untouched (informational, non-blocking).
|
|
2014
|
+
if ((phase.handoff ?? "") !== "") {
|
|
2015
|
+
await st.clearPhaseHandoff(phase.id, "task-started").catch(() => { });
|
|
2016
|
+
ctx.ui.notify("📦 Archived handoff for this phase (task started) — recover via /planner handoff list + .planner/handoff-archive/.", "info");
|
|
2017
|
+
}
|
|
2018
|
+
const _otherHandoffs = (await st.listHandoffs()).filter((h) => h.phaseId !== phase.id);
|
|
2019
|
+
if (_otherHandoffs.length > 0) {
|
|
2020
|
+
ctx.ui.notify(`ℹ️ ${_otherHandoffs.length} other phase handoff(s) pending — review with /planner handoff list if relevant.`, "info");
|
|
2011
2021
|
}
|
|
2012
2022
|
const now = nowISO();
|
|
2013
2023
|
// Record status change in the incremental statusLog.
|
|
@@ -2164,7 +2174,7 @@ export default function planPiExtension(pi) {
|
|
|
2164
2174
|
ctx.ui.notify(r.error, "warning");
|
|
2165
2175
|
return;
|
|
2166
2176
|
}
|
|
2167
|
-
await st.clearPhaseHandoff(r.phase.id);
|
|
2177
|
+
await st.clearPhaseHandoff(r.phase.id, "manual");
|
|
2168
2178
|
ctx.ui.notify(`Cleared handoff on ${r.compositeRef}`, "info");
|
|
2169
2179
|
return;
|
|
2170
2180
|
}
|
|
@@ -2691,7 +2701,7 @@ export default function planPiExtension(pi) {
|
|
|
2691
2701
|
const r = await resolvePhaseForHandoff(st, undefined);
|
|
2692
2702
|
if (!r.ok)
|
|
2693
2703
|
return { content: [{ type: "text", text: `⚠️ plan_delete_handoff is deprecated — use handoff_clear. ${r.error}` }], details: { deprecated: true, error: r.error } };
|
|
2694
|
-
await st.clearPhaseHandoff(r.phase.id);
|
|
2704
|
+
await st.clearPhaseHandoff(r.phase.id, "manual");
|
|
2695
2705
|
return { content: [{ type: "text", text: `⚠️ plan_delete_handoff is deprecated — cleared handoff on ${r.compositeRef} (phase.handoff). Prefer handoff_clear.` }], details: { deprecated: true, phaseRef: r.compositeRef, phaseId: r.phase.id } };
|
|
2696
2706
|
},
|
|
2697
2707
|
});
|
|
@@ -2789,8 +2799,8 @@ export default function planPiExtension(pi) {
|
|
|
2789
2799
|
const r = await resolvePhaseForHandoff(st, params.phaseRef);
|
|
2790
2800
|
if (!r.ok)
|
|
2791
2801
|
return { content: [{ type: "text", text: `❌ ${r.error}` }], details: { error: r.error } };
|
|
2792
|
-
await st.clearPhaseHandoff(r.phase.id);
|
|
2793
|
-
return { content: [{ type: "text", text: `✅ Cleared handoff on ${r.compositeRef}
|
|
2802
|
+
await st.clearPhaseHandoff(r.phase.id, "manual");
|
|
2803
|
+
return { content: [{ type: "text", text: `✅ Cleared handoff on ${r.compositeRef} (handoffUpdatedAt preserved as audit; archived to .planner/handoff-archive/).` }], details: { phaseRef: r.compositeRef, phaseId: r.phase.id } };
|
|
2794
2804
|
},
|
|
2795
2805
|
});
|
|
2796
2806
|
pi.registerTool({
|
|
@@ -2906,7 +2916,7 @@ export default function planPiExtension(pi) {
|
|
|
2906
2916
|
return doc;
|
|
2907
2917
|
});
|
|
2908
2918
|
await st.writeGenerated();
|
|
2909
|
-
return { content: [{ type: "text", text:
|
|
2919
|
+
return { content: [{ type: "text", text: `✅ Feature created: ${formatFeatureRef(feature.number)} — ${feature.name}${feature.shortId ? ` · ${feature.shortId}` : ""}` }], details: feature };
|
|
2910
2920
|
},
|
|
2911
2921
|
});
|
|
2912
2922
|
pi.registerTool({
|
|
@@ -2981,7 +2991,7 @@ export default function planPiExtension(pi) {
|
|
|
2981
2991
|
if (!feature)
|
|
2982
2992
|
return { content: [{ type: "text", text: `Feature not found: ${params.featureId}` }], details: {} };
|
|
2983
2993
|
await st.writeGenerated();
|
|
2984
|
-
return { content: [{ type: "text", text:
|
|
2994
|
+
return { content: [{ type: "text", text: `✅ Feature updated: ${formatFeatureRef(feature.number)} — ${feature.name}${feature.shortId ? ` · ${feature.shortId}` : ""}` }], details: feature };
|
|
2985
2995
|
},
|
|
2986
2996
|
});
|
|
2987
2997
|
pi.registerTool({
|
|
@@ -3097,6 +3107,8 @@ export default function planPiExtension(pi) {
|
|
|
3097
3107
|
openQuestions: [], decisions: [], acceptedDecisions: [], completionCriteria: [], taskIds: [], tasks: [],
|
|
3098
3108
|
createdAt: now, updatedAt: now,
|
|
3099
3109
|
handoff: "", handoffUpdatedAt: "",
|
|
3110
|
+
handoffReadAt: "",
|
|
3111
|
+
handoffHistory: [],
|
|
3100
3112
|
};
|
|
3101
3113
|
await st.savePhase(phase);
|
|
3102
3114
|
// Atomic: serialize concurrent phase_create linking to the same feature.
|
|
@@ -3112,7 +3124,8 @@ export default function planPiExtension(pi) {
|
|
|
3112
3124
|
});
|
|
3113
3125
|
if (!phase)
|
|
3114
3126
|
return { content: [{ type: "text", text: "Phase creation failed." }], details: {} };
|
|
3115
|
-
|
|
3127
|
+
const phaseCreateFeatures = (await st.loadFeatures()).features;
|
|
3128
|
+
return { content: [{ type: "text", text: `✅ Phase created: ${formatPhaseRef(phase.number, featureNumberOfPhase(phase, phaseCreateFeatures))} — ${phase.title}${phase.shortId ? ` · ${phase.shortId}` : ""}` }], details: phase };
|
|
3116
3129
|
},
|
|
3117
3130
|
});
|
|
3118
3131
|
pi.registerTool({
|
|
@@ -3201,7 +3214,8 @@ export default function planPiExtension(pi) {
|
|
|
3201
3214
|
phase.updatedAt = nowISO();
|
|
3202
3215
|
await st.savePhase(phase);
|
|
3203
3216
|
await st.writeGenerated();
|
|
3204
|
-
|
|
3217
|
+
const phaseUpdateFeatures = (await st.loadFeatures()).features;
|
|
3218
|
+
return { content: [{ type: "text", text: `✅ Phase updated: ${formatPhaseRef(phase.number, featureNumberOfPhase(phase, phaseUpdateFeatures))} — ${phase.title}${phase.shortId ? ` · ${phase.shortId}` : ""}` }], details: phase };
|
|
3205
3219
|
},
|
|
3206
3220
|
});
|
|
3207
3221
|
pi.registerTool({
|
|
@@ -3769,12 +3783,12 @@ export default function planPiExtension(pi) {
|
|
|
3769
3783
|
"═══════════════════════════════════════════════════════════════",
|
|
3770
3784
|
"MANDATORY OPERATIONAL PROTOCOL (violation = execution failure):",
|
|
3771
3785
|
"═══════════════════════════════════════════════════════════════",
|
|
3772
|
-
"1. HANDOFF HYGIENE: If one or more phases have a pending handoff (entity-scoped, phase.handoff), present the list, read the relevant one with handoff show <ref
|
|
3786
|
+
"1. HANDOFF HYGIENE: If one or more phases have a pending handoff (entity-scoped, phase.handoff), present the list, read the relevant one with handoff show <ref> for context. Handoffs are KEPT until a task in the phase starts (auto-archived to .planner/handoff-archive/) or the phase completes — no manual clear needed. They are non-blocking context artifacts, not locks — they never block task_start.",
|
|
3773
3787
|
"2. TASK LIFECYCLE: BEFORE coding ANY file: call task_start. AFTER finishing work on ANY task: call task_complete. No exceptions. No 'I'll do it later'. NOTE: Planner operations (plan_write_handoff / /planner handoff, task_start, task_complete, task_update, status reads) are NOT code edits. They are ALWAYS allowed regardless of task state — you may write/refresh the handoff even when no task is in-progress (e.g., all tasks done, or capturing state mid-flight). Never refuse to write a handoff because 'no task is open'; that is incorrect.",
|
|
3774
3788
|
"3. IMMEDIATE SYNC: Update task status AT THE EXACT MOMENT of transition. Start = task_start NOW. Done = task_complete NOW. Blocked = task_update with motivation NOW. Never batch status updates.",
|
|
3775
3789
|
"4. BLOCKED MOTIVATION: Transitions to blocked/canceled/rejected/deferred/waiting/planned(from non-planned) MUST include a detailed 'motivation' parameter. Write it as if the next person has zero context.",
|
|
3776
3790
|
"5. NO SHORTCUTS: If a tool blocks you, follow the protocol. Bypasses are for emergencies only, not for convenience.",
|
|
3777
|
-
"6. ENTITY REFERENCES: When you mention a feature/phase/task in chat,
|
|
3791
|
+
"6. ENTITY REFERENCES: When you mention a feature/phase/task in chat, PREFER its 5-char shortId (globally unique, e.g. UUXD1). The composite T00x is per-phase and AMBIGUOUS unless fully qualified as T00x(P00x/F00x) — do NOT use bare 'T00x'. NEVER a raw UUID like bd6ed366. Tool responses already show shortId + compositeRef; reuse them.",
|
|
3778
3792
|
"═══════════════════════════════════════════════════════════════",
|
|
3779
3793
|
"",
|
|
3780
3794
|
// ── Project details ──
|
|
@@ -3849,7 +3863,7 @@ export default function planPiExtension(pi) {
|
|
|
3849
3863
|
...handoffs.map((h, i) => ` [${i + 1}] ${h.compositeRef} — ${h.updatedAt} — "${h.firstLine}"`),
|
|
3850
3864
|
handoffs.length > 0 ? "Read the relevant one with handoff show <ref> (or /planner handoff show <ref>) as previous-session context, but validate it against the current planner state, ordering, and dependencies before treating any target as the next task." : "",
|
|
3851
3865
|
handoffs.length > 0 ? "If planner state shows no task/phase in-progress, do NOT present a handoff target as the current focus; present it only as a candidate to validate." : "",
|
|
3852
|
-
handoffs.length > 0 ? "
|
|
3866
|
+
handoffs.length > 0 ? "Handoffs are KEPT until a task in the phase starts (auto-archived to .planner/handoff-archive/) or the phase completes — read with handoff show <ref> for context; no manual clear needed." : "",
|
|
3853
3867
|
"Plan tools available: project_set_language_preferences, plan_init, project_update, requirement_list, requirement_create, requirement_update, requirement_delete, plan_get, feature_list, feature_get, feature_create, feature_update, feature_delete, phase_list, phase_get, phase_create, phase_update, phase_delete, task_list, task_get, task_create, task_update, task_delete, task_start, task_complete, plan_render, plan_get_handoff, plan_write_handoff, plan_delete_handoff, handoff_list, handoff_show, handoff_write, handoff_clear, plan_authorize_bypass, plan_clear_bypass",
|
|
3854
3868
|
].filter(Boolean).join("\n");
|
|
3855
3869
|
contextBlockCache = contextBlock;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-plan/pi-adapter",
|
|
3
|
-
"version": "0.2.19-next.
|
|
3
|
+
"version": "0.2.19-next.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Pi agent extension for Agent Plan — structured project planning in .planner/",
|
|
6
6
|
"keywords": [
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"typebox": "^1.1.24",
|
|
30
30
|
"zod": "^3.24.0",
|
|
31
|
-
"@agent-plan/core": "0.2.19-next.
|
|
32
|
-
"@agent-plan/server": "0.2.19-next.
|
|
31
|
+
"@agent-plan/core": "0.2.19-next.3",
|
|
32
|
+
"@agent-plan/server": "0.2.19-next.3"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@earendil-works/pi-coding-agent": "^0.74.0",
|
|
@@ -194,7 +194,7 @@ Please change the parent <Route path="${N}"> to <Route path="${N==="/"?"*":`${N}
|
|
|
194
194
|
To pick up a draggable item, press the space bar.
|
|
195
195
|
While dragging, use the arrow keys to move the item.
|
|
196
196
|
Press space again to drop the item in its new position, or press escape to cancel.
|
|
197
|
-
`},IR={onDragStart(t){let{active:a}=t;return"Picked up draggable item "+a.id+"."},onDragOver(t){let{active:a,over:r}=t;return r?"Draggable item "+a.id+" was moved over droppable area "+r.id+".":"Draggable item "+a.id+" is no longer over a droppable area."},onDragEnd(t){let{active:a,over:r}=t;return r?"Draggable item "+a.id+" was dropped over droppable area "+r.id:"Draggable item "+a.id+" was dropped."},onDragCancel(t){let{active:a}=t;return"Dragging was cancelled. Draggable item "+a.id+" was dropped."}};function QR(t){let{announcements:a=IR,container:r,hiddenTextDescribedById:i,screenReaderInstructions:u=XR}=t;const{announce:o,announcement:h}=VR(),m=_u("DndLiveRegion"),[p,g]=v.useState(!1);if(v.useEffect(()=>{g(!0)},[]),FR(v.useMemo(()=>({onDragStart(b){let{active:w}=b;o(a.onDragStart({active:w}))},onDragMove(b){let{active:w,over:S}=b;a.onDragMove&&o(a.onDragMove({active:w,over:S}))},onDragOver(b){let{active:w,over:S}=b;o(a.onDragOver({active:w,over:S}))},onDragEnd(b){let{active:w,over:S}=b;o(a.onDragEnd({active:w,over:S}))},onDragCancel(b){let{active:w,over:S}=b;o(a.onDragCancel({active:w,over:S}))}}),[o,a])),!p)return null;const x=un.createElement(un.Fragment,null,un.createElement(qR,{id:i,value:u.draggable}),un.createElement(YR,{id:m,announcement:h}));return r?Zl.createPortal(x,r):x}var Ln;(function(t){t.DragStart="dragStart",t.DragMove="dragMove",t.DragEnd="dragEnd",t.DragCancel="dragCancel",t.DragOver="dragOver",t.RegisterDroppable="registerDroppable",t.SetDroppableDisabled="setDroppableDisabled",t.UnregisterDroppable="unregisterDroppable"})(Ln||(Ln={}));function Rc(){}function PR(t,a){return v.useMemo(()=>({sensor:t,options:a??{}}),[t,a])}function KR(){for(var t=arguments.length,a=new Array(t),r=0;r<t;r++)a[r]=arguments[r];return v.useMemo(()=>[...a].filter(i=>i!=null),[...a])}const ll=Object.freeze({x:0,y:0});function ZR(t,a){return Math.sqrt(Math.pow(t.x-a.x,2)+Math.pow(t.y-a.y,2))}function JR(t,a){const r=wc(t);if(!r)return"0 0";const i={x:(r.x-a.left)/a.width*100,y:(r.y-a.top)/a.height*100};return i.x+"% "+i.y+"%"}function WR(t,a){let{data:{value:r}}=t,{data:{value:i}}=a;return r-i}function eN(t,a){let{data:{value:r}}=t,{data:{value:i}}=a;return i-r}function tN(t,a){if(!t||t.length===0)return null;const[r]=t;return r[a]}function Ly(t,a,r){return a===void 0&&(a=t.left),r===void 0&&(r=t.top),{x:a+t.width*.5,y:r+t.height*.5}}const nN=t=>{let{collisionRect:a,droppableRects:r,droppableContainers:i}=t;const u=Ly(a,a.left,a.top),o=[];for(const h of i){const{id:m}=h,p=r.get(m);if(p){const g=ZR(Ly(p),u);o.push({id:m,data:{droppableContainer:h,value:g}})}}return o.sort(WR)};function aN(t,a){const r=Math.max(a.top,t.top),i=Math.max(a.left,t.left),u=Math.min(a.left+a.width,t.left+t.width),o=Math.min(a.top+a.height,t.top+t.height),h=u-i,m=o-r;if(i<u&&r<o){const p=a.width*a.height,g=t.width*t.height,x=h*m,b=x/(p+g-x);return Number(b.toFixed(4))}return 0}const lN=t=>{let{collisionRect:a,droppableRects:r,droppableContainers:i}=t;const u=[];for(const o of i){const{id:h}=o,m=r.get(h);if(m){const p=aN(m,a);p>0&&u.push({id:h,data:{droppableContainer:o,value:p}})}}return u.sort(eN)};function rN(t,a,r){return{...t,scaleX:a&&r?a.width/r.width:1,scaleY:a&&r?a.height/r.height:1}}function vb(t,a){return t&&a?{x:t.left-a.left,y:t.top-a.top}:ll}function sN(t){return function(r){for(var i=arguments.length,u=new Array(i>1?i-1:0),o=1;o<i;o++)u[o-1]=arguments[o];return u.reduce((h,m)=>({...h,top:h.top+t*m.y,bottom:h.bottom+t*m.y,left:h.left+t*m.x,right:h.right+t*m.x}),{...r})}}const iN=sN(1);function yb(t){if(t.startsWith("matrix3d(")){const a=t.slice(9,-1).split(/, /);return{x:+a[12],y:+a[13],scaleX:+a[0],scaleY:+a[5]}}else if(t.startsWith("matrix(")){const a=t.slice(7,-1).split(/, /);return{x:+a[4],y:+a[5],scaleX:+a[0],scaleY:+a[3]}}return null}function uN(t,a,r){const i=yb(a);if(!i)return t;const{scaleX:u,scaleY:o,x:h,y:m}=i,p=t.left-h-(1-u)*parseFloat(r),g=t.top-m-(1-o)*parseFloat(r.slice(r.indexOf(" ")+1)),x=u?t.width/u:t.width,b=o?t.height/o:t.height;return{width:x,height:b,top:g,right:p+x,bottom:g+b,left:p}}const oN={ignoreTransform:!1};function ui(t,a){a===void 0&&(a=oN);let r=t.getBoundingClientRect();if(a.ignoreTransform){const{transform:g,transformOrigin:x}=oa(t).getComputedStyle(t);g&&(r=uN(r,g,x))}const{top:i,left:u,width:o,height:h,bottom:m,right:p}=r;return{top:i,left:u,width:o,height:h,bottom:m,right:p}}function zy(t){return ui(t,{ignoreTransform:!0})}function cN(t){const a=t.innerWidth,r=t.innerHeight;return{top:0,left:0,right:a,bottom:r,width:a,height:r}}function dN(t,a){return a===void 0&&(a=oa(t).getComputedStyle(t)),a.position==="fixed"}function fN(t,a){a===void 0&&(a=oa(t).getComputedStyle(t));const r=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(u=>{const o=a[u];return typeof o=="string"?r.test(o):!1})}function lm(t,a){const r=[];function i(u){if(a!=null&&r.length>=a||!u)return r;if(am(u)&&u.scrollingElement!=null&&!r.includes(u.scrollingElement))return r.push(u.scrollingElement),r;if(!Mu(u)||mb(u)||r.includes(u))return r;const o=oa(t).getComputedStyle(u);return u!==t&&fN(u,o)&&r.push(u),dN(u,o)?r:i(u.parentNode)}return t?i(t):r}function xb(t){const[a]=lm(t,1);return a??null}function sh(t){return!Bc||!t?null:si(t)?t:nm(t)?am(t)||t===ii(t).scrollingElement?window:Mu(t)?t:null:null}function bb(t){return si(t)?t.scrollX:t.scrollLeft}function Sb(t){return si(t)?t.scrollY:t.scrollTop}function Ch(t){return{x:bb(t),y:Sb(t)}}var Hn;(function(t){t[t.Forward=1]="Forward",t[t.Backward=-1]="Backward"})(Hn||(Hn={}));function Eb(t){return!Bc||!t?!1:t===document.scrollingElement}function wb(t){const a={x:0,y:0},r=Eb(t)?{height:window.innerHeight,width:window.innerWidth}:{height:t.clientHeight,width:t.clientWidth},i={x:t.scrollWidth-r.width,y:t.scrollHeight-r.height},u=t.scrollTop<=a.y,o=t.scrollLeft<=a.x,h=t.scrollTop>=i.y,m=t.scrollLeft>=i.x;return{isTop:u,isLeft:o,isBottom:h,isRight:m,maxScroll:i,minScroll:a}}const hN={x:.2,y:.2};function mN(t,a,r,i,u){let{top:o,left:h,right:m,bottom:p}=r;i===void 0&&(i=10),u===void 0&&(u=hN);const{isTop:g,isBottom:x,isLeft:b,isRight:w}=wb(t),S={x:0,y:0},R={x:0,y:0},C={height:a.height*u.y,width:a.width*u.x};return!g&&o<=a.top+C.height?(S.y=Hn.Backward,R.y=i*Math.abs((a.top+C.height-o)/C.height)):!x&&p>=a.bottom-C.height&&(S.y=Hn.Forward,R.y=i*Math.abs((a.bottom-C.height-p)/C.height)),!w&&m>=a.right-C.width?(S.x=Hn.Forward,R.x=i*Math.abs((a.right-C.width-m)/C.width)):!b&&h<=a.left+C.width&&(S.x=Hn.Backward,R.x=i*Math.abs((a.left+C.width-h)/C.width)),{direction:S,speed:R}}function pN(t){if(t===document.scrollingElement){const{innerWidth:o,innerHeight:h}=window;return{top:0,left:0,right:o,bottom:h,width:o,height:h}}const{top:a,left:r,right:i,bottom:u}=t.getBoundingClientRect();return{top:a,left:r,right:i,bottom:u,width:t.clientWidth,height:t.clientHeight}}function Rb(t){return t.reduce((a,r)=>Js(a,Ch(r)),ll)}function gN(t){return t.reduce((a,r)=>a+bb(r),0)}function vN(t){return t.reduce((a,r)=>a+Sb(r),0)}function Nb(t,a){if(a===void 0&&(a=ui),!t)return;const{top:r,left:i,bottom:u,right:o}=a(t);xb(t)&&(u<=0||o<=0||r>=window.innerHeight||i>=window.innerWidth)&&t.scrollIntoView({block:"center",inline:"center"})}const yN=[["x",["left","right"],gN],["y",["top","bottom"],vN]];class rm{constructor(a,r){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;const i=lm(r),u=Rb(i);this.rect={...a},this.width=a.width,this.height=a.height;for(const[o,h,m]of yN)for(const p of h)Object.defineProperty(this,p,{get:()=>{const g=m(i),x=u[o]-g;return this.rect[p]+x},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class hu{constructor(a){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(r=>{var i;return(i=this.target)==null?void 0:i.removeEventListener(...r)})},this.target=a}add(a,r,i){var u;(u=this.target)==null||u.addEventListener(a,r,i),this.listeners.push([a,r,i])}}function xN(t){const{EventTarget:a}=oa(t);return t instanceof a?t:ii(t)}function ih(t,a){const r=Math.abs(t.x),i=Math.abs(t.y);return typeof a=="number"?Math.sqrt(r**2+i**2)>a:"x"in a&&"y"in a?r>a.x&&i>a.y:"x"in a?r>a.x:"y"in a?i>a.y:!1}var Xa;(function(t){t.Click="click",t.DragStart="dragstart",t.Keydown="keydown",t.ContextMenu="contextmenu",t.Resize="resize",t.SelectionChange="selectionchange",t.VisibilityChange="visibilitychange"})(Xa||(Xa={}));function Uy(t){t.preventDefault()}function bN(t){t.stopPropagation()}var Ct;(function(t){t.Space="Space",t.Down="ArrowDown",t.Right="ArrowRight",t.Left="ArrowLeft",t.Up="ArrowUp",t.Esc="Escape",t.Enter="Enter",t.Tab="Tab"})(Ct||(Ct={}));const Tb={start:[Ct.Space,Ct.Enter],cancel:[Ct.Esc],end:[Ct.Space,Ct.Enter,Ct.Tab]},SN=(t,a)=>{let{currentCoordinates:r}=a;switch(t.code){case Ct.Right:return{...r,x:r.x+25};case Ct.Left:return{...r,x:r.x-25};case Ct.Down:return{...r,y:r.y+25};case Ct.Up:return{...r,y:r.y-25}}};class jb{constructor(a){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=a;const{event:{target:r}}=a;this.props=a,this.listeners=new hu(ii(r)),this.windowListeners=new hu(oa(r)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Xa.Resize,this.handleCancel),this.windowListeners.add(Xa.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Xa.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:a,onStart:r}=this.props,i=a.node.current;i&&Nb(i),r(ll)}handleKeyDown(a){if(qc(a)){const{active:r,context:i,options:u}=this.props,{keyboardCodes:o=Tb,coordinateGetter:h=SN,scrollBehavior:m="smooth"}=u,{code:p}=a;if(o.end.includes(p)){this.handleEnd(a);return}if(o.cancel.includes(p)){this.handleCancel(a);return}const{collisionRect:g}=i.current,x=g?{x:g.left,y:g.top}:ll;this.referenceCoordinates||(this.referenceCoordinates=x);const b=h(a,{active:r,context:i.current,currentCoordinates:x});if(b){const w=Ec(b,x),S={x:0,y:0},{scrollableAncestors:R}=i.current;for(const C of R){const N=a.code,{isTop:z,isRight:I,isLeft:q,isBottom:Q,maxScroll:ee,minScroll:te}=wb(C),D=pN(C),j={x:Math.min(N===Ct.Right?D.right-D.width/2:D.right,Math.max(N===Ct.Right?D.left:D.left+D.width/2,b.x)),y:Math.min(N===Ct.Down?D.bottom-D.height/2:D.bottom,Math.max(N===Ct.Down?D.top:D.top+D.height/2,b.y))},re=N===Ct.Right&&!I||N===Ct.Left&&!q,ue=N===Ct.Down&&!Q||N===Ct.Up&&!z;if(re&&j.x!==b.x){const xe=C.scrollLeft+w.x,pe=N===Ct.Right&&xe<=ee.x||N===Ct.Left&&xe>=te.x;if(pe&&!w.y){C.scrollTo({left:xe,behavior:m});return}pe?S.x=C.scrollLeft-xe:S.x=N===Ct.Right?C.scrollLeft-ee.x:C.scrollLeft-te.x,S.x&&C.scrollBy({left:-S.x,behavior:m});break}else if(ue&&j.y!==b.y){const xe=C.scrollTop+w.y,pe=N===Ct.Down&&xe<=ee.y||N===Ct.Up&&xe>=te.y;if(pe&&!w.x){C.scrollTo({top:xe,behavior:m});return}pe?S.y=C.scrollTop-xe:S.y=N===Ct.Down?C.scrollTop-ee.y:C.scrollTop-te.y,S.y&&C.scrollBy({top:-S.y,behavior:m});break}}this.handleMove(a,Js(Ec(b,this.referenceCoordinates),S))}}}handleMove(a,r){const{onMove:i}=this.props;a.preventDefault(),i(r)}handleEnd(a){const{onEnd:r}=this.props;a.preventDefault(),this.detach(),r()}handleCancel(a){const{onCancel:r}=this.props;a.preventDefault(),this.detach(),r()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}jb.activators=[{eventName:"onKeyDown",handler:(t,a,r)=>{let{keyboardCodes:i=Tb,onActivation:u}=a,{active:o}=r;const{code:h}=t.nativeEvent;if(i.start.includes(h)){const m=o.activatorNode.current;return m&&t.target!==m?!1:(t.preventDefault(),u==null||u({event:t.nativeEvent}),!0)}return!1}}];function Hy(t){return!!(t&&"distance"in t)}function By(t){return!!(t&&"delay"in t)}class sm{constructor(a,r,i){var u;i===void 0&&(i=xN(a.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=a,this.events=r;const{event:o}=a,{target:h}=o;this.props=a,this.events=r,this.document=ii(h),this.documentListeners=new hu(this.document),this.listeners=new hu(i),this.windowListeners=new hu(oa(h)),this.initialCoordinates=(u=wc(o))!=null?u:ll,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(){const{events:a,props:{options:{activationConstraint:r,bypassActivationConstraint:i}}}=this;if(this.listeners.add(a.move.name,this.handleMove,{passive:!1}),this.listeners.add(a.end.name,this.handleEnd),a.cancel&&this.listeners.add(a.cancel.name,this.handleCancel),this.windowListeners.add(Xa.Resize,this.handleCancel),this.windowListeners.add(Xa.DragStart,Uy),this.windowListeners.add(Xa.VisibilityChange,this.handleCancel),this.windowListeners.add(Xa.ContextMenu,Uy),this.documentListeners.add(Xa.Keydown,this.handleKeydown),r){if(i!=null&&i({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(By(r)){this.timeoutId=setTimeout(this.handleStart,r.delay),this.handlePending(r);return}if(Hy(r)){this.handlePending(r);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(a,r){const{active:i,onPending:u}=this.props;u(i,a,this.initialCoordinates,r)}handleStart(){const{initialCoordinates:a}=this,{onStart:r}=this.props;a&&(this.activated=!0,this.documentListeners.add(Xa.Click,bN,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Xa.SelectionChange,this.removeTextSelection),r(a))}handleMove(a){var r;const{activated:i,initialCoordinates:u,props:o}=this,{onMove:h,options:{activationConstraint:m}}=o;if(!u)return;const p=(r=wc(a))!=null?r:ll,g=Ec(u,p);if(!i&&m){if(Hy(m)){if(m.tolerance!=null&&ih(g,m.tolerance))return this.handleCancel();if(ih(g,m.distance))return this.handleStart()}if(By(m)&&ih(g,m.tolerance))return this.handleCancel();this.handlePending(m,g);return}a.cancelable&&a.preventDefault(),h(p)}handleEnd(){const{onAbort:a,onEnd:r}=this.props;this.detach(),this.activated||a(this.props.active),r()}handleCancel(){const{onAbort:a,onCancel:r}=this.props;this.detach(),this.activated||a(this.props.active),r()}handleKeydown(a){a.code===Ct.Esc&&this.handleCancel()}removeTextSelection(){var a;(a=this.document.getSelection())==null||a.removeAllRanges()}}const EN={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class im extends sm{constructor(a){const{event:r}=a,i=ii(r.target);super(a,EN,i)}}im.activators=[{eventName:"onPointerDown",handler:(t,a)=>{let{nativeEvent:r}=t,{onActivation:i}=a;return!r.isPrimary||r.button!==0?!1:(i==null||i({event:r}),!0)}}];const wN={move:{name:"mousemove"},end:{name:"mouseup"}};var Ah;(function(t){t[t.RightClick=2]="RightClick"})(Ah||(Ah={}));class RN extends sm{constructor(a){super(a,wN,ii(a.event.target))}}RN.activators=[{eventName:"onMouseDown",handler:(t,a)=>{let{nativeEvent:r}=t,{onActivation:i}=a;return r.button===Ah.RightClick?!1:(i==null||i({event:r}),!0)}}];const uh={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class NN extends sm{constructor(a){super(a,uh)}static setup(){return window.addEventListener(uh.move.name,a,{capture:!1,passive:!1}),function(){window.removeEventListener(uh.move.name,a)};function a(){}}}NN.activators=[{eventName:"onTouchStart",handler:(t,a)=>{let{nativeEvent:r}=t,{onActivation:i}=a;const{touches:u}=r;return u.length>1?!1:(i==null||i({event:r}),!0)}}];var mu;(function(t){t[t.Pointer=0]="Pointer",t[t.DraggableRect=1]="DraggableRect"})(mu||(mu={}));var Nc;(function(t){t[t.TreeOrder=0]="TreeOrder",t[t.ReversedTreeOrder=1]="ReversedTreeOrder"})(Nc||(Nc={}));function TN(t){let{acceleration:a,activator:r=mu.Pointer,canScroll:i,draggingRect:u,enabled:o,interval:h=5,order:m=Nc.TreeOrder,pointerCoordinates:p,scrollableAncestors:g,scrollableAncestorRects:x,delta:b,threshold:w}=t;const S=DN({delta:b,disabled:!o}),[R,C]=zR(),N=v.useRef({x:0,y:0}),z=v.useRef({x:0,y:0}),I=v.useMemo(()=>{switch(r){case mu.Pointer:return p?{top:p.y,bottom:p.y,left:p.x,right:p.x}:null;case mu.DraggableRect:return u}},[r,u,p]),q=v.useRef(null),Q=v.useCallback(()=>{const te=q.current;if(!te)return;const D=N.current.x*z.current.x,j=N.current.y*z.current.y;te.scrollBy(D,j)},[]),ee=v.useMemo(()=>m===Nc.TreeOrder?[...g].reverse():g,[m,g]);v.useEffect(()=>{if(!o||!g.length||!I){C();return}for(const te of ee){if((i==null?void 0:i(te))===!1)continue;const D=g.indexOf(te),j=x[D];if(!j)continue;const{direction:re,speed:ue}=mN(te,j,I,a,w);for(const xe of["x","y"])S[xe][re[xe]]||(ue[xe]=0,re[xe]=0);if(ue.x>0||ue.y>0){C(),q.current=te,R(Q,h),N.current=ue,z.current=re;return}}N.current={x:0,y:0},z.current={x:0,y:0},C()},[a,Q,i,C,o,h,JSON.stringify(I),JSON.stringify(S),R,g,ee,x,JSON.stringify(w)])}const jN={x:{[Hn.Backward]:!1,[Hn.Forward]:!1},y:{[Hn.Backward]:!1,[Hn.Forward]:!1}};function DN(t){let{delta:a,disabled:r}=t;const i=Sc(a);return ku(u=>{if(r||!i||!u)return jN;const o={x:Math.sign(a.x-i.x),y:Math.sign(a.y-i.y)};return{x:{[Hn.Backward]:u.x[Hn.Backward]||o.x===-1,[Hn.Forward]:u.x[Hn.Forward]||o.x===1},y:{[Hn.Backward]:u.y[Hn.Backward]||o.y===-1,[Hn.Forward]:u.y[Hn.Forward]||o.y===1}}},[r,a,i])}function CN(t,a){const r=a!=null?t.get(a):void 0,i=r?r.node.current:null;return ku(u=>{var o;return a==null?null:(o=i??u)!=null?o:null},[i,a])}function AN(t,a){return v.useMemo(()=>t.reduce((r,i)=>{const{sensor:u}=i,o=u.activators.map(h=>({eventName:h.eventName,handler:a(h.handler,i)}));return[...r,...o]},[]),[t,a])}var Su;(function(t){t[t.Always=0]="Always",t[t.BeforeDragging=1]="BeforeDragging",t[t.WhileDragging=2]="WhileDragging"})(Su||(Su={}));var Oh;(function(t){t.Optimized="optimized"})(Oh||(Oh={}));const $y=new Map;function ON(t,a){let{dragging:r,dependencies:i,config:u}=a;const[o,h]=v.useState(null),{frequency:m,measure:p,strategy:g}=u,x=v.useRef(t),b=N(),w=bu(b),S=v.useCallback(function(z){z===void 0&&(z=[]),!w.current&&h(I=>I===null?z:I.concat(z.filter(q=>!I.includes(q))))},[w]),R=v.useRef(null),C=ku(z=>{if(b&&!r)return $y;if(!z||z===$y||x.current!==t||o!=null){const I=new Map;for(let q of t){if(!q)continue;if(o&&o.length>0&&!o.includes(q.id)&&q.rect.current){I.set(q.id,q.rect.current);continue}const Q=q.node.current,ee=Q?new rm(p(Q),Q):null;q.rect.current=ee,ee&&I.set(q.id,ee)}return I}return z},[t,o,r,b,p]);return v.useEffect(()=>{x.current=t},[t]),v.useEffect(()=>{b||S()},[r,b]),v.useEffect(()=>{o&&o.length>0&&h(null)},[JSON.stringify(o)]),v.useEffect(()=>{b||typeof m!="number"||R.current!==null||(R.current=setTimeout(()=>{S(),R.current=null},m))},[m,b,S,...i]),{droppableRects:C,measureDroppableContainers:S,measuringScheduled:o!=null};function N(){switch(g){case Su.Always:return!1;case Su.BeforeDragging:return r;default:return!r}}}function um(t,a){return ku(r=>t?r||(typeof a=="function"?a(t):t):null,[a,t])}function MN(t,a){return um(t,a)}function kN(t){let{callback:a,disabled:r}=t;const i=$c(a),u=v.useMemo(()=>{if(r||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:o}=window;return new o(i)},[i,r]);return v.useEffect(()=>()=>u==null?void 0:u.disconnect(),[u]),u}function Yc(t){let{callback:a,disabled:r}=t;const i=$c(a),u=v.useMemo(()=>{if(r||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:o}=window;return new o(i)},[r]);return v.useEffect(()=>()=>u==null?void 0:u.disconnect(),[u]),u}function _N(t){return new rm(ui(t),t)}function qy(t,a,r){a===void 0&&(a=_N);const[i,u]=v.useState(null);function o(){u(p=>{if(!t)return null;if(t.isConnected===!1){var g;return(g=p??r)!=null?g:null}const x=a(t);return JSON.stringify(p)===JSON.stringify(x)?p:x})}const h=kN({callback(p){if(t)for(const g of p){const{type:x,target:b}=g;if(x==="childList"&&b instanceof HTMLElement&&b.contains(t)){o();break}}}}),m=Yc({callback:o});return al(()=>{o(),t?(m==null||m.observe(t),h==null||h.observe(document.body,{childList:!0,subtree:!0})):(m==null||m.disconnect(),h==null||h.disconnect())},[t]),i}function LN(t){const a=um(t);return vb(t,a)}const Yy=[];function zN(t){const a=v.useRef(t),r=ku(i=>t?i&&i!==Yy&&t&&a.current&&t.parentNode===a.current.parentNode?i:lm(t):Yy,[t]);return v.useEffect(()=>{a.current=t},[t]),r}function UN(t){const[a,r]=v.useState(null),i=v.useRef(t),u=v.useCallback(o=>{const h=sh(o.target);h&&r(m=>m?(m.set(h,Ch(h)),new Map(m)):null)},[]);return v.useEffect(()=>{const o=i.current;if(t!==o){h(o);const m=t.map(p=>{const g=sh(p);return g?(g.addEventListener("scroll",u,{passive:!0}),[g,Ch(g)]):null}).filter(p=>p!=null);r(m.length?new Map(m):null),i.current=t}return()=>{h(t),h(o)};function h(m){m.forEach(p=>{const g=sh(p);g==null||g.removeEventListener("scroll",u)})}},[u,t]),v.useMemo(()=>t.length?a?Array.from(a.values()).reduce((o,h)=>Js(o,h),ll):Rb(t):ll,[t,a])}function Vy(t,a){a===void 0&&(a=[]);const r=v.useRef(null);return v.useEffect(()=>{r.current=null},a),v.useEffect(()=>{const i=t!==ll;i&&!r.current&&(r.current=t),!i&&r.current&&(r.current=null)},[t]),r.current?Ec(t,r.current):ll}function HN(t){v.useEffect(()=>{if(!Bc)return;const a=t.map(r=>{let{sensor:i}=r;return i.setup==null?void 0:i.setup()});return()=>{for(const r of a)r==null||r()}},t.map(a=>{let{sensor:r}=a;return r}))}function BN(t,a){return v.useMemo(()=>t.reduce((r,i)=>{let{eventName:u,handler:o}=i;return r[u]=h=>{o(h,a)},r},{}),[t,a])}function Db(t){return v.useMemo(()=>t?cN(t):null,[t])}const Fy=[];function $N(t,a){a===void 0&&(a=ui);const[r]=t,i=Db(r?oa(r):null),[u,o]=v.useState(Fy);function h(){o(()=>t.length?t.map(p=>Eb(p)?i:new rm(a(p),p)):Fy)}const m=Yc({callback:h});return al(()=>{m==null||m.disconnect(),h(),t.forEach(p=>m==null?void 0:m.observe(p))},[t]),u}function Cb(t){if(!t)return null;if(t.children.length>1)return t;const a=t.children[0];return Mu(a)?a:t}function qN(t){let{measure:a}=t;const[r,i]=v.useState(null),u=v.useCallback(g=>{for(const{target:x}of g)if(Mu(x)){i(b=>{const w=a(x);return b?{...b,width:w.width,height:w.height}:w});break}},[a]),o=Yc({callback:u}),h=v.useCallback(g=>{const x=Cb(g);o==null||o.disconnect(),x&&(o==null||o.observe(x)),i(x?a(x):null)},[a,o]),[m,p]=bc(h);return v.useMemo(()=>({nodeRef:m,rect:r,setRef:p}),[r,m,p])}const YN=[{sensor:im,options:{}},{sensor:jb,options:{}}],VN={current:{}},fc={draggable:{measure:zy},droppable:{measure:zy,strategy:Su.WhileDragging,frequency:Oh.Optimized},dragOverlay:{measure:ui}};class pu extends Map{get(a){var r;return a!=null&&(r=super.get(a))!=null?r:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(a=>{let{disabled:r}=a;return!r})}getNodeFor(a){var r,i;return(r=(i=this.get(a))==null?void 0:i.node.current)!=null?r:void 0}}const FN={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new pu,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:Rc},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:fc,measureDroppableContainers:Rc,windowRect:null,measuringScheduled:!1},Ab={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:Rc,draggableNodes:new Map,over:null,measureDroppableContainers:Rc},Lu=v.createContext(Ab),Ob=v.createContext(FN);function GN(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new pu}}}function XN(t,a){switch(a.type){case Ln.DragStart:return{...t,draggable:{...t.draggable,initialCoordinates:a.initialCoordinates,active:a.active}};case Ln.DragMove:return t.draggable.active==null?t:{...t,draggable:{...t.draggable,translate:{x:a.coordinates.x-t.draggable.initialCoordinates.x,y:a.coordinates.y-t.draggable.initialCoordinates.y}}};case Ln.DragEnd:case Ln.DragCancel:return{...t,draggable:{...t.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case Ln.RegisterDroppable:{const{element:r}=a,{id:i}=r,u=new pu(t.droppable.containers);return u.set(i,r),{...t,droppable:{...t.droppable,containers:u}}}case Ln.SetDroppableDisabled:{const{id:r,key:i,disabled:u}=a,o=t.droppable.containers.get(r);if(!o||i!==o.key)return t;const h=new pu(t.droppable.containers);return h.set(r,{...o,disabled:u}),{...t,droppable:{...t.droppable,containers:h}}}case Ln.UnregisterDroppable:{const{id:r,key:i}=a,u=t.droppable.containers.get(r);if(!u||i!==u.key)return t;const o=new pu(t.droppable.containers);return o.delete(r),{...t,droppable:{...t.droppable,containers:o}}}default:return t}}function IN(t){let{disabled:a}=t;const{active:r,activatorEvent:i,draggableNodes:u}=v.useContext(Lu),o=Sc(i),h=Sc(r==null?void 0:r.id);return v.useEffect(()=>{if(!a&&!i&&o&&h!=null){if(!qc(o)||document.activeElement===o.target)return;const m=u.get(h);if(!m)return;const{activatorNode:p,node:g}=m;if(!p.current&&!g.current)return;requestAnimationFrame(()=>{for(const x of[p.current,g.current]){if(!x)continue;const b=BR(x);if(b){b.focus();break}}})}},[i,a,u,h,o]),null}function Mb(t,a){let{transform:r,...i}=a;return t!=null&&t.length?t.reduce((u,o)=>o({transform:u,...i}),r):r}function QN(t){return v.useMemo(()=>({draggable:{...fc.draggable,...t==null?void 0:t.draggable},droppable:{...fc.droppable,...t==null?void 0:t.droppable},dragOverlay:{...fc.dragOverlay,...t==null?void 0:t.dragOverlay}}),[t==null?void 0:t.draggable,t==null?void 0:t.droppable,t==null?void 0:t.dragOverlay])}function PN(t){let{activeNode:a,measure:r,initialRect:i,config:u=!0}=t;const o=v.useRef(!1),{x:h,y:m}=typeof u=="boolean"?{x:u,y:u}:u;al(()=>{if(!h&&!m||!a){o.current=!1;return}if(o.current||!i)return;const g=a==null?void 0:a.node.current;if(!g||g.isConnected===!1)return;const x=r(g),b=vb(x,i);if(h||(b.x=0),m||(b.y=0),o.current=!0,Math.abs(b.x)>0||Math.abs(b.y)>0){const w=xb(g);w&&w.scrollBy({top:b.y,left:b.x})}},[a,h,m,i,r])}const Vc=v.createContext({...ll,scaleX:1,scaleY:1});var Dr;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initializing=1]="Initializing",t[t.Initialized=2]="Initialized"})(Dr||(Dr={}));const KN=v.memo(function(a){var r,i,u,o;let{id:h,accessibility:m,autoScroll:p=!0,children:g,sensors:x=YN,collisionDetection:b=lN,measuring:w,modifiers:S,...R}=a;const C=v.useReducer(XN,void 0,GN),[N,z]=C,[I,q]=GR(),[Q,ee]=v.useState(Dr.Uninitialized),te=Q===Dr.Initialized,{draggable:{active:D,nodes:j,translate:re},droppable:{containers:ue}}=N,xe=D!=null?j.get(D):null,pe=v.useRef({initial:null,translated:null}),Te=v.useMemo(()=>{var Yt;return D!=null?{id:D,data:(Yt=xe==null?void 0:xe.data)!=null?Yt:VN,rect:pe}:null},[D,xe]),Ae=v.useRef(null),[Re,B]=v.useState(null),[V,de]=v.useState(null),fe=bu(R,Object.values(R)),Ne=_u("DndDescribedBy",h),O=v.useMemo(()=>ue.getEnabled(),[ue]),X=QN(w),{droppableRects:se,measureDroppableContainers:ce,measuringScheduled:we}=ON(O,{dragging:te,dependencies:[re.x,re.y],config:X.droppable}),Se=CN(j,D),He=v.useMemo(()=>V?wc(V):null,[V]),it=Qt(),Fe=MN(Se,X.draggable.measure);PN({activeNode:D!=null?j.get(D):null,config:it.layoutShiftCompensation,initialRect:Fe,measure:X.draggable.measure});const et=qy(Se,X.draggable.measure,Fe),en=qy(Se?Se.parentElement:null),qt=v.useRef({activatorEvent:null,active:null,activeNode:Se,collisionRect:null,collisions:null,droppableRects:se,draggableNodes:j,draggingNode:null,draggingNodeRect:null,droppableContainers:ue,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ut=ue.getNodeFor((r=qt.current.over)==null?void 0:r.id),le=qN({measure:X.dragOverlay.measure}),Le=(i=le.nodeRef.current)!=null?i:Se,at=te?(u=le.rect)!=null?u:et:null,Xt=!!(le.nodeRef.current&&le.rect),Cn=LN(Xt?null:et),pn=Db(Le?oa(Le):null),_t=zN(te?ut??Se:null),Wt=$N(_t),Yn=Mb(S,{transform:{x:re.x-Cn.x,y:re.y-Cn.y,scaleX:1,scaleY:1},activatorEvent:V,active:Te,activeNodeRect:et,containerNodeRect:en,draggingNodeRect:at,over:qt.current.over,overlayNodeRect:le.rect,scrollableAncestors:_t,scrollableAncestorRects:Wt,windowRect:pn}),ye=He?Js(He,re):null,Oe=UN(_t),ze=Vy(Oe),Ge=Vy(Oe,[et]),lt=Js(Yn,ze),At=at?iN(at,Yn):null,Ot=Te&&At?b({active:Te,collisionRect:At,droppableRects:se,droppableContainers:O,pointerCoordinates:ye}):null,tn=tN(Ot,"id"),[It,ca]=v.useState(null),gn=Xt?Yn:Js(Yn,Ge),J=rN(gn,(o=It==null?void 0:It.rect)!=null?o:null,et),St=v.useRef(null),Lt=v.useCallback((Yt,gt)=>{let{sensor:zt,options:Rt}=gt;if(Ae.current==null)return;const nn=j.get(Ae.current);if(!nn)return;const Pt=Yt.nativeEvent,Ut=new zt({active:Ae.current,activeNode:nn,event:Pt,options:Rt,context:qt,onAbort(Ke){if(!j.get(Ke))return;const{onDragAbort:An}=fe.current,A={id:Ke};An==null||An(A),I({type:"onDragAbort",event:A})},onPending(Ke,Sn,An,A){if(!j.get(Ke))return;const{onDragPending:H}=fe.current,K={id:Ke,constraint:Sn,initialCoordinates:An,offset:A};H==null||H(K),I({type:"onDragPending",event:K})},onStart(Ke){const Sn=Ae.current;if(Sn==null)return;const An=j.get(Sn);if(!An)return;const{onDragStart:A}=fe.current,_={activatorEvent:Pt,active:{id:Sn,data:An.data,rect:pe}};Zl.unstable_batchedUpdates(()=>{A==null||A(_),ee(Dr.Initializing),z({type:Ln.DragStart,initialCoordinates:Ke,active:Sn}),I({type:"onDragStart",event:_}),B(St.current),de(Pt)})},onMove(Ke){z({type:Ln.DragMove,coordinates:Ke})},onEnd:dt(Ln.DragEnd),onCancel:dt(Ln.DragCancel)});St.current=Ut;function dt(Ke){return async function(){const{active:An,collisions:A,over:_,scrollAdjustedTranslate:H}=qt.current;let K=null;if(An&&H){const{cancelDrop:ne}=fe.current;K={activatorEvent:Pt,active:An,collisions:A,delta:H,over:_},Ke===Ln.DragEnd&&typeof ne=="function"&&await Promise.resolve(ne(K))&&(Ke=Ln.DragCancel)}Ae.current=null,Zl.unstable_batchedUpdates(()=>{z({type:Ke}),ee(Dr.Uninitialized),ca(null),B(null),de(null),St.current=null;const ne=Ke===Ln.DragEnd?"onDragEnd":"onDragCancel";if(K){const Ee=fe.current[ne];Ee==null||Ee(K),I({type:ne,event:K})}})}}},[j]),er=v.useCallback((Yt,gt)=>(zt,Rt)=>{const nn=zt.nativeEvent,Pt=j.get(Rt);if(Ae.current!==null||!Pt||nn.dndKit||nn.defaultPrevented)return;const Ut={active:Pt};Yt(zt,gt.options,Ut)===!0&&(nn.dndKit={capturedBy:gt.sensor},Ae.current=Rt,Lt(zt,gt))},[j,Lt]),Zn=AN(x,er);HN(x),al(()=>{et&&Q===Dr.Initializing&&ee(Dr.Initialized)},[et,Q]),v.useEffect(()=>{const{onDragMove:Yt}=fe.current,{active:gt,activatorEvent:zt,collisions:Rt,over:nn}=qt.current;if(!gt||!zt)return;const Pt={active:gt,activatorEvent:zt,collisions:Rt,delta:{x:lt.x,y:lt.y},over:nn};Zl.unstable_batchedUpdates(()=>{Yt==null||Yt(Pt),I({type:"onDragMove",event:Pt})})},[lt.x,lt.y]),v.useEffect(()=>{const{active:Yt,activatorEvent:gt,collisions:zt,droppableContainers:Rt,scrollAdjustedTranslate:nn}=qt.current;if(!Yt||Ae.current==null||!gt||!nn)return;const{onDragOver:Pt}=fe.current,Ut=Rt.get(tn),dt=Ut&&Ut.rect.current?{id:Ut.id,rect:Ut.rect.current,data:Ut.data,disabled:Ut.disabled}:null,Ke={active:Yt,activatorEvent:gt,collisions:zt,delta:{x:nn.x,y:nn.y},over:dt};Zl.unstable_batchedUpdates(()=>{ca(dt),Pt==null||Pt(Ke),I({type:"onDragOver",event:Ke})})},[tn]),al(()=>{qt.current={activatorEvent:V,active:Te,activeNode:Se,collisionRect:At,collisions:Ot,droppableRects:se,draggableNodes:j,draggingNode:Le,draggingNodeRect:at,droppableContainers:ue,over:It,scrollableAncestors:_t,scrollAdjustedTranslate:lt},pe.current={initial:at,translated:At}},[Te,Se,Ot,At,j,Le,at,se,ue,It,_t,lt]),TN({...it,delta:re,draggingRect:At,pointerCoordinates:ye,scrollableAncestors:_t,scrollableAncestorRects:Wt});const Nl=v.useMemo(()=>({active:Te,activeNode:Se,activeNodeRect:et,activatorEvent:V,collisions:Ot,containerNodeRect:en,dragOverlay:le,draggableNodes:j,droppableContainers:ue,droppableRects:se,over:It,measureDroppableContainers:ce,scrollableAncestors:_t,scrollableAncestorRects:Wt,measuringConfiguration:X,measuringScheduled:we,windowRect:pn}),[Te,Se,et,V,Ot,en,le,j,ue,se,It,ce,_t,Wt,X,we,pn]),$e=v.useMemo(()=>({activatorEvent:V,activators:Zn,active:Te,activeNodeRect:et,ariaDescribedById:{draggable:Ne},dispatch:z,draggableNodes:j,over:It,measureDroppableContainers:ce}),[V,Zn,Te,et,z,Ne,j,It,ce]);return un.createElement(gb.Provider,{value:q},un.createElement(Lu.Provider,{value:$e},un.createElement(Ob.Provider,{value:Nl},un.createElement(Vc.Provider,{value:J},g)),un.createElement(IN,{disabled:(m==null?void 0:m.restoreFocus)===!1})),un.createElement(QR,{...m,hiddenTextDescribedById:Ne}));function Qt(){const Yt=(Re==null?void 0:Re.autoScrollEnabled)===!1,gt=typeof p=="object"?p.enabled===!1:p===!1,zt=te&&!Yt&&!gt;return typeof p=="object"?{...p,enabled:zt}:{enabled:zt}}}),ZN=v.createContext(null),Gy="button",JN="Draggable";function WN(t){let{id:a,data:r,disabled:i=!1,attributes:u}=t;const o=_u(JN),{activators:h,activatorEvent:m,active:p,activeNodeRect:g,ariaDescribedById:x,draggableNodes:b,over:w}=v.useContext(Lu),{role:S=Gy,roleDescription:R="draggable",tabIndex:C=0}=u??{},N=(p==null?void 0:p.id)===a,z=v.useContext(N?Vc:ZN),[I,q]=bc(),[Q,ee]=bc(),te=BN(h,a),D=bu(r);al(()=>(b.set(a,{id:a,key:o,node:I,activatorNode:Q,data:D}),()=>{const re=b.get(a);re&&re.key===o&&b.delete(a)}),[b,a]);const j=v.useMemo(()=>({role:S,tabIndex:C,"aria-disabled":i,"aria-pressed":N&&S===Gy?!0:void 0,"aria-roledescription":R,"aria-describedby":x.draggable}),[i,S,C,N,R,x.draggable]);return{active:p,activatorEvent:m,activeNodeRect:g,attributes:j,isDragging:N,listeners:i?void 0:te,node:I,over:w,setNodeRef:q,setActivatorNodeRef:ee,transform:z}}function kb(){return v.useContext(Ob)}const e2="Droppable",t2={timeout:25};function n2(t){let{data:a,disabled:r=!1,id:i,resizeObserverConfig:u}=t;const o=_u(e2),{active:h,dispatch:m,over:p,measureDroppableContainers:g}=v.useContext(Lu),x=v.useRef({disabled:r}),b=v.useRef(!1),w=v.useRef(null),S=v.useRef(null),{disabled:R,updateMeasurementsFor:C,timeout:N}={...t2,...u},z=bu(C??i),I=v.useCallback(()=>{if(!b.current){b.current=!0;return}S.current!=null&&clearTimeout(S.current),S.current=setTimeout(()=>{g(Array.isArray(z.current)?z.current:[z.current]),S.current=null},N)},[N]),q=Yc({callback:I,disabled:R||!h}),Q=v.useCallback((j,re)=>{q&&(re&&(q.unobserve(re),b.current=!1),j&&q.observe(j))},[q]),[ee,te]=bc(Q),D=bu(a);return v.useEffect(()=>{!q||!ee.current||(q.disconnect(),b.current=!1,q.observe(ee.current))},[ee,q]),v.useEffect(()=>(m({type:Ln.RegisterDroppable,element:{id:i,key:o,disabled:r,node:ee,rect:w,data:D}}),()=>m({type:Ln.UnregisterDroppable,key:o,id:i})),[i]),v.useEffect(()=>{r!==x.current.disabled&&(m({type:Ln.SetDroppableDisabled,id:i,key:o,disabled:r}),x.current.disabled=r)},[i,o,r,m]),{active:h,rect:w,isOver:(p==null?void 0:p.id)===i,node:ee,over:p,setNodeRef:te}}function a2(t){let{animation:a,children:r}=t;const[i,u]=v.useState(null),[o,h]=v.useState(null),m=Sc(r);return!r&&!i&&m&&u(m),al(()=>{if(!o)return;const p=i==null?void 0:i.key,g=i==null?void 0:i.props.id;if(p==null||g==null){u(null);return}Promise.resolve(a(g,o)).then(()=>{u(null)})},[a,i,o]),un.createElement(un.Fragment,null,r,i?v.cloneElement(i,{ref:h}):null)}const l2={x:0,y:0,scaleX:1,scaleY:1};function r2(t){let{children:a}=t;return un.createElement(Lu.Provider,{value:Ab},un.createElement(Vc.Provider,{value:l2},a))}const s2={position:"fixed",touchAction:"none"},i2=t=>qc(t)?"transform 250ms ease":void 0,u2=v.forwardRef((t,a)=>{let{as:r,activatorEvent:i,adjustScale:u,children:o,className:h,rect:m,style:p,transform:g,transition:x=i2}=t;if(!m)return null;const b=u?g:{...g,scaleX:1,scaleY:1},w={...s2,width:m.width,height:m.height,top:m.top,left:m.left,transform:Or.Transform.toString(b),transformOrigin:u&&i?JR(i,m):void 0,transition:typeof x=="function"?x(i):x,...p};return un.createElement(r,{className:h,style:w,ref:a},o)}),o2=t=>a=>{let{active:r,dragOverlay:i}=a;const u={},{styles:o,className:h}=t;if(o!=null&&o.active)for(const[m,p]of Object.entries(o.active))p!==void 0&&(u[m]=r.node.style.getPropertyValue(m),r.node.style.setProperty(m,p));if(o!=null&&o.dragOverlay)for(const[m,p]of Object.entries(o.dragOverlay))p!==void 0&&i.node.style.setProperty(m,p);return h!=null&&h.active&&r.node.classList.add(h.active),h!=null&&h.dragOverlay&&i.node.classList.add(h.dragOverlay),function(){for(const[p,g]of Object.entries(u))r.node.style.setProperty(p,g);h!=null&&h.active&&r.node.classList.remove(h.active)}},c2=t=>{let{transform:{initial:a,final:r}}=t;return[{transform:Or.Transform.toString(a)},{transform:Or.Transform.toString(r)}]},d2={duration:250,easing:"ease",keyframes:c2,sideEffects:o2({styles:{active:{opacity:"0"}}})};function f2(t){let{config:a,draggableNodes:r,droppableContainers:i,measuringConfiguration:u}=t;return $c((o,h)=>{if(a===null)return;const m=r.get(o);if(!m)return;const p=m.node.current;if(!p)return;const g=Cb(h);if(!g)return;const{transform:x}=oa(h).getComputedStyle(h),b=yb(x);if(!b)return;const w=typeof a=="function"?a:h2(a);return Nb(p,u.draggable.measure),w({active:{id:o,data:m.data,node:p,rect:u.draggable.measure(p)},draggableNodes:r,dragOverlay:{node:h,rect:u.dragOverlay.measure(g)},droppableContainers:i,measuringConfiguration:u,transform:b})})}function h2(t){const{duration:a,easing:r,sideEffects:i,keyframes:u}={...d2,...t};return o=>{let{active:h,dragOverlay:m,transform:p,...g}=o;if(!a)return;const x={x:m.rect.left-h.rect.left,y:m.rect.top-h.rect.top},b={scaleX:p.scaleX!==1?h.rect.width*p.scaleX/m.rect.width:1,scaleY:p.scaleY!==1?h.rect.height*p.scaleY/m.rect.height:1},w={x:p.x-x.x,y:p.y-x.y,...b},S=u({...g,active:h,dragOverlay:m,transform:{initial:p,final:w}}),[R]=S,C=S[S.length-1];if(JSON.stringify(R)===JSON.stringify(C))return;const N=i==null?void 0:i({active:h,dragOverlay:m,...g}),z=m.node.animate(S,{duration:a,easing:r,fill:"forwards"});return new Promise(I=>{z.onfinish=()=>{N==null||N(),I()}})}}let Xy=0;function m2(t){return v.useMemo(()=>{if(t!=null)return Xy++,Xy},[t])}const p2=un.memo(t=>{let{adjustScale:a=!1,children:r,dropAnimation:i,style:u,transition:o,modifiers:h,wrapperElement:m="div",className:p,zIndex:g=999}=t;const{activatorEvent:x,active:b,activeNodeRect:w,containerNodeRect:S,draggableNodes:R,droppableContainers:C,dragOverlay:N,over:z,measuringConfiguration:I,scrollableAncestors:q,scrollableAncestorRects:Q,windowRect:ee}=kb(),te=v.useContext(Vc),D=m2(b==null?void 0:b.id),j=Mb(h,{activatorEvent:x,active:b,activeNodeRect:w,containerNodeRect:S,draggingNodeRect:N.rect,over:z,overlayNodeRect:N.rect,scrollableAncestors:q,scrollableAncestorRects:Q,transform:te,windowRect:ee}),re=um(w),ue=f2({config:i,draggableNodes:R,droppableContainers:C,measuringConfiguration:I}),xe=re?N.setRef:void 0;return un.createElement(r2,null,un.createElement(a2,{animation:ue},b&&D?un.createElement(u2,{key:D,id:b.id,ref:xe,as:m,activatorEvent:x,adjustScale:a,className:p,transition:o,rect:re,style:{zIndex:g,...u},transform:j},r):null))});function gu(t,a,r){const i=t.slice();return i.splice(r<0?i.length+r:r,0,i.splice(a,1)[0]),i}function g2(t,a){return t.reduce((r,i,u)=>{const o=a.get(i);return o&&(r[u]=o),r},Array(t.length))}function ec(t){return t!==null&&t>=0}function v2(t,a){if(t===a)return!0;if(t.length!==a.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==a[r])return!1;return!0}function y2(t){return typeof t=="boolean"?{draggable:t,droppable:t}:t}const _b=t=>{let{rects:a,activeIndex:r,overIndex:i,index:u}=t;const o=gu(a,i,r),h=a[u],m=o[u];return!m||!h?null:{x:m.left-h.left,y:m.top-h.top,scaleX:m.width/h.width,scaleY:m.height/h.height}},tc={scaleX:1,scaleY:1},om=t=>{var a;let{activeIndex:r,activeNodeRect:i,index:u,rects:o,overIndex:h}=t;const m=(a=o[r])!=null?a:i;if(!m)return null;if(u===r){const g=o[h];return g?{x:0,y:r<h?g.top+g.height-(m.top+m.height):g.top-m.top,...tc}:null}const p=x2(o,u,r);return u>r&&u<=h?{x:0,y:-m.height-p,...tc}:u<r&&u>=h?{x:0,y:m.height+p,...tc}:{x:0,y:0,...tc}};function x2(t,a,r){const i=t[a],u=t[a-1],o=t[a+1];return i?r<a?u?i.top-(u.top+u.height):o?o.top-(i.top+i.height):0:o?o.top-(i.top+i.height):u?i.top-(u.top+u.height):0:0}const Lb="Sortable",zb=un.createContext({activeIndex:-1,containerId:Lb,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:_b,disabled:{draggable:!1,droppable:!1}});function cm(t){let{children:a,id:r,items:i,strategy:u=_b,disabled:o=!1}=t;const{active:h,dragOverlay:m,droppableRects:p,over:g,measureDroppableContainers:x}=kb(),b=_u(Lb,r),w=m.rect!==null,S=v.useMemo(()=>i.map(te=>typeof te=="object"&&"id"in te?te.id:te),[i]),R=h!=null,C=h?S.indexOf(h.id):-1,N=g?S.indexOf(g.id):-1,z=v.useRef(S),I=!v2(S,z.current),q=N!==-1&&C===-1||I,Q=y2(o);al(()=>{I&&R&&x(S)},[I,S,R,x]),v.useEffect(()=>{z.current=S},[S]);const ee=v.useMemo(()=>({activeIndex:C,containerId:b,disabled:Q,disableTransforms:q,items:S,overIndex:N,useDragOverlay:w,sortedRects:g2(S,p),strategy:u}),[C,b,Q.draggable,Q.droppable,q,S,N,p,w,u]);return un.createElement(zb.Provider,{value:ee},a)}const b2=t=>{let{id:a,items:r,activeIndex:i,overIndex:u}=t;return gu(r,i,u).indexOf(a)},S2=t=>{let{containerId:a,isSorting:r,wasDragging:i,index:u,items:o,newIndex:h,previousItems:m,previousContainerId:p,transition:g}=t;return!g||!i||m!==o&&u===h?!1:r?!0:h!==u&&a===p},E2={duration:200,easing:"ease"},Ub="transform",w2=Or.Transition.toString({property:Ub,duration:0,easing:"linear"}),R2={roleDescription:"sortable"};function N2(t){let{disabled:a,index:r,node:i,rect:u}=t;const[o,h]=v.useState(null),m=v.useRef(r);return al(()=>{if(!a&&r!==m.current&&i.current){const p=u.current;if(p){const g=ui(i.current,{ignoreTransform:!0}),x={x:p.left-g.left,y:p.top-g.top,scaleX:p.width/g.width,scaleY:p.height/g.height};(x.x||x.y)&&h(x)}}r!==m.current&&(m.current=r)},[a,r,i,u]),v.useEffect(()=>{o&&h(null)},[o]),o}function T2(t){let{animateLayoutChanges:a=S2,attributes:r,disabled:i,data:u,getNewIndex:o=b2,id:h,strategy:m,resizeObserverConfig:p,transition:g=E2}=t;const{items:x,containerId:b,activeIndex:w,disabled:S,disableTransforms:R,sortedRects:C,overIndex:N,useDragOverlay:z,strategy:I}=v.useContext(zb),q=j2(i,S),Q=x.indexOf(h),ee=v.useMemo(()=>({sortable:{containerId:b,index:Q,items:x},...u}),[b,u,Q,x]),te=v.useMemo(()=>x.slice(x.indexOf(h)),[x,h]),{rect:D,node:j,isOver:re,setNodeRef:ue}=n2({id:h,data:ee,disabled:q.droppable,resizeObserverConfig:{updateMeasurementsFor:te,...p}}),{active:xe,activatorEvent:pe,activeNodeRect:Te,attributes:Ae,setNodeRef:Re,listeners:B,isDragging:V,over:de,setActivatorNodeRef:fe,transform:Ne}=WN({id:h,data:ee,attributes:{...R2,...r},disabled:q.draggable}),O=LR(ue,Re),X=!!xe,se=X&&!R&&ec(w)&&ec(N),ce=!z&&V,we=ce&&se?Ne:null,He=se?we??(m??I)({rects:C,activeNodeRect:Te,activeIndex:w,overIndex:N,index:Q}):null,it=ec(w)&&ec(N)?o({id:h,items:x,activeIndex:w,overIndex:N}):Q,Fe=xe==null?void 0:xe.id,et=v.useRef({activeId:Fe,items:x,newIndex:it,containerId:b}),en=x!==et.current.items,qt=a({active:xe,containerId:b,isDragging:V,isSorting:X,id:h,index:Q,items:x,newIndex:et.current.newIndex,previousItems:et.current.items,previousContainerId:et.current.containerId,transition:g,wasDragging:et.current.activeId!=null}),ut=N2({disabled:!qt,index:Q,node:j,rect:D});return v.useEffect(()=>{X&&et.current.newIndex!==it&&(et.current.newIndex=it),b!==et.current.containerId&&(et.current.containerId=b),x!==et.current.items&&(et.current.items=x)},[X,it,b,x]),v.useEffect(()=>{if(Fe===et.current.activeId)return;if(Fe!=null&&et.current.activeId==null){et.current.activeId=Fe;return}const Le=setTimeout(()=>{et.current.activeId=Fe},50);return()=>clearTimeout(Le)},[Fe]),{active:xe,activeIndex:w,attributes:Ae,data:ee,rect:D,index:Q,newIndex:it,items:x,isOver:re,isSorting:X,isDragging:V,listeners:B,node:j,overIndex:N,over:de,setNodeRef:O,setActivatorNodeRef:fe,setDroppableNodeRef:ue,setDraggableNodeRef:Re,transform:ut??He,transition:le()};function le(){if(ut||en&&et.current.newIndex===Q)return w2;if(!(ce&&!qc(pe)||!g)&&(X||qt))return Or.Transition.toString({...g,property:Ub})}}function j2(t,a){var r,i;return typeof t=="boolean"?{draggable:t,droppable:!1}:{draggable:(r=t==null?void 0:t.draggable)!=null?r:a.draggable,droppable:(i=t==null?void 0:t.droppable)!=null?i:a.droppable}}Ct.Down,Ct.Right,Ct.Up,Ct.Left;const Fc=[{value:"planned",label:"Planned"},{value:"in-progress",label:"In progress"},{value:"done",label:"Done"},{value:"blocked",label:"Blocked"},{value:"canceled",label:"Canceled"},{value:"rejected",label:"Rejected"},{value:"deferred",label:"Deferred"},{value:"waiting",label:"Waiting"}],Gc=[{value:"draft",label:"Draft"},{value:"discovery",label:"Discovery"},{value:"planned",label:"Planned"},{value:"in-progress",label:"In progress"},{value:"done",label:"Done"},{value:"blocked",label:"Blocked"},{value:"canceled",label:"Canceled"},{value:"rejected",label:"Rejected"},{value:"deferred",label:"Deferred"},{value:"waiting",label:"Waiting"}],zu=[{value:"planned",label:"Planned"},{value:"in-progress",label:"In progress"},{value:"done",label:"Done"},{value:"blocked",label:"Blocked"},{value:"canceled",label:"Canceled"},{value:"rejected",label:"Rejected"},{value:"deferred",label:"Deferred"},{value:"waiting",label:"Waiting"}],ru=Fc.map(t=>t.value),su=Gc.map(t=>t.value),iu=zu.map(t=>t.value);function oh(t,a,r){if(t.includes(a)){const i=t.filter(u=>u!==a);return i.length===0?[...r]:i}return[...t,a]}function ch(t,a){return a.includes(t)}function gl(t,a){return`agent-plan:dashboard:${t}:${a}`}function dh(t,a,r){if(typeof window>"u")return a;try{const i=window.localStorage.getItem(t);if(!i)return a;const u=JSON.parse(i);if(!Array.isArray(u))return a;const o=`${t}-schema`,h=r.slice().sort().join(",");if(window.localStorage.getItem(o)!==h)return window.localStorage.setItem(o,h),a;const p=u.filter(g=>typeof g=="string"&&r.includes(g));return p.length>0?p:a}catch{return a}}function fh(t,a,r){typeof window>"u"||(window.localStorage.setItem(t,JSON.stringify(a)),window.localStorage.setItem(`${t}-schema`,r.slice().sort().join(",")))}function hh(t,a){if(typeof window>"u")return a;const r=window.localStorage.getItem(t);return r===null?a:r==="true"}const Iy={featureNumbers:null,phaseNumbers:null,taskNumbers:null,shortIds:null,status:null,featureStatus:null,phaseStatus:null,text:null},Qy=/^(feature-status|phase-status|feature|phase|task|id|status|title):(.*)$/i;function Hb(t){return t.split(",").map(a=>a.trim()).filter(a=>a.length>0)}function D2(t){return new Set(Hb(t).map(a=>Number(a)).filter(a=>Number.isFinite(a)&&a>0))}function Py(t){const a=t.toUpperCase();return a==="AND"||a==="OR"}function mh(t,a){const r=t??new Set;for(const i of D2(a))r.add(i);return r}function C2(t,a){const r=t??new Set;for(const i of Hb(a).map(u=>u.toUpperCase()))r.add(i);return r}function A2(t){const a=t.trim();if(!a)return{...Iy};const r={...Iy},i=[],u=[];let o=0;for(;o<a.length;){const m=a[o];if(m==='"'){const p=a.indexOf('"',o+1);if(p===-1){u.push(a.slice(o+1));break}u.push(a.slice(o+1,p)),o=p+1}else if(m===" ")o+=1;else{let p=o;for(;p<a.length&&a[p]!==" ";)p+=1;u.push(a.slice(o,p)),o=p}}let h=0;for(;h<u.length;){const m=u[h];if(Py(m)){h+=1;continue}const p=m.match(Qy);if(p){const g=(p[1]??"").toLowerCase();let x=p[2]??"";if(x.trim()===""&&h+1<u.length){let b=h+1;for(;b<u.length&&Py(u[b]);)b+=1;b<u.length&&!u[b].match(Qy)&&(x=u[b],h=b)}if(g==="feature"){const b=mh(r.featureNumbers,x);b.size&&(r.featureNumbers=b)}else if(g==="phase"){const b=mh(r.phaseNumbers,x);b.size&&(r.phaseNumbers=b)}else if(g==="task"){const b=mh(r.taskNumbers,x);b.size&&(r.taskNumbers=b)}else if(g==="id"){const b=C2(r.shortIds,x);b.size&&(r.shortIds=b)}else g==="status"?x.trim()&&(r.status=x.toLowerCase()):g==="feature-status"?x.trim()&&(r.featureStatus=x.toLowerCase()):g==="phase-status"?x.trim()&&(r.phaseStatus=x.toLowerCase()):g==="title"&&x.trim()&&(r.text=x.toLowerCase())}else i.push(m.toLowerCase());h+=1}return i.length>0&&!r.text&&(r.text=i.join(" ")),r}function O2(t){return!!(t.featureNumbers||t.phaseNumbers||t.taskNumbers||t.shortIds||t.status||t.featureStatus||t.phaseStatus||t.text)}function M2(t,a){if(t.featureNumbers&&!t.featureNumbers.has(a.feature.number)||t.phaseNumbers&&!t.phaseNumbers.has(a.phase.number)||t.taskNumbers&&!t.taskNumbers.has(a.task.number)||t.shortIds&&!(t.shortIds.has(a.task.shortId??"")||t.shortIds.has(a.phase.shortId??"")||t.shortIds.has(a.feature.shortId??""))||t.status&&a.task.status!==t.status||t.featureStatus&&a.feature.status!==t.featureStatus||t.phaseStatus&&a.phase.status!==t.phaseStatus)return!1;if(t.text){const r=t.text;if(![a.task.title,a.task.shortId??"",a.phase.title,a.phase.shortId??"",a.feature.name,a.feature.shortId??""].join(" ").toLowerCase().includes(r))return!1}return!0}function k2({features:t,phases:a,projectStorageScope:r}){const i=gl(r,"show-all-features"),u=gl(r,"tree-open-mode"),o=gl(r,"expanded-features"),h=gl(r,"expanded-phases"),m=gl(r,"feature-status-filters"),p=gl(r,"phase-status-filters"),g=gl(r,"task-status-filters"),x=gl(r,"hide-done"),b=gl(r,"hide-planned"),w=gl(r,"only-active-branches"),[S,R]=v.useState(""),C=v.useMemo(()=>kR(t,a),[t,a]),N=v.useMemo(()=>A2(S),[S]),z=O2(N),{matchedTaskIds:I,matchedFeatureIds:q,matchedPhaseIds:Q}=v.useMemo(()=>{const ye=new Set,Oe=new Set,ze=new Set;if(!z)return{matchedTaskIds:ye,matchedFeatureIds:Oe,matchedPhaseIds:ze};for(const Ge of C)for(const lt of Ge.allPhases)for(const At of lt.allTasks)M2(N,{feature:Ge.feature,phase:lt.phase,task:At})&&(ye.add(At.id),Oe.add(Ge.feature.id),ze.add(lt.phase.id));return{matchedTaskIds:ye,matchedFeatureIds:Oe,matchedPhaseIds:ze}},[z,N,C]),[ee,te]=v.useState(()=>{if(typeof window>"u")return!0;const ye=window.localStorage.getItem(i);return ye===null?!0:ye==="true"}),[D,j]=v.useState(()=>{if(typeof window>"u")return"all";const ye=window.localStorage.getItem(u);return ye==="smart"||ye==="none"||ye==="all"?ye:"all"}),[re,ue]=v.useState(()=>{if(typeof window>"u")return[];try{const ye=window.localStorage.getItem(o);return ye?JSON.parse(ye):[]}catch{return[]}}),[xe,pe]=v.useState(()=>{if(typeof window>"u")return[];try{const ye=window.localStorage.getItem(h);return ye?JSON.parse(ye):[]}catch{return[]}}),[Te,Ae]=v.useState(()=>dh(m,ru,ru)),[Re,B]=v.useState(()=>dh(p,su,su)),[V,de]=v.useState(()=>dh(g,iu,iu)),[fe,Ne]=v.useState(()=>hh(x,!1)),[O,X]=v.useState(()=>hh(b,!1)),[se,ce]=v.useState(()=>hh(w,!1)),[we,Se]=v.useState([]),[He,it]=v.useState([]),[Fe,et]=v.useState([]),en=v.useRef({});v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(i,String(ee))},[ee,i]),v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(u,D)},[D,u]),v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(o,JSON.stringify(re))},[re,o]),v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(h,JSON.stringify(xe))},[xe,h]),v.useEffect(()=>{typeof window>"u"||fh(m,Te,ru)},[Te,m]),v.useEffect(()=>{typeof window>"u"||fh(p,Re,su)},[Re,p]),v.useEffect(()=>{typeof window>"u"||fh(g,V,iu)},[V,g]),v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(x,String(fe))},[fe,x]),v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(b,String(O))},[O,b]),v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(w,String(se))},[se,w]),v.useEffect(()=>()=>{Object.values(en.current).forEach(ye=>window.clearTimeout(ye)),en.current={}},[]);const qt=v.useMemo(()=>{let ye=[...Te];return fe&&(ye=ye.filter(Oe=>Oe!=="done")),O&&(ye=ye.filter(Oe=>Oe!=="planned")),ye},[Te,fe,O]),ut=v.useMemo(()=>{let ye=[...Re];return fe&&(ye=ye.filter(Oe=>Oe!=="done")),O&&(ye=ye.filter(Oe=>Oe!=="planned"&&Oe!=="draft")),ye},[Re,fe,O]),le=v.useMemo(()=>{let ye=[...V];return fe&&(ye=ye.filter(Oe=>Oe!=="done")),O&&(ye=ye.filter(Oe=>Oe!=="planned")),ye},[V,fe,O]),Le=v.useMemo(()=>{if(z)return C.map(ze=>({...ze,allPhases:ze.allPhases.map(Ge=>({...Ge,allTasks:Ge.allTasks.filter(lt=>I.has(lt.id))})).filter(Ge=>Ge.allTasks.length>0)})).filter(ze=>ze.allPhases.length>0);const ye=!ee||se;return(ee?C:C.filter(ze=>ze.isActive)).filter(({feature:ze})=>ch(ze.status,qt)).map(ze=>({...ze,allPhases:ze.allPhases.filter(({phase:Ge,hasActiveTask:lt})=>ch(Ge.status,ut)?ye?Ge.status==="in-progress"||Ge.status==="discovery"||lt:!0:!1).map(Ge=>({...Ge,allTasks:Ge.allTasks.filter(lt=>!!ch(lt.status,le))})).filter(Ge=>Ge.allTasks.length>0||ee||!ye)})).filter(({hasActiveTask:ze,allPhases:Ge})=>ye?ze||Ge.some(lt=>lt.hasActiveTask):Ge.length>0||ee)},[z,I,C,qt,ut,le,se,ee]);v.useEffect(()=>{if(D==="none"){ue([]),pe([]);return}if(D==="all"){ue(Le.filter(({feature:ze})=>ze.status!=="done").map(({feature:ze})=>ze.id)),pe(Le.flatMap(({allPhases:ze})=>ze.map(({phase:Ge})=>Ge.id)));return}const ye=new Set(Le.map(({feature:ze})=>ze.id)),Oe=new Set(Le.flatMap(({allPhases:ze})=>ze.map(({phase:Ge})=>Ge.id)));ue(ze=>ze.filter(Ge=>ye.has(Ge))),pe(ze=>ze.filter(Ge=>Oe.has(Ge)))},[Le,D]),v.useEffect(()=>{z&&(j("smart"),ue(Array.from(q)),pe(Array.from(Q)))},[z,q,Q]);const at=ye=>{j("smart"),ue(Oe=>Oe.includes(ye)?Oe.filter(ze=>ze!==ye):[...Oe,ye])},Xt=ye=>{j("smart"),pe(Oe=>Oe.includes(ye)?Oe.filter(ze=>ze!==ye):[...Oe,ye])},Cn=()=>{j("smart"),ue(Le.map(({feature:ye})=>ye.id)),pe(Le.flatMap(({allPhases:ye})=>ye.map(({phase:Oe})=>Oe.id)))};return v.useEffect(()=>{const ye=(ze,Ge)=>{const lt=Ge.filter(At=>!!At);for(const At of lt){const Ot=`${ze}:${At}`,tn=ze==="feature"?Se:ze==="phase"?it:et;tn(It=>It.includes(At)?It:[...It,At]),en.current[Ot]!==void 0&&window.clearTimeout(en.current[Ot]),en.current[Ot]=window.setTimeout(()=>{tn(It=>It.filter(ca=>ca!==At)),delete en.current[Ot]},CR)}},Oe=ze=>{var At,Ot,tn,It,ca,gn;const lt=ze.detail;if(lt!=null&<.type){if(lt.type==="features-updated"){const J=((At=lt.data)==null?void 0:At.featureId)??((Ot=lt.data)==null?void 0:Ot.id);ye("feature",[J]),J&&(j("smart"),ue(St=>St.includes(J)?St:[...St,J]));return}if(lt.type==="phases-updated"){const J=(tn=lt.data)==null?void 0:tn.featureId,St=((It=lt.data)==null?void 0:It.phaseId)??((ca=lt.data)==null?void 0:ca.id);ye("phase",[St]),ye("feature",[J]),ye("task",[(gn=lt.data)==null?void 0:gn.taskId]),j("smart"),J&&ue(Lt=>Lt.includes(J)?Lt:[...Lt,J]),St&&pe(Lt=>Lt.includes(St)?Lt:[...Lt,St])}}};return window.addEventListener("agent-plan:ws-event",Oe),()=>{window.removeEventListener("agent-plan:ws-event",Oe)}},[]),{workTree:C,displayedWorkTree:Le,treeOpenMode:D,setTreeOpenMode:j,expandAll:Cn,expandedFeatureIds:re,expandedPhaseIds:xe,toggleExpandedFeature:at,toggleExpandedPhase:Xt,recentFeatureIds:we,recentPhaseIds:He,recentTaskIds:Fe,showAllFeatures:ee,setShowAllFeatures:te,featureStatusFilters:Te,phaseStatusFilters:Re,taskStatusFilters:V,hideDone:fe,setHideDone:Ne,hidePlanned:O,setHidePlanned:X,onlyActiveBranches:se,setOnlyActiveBranches:ce,resetFilters:()=>{te(!0),Ne(!1),X(!1),Ae(ru),B(su),de(iu),ce(!1),j("all")},toggleFeatureStatusFilter:ye=>Ae(Oe=>oh(Oe,ye,ru)),togglePhaseStatusFilter:ye=>B(Oe=>oh(Oe,ye,su)),toggleTaskStatusFilter:ye=>de(Oe=>oh(Oe,ye,iu)),searchQuery:S,setSearchQuery:R,searchActive:z,matchedTaskIds:I,matchedFeatureIds:q,matchedPhaseIds:Q}}const Bb=v.createContext(null);function dm({id:t,children:a}){const r=T2({id:t}),i={transform:Or.Transform.toString(r.transform),transition:r.transition};return d.jsx(Bb.Provider,{value:r,children:d.jsx("div",{ref:r.setNodeRef,style:i,className:r.isDragging?"ap-sortable--dragging":"",children:a})})}function fm(){const t=v.useContext(Bb);return t?d.jsx("button",{type:"button",className:"drag-handle","aria-label":"Drag to reorder",title:"Drag to reorder",...t.listeners,...t.attributes,children:d.jsx(jw,{className:"h-4 w-4"})}):null}const hm="mt-1 block min-w-0 break-words font-mono text-sm font-semibold leading-snug [overflow-wrap:anywhere]";function _2(){return d.jsx("span",{className:"rounded-full bg-[color:color-mix(in_srgb,var(--accent)_16%,transparent)] px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.12em] text-[var(--accent)]",children:"Updated"})}function ni({status:t,doneTasks:a,totalTasks:r,recentlyChanged:i,className:u}){const o=a!=null&&r!=null;return d.jsxs("div",{className:u,children:[i?d.jsx(_2,{}):null,o?d.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["(",a,"/",r||0,")"]}):null,d.jsx("span",{className:"shrink-0",children:d.jsx(Oa,{status:t})})]})}function L2({entry:t,expanded:a,recentlyChanged:r,onToggle:i,isPhaseExpanded:u,onTogglePhase:o,isPhaseRecentlyChanged:h,isTaskRecentlyChanged:m,highlightedTaskIds:p}){const{feature:g,totalTasks:x,doneTasks:b,allPhases:w,hasActiveTask:S}=t;return d.jsxs("div",{className:`surface-card min-w-0 px-3 py-3 transition-colors sm:px-4 ${g.status==="in-progress"?"ap-in-progress":S?"border-[color:var(--color-status-in-progress)]/40 bg-[color:color-mix(in_srgb,var(--color-status-in-progress)_7%,transparent)]":""} ${g.status==="done"?"!opacity-70 !bg-[color:color-mix(in_srgb,var(--color-status-done)_10%,transparent)] !border-[color:color-mix(in_srgb,var(--color-status-done)_35%,transparent)]":""} ${r?"ring-1 ring-[color:color-mix(in_srgb,var(--accent)_55%,transparent)] bg-[color:color-mix(in_srgb,var(--accent)_12%,transparent)]":""}`,children:[d.jsxs("div",{className:`flex min-w-0 flex-col gap-1.5 rounded-[12px] px-1 py-1 transition-colors hover:bg-[var(--accent-soft)] sm:flex-row sm:items-start sm:justify-between sm:gap-3 ${r?"bg-[color:color-mix(in_srgb,var(--accent)_10%,transparent)]":""}`,children:[d.jsxs("div",{className:"flex min-w-0 items-start gap-2 sm:flex-1",children:[d.jsx("button",{type:"button",onClick:i,className:"mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded text-[var(--text-subtle)] hover:bg-[var(--surface-elevated)] hover:text-[var(--text)]","aria-label":a?`Collapse feature ${g.name}`:`Expand feature ${g.name}`,"aria-expanded":a,children:d.jsx(tb,{className:`h-4 w-4 transition ${a?"rotate-90":"rotate-0"}`})}),d.jsxs("div",{className:"min-w-0 flex-1",children:[d.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[d.jsx(fm,{}),d.jsx(Wl,{id:li({featureNum:g.number}),children:d.jsx(Jl,{featureNum:g.number})}),g.shortId?d.jsx(ri,{shortId:g.shortId}):null,S?d.jsx("span",{"aria-hidden":"true",className:"ap-progress-dot"}):null]}),d.jsx(ni,{status:g.status,doneTasks:b,totalTasks:x,recentlyChanged:r,className:"mt-1 flex flex-wrap items-center gap-2 sm:hidden"}),d.jsx(wt,{to:`/features/${g.id}`,className:`entity-link--feature ${hm} underline-offset-4 hover:underline`,children:g.name})]})]}),d.jsx(ni,{status:g.status,doneTasks:b,totalTasks:x,recentlyChanged:r,className:"hidden shrink-0 items-center gap-2 sm:flex"})]}),a&&w.length>0?d.jsx("div",{className:"mt-2 ml-1.5 grid grid-cols-1 gap-2 border-l border-[var(--border)] pl-3 sm:ml-4 sm:pl-4",children:d.jsx(cm,{items:w.map(R=>R.phase.id),strategy:om,children:w.map(R=>d.jsx(dm,{id:R.phase.id,children:d.jsx(z2,{feature:g,phaseEntry:R,expanded:u(R.phase.id),recentlyChanged:h(R.phase.id),onToggle:()=>o(R.phase.id),isTaskRecentlyChanged:m,highlightedTaskIds:p})},R.phase.id))})}):null]})}function z2({feature:t,phaseEntry:a,expanded:r,recentlyChanged:i,onToggle:u,isTaskRecentlyChanged:o,highlightedTaskIds:h}){const{phase:m,totalTasks:p,doneTasks:g,allTasks:x,hasActiveTask:b}=a;return d.jsxs("div",{className:`work-tree-row grid min-w-0 grid-cols-1 gap-2 rounded-[12px] p-3 transition-colors ${m.status==="in-progress"?"ap-in-progress":b?"border border-[color:color-mix(in_srgb,var(--color-status-in-progress)_35%,transparent)] bg-[color:color-mix(in_srgb,var(--color-status-in-progress)_6%,transparent)]":""} ${m.status==="done"?"opacity-70 bg-[color:color-mix(in_srgb,var(--color-status-done)_6%,transparent)]":""} ${i?"ring-1 ring-[color:color-mix(in_srgb,var(--accent)_55%,transparent)] bg-[color:color-mix(in_srgb,var(--accent)_12%,transparent)]":""}`,children:[d.jsxs("div",{className:`flex min-w-0 flex-col gap-1.5 rounded-[10px] px-1 py-1 transition-colors hover:bg-[var(--accent-soft)] sm:flex-row sm:items-start sm:justify-between sm:gap-3 ${i?"bg-[color:color-mix(in_srgb,var(--accent)_8%,transparent)]":""}`,children:[d.jsxs("div",{className:"flex min-w-0 items-start gap-2 sm:flex-1",children:[d.jsx("button",{type:"button",onClick:u,className:"mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded text-[var(--text-subtle)] hover:bg-[var(--surface-elevated)] hover:text-[var(--text)]","aria-label":r?`Collapse phase ${m.title}`:`Expand phase ${m.title}`,"aria-expanded":r,children:d.jsx(tb,{className:`h-4 w-4 transition ${r?"rotate-90":"rotate-0"}`})}),d.jsxs("div",{className:"min-w-0 flex-1",children:[d.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[d.jsx(fm,{}),d.jsx(Wl,{id:li({featureNum:t==null?void 0:t.number,phaseNum:m.number}),children:d.jsx(Jl,{featureNum:t==null?void 0:t.number,phaseNum:m.number})}),m.shortId?d.jsx(ri,{shortId:m.shortId}):null,m.handoff?d.jsx(tm,{updatedAt:m.handoffUpdatedAt}):null,b?d.jsx("span",{"aria-hidden":"true",className:"ap-progress-dot"}):null]}),d.jsx(ni,{status:m.status,doneTasks:g,totalTasks:p,recentlyChanged:i,className:"mt-1 flex flex-wrap items-center gap-2 sm:hidden"}),d.jsx(wt,{to:`/features/${t.id}/phases/${m.id}`,className:`entity-link--phase ${hm} underline-offset-4 hover:underline`,children:m.title})]})]}),d.jsx(ni,{status:m.status,doneTasks:g,totalTasks:p,recentlyChanged:i,className:"hidden shrink-0 items-center gap-2 sm:flex"})]}),r?x.length>0?d.jsx("div",{className:"ml-1.5 grid grid-cols-1 gap-1 border-l border-[var(--border)] pl-3 sm:ml-4 sm:pl-4",children:d.jsx(cm,{items:x.map(w=>w.id),strategy:om,children:x.map(w=>d.jsx(dm,{id:w.id,children:d.jsx(U2,{feature:t,phase:m,task:w,recentlyChanged:o(w.id),highlighted:h==null?void 0:h.has(w.id)})},w.id))})}):d.jsx("p",{className:"ml-1.5 text-xs italic text-[var(--text-subtle)] sm:ml-4",children:"No tasks"}):null]})}function U2({feature:t,phase:a,task:r,recentlyChanged:i,highlighted:u}){return d.jsxs("div",{className:`flex min-w-0 flex-col gap-1.5 rounded-[10px] px-2 py-2 transition-colors hover:bg-[var(--accent-soft)] sm:flex-row sm:items-start sm:justify-between sm:gap-3 ${r.status==="in-progress"?"ap-in-progress":""} ${r.status==="done"?"opacity-60 bg-[color:color-mix(in_srgb,var(--color-status-done)_6%,transparent)] text-[var(--text-muted)]":""} ${i?"ring-1 ring-[color:color-mix(in_srgb,var(--accent)_55%,transparent)] bg-[color:color-mix(in_srgb,var(--accent)_12%,transparent)]":""} ${u?"ap-search-hit":""}`,children:[d.jsxs("div",{className:"min-w-0 flex-1",children:[d.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[d.jsx(fm,{}),d.jsx(Wl,{id:li({featureNum:t==null?void 0:t.number,phaseNum:a.number,taskNum:r.number}),children:d.jsx(Jl,{featureNum:t==null?void 0:t.number,phaseNum:a.number,taskNum:r.number})}),r.shortId?d.jsx(ri,{shortId:r.shortId}):null,r.status==="in-progress"?d.jsx("span",{"aria-hidden":"true",className:"ap-progress-dot"}):null]}),d.jsx(ni,{status:r.status,recentlyChanged:i,className:"mt-1 flex flex-wrap items-center gap-2 sm:hidden"}),d.jsx(wt,{to:`/features/${t.id}/phases/${a.id}/tasks/${r.id}`,className:`entity-link--task ${hm} underline-offset-4 hover:underline`,children:r.title})]}),d.jsx(ni,{status:r.status,recentlyChanged:i,className:"hidden shrink-0 items-center gap-2 sm:flex"})]})}var k=(function(t){return t.FIELD_NAME="FIELD_NAME",t.COLON="COLON",t.VALUE="VALUE",t.QUOTED_VALUE="QUOTED_VALUE",t.AND="AND",t.OR="OR",t.NOT="NOT",t.COMPARISON_OP="COMPARISON_OP",t.LPAREN="LPAREN",t.RPAREN="RPAREN",t.SAVED_SEARCH="SAVED_SEARCH",t.HISTORY_REF="HISTORY_REF",t.PREFIX_OP="PREFIX_OP",t.WILDCARD="WILDCARD",t.REGEX="REGEX",t.RANGE="RANGE",t.TILDE="TILDE",t.BOOST="BOOST",t.WHITESPACE="WHITESPACE",t.UNKNOWN="UNKNOWN",t})({}),ra=(function(t){return t[t.EXPECT_TERM=0]="EXPECT_TERM",t[t.EXPECT_VALUE=1]="EXPECT_VALUE",t})(ra||{}),Ks=class{constructor(t,a){mn(this,"input");mn(this,"pos");mn(this,"state");mn(this,"tokens");mn(this,"options");this.input=t,this.pos=0,this.state=ra.EXPECT_TERM,this.tokens=[],this.options=a||{}}tokenize(){for(this.tokens=[],this.pos=0,this.state=ra.EXPECT_TERM;this.pos<this.input.length;)this.state===ra.EXPECT_VALUE?this.readValue():this.readTerm();return this.tokens}peek(){return this.input[this.pos]}peekAt(t){return this.input[this.pos+t]}advance(){return this.input[this.pos++]}isWhitespace(t){return t===" "||t===" "||t===`
|
|
197
|
+
`},IR={onDragStart(t){let{active:a}=t;return"Picked up draggable item "+a.id+"."},onDragOver(t){let{active:a,over:r}=t;return r?"Draggable item "+a.id+" was moved over droppable area "+r.id+".":"Draggable item "+a.id+" is no longer over a droppable area."},onDragEnd(t){let{active:a,over:r}=t;return r?"Draggable item "+a.id+" was dropped over droppable area "+r.id:"Draggable item "+a.id+" was dropped."},onDragCancel(t){let{active:a}=t;return"Dragging was cancelled. Draggable item "+a.id+" was dropped."}};function QR(t){let{announcements:a=IR,container:r,hiddenTextDescribedById:i,screenReaderInstructions:u=XR}=t;const{announce:o,announcement:h}=VR(),m=_u("DndLiveRegion"),[p,g]=v.useState(!1);if(v.useEffect(()=>{g(!0)},[]),FR(v.useMemo(()=>({onDragStart(b){let{active:w}=b;o(a.onDragStart({active:w}))},onDragMove(b){let{active:w,over:S}=b;a.onDragMove&&o(a.onDragMove({active:w,over:S}))},onDragOver(b){let{active:w,over:S}=b;o(a.onDragOver({active:w,over:S}))},onDragEnd(b){let{active:w,over:S}=b;o(a.onDragEnd({active:w,over:S}))},onDragCancel(b){let{active:w,over:S}=b;o(a.onDragCancel({active:w,over:S}))}}),[o,a])),!p)return null;const x=un.createElement(un.Fragment,null,un.createElement(qR,{id:i,value:u.draggable}),un.createElement(YR,{id:m,announcement:h}));return r?Zl.createPortal(x,r):x}var Ln;(function(t){t.DragStart="dragStart",t.DragMove="dragMove",t.DragEnd="dragEnd",t.DragCancel="dragCancel",t.DragOver="dragOver",t.RegisterDroppable="registerDroppable",t.SetDroppableDisabled="setDroppableDisabled",t.UnregisterDroppable="unregisterDroppable"})(Ln||(Ln={}));function Rc(){}function PR(t,a){return v.useMemo(()=>({sensor:t,options:a??{}}),[t,a])}function KR(){for(var t=arguments.length,a=new Array(t),r=0;r<t;r++)a[r]=arguments[r];return v.useMemo(()=>[...a].filter(i=>i!=null),[...a])}const ll=Object.freeze({x:0,y:0});function ZR(t,a){return Math.sqrt(Math.pow(t.x-a.x,2)+Math.pow(t.y-a.y,2))}function JR(t,a){const r=wc(t);if(!r)return"0 0";const i={x:(r.x-a.left)/a.width*100,y:(r.y-a.top)/a.height*100};return i.x+"% "+i.y+"%"}function WR(t,a){let{data:{value:r}}=t,{data:{value:i}}=a;return r-i}function eN(t,a){let{data:{value:r}}=t,{data:{value:i}}=a;return i-r}function tN(t,a){if(!t||t.length===0)return null;const[r]=t;return r[a]}function Ly(t,a,r){return a===void 0&&(a=t.left),r===void 0&&(r=t.top),{x:a+t.width*.5,y:r+t.height*.5}}const nN=t=>{let{collisionRect:a,droppableRects:r,droppableContainers:i}=t;const u=Ly(a,a.left,a.top),o=[];for(const h of i){const{id:m}=h,p=r.get(m);if(p){const g=ZR(Ly(p),u);o.push({id:m,data:{droppableContainer:h,value:g}})}}return o.sort(WR)};function aN(t,a){const r=Math.max(a.top,t.top),i=Math.max(a.left,t.left),u=Math.min(a.left+a.width,t.left+t.width),o=Math.min(a.top+a.height,t.top+t.height),h=u-i,m=o-r;if(i<u&&r<o){const p=a.width*a.height,g=t.width*t.height,x=h*m,b=x/(p+g-x);return Number(b.toFixed(4))}return 0}const lN=t=>{let{collisionRect:a,droppableRects:r,droppableContainers:i}=t;const u=[];for(const o of i){const{id:h}=o,m=r.get(h);if(m){const p=aN(m,a);p>0&&u.push({id:h,data:{droppableContainer:o,value:p}})}}return u.sort(eN)};function rN(t,a,r){return{...t,scaleX:a&&r?a.width/r.width:1,scaleY:a&&r?a.height/r.height:1}}function vb(t,a){return t&&a?{x:t.left-a.left,y:t.top-a.top}:ll}function sN(t){return function(r){for(var i=arguments.length,u=new Array(i>1?i-1:0),o=1;o<i;o++)u[o-1]=arguments[o];return u.reduce((h,m)=>({...h,top:h.top+t*m.y,bottom:h.bottom+t*m.y,left:h.left+t*m.x,right:h.right+t*m.x}),{...r})}}const iN=sN(1);function yb(t){if(t.startsWith("matrix3d(")){const a=t.slice(9,-1).split(/, /);return{x:+a[12],y:+a[13],scaleX:+a[0],scaleY:+a[5]}}else if(t.startsWith("matrix(")){const a=t.slice(7,-1).split(/, /);return{x:+a[4],y:+a[5],scaleX:+a[0],scaleY:+a[3]}}return null}function uN(t,a,r){const i=yb(a);if(!i)return t;const{scaleX:u,scaleY:o,x:h,y:m}=i,p=t.left-h-(1-u)*parseFloat(r),g=t.top-m-(1-o)*parseFloat(r.slice(r.indexOf(" ")+1)),x=u?t.width/u:t.width,b=o?t.height/o:t.height;return{width:x,height:b,top:g,right:p+x,bottom:g+b,left:p}}const oN={ignoreTransform:!1};function ui(t,a){a===void 0&&(a=oN);let r=t.getBoundingClientRect();if(a.ignoreTransform){const{transform:g,transformOrigin:x}=oa(t).getComputedStyle(t);g&&(r=uN(r,g,x))}const{top:i,left:u,width:o,height:h,bottom:m,right:p}=r;return{top:i,left:u,width:o,height:h,bottom:m,right:p}}function zy(t){return ui(t,{ignoreTransform:!0})}function cN(t){const a=t.innerWidth,r=t.innerHeight;return{top:0,left:0,right:a,bottom:r,width:a,height:r}}function dN(t,a){return a===void 0&&(a=oa(t).getComputedStyle(t)),a.position==="fixed"}function fN(t,a){a===void 0&&(a=oa(t).getComputedStyle(t));const r=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(u=>{const o=a[u];return typeof o=="string"?r.test(o):!1})}function lm(t,a){const r=[];function i(u){if(a!=null&&r.length>=a||!u)return r;if(am(u)&&u.scrollingElement!=null&&!r.includes(u.scrollingElement))return r.push(u.scrollingElement),r;if(!Mu(u)||mb(u)||r.includes(u))return r;const o=oa(t).getComputedStyle(u);return u!==t&&fN(u,o)&&r.push(u),dN(u,o)?r:i(u.parentNode)}return t?i(t):r}function xb(t){const[a]=lm(t,1);return a??null}function sh(t){return!Bc||!t?null:si(t)?t:nm(t)?am(t)||t===ii(t).scrollingElement?window:Mu(t)?t:null:null}function bb(t){return si(t)?t.scrollX:t.scrollLeft}function Sb(t){return si(t)?t.scrollY:t.scrollTop}function Ch(t){return{x:bb(t),y:Sb(t)}}var Hn;(function(t){t[t.Forward=1]="Forward",t[t.Backward=-1]="Backward"})(Hn||(Hn={}));function Eb(t){return!Bc||!t?!1:t===document.scrollingElement}function wb(t){const a={x:0,y:0},r=Eb(t)?{height:window.innerHeight,width:window.innerWidth}:{height:t.clientHeight,width:t.clientWidth},i={x:t.scrollWidth-r.width,y:t.scrollHeight-r.height},u=t.scrollTop<=a.y,o=t.scrollLeft<=a.x,h=t.scrollTop>=i.y,m=t.scrollLeft>=i.x;return{isTop:u,isLeft:o,isBottom:h,isRight:m,maxScroll:i,minScroll:a}}const hN={x:.2,y:.2};function mN(t,a,r,i,u){let{top:o,left:h,right:m,bottom:p}=r;i===void 0&&(i=10),u===void 0&&(u=hN);const{isTop:g,isBottom:x,isLeft:b,isRight:w}=wb(t),S={x:0,y:0},R={x:0,y:0},C={height:a.height*u.y,width:a.width*u.x};return!g&&o<=a.top+C.height?(S.y=Hn.Backward,R.y=i*Math.abs((a.top+C.height-o)/C.height)):!x&&p>=a.bottom-C.height&&(S.y=Hn.Forward,R.y=i*Math.abs((a.bottom-C.height-p)/C.height)),!w&&m>=a.right-C.width?(S.x=Hn.Forward,R.x=i*Math.abs((a.right-C.width-m)/C.width)):!b&&h<=a.left+C.width&&(S.x=Hn.Backward,R.x=i*Math.abs((a.left+C.width-h)/C.width)),{direction:S,speed:R}}function pN(t){if(t===document.scrollingElement){const{innerWidth:o,innerHeight:h}=window;return{top:0,left:0,right:o,bottom:h,width:o,height:h}}const{top:a,left:r,right:i,bottom:u}=t.getBoundingClientRect();return{top:a,left:r,right:i,bottom:u,width:t.clientWidth,height:t.clientHeight}}function Rb(t){return t.reduce((a,r)=>Js(a,Ch(r)),ll)}function gN(t){return t.reduce((a,r)=>a+bb(r),0)}function vN(t){return t.reduce((a,r)=>a+Sb(r),0)}function Nb(t,a){if(a===void 0&&(a=ui),!t)return;const{top:r,left:i,bottom:u,right:o}=a(t);xb(t)&&(u<=0||o<=0||r>=window.innerHeight||i>=window.innerWidth)&&t.scrollIntoView({block:"center",inline:"center"})}const yN=[["x",["left","right"],gN],["y",["top","bottom"],vN]];class rm{constructor(a,r){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;const i=lm(r),u=Rb(i);this.rect={...a},this.width=a.width,this.height=a.height;for(const[o,h,m]of yN)for(const p of h)Object.defineProperty(this,p,{get:()=>{const g=m(i),x=u[o]-g;return this.rect[p]+x},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class hu{constructor(a){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(r=>{var i;return(i=this.target)==null?void 0:i.removeEventListener(...r)})},this.target=a}add(a,r,i){var u;(u=this.target)==null||u.addEventListener(a,r,i),this.listeners.push([a,r,i])}}function xN(t){const{EventTarget:a}=oa(t);return t instanceof a?t:ii(t)}function ih(t,a){const r=Math.abs(t.x),i=Math.abs(t.y);return typeof a=="number"?Math.sqrt(r**2+i**2)>a:"x"in a&&"y"in a?r>a.x&&i>a.y:"x"in a?r>a.x:"y"in a?i>a.y:!1}var Xa;(function(t){t.Click="click",t.DragStart="dragstart",t.Keydown="keydown",t.ContextMenu="contextmenu",t.Resize="resize",t.SelectionChange="selectionchange",t.VisibilityChange="visibilitychange"})(Xa||(Xa={}));function Uy(t){t.preventDefault()}function bN(t){t.stopPropagation()}var Ct;(function(t){t.Space="Space",t.Down="ArrowDown",t.Right="ArrowRight",t.Left="ArrowLeft",t.Up="ArrowUp",t.Esc="Escape",t.Enter="Enter",t.Tab="Tab"})(Ct||(Ct={}));const Tb={start:[Ct.Space,Ct.Enter],cancel:[Ct.Esc],end:[Ct.Space,Ct.Enter,Ct.Tab]},SN=(t,a)=>{let{currentCoordinates:r}=a;switch(t.code){case Ct.Right:return{...r,x:r.x+25};case Ct.Left:return{...r,x:r.x-25};case Ct.Down:return{...r,y:r.y+25};case Ct.Up:return{...r,y:r.y-25}}};class jb{constructor(a){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=a;const{event:{target:r}}=a;this.props=a,this.listeners=new hu(ii(r)),this.windowListeners=new hu(oa(r)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Xa.Resize,this.handleCancel),this.windowListeners.add(Xa.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Xa.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:a,onStart:r}=this.props,i=a.node.current;i&&Nb(i),r(ll)}handleKeyDown(a){if(qc(a)){const{active:r,context:i,options:u}=this.props,{keyboardCodes:o=Tb,coordinateGetter:h=SN,scrollBehavior:m="smooth"}=u,{code:p}=a;if(o.end.includes(p)){this.handleEnd(a);return}if(o.cancel.includes(p)){this.handleCancel(a);return}const{collisionRect:g}=i.current,x=g?{x:g.left,y:g.top}:ll;this.referenceCoordinates||(this.referenceCoordinates=x);const b=h(a,{active:r,context:i.current,currentCoordinates:x});if(b){const w=Ec(b,x),S={x:0,y:0},{scrollableAncestors:R}=i.current;for(const C of R){const N=a.code,{isTop:z,isRight:I,isLeft:q,isBottom:Q,maxScroll:ee,minScroll:te}=wb(C),D=pN(C),j={x:Math.min(N===Ct.Right?D.right-D.width/2:D.right,Math.max(N===Ct.Right?D.left:D.left+D.width/2,b.x)),y:Math.min(N===Ct.Down?D.bottom-D.height/2:D.bottom,Math.max(N===Ct.Down?D.top:D.top+D.height/2,b.y))},re=N===Ct.Right&&!I||N===Ct.Left&&!q,ue=N===Ct.Down&&!Q||N===Ct.Up&&!z;if(re&&j.x!==b.x){const xe=C.scrollLeft+w.x,pe=N===Ct.Right&&xe<=ee.x||N===Ct.Left&&xe>=te.x;if(pe&&!w.y){C.scrollTo({left:xe,behavior:m});return}pe?S.x=C.scrollLeft-xe:S.x=N===Ct.Right?C.scrollLeft-ee.x:C.scrollLeft-te.x,S.x&&C.scrollBy({left:-S.x,behavior:m});break}else if(ue&&j.y!==b.y){const xe=C.scrollTop+w.y,pe=N===Ct.Down&&xe<=ee.y||N===Ct.Up&&xe>=te.y;if(pe&&!w.x){C.scrollTo({top:xe,behavior:m});return}pe?S.y=C.scrollTop-xe:S.y=N===Ct.Down?C.scrollTop-ee.y:C.scrollTop-te.y,S.y&&C.scrollBy({top:-S.y,behavior:m});break}}this.handleMove(a,Js(Ec(b,this.referenceCoordinates),S))}}}handleMove(a,r){const{onMove:i}=this.props;a.preventDefault(),i(r)}handleEnd(a){const{onEnd:r}=this.props;a.preventDefault(),this.detach(),r()}handleCancel(a){const{onCancel:r}=this.props;a.preventDefault(),this.detach(),r()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}jb.activators=[{eventName:"onKeyDown",handler:(t,a,r)=>{let{keyboardCodes:i=Tb,onActivation:u}=a,{active:o}=r;const{code:h}=t.nativeEvent;if(i.start.includes(h)){const m=o.activatorNode.current;return m&&t.target!==m?!1:(t.preventDefault(),u==null||u({event:t.nativeEvent}),!0)}return!1}}];function Hy(t){return!!(t&&"distance"in t)}function By(t){return!!(t&&"delay"in t)}class sm{constructor(a,r,i){var u;i===void 0&&(i=xN(a.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=a,this.events=r;const{event:o}=a,{target:h}=o;this.props=a,this.events=r,this.document=ii(h),this.documentListeners=new hu(this.document),this.listeners=new hu(i),this.windowListeners=new hu(oa(h)),this.initialCoordinates=(u=wc(o))!=null?u:ll,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(){const{events:a,props:{options:{activationConstraint:r,bypassActivationConstraint:i}}}=this;if(this.listeners.add(a.move.name,this.handleMove,{passive:!1}),this.listeners.add(a.end.name,this.handleEnd),a.cancel&&this.listeners.add(a.cancel.name,this.handleCancel),this.windowListeners.add(Xa.Resize,this.handleCancel),this.windowListeners.add(Xa.DragStart,Uy),this.windowListeners.add(Xa.VisibilityChange,this.handleCancel),this.windowListeners.add(Xa.ContextMenu,Uy),this.documentListeners.add(Xa.Keydown,this.handleKeydown),r){if(i!=null&&i({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(By(r)){this.timeoutId=setTimeout(this.handleStart,r.delay),this.handlePending(r);return}if(Hy(r)){this.handlePending(r);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(a,r){const{active:i,onPending:u}=this.props;u(i,a,this.initialCoordinates,r)}handleStart(){const{initialCoordinates:a}=this,{onStart:r}=this.props;a&&(this.activated=!0,this.documentListeners.add(Xa.Click,bN,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Xa.SelectionChange,this.removeTextSelection),r(a))}handleMove(a){var r;const{activated:i,initialCoordinates:u,props:o}=this,{onMove:h,options:{activationConstraint:m}}=o;if(!u)return;const p=(r=wc(a))!=null?r:ll,g=Ec(u,p);if(!i&&m){if(Hy(m)){if(m.tolerance!=null&&ih(g,m.tolerance))return this.handleCancel();if(ih(g,m.distance))return this.handleStart()}if(By(m)&&ih(g,m.tolerance))return this.handleCancel();this.handlePending(m,g);return}a.cancelable&&a.preventDefault(),h(p)}handleEnd(){const{onAbort:a,onEnd:r}=this.props;this.detach(),this.activated||a(this.props.active),r()}handleCancel(){const{onAbort:a,onCancel:r}=this.props;this.detach(),this.activated||a(this.props.active),r()}handleKeydown(a){a.code===Ct.Esc&&this.handleCancel()}removeTextSelection(){var a;(a=this.document.getSelection())==null||a.removeAllRanges()}}const EN={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class im extends sm{constructor(a){const{event:r}=a,i=ii(r.target);super(a,EN,i)}}im.activators=[{eventName:"onPointerDown",handler:(t,a)=>{let{nativeEvent:r}=t,{onActivation:i}=a;return!r.isPrimary||r.button!==0?!1:(i==null||i({event:r}),!0)}}];const wN={move:{name:"mousemove"},end:{name:"mouseup"}};var Ah;(function(t){t[t.RightClick=2]="RightClick"})(Ah||(Ah={}));class RN extends sm{constructor(a){super(a,wN,ii(a.event.target))}}RN.activators=[{eventName:"onMouseDown",handler:(t,a)=>{let{nativeEvent:r}=t,{onActivation:i}=a;return r.button===Ah.RightClick?!1:(i==null||i({event:r}),!0)}}];const uh={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class NN extends sm{constructor(a){super(a,uh)}static setup(){return window.addEventListener(uh.move.name,a,{capture:!1,passive:!1}),function(){window.removeEventListener(uh.move.name,a)};function a(){}}}NN.activators=[{eventName:"onTouchStart",handler:(t,a)=>{let{nativeEvent:r}=t,{onActivation:i}=a;const{touches:u}=r;return u.length>1?!1:(i==null||i({event:r}),!0)}}];var mu;(function(t){t[t.Pointer=0]="Pointer",t[t.DraggableRect=1]="DraggableRect"})(mu||(mu={}));var Nc;(function(t){t[t.TreeOrder=0]="TreeOrder",t[t.ReversedTreeOrder=1]="ReversedTreeOrder"})(Nc||(Nc={}));function TN(t){let{acceleration:a,activator:r=mu.Pointer,canScroll:i,draggingRect:u,enabled:o,interval:h=5,order:m=Nc.TreeOrder,pointerCoordinates:p,scrollableAncestors:g,scrollableAncestorRects:x,delta:b,threshold:w}=t;const S=DN({delta:b,disabled:!o}),[R,C]=zR(),N=v.useRef({x:0,y:0}),z=v.useRef({x:0,y:0}),I=v.useMemo(()=>{switch(r){case mu.Pointer:return p?{top:p.y,bottom:p.y,left:p.x,right:p.x}:null;case mu.DraggableRect:return u}},[r,u,p]),q=v.useRef(null),Q=v.useCallback(()=>{const te=q.current;if(!te)return;const D=N.current.x*z.current.x,j=N.current.y*z.current.y;te.scrollBy(D,j)},[]),ee=v.useMemo(()=>m===Nc.TreeOrder?[...g].reverse():g,[m,g]);v.useEffect(()=>{if(!o||!g.length||!I){C();return}for(const te of ee){if((i==null?void 0:i(te))===!1)continue;const D=g.indexOf(te),j=x[D];if(!j)continue;const{direction:re,speed:ue}=mN(te,j,I,a,w);for(const xe of["x","y"])S[xe][re[xe]]||(ue[xe]=0,re[xe]=0);if(ue.x>0||ue.y>0){C(),q.current=te,R(Q,h),N.current=ue,z.current=re;return}}N.current={x:0,y:0},z.current={x:0,y:0},C()},[a,Q,i,C,o,h,JSON.stringify(I),JSON.stringify(S),R,g,ee,x,JSON.stringify(w)])}const jN={x:{[Hn.Backward]:!1,[Hn.Forward]:!1},y:{[Hn.Backward]:!1,[Hn.Forward]:!1}};function DN(t){let{delta:a,disabled:r}=t;const i=Sc(a);return ku(u=>{if(r||!i||!u)return jN;const o={x:Math.sign(a.x-i.x),y:Math.sign(a.y-i.y)};return{x:{[Hn.Backward]:u.x[Hn.Backward]||o.x===-1,[Hn.Forward]:u.x[Hn.Forward]||o.x===1},y:{[Hn.Backward]:u.y[Hn.Backward]||o.y===-1,[Hn.Forward]:u.y[Hn.Forward]||o.y===1}}},[r,a,i])}function CN(t,a){const r=a!=null?t.get(a):void 0,i=r?r.node.current:null;return ku(u=>{var o;return a==null?null:(o=i??u)!=null?o:null},[i,a])}function AN(t,a){return v.useMemo(()=>t.reduce((r,i)=>{const{sensor:u}=i,o=u.activators.map(h=>({eventName:h.eventName,handler:a(h.handler,i)}));return[...r,...o]},[]),[t,a])}var Su;(function(t){t[t.Always=0]="Always",t[t.BeforeDragging=1]="BeforeDragging",t[t.WhileDragging=2]="WhileDragging"})(Su||(Su={}));var Oh;(function(t){t.Optimized="optimized"})(Oh||(Oh={}));const $y=new Map;function ON(t,a){let{dragging:r,dependencies:i,config:u}=a;const[o,h]=v.useState(null),{frequency:m,measure:p,strategy:g}=u,x=v.useRef(t),b=N(),w=bu(b),S=v.useCallback(function(z){z===void 0&&(z=[]),!w.current&&h(I=>I===null?z:I.concat(z.filter(q=>!I.includes(q))))},[w]),R=v.useRef(null),C=ku(z=>{if(b&&!r)return $y;if(!z||z===$y||x.current!==t||o!=null){const I=new Map;for(let q of t){if(!q)continue;if(o&&o.length>0&&!o.includes(q.id)&&q.rect.current){I.set(q.id,q.rect.current);continue}const Q=q.node.current,ee=Q?new rm(p(Q),Q):null;q.rect.current=ee,ee&&I.set(q.id,ee)}return I}return z},[t,o,r,b,p]);return v.useEffect(()=>{x.current=t},[t]),v.useEffect(()=>{b||S()},[r,b]),v.useEffect(()=>{o&&o.length>0&&h(null)},[JSON.stringify(o)]),v.useEffect(()=>{b||typeof m!="number"||R.current!==null||(R.current=setTimeout(()=>{S(),R.current=null},m))},[m,b,S,...i]),{droppableRects:C,measureDroppableContainers:S,measuringScheduled:o!=null};function N(){switch(g){case Su.Always:return!1;case Su.BeforeDragging:return r;default:return!r}}}function um(t,a){return ku(r=>t?r||(typeof a=="function"?a(t):t):null,[a,t])}function MN(t,a){return um(t,a)}function kN(t){let{callback:a,disabled:r}=t;const i=$c(a),u=v.useMemo(()=>{if(r||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:o}=window;return new o(i)},[i,r]);return v.useEffect(()=>()=>u==null?void 0:u.disconnect(),[u]),u}function Yc(t){let{callback:a,disabled:r}=t;const i=$c(a),u=v.useMemo(()=>{if(r||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:o}=window;return new o(i)},[r]);return v.useEffect(()=>()=>u==null?void 0:u.disconnect(),[u]),u}function _N(t){return new rm(ui(t),t)}function qy(t,a,r){a===void 0&&(a=_N);const[i,u]=v.useState(null);function o(){u(p=>{if(!t)return null;if(t.isConnected===!1){var g;return(g=p??r)!=null?g:null}const x=a(t);return JSON.stringify(p)===JSON.stringify(x)?p:x})}const h=kN({callback(p){if(t)for(const g of p){const{type:x,target:b}=g;if(x==="childList"&&b instanceof HTMLElement&&b.contains(t)){o();break}}}}),m=Yc({callback:o});return al(()=>{o(),t?(m==null||m.observe(t),h==null||h.observe(document.body,{childList:!0,subtree:!0})):(m==null||m.disconnect(),h==null||h.disconnect())},[t]),i}function LN(t){const a=um(t);return vb(t,a)}const Yy=[];function zN(t){const a=v.useRef(t),r=ku(i=>t?i&&i!==Yy&&t&&a.current&&t.parentNode===a.current.parentNode?i:lm(t):Yy,[t]);return v.useEffect(()=>{a.current=t},[t]),r}function UN(t){const[a,r]=v.useState(null),i=v.useRef(t),u=v.useCallback(o=>{const h=sh(o.target);h&&r(m=>m?(m.set(h,Ch(h)),new Map(m)):null)},[]);return v.useEffect(()=>{const o=i.current;if(t!==o){h(o);const m=t.map(p=>{const g=sh(p);return g?(g.addEventListener("scroll",u,{passive:!0}),[g,Ch(g)]):null}).filter(p=>p!=null);r(m.length?new Map(m):null),i.current=t}return()=>{h(t),h(o)};function h(m){m.forEach(p=>{const g=sh(p);g==null||g.removeEventListener("scroll",u)})}},[u,t]),v.useMemo(()=>t.length?a?Array.from(a.values()).reduce((o,h)=>Js(o,h),ll):Rb(t):ll,[t,a])}function Vy(t,a){a===void 0&&(a=[]);const r=v.useRef(null);return v.useEffect(()=>{r.current=null},a),v.useEffect(()=>{const i=t!==ll;i&&!r.current&&(r.current=t),!i&&r.current&&(r.current=null)},[t]),r.current?Ec(t,r.current):ll}function HN(t){v.useEffect(()=>{if(!Bc)return;const a=t.map(r=>{let{sensor:i}=r;return i.setup==null?void 0:i.setup()});return()=>{for(const r of a)r==null||r()}},t.map(a=>{let{sensor:r}=a;return r}))}function BN(t,a){return v.useMemo(()=>t.reduce((r,i)=>{let{eventName:u,handler:o}=i;return r[u]=h=>{o(h,a)},r},{}),[t,a])}function Db(t){return v.useMemo(()=>t?cN(t):null,[t])}const Fy=[];function $N(t,a){a===void 0&&(a=ui);const[r]=t,i=Db(r?oa(r):null),[u,o]=v.useState(Fy);function h(){o(()=>t.length?t.map(p=>Eb(p)?i:new rm(a(p),p)):Fy)}const m=Yc({callback:h});return al(()=>{m==null||m.disconnect(),h(),t.forEach(p=>m==null?void 0:m.observe(p))},[t]),u}function Cb(t){if(!t)return null;if(t.children.length>1)return t;const a=t.children[0];return Mu(a)?a:t}function qN(t){let{measure:a}=t;const[r,i]=v.useState(null),u=v.useCallback(g=>{for(const{target:x}of g)if(Mu(x)){i(b=>{const w=a(x);return b?{...b,width:w.width,height:w.height}:w});break}},[a]),o=Yc({callback:u}),h=v.useCallback(g=>{const x=Cb(g);o==null||o.disconnect(),x&&(o==null||o.observe(x)),i(x?a(x):null)},[a,o]),[m,p]=bc(h);return v.useMemo(()=>({nodeRef:m,rect:r,setRef:p}),[r,m,p])}const YN=[{sensor:im,options:{}},{sensor:jb,options:{}}],VN={current:{}},fc={draggable:{measure:zy},droppable:{measure:zy,strategy:Su.WhileDragging,frequency:Oh.Optimized},dragOverlay:{measure:ui}};class pu extends Map{get(a){var r;return a!=null&&(r=super.get(a))!=null?r:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(a=>{let{disabled:r}=a;return!r})}getNodeFor(a){var r,i;return(r=(i=this.get(a))==null?void 0:i.node.current)!=null?r:void 0}}const FN={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new pu,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:Rc},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:fc,measureDroppableContainers:Rc,windowRect:null,measuringScheduled:!1},Ab={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:Rc,draggableNodes:new Map,over:null,measureDroppableContainers:Rc},Lu=v.createContext(Ab),Ob=v.createContext(FN);function GN(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new pu}}}function XN(t,a){switch(a.type){case Ln.DragStart:return{...t,draggable:{...t.draggable,initialCoordinates:a.initialCoordinates,active:a.active}};case Ln.DragMove:return t.draggable.active==null?t:{...t,draggable:{...t.draggable,translate:{x:a.coordinates.x-t.draggable.initialCoordinates.x,y:a.coordinates.y-t.draggable.initialCoordinates.y}}};case Ln.DragEnd:case Ln.DragCancel:return{...t,draggable:{...t.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case Ln.RegisterDroppable:{const{element:r}=a,{id:i}=r,u=new pu(t.droppable.containers);return u.set(i,r),{...t,droppable:{...t.droppable,containers:u}}}case Ln.SetDroppableDisabled:{const{id:r,key:i,disabled:u}=a,o=t.droppable.containers.get(r);if(!o||i!==o.key)return t;const h=new pu(t.droppable.containers);return h.set(r,{...o,disabled:u}),{...t,droppable:{...t.droppable,containers:h}}}case Ln.UnregisterDroppable:{const{id:r,key:i}=a,u=t.droppable.containers.get(r);if(!u||i!==u.key)return t;const o=new pu(t.droppable.containers);return o.delete(r),{...t,droppable:{...t.droppable,containers:o}}}default:return t}}function IN(t){let{disabled:a}=t;const{active:r,activatorEvent:i,draggableNodes:u}=v.useContext(Lu),o=Sc(i),h=Sc(r==null?void 0:r.id);return v.useEffect(()=>{if(!a&&!i&&o&&h!=null){if(!qc(o)||document.activeElement===o.target)return;const m=u.get(h);if(!m)return;const{activatorNode:p,node:g}=m;if(!p.current&&!g.current)return;requestAnimationFrame(()=>{for(const x of[p.current,g.current]){if(!x)continue;const b=BR(x);if(b){b.focus();break}}})}},[i,a,u,h,o]),null}function Mb(t,a){let{transform:r,...i}=a;return t!=null&&t.length?t.reduce((u,o)=>o({transform:u,...i}),r):r}function QN(t){return v.useMemo(()=>({draggable:{...fc.draggable,...t==null?void 0:t.draggable},droppable:{...fc.droppable,...t==null?void 0:t.droppable},dragOverlay:{...fc.dragOverlay,...t==null?void 0:t.dragOverlay}}),[t==null?void 0:t.draggable,t==null?void 0:t.droppable,t==null?void 0:t.dragOverlay])}function PN(t){let{activeNode:a,measure:r,initialRect:i,config:u=!0}=t;const o=v.useRef(!1),{x:h,y:m}=typeof u=="boolean"?{x:u,y:u}:u;al(()=>{if(!h&&!m||!a){o.current=!1;return}if(o.current||!i)return;const g=a==null?void 0:a.node.current;if(!g||g.isConnected===!1)return;const x=r(g),b=vb(x,i);if(h||(b.x=0),m||(b.y=0),o.current=!0,Math.abs(b.x)>0||Math.abs(b.y)>0){const w=xb(g);w&&w.scrollBy({top:b.y,left:b.x})}},[a,h,m,i,r])}const Vc=v.createContext({...ll,scaleX:1,scaleY:1});var Dr;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initializing=1]="Initializing",t[t.Initialized=2]="Initialized"})(Dr||(Dr={}));const KN=v.memo(function(a){var r,i,u,o;let{id:h,accessibility:m,autoScroll:p=!0,children:g,sensors:x=YN,collisionDetection:b=lN,measuring:w,modifiers:S,...R}=a;const C=v.useReducer(XN,void 0,GN),[N,z]=C,[I,q]=GR(),[Q,ee]=v.useState(Dr.Uninitialized),te=Q===Dr.Initialized,{draggable:{active:D,nodes:j,translate:re},droppable:{containers:ue}}=N,xe=D!=null?j.get(D):null,pe=v.useRef({initial:null,translated:null}),Te=v.useMemo(()=>{var Yt;return D!=null?{id:D,data:(Yt=xe==null?void 0:xe.data)!=null?Yt:VN,rect:pe}:null},[D,xe]),Ae=v.useRef(null),[Re,B]=v.useState(null),[V,de]=v.useState(null),fe=bu(R,Object.values(R)),Ne=_u("DndDescribedBy",h),O=v.useMemo(()=>ue.getEnabled(),[ue]),X=QN(w),{droppableRects:se,measureDroppableContainers:ce,measuringScheduled:we}=ON(O,{dragging:te,dependencies:[re.x,re.y],config:X.droppable}),Se=CN(j,D),He=v.useMemo(()=>V?wc(V):null,[V]),it=Qt(),Fe=MN(Se,X.draggable.measure);PN({activeNode:D!=null?j.get(D):null,config:it.layoutShiftCompensation,initialRect:Fe,measure:X.draggable.measure});const et=qy(Se,X.draggable.measure,Fe),en=qy(Se?Se.parentElement:null),qt=v.useRef({activatorEvent:null,active:null,activeNode:Se,collisionRect:null,collisions:null,droppableRects:se,draggableNodes:j,draggingNode:null,draggingNodeRect:null,droppableContainers:ue,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ut=ue.getNodeFor((r=qt.current.over)==null?void 0:r.id),le=qN({measure:X.dragOverlay.measure}),Le=(i=le.nodeRef.current)!=null?i:Se,at=te?(u=le.rect)!=null?u:et:null,Xt=!!(le.nodeRef.current&&le.rect),Cn=LN(Xt?null:et),pn=Db(Le?oa(Le):null),_t=zN(te?ut??Se:null),Wt=$N(_t),Yn=Mb(S,{transform:{x:re.x-Cn.x,y:re.y-Cn.y,scaleX:1,scaleY:1},activatorEvent:V,active:Te,activeNodeRect:et,containerNodeRect:en,draggingNodeRect:at,over:qt.current.over,overlayNodeRect:le.rect,scrollableAncestors:_t,scrollableAncestorRects:Wt,windowRect:pn}),ye=He?Js(He,re):null,Oe=UN(_t),ze=Vy(Oe),Ge=Vy(Oe,[et]),lt=Js(Yn,ze),At=at?iN(at,Yn):null,Ot=Te&&At?b({active:Te,collisionRect:At,droppableRects:se,droppableContainers:O,pointerCoordinates:ye}):null,tn=tN(Ot,"id"),[It,ca]=v.useState(null),gn=Xt?Yn:Js(Yn,Ge),J=rN(gn,(o=It==null?void 0:It.rect)!=null?o:null,et),St=v.useRef(null),Lt=v.useCallback((Yt,gt)=>{let{sensor:zt,options:Rt}=gt;if(Ae.current==null)return;const nn=j.get(Ae.current);if(!nn)return;const Pt=Yt.nativeEvent,Ut=new zt({active:Ae.current,activeNode:nn,event:Pt,options:Rt,context:qt,onAbort(Ke){if(!j.get(Ke))return;const{onDragAbort:An}=fe.current,A={id:Ke};An==null||An(A),I({type:"onDragAbort",event:A})},onPending(Ke,Sn,An,A){if(!j.get(Ke))return;const{onDragPending:H}=fe.current,K={id:Ke,constraint:Sn,initialCoordinates:An,offset:A};H==null||H(K),I({type:"onDragPending",event:K})},onStart(Ke){const Sn=Ae.current;if(Sn==null)return;const An=j.get(Sn);if(!An)return;const{onDragStart:A}=fe.current,_={activatorEvent:Pt,active:{id:Sn,data:An.data,rect:pe}};Zl.unstable_batchedUpdates(()=>{A==null||A(_),ee(Dr.Initializing),z({type:Ln.DragStart,initialCoordinates:Ke,active:Sn}),I({type:"onDragStart",event:_}),B(St.current),de(Pt)})},onMove(Ke){z({type:Ln.DragMove,coordinates:Ke})},onEnd:dt(Ln.DragEnd),onCancel:dt(Ln.DragCancel)});St.current=Ut;function dt(Ke){return async function(){const{active:An,collisions:A,over:_,scrollAdjustedTranslate:H}=qt.current;let K=null;if(An&&H){const{cancelDrop:ne}=fe.current;K={activatorEvent:Pt,active:An,collisions:A,delta:H,over:_},Ke===Ln.DragEnd&&typeof ne=="function"&&await Promise.resolve(ne(K))&&(Ke=Ln.DragCancel)}Ae.current=null,Zl.unstable_batchedUpdates(()=>{z({type:Ke}),ee(Dr.Uninitialized),ca(null),B(null),de(null),St.current=null;const ne=Ke===Ln.DragEnd?"onDragEnd":"onDragCancel";if(K){const Ee=fe.current[ne];Ee==null||Ee(K),I({type:ne,event:K})}})}}},[j]),er=v.useCallback((Yt,gt)=>(zt,Rt)=>{const nn=zt.nativeEvent,Pt=j.get(Rt);if(Ae.current!==null||!Pt||nn.dndKit||nn.defaultPrevented)return;const Ut={active:Pt};Yt(zt,gt.options,Ut)===!0&&(nn.dndKit={capturedBy:gt.sensor},Ae.current=Rt,Lt(zt,gt))},[j,Lt]),Zn=AN(x,er);HN(x),al(()=>{et&&Q===Dr.Initializing&&ee(Dr.Initialized)},[et,Q]),v.useEffect(()=>{const{onDragMove:Yt}=fe.current,{active:gt,activatorEvent:zt,collisions:Rt,over:nn}=qt.current;if(!gt||!zt)return;const Pt={active:gt,activatorEvent:zt,collisions:Rt,delta:{x:lt.x,y:lt.y},over:nn};Zl.unstable_batchedUpdates(()=>{Yt==null||Yt(Pt),I({type:"onDragMove",event:Pt})})},[lt.x,lt.y]),v.useEffect(()=>{const{active:Yt,activatorEvent:gt,collisions:zt,droppableContainers:Rt,scrollAdjustedTranslate:nn}=qt.current;if(!Yt||Ae.current==null||!gt||!nn)return;const{onDragOver:Pt}=fe.current,Ut=Rt.get(tn),dt=Ut&&Ut.rect.current?{id:Ut.id,rect:Ut.rect.current,data:Ut.data,disabled:Ut.disabled}:null,Ke={active:Yt,activatorEvent:gt,collisions:zt,delta:{x:nn.x,y:nn.y},over:dt};Zl.unstable_batchedUpdates(()=>{ca(dt),Pt==null||Pt(Ke),I({type:"onDragOver",event:Ke})})},[tn]),al(()=>{qt.current={activatorEvent:V,active:Te,activeNode:Se,collisionRect:At,collisions:Ot,droppableRects:se,draggableNodes:j,draggingNode:Le,draggingNodeRect:at,droppableContainers:ue,over:It,scrollableAncestors:_t,scrollAdjustedTranslate:lt},pe.current={initial:at,translated:At}},[Te,Se,Ot,At,j,Le,at,se,ue,It,_t,lt]),TN({...it,delta:re,draggingRect:At,pointerCoordinates:ye,scrollableAncestors:_t,scrollableAncestorRects:Wt});const Nl=v.useMemo(()=>({active:Te,activeNode:Se,activeNodeRect:et,activatorEvent:V,collisions:Ot,containerNodeRect:en,dragOverlay:le,draggableNodes:j,droppableContainers:ue,droppableRects:se,over:It,measureDroppableContainers:ce,scrollableAncestors:_t,scrollableAncestorRects:Wt,measuringConfiguration:X,measuringScheduled:we,windowRect:pn}),[Te,Se,et,V,Ot,en,le,j,ue,se,It,ce,_t,Wt,X,we,pn]),$e=v.useMemo(()=>({activatorEvent:V,activators:Zn,active:Te,activeNodeRect:et,ariaDescribedById:{draggable:Ne},dispatch:z,draggableNodes:j,over:It,measureDroppableContainers:ce}),[V,Zn,Te,et,z,Ne,j,It,ce]);return un.createElement(gb.Provider,{value:q},un.createElement(Lu.Provider,{value:$e},un.createElement(Ob.Provider,{value:Nl},un.createElement(Vc.Provider,{value:J},g)),un.createElement(IN,{disabled:(m==null?void 0:m.restoreFocus)===!1})),un.createElement(QR,{...m,hiddenTextDescribedById:Ne}));function Qt(){const Yt=(Re==null?void 0:Re.autoScrollEnabled)===!1,gt=typeof p=="object"?p.enabled===!1:p===!1,zt=te&&!Yt&&!gt;return typeof p=="object"?{...p,enabled:zt}:{enabled:zt}}}),ZN=v.createContext(null),Gy="button",JN="Draggable";function WN(t){let{id:a,data:r,disabled:i=!1,attributes:u}=t;const o=_u(JN),{activators:h,activatorEvent:m,active:p,activeNodeRect:g,ariaDescribedById:x,draggableNodes:b,over:w}=v.useContext(Lu),{role:S=Gy,roleDescription:R="draggable",tabIndex:C=0}=u??{},N=(p==null?void 0:p.id)===a,z=v.useContext(N?Vc:ZN),[I,q]=bc(),[Q,ee]=bc(),te=BN(h,a),D=bu(r);al(()=>(b.set(a,{id:a,key:o,node:I,activatorNode:Q,data:D}),()=>{const re=b.get(a);re&&re.key===o&&b.delete(a)}),[b,a]);const j=v.useMemo(()=>({role:S,tabIndex:C,"aria-disabled":i,"aria-pressed":N&&S===Gy?!0:void 0,"aria-roledescription":R,"aria-describedby":x.draggable}),[i,S,C,N,R,x.draggable]);return{active:p,activatorEvent:m,activeNodeRect:g,attributes:j,isDragging:N,listeners:i?void 0:te,node:I,over:w,setNodeRef:q,setActivatorNodeRef:ee,transform:z}}function kb(){return v.useContext(Ob)}const e2="Droppable",t2={timeout:25};function n2(t){let{data:a,disabled:r=!1,id:i,resizeObserverConfig:u}=t;const o=_u(e2),{active:h,dispatch:m,over:p,measureDroppableContainers:g}=v.useContext(Lu),x=v.useRef({disabled:r}),b=v.useRef(!1),w=v.useRef(null),S=v.useRef(null),{disabled:R,updateMeasurementsFor:C,timeout:N}={...t2,...u},z=bu(C??i),I=v.useCallback(()=>{if(!b.current){b.current=!0;return}S.current!=null&&clearTimeout(S.current),S.current=setTimeout(()=>{g(Array.isArray(z.current)?z.current:[z.current]),S.current=null},N)},[N]),q=Yc({callback:I,disabled:R||!h}),Q=v.useCallback((j,re)=>{q&&(re&&(q.unobserve(re),b.current=!1),j&&q.observe(j))},[q]),[ee,te]=bc(Q),D=bu(a);return v.useEffect(()=>{!q||!ee.current||(q.disconnect(),b.current=!1,q.observe(ee.current))},[ee,q]),v.useEffect(()=>(m({type:Ln.RegisterDroppable,element:{id:i,key:o,disabled:r,node:ee,rect:w,data:D}}),()=>m({type:Ln.UnregisterDroppable,key:o,id:i})),[i]),v.useEffect(()=>{r!==x.current.disabled&&(m({type:Ln.SetDroppableDisabled,id:i,key:o,disabled:r}),x.current.disabled=r)},[i,o,r,m]),{active:h,rect:w,isOver:(p==null?void 0:p.id)===i,node:ee,over:p,setNodeRef:te}}function a2(t){let{animation:a,children:r}=t;const[i,u]=v.useState(null),[o,h]=v.useState(null),m=Sc(r);return!r&&!i&&m&&u(m),al(()=>{if(!o)return;const p=i==null?void 0:i.key,g=i==null?void 0:i.props.id;if(p==null||g==null){u(null);return}Promise.resolve(a(g,o)).then(()=>{u(null)})},[a,i,o]),un.createElement(un.Fragment,null,r,i?v.cloneElement(i,{ref:h}):null)}const l2={x:0,y:0,scaleX:1,scaleY:1};function r2(t){let{children:a}=t;return un.createElement(Lu.Provider,{value:Ab},un.createElement(Vc.Provider,{value:l2},a))}const s2={position:"fixed",touchAction:"none"},i2=t=>qc(t)?"transform 250ms ease":void 0,u2=v.forwardRef((t,a)=>{let{as:r,activatorEvent:i,adjustScale:u,children:o,className:h,rect:m,style:p,transform:g,transition:x=i2}=t;if(!m)return null;const b=u?g:{...g,scaleX:1,scaleY:1},w={...s2,width:m.width,height:m.height,top:m.top,left:m.left,transform:Or.Transform.toString(b),transformOrigin:u&&i?JR(i,m):void 0,transition:typeof x=="function"?x(i):x,...p};return un.createElement(r,{className:h,style:w,ref:a},o)}),o2=t=>a=>{let{active:r,dragOverlay:i}=a;const u={},{styles:o,className:h}=t;if(o!=null&&o.active)for(const[m,p]of Object.entries(o.active))p!==void 0&&(u[m]=r.node.style.getPropertyValue(m),r.node.style.setProperty(m,p));if(o!=null&&o.dragOverlay)for(const[m,p]of Object.entries(o.dragOverlay))p!==void 0&&i.node.style.setProperty(m,p);return h!=null&&h.active&&r.node.classList.add(h.active),h!=null&&h.dragOverlay&&i.node.classList.add(h.dragOverlay),function(){for(const[p,g]of Object.entries(u))r.node.style.setProperty(p,g);h!=null&&h.active&&r.node.classList.remove(h.active)}},c2=t=>{let{transform:{initial:a,final:r}}=t;return[{transform:Or.Transform.toString(a)},{transform:Or.Transform.toString(r)}]},d2={duration:250,easing:"ease",keyframes:c2,sideEffects:o2({styles:{active:{opacity:"0"}}})};function f2(t){let{config:a,draggableNodes:r,droppableContainers:i,measuringConfiguration:u}=t;return $c((o,h)=>{if(a===null)return;const m=r.get(o);if(!m)return;const p=m.node.current;if(!p)return;const g=Cb(h);if(!g)return;const{transform:x}=oa(h).getComputedStyle(h),b=yb(x);if(!b)return;const w=typeof a=="function"?a:h2(a);return Nb(p,u.draggable.measure),w({active:{id:o,data:m.data,node:p,rect:u.draggable.measure(p)},draggableNodes:r,dragOverlay:{node:h,rect:u.dragOverlay.measure(g)},droppableContainers:i,measuringConfiguration:u,transform:b})})}function h2(t){const{duration:a,easing:r,sideEffects:i,keyframes:u}={...d2,...t};return o=>{let{active:h,dragOverlay:m,transform:p,...g}=o;if(!a)return;const x={x:m.rect.left-h.rect.left,y:m.rect.top-h.rect.top},b={scaleX:p.scaleX!==1?h.rect.width*p.scaleX/m.rect.width:1,scaleY:p.scaleY!==1?h.rect.height*p.scaleY/m.rect.height:1},w={x:p.x-x.x,y:p.y-x.y,...b},S=u({...g,active:h,dragOverlay:m,transform:{initial:p,final:w}}),[R]=S,C=S[S.length-1];if(JSON.stringify(R)===JSON.stringify(C))return;const N=i==null?void 0:i({active:h,dragOverlay:m,...g}),z=m.node.animate(S,{duration:a,easing:r,fill:"forwards"});return new Promise(I=>{z.onfinish=()=>{N==null||N(),I()}})}}let Xy=0;function m2(t){return v.useMemo(()=>{if(t!=null)return Xy++,Xy},[t])}const p2=un.memo(t=>{let{adjustScale:a=!1,children:r,dropAnimation:i,style:u,transition:o,modifiers:h,wrapperElement:m="div",className:p,zIndex:g=999}=t;const{activatorEvent:x,active:b,activeNodeRect:w,containerNodeRect:S,draggableNodes:R,droppableContainers:C,dragOverlay:N,over:z,measuringConfiguration:I,scrollableAncestors:q,scrollableAncestorRects:Q,windowRect:ee}=kb(),te=v.useContext(Vc),D=m2(b==null?void 0:b.id),j=Mb(h,{activatorEvent:x,active:b,activeNodeRect:w,containerNodeRect:S,draggingNodeRect:N.rect,over:z,overlayNodeRect:N.rect,scrollableAncestors:q,scrollableAncestorRects:Q,transform:te,windowRect:ee}),re=um(w),ue=f2({config:i,draggableNodes:R,droppableContainers:C,measuringConfiguration:I}),xe=re?N.setRef:void 0;return un.createElement(r2,null,un.createElement(a2,{animation:ue},b&&D?un.createElement(u2,{key:D,id:b.id,ref:xe,as:m,activatorEvent:x,adjustScale:a,className:p,transition:o,rect:re,style:{zIndex:g,...u},transform:j},r):null))});function gu(t,a,r){const i=t.slice();return i.splice(r<0?i.length+r:r,0,i.splice(a,1)[0]),i}function g2(t,a){return t.reduce((r,i,u)=>{const o=a.get(i);return o&&(r[u]=o),r},Array(t.length))}function ec(t){return t!==null&&t>=0}function v2(t,a){if(t===a)return!0;if(t.length!==a.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==a[r])return!1;return!0}function y2(t){return typeof t=="boolean"?{draggable:t,droppable:t}:t}const _b=t=>{let{rects:a,activeIndex:r,overIndex:i,index:u}=t;const o=gu(a,i,r),h=a[u],m=o[u];return!m||!h?null:{x:m.left-h.left,y:m.top-h.top,scaleX:m.width/h.width,scaleY:m.height/h.height}},tc={scaleX:1,scaleY:1},om=t=>{var a;let{activeIndex:r,activeNodeRect:i,index:u,rects:o,overIndex:h}=t;const m=(a=o[r])!=null?a:i;if(!m)return null;if(u===r){const g=o[h];return g?{x:0,y:r<h?g.top+g.height-(m.top+m.height):g.top-m.top,...tc}:null}const p=x2(o,u,r);return u>r&&u<=h?{x:0,y:-m.height-p,...tc}:u<r&&u>=h?{x:0,y:m.height+p,...tc}:{x:0,y:0,...tc}};function x2(t,a,r){const i=t[a],u=t[a-1],o=t[a+1];return i?r<a?u?i.top-(u.top+u.height):o?o.top-(i.top+i.height):0:o?o.top-(i.top+i.height):u?i.top-(u.top+u.height):0:0}const Lb="Sortable",zb=un.createContext({activeIndex:-1,containerId:Lb,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:_b,disabled:{draggable:!1,droppable:!1}});function cm(t){let{children:a,id:r,items:i,strategy:u=_b,disabled:o=!1}=t;const{active:h,dragOverlay:m,droppableRects:p,over:g,measureDroppableContainers:x}=kb(),b=_u(Lb,r),w=m.rect!==null,S=v.useMemo(()=>i.map(te=>typeof te=="object"&&"id"in te?te.id:te),[i]),R=h!=null,C=h?S.indexOf(h.id):-1,N=g?S.indexOf(g.id):-1,z=v.useRef(S),I=!v2(S,z.current),q=N!==-1&&C===-1||I,Q=y2(o);al(()=>{I&&R&&x(S)},[I,S,R,x]),v.useEffect(()=>{z.current=S},[S]);const ee=v.useMemo(()=>({activeIndex:C,containerId:b,disabled:Q,disableTransforms:q,items:S,overIndex:N,useDragOverlay:w,sortedRects:g2(S,p),strategy:u}),[C,b,Q.draggable,Q.droppable,q,S,N,p,w,u]);return un.createElement(zb.Provider,{value:ee},a)}const b2=t=>{let{id:a,items:r,activeIndex:i,overIndex:u}=t;return gu(r,i,u).indexOf(a)},S2=t=>{let{containerId:a,isSorting:r,wasDragging:i,index:u,items:o,newIndex:h,previousItems:m,previousContainerId:p,transition:g}=t;return!g||!i||m!==o&&u===h?!1:r?!0:h!==u&&a===p},E2={duration:200,easing:"ease"},Ub="transform",w2=Or.Transition.toString({property:Ub,duration:0,easing:"linear"}),R2={roleDescription:"sortable"};function N2(t){let{disabled:a,index:r,node:i,rect:u}=t;const[o,h]=v.useState(null),m=v.useRef(r);return al(()=>{if(!a&&r!==m.current&&i.current){const p=u.current;if(p){const g=ui(i.current,{ignoreTransform:!0}),x={x:p.left-g.left,y:p.top-g.top,scaleX:p.width/g.width,scaleY:p.height/g.height};(x.x||x.y)&&h(x)}}r!==m.current&&(m.current=r)},[a,r,i,u]),v.useEffect(()=>{o&&h(null)},[o]),o}function T2(t){let{animateLayoutChanges:a=S2,attributes:r,disabled:i,data:u,getNewIndex:o=b2,id:h,strategy:m,resizeObserverConfig:p,transition:g=E2}=t;const{items:x,containerId:b,activeIndex:w,disabled:S,disableTransforms:R,sortedRects:C,overIndex:N,useDragOverlay:z,strategy:I}=v.useContext(zb),q=j2(i,S),Q=x.indexOf(h),ee=v.useMemo(()=>({sortable:{containerId:b,index:Q,items:x},...u}),[b,u,Q,x]),te=v.useMemo(()=>x.slice(x.indexOf(h)),[x,h]),{rect:D,node:j,isOver:re,setNodeRef:ue}=n2({id:h,data:ee,disabled:q.droppable,resizeObserverConfig:{updateMeasurementsFor:te,...p}}),{active:xe,activatorEvent:pe,activeNodeRect:Te,attributes:Ae,setNodeRef:Re,listeners:B,isDragging:V,over:de,setActivatorNodeRef:fe,transform:Ne}=WN({id:h,data:ee,attributes:{...R2,...r},disabled:q.draggable}),O=LR(ue,Re),X=!!xe,se=X&&!R&&ec(w)&&ec(N),ce=!z&&V,we=ce&&se?Ne:null,He=se?we??(m??I)({rects:C,activeNodeRect:Te,activeIndex:w,overIndex:N,index:Q}):null,it=ec(w)&&ec(N)?o({id:h,items:x,activeIndex:w,overIndex:N}):Q,Fe=xe==null?void 0:xe.id,et=v.useRef({activeId:Fe,items:x,newIndex:it,containerId:b}),en=x!==et.current.items,qt=a({active:xe,containerId:b,isDragging:V,isSorting:X,id:h,index:Q,items:x,newIndex:et.current.newIndex,previousItems:et.current.items,previousContainerId:et.current.containerId,transition:g,wasDragging:et.current.activeId!=null}),ut=N2({disabled:!qt,index:Q,node:j,rect:D});return v.useEffect(()=>{X&&et.current.newIndex!==it&&(et.current.newIndex=it),b!==et.current.containerId&&(et.current.containerId=b),x!==et.current.items&&(et.current.items=x)},[X,it,b,x]),v.useEffect(()=>{if(Fe===et.current.activeId)return;if(Fe!=null&&et.current.activeId==null){et.current.activeId=Fe;return}const Le=setTimeout(()=>{et.current.activeId=Fe},50);return()=>clearTimeout(Le)},[Fe]),{active:xe,activeIndex:w,attributes:Ae,data:ee,rect:D,index:Q,newIndex:it,items:x,isOver:re,isSorting:X,isDragging:V,listeners:B,node:j,overIndex:N,over:de,setNodeRef:O,setActivatorNodeRef:fe,setDroppableNodeRef:ue,setDraggableNodeRef:Re,transform:ut??He,transition:le()};function le(){if(ut||en&&et.current.newIndex===Q)return w2;if(!(ce&&!qc(pe)||!g)&&(X||qt))return Or.Transition.toString({...g,property:Ub})}}function j2(t,a){var r,i;return typeof t=="boolean"?{draggable:t,droppable:!1}:{draggable:(r=t==null?void 0:t.draggable)!=null?r:a.draggable,droppable:(i=t==null?void 0:t.droppable)!=null?i:a.droppable}}Ct.Down,Ct.Right,Ct.Up,Ct.Left;const Fc=[{value:"planned",label:"Planned"},{value:"in-progress",label:"In progress"},{value:"done",label:"Done"},{value:"blocked",label:"Blocked"},{value:"canceled",label:"Canceled"},{value:"rejected",label:"Rejected"},{value:"deferred",label:"Deferred"},{value:"waiting",label:"Waiting"}],Gc=[{value:"draft",label:"Draft"},{value:"discovery",label:"Discovery"},{value:"planned",label:"Planned"},{value:"in-progress",label:"In progress"},{value:"done",label:"Done"},{value:"blocked",label:"Blocked"},{value:"canceled",label:"Canceled"},{value:"rejected",label:"Rejected"},{value:"deferred",label:"Deferred"},{value:"waiting",label:"Waiting"}],zu=[{value:"planned",label:"Planned"},{value:"in-progress",label:"In progress"},{value:"done",label:"Done"},{value:"blocked",label:"Blocked"},{value:"canceled",label:"Canceled"},{value:"rejected",label:"Rejected"},{value:"deferred",label:"Deferred"},{value:"waiting",label:"Waiting"}],ru=Fc.map(t=>t.value),su=Gc.map(t=>t.value),iu=zu.map(t=>t.value);function oh(t,a,r){if(t.includes(a)){const i=t.filter(u=>u!==a);return i.length===0?[...r]:i}return[...t,a]}function ch(t,a){return a.includes(t)}function gl(t,a){return`agent-plan:dashboard:${t}:${a}`}function dh(t,a,r){if(typeof window>"u")return a;try{const i=window.localStorage.getItem(t);if(!i)return a;const u=JSON.parse(i);if(!Array.isArray(u))return a;const o=`${t}-schema`,h=r.slice().sort().join(",");if(window.localStorage.getItem(o)!==h)return window.localStorage.setItem(o,h),a;const p=u.filter(g=>typeof g=="string"&&r.includes(g));return p.length>0?p:a}catch{return a}}function fh(t,a,r){typeof window>"u"||(window.localStorage.setItem(t,JSON.stringify(a)),window.localStorage.setItem(`${t}-schema`,r.slice().sort().join(",")))}function hh(t,a){if(typeof window>"u")return a;const r=window.localStorage.getItem(t);return r===null?a:r==="true"}const Iy={featureNumbers:null,phaseNumbers:null,taskNumbers:null,shortIds:null,status:null,featureStatus:null,phaseStatus:null,text:null},Qy=/^(feature-status|phase-status|feature|phase|task|id|status|title):(.*)$/i;function Hb(t){return t.split(",").map(a=>a.trim()).filter(a=>a.length>0)}function D2(t){return new Set(Hb(t).map(a=>Number(a)).filter(a=>Number.isFinite(a)&&a>0))}function Py(t){const a=t.toUpperCase();return a==="AND"||a==="OR"}function mh(t,a){const r=t??new Set;for(const i of D2(a))r.add(i);return r}function C2(t,a){const r=t??new Set;for(const i of Hb(a).map(u=>u.toUpperCase()))r.add(i);return r}function A2(t){const a=t.trim();if(!a)return{...Iy};const r={...Iy},i=[],u=[];let o=0;for(;o<a.length;){const m=a[o];if(m==='"'){const p=a.indexOf('"',o+1);if(p===-1){u.push(a.slice(o+1));break}u.push(a.slice(o+1,p)),o=p+1}else if(m===" ")o+=1;else{let p=o;for(;p<a.length&&a[p]!==" ";)p+=1;u.push(a.slice(o,p)),o=p}}let h=0;for(;h<u.length;){const m=u[h];if(Py(m)){h+=1;continue}const p=m.match(Qy);if(p){const g=(p[1]??"").toLowerCase();let x=p[2]??"";if(x.trim()===""&&h+1<u.length){let b=h+1;for(;b<u.length&&Py(u[b]);)b+=1;b<u.length&&!u[b].match(Qy)&&(x=u[b],h=b)}if(g==="feature"){const b=mh(r.featureNumbers,x);b.size&&(r.featureNumbers=b)}else if(g==="phase"){const b=mh(r.phaseNumbers,x);b.size&&(r.phaseNumbers=b)}else if(g==="task"){const b=mh(r.taskNumbers,x);b.size&&(r.taskNumbers=b)}else if(g==="id"){const b=C2(r.shortIds,x);b.size&&(r.shortIds=b)}else g==="status"?x.trim()&&(r.status=x.toLowerCase()):g==="feature-status"?x.trim()&&(r.featureStatus=x.toLowerCase()):g==="phase-status"?x.trim()&&(r.phaseStatus=x.toLowerCase()):g==="title"&&x.trim()&&(r.text=x.toLowerCase())}else i.push(m.toLowerCase());h+=1}return i.length>0&&!r.text&&(r.text=i.join(" ")),r}function O2(t){return!!(t.featureNumbers||t.phaseNumbers||t.taskNumbers||t.shortIds||t.status||t.featureStatus||t.phaseStatus||t.text)}function M2(t,a){if(t.featureNumbers&&!t.featureNumbers.has(a.feature.number)||t.phaseNumbers&&!t.phaseNumbers.has(a.phase.number)||t.taskNumbers&&!t.taskNumbers.has(a.task.number)||t.shortIds&&!(t.shortIds.has(a.task.shortId??"")||t.shortIds.has(a.phase.shortId??"")||t.shortIds.has(a.feature.shortId??""))||t.status&&a.task.status!==t.status||t.featureStatus&&a.feature.status!==t.featureStatus||t.phaseStatus&&a.phase.status!==t.phaseStatus)return!1;if(t.text){const r=t.text;if(![a.task.title,a.task.shortId??"",a.phase.title,a.phase.shortId??"",a.feature.name,a.feature.shortId??""].join(" ").toLowerCase().includes(r))return!1}return!0}function k2({features:t,phases:a,projectStorageScope:r}){const i=gl(r,"show-all-features"),u=gl(r,"tree-open-mode"),o=gl(r,"expanded-features"),h=gl(r,"expanded-phases"),m=gl(r,"feature-status-filters"),p=gl(r,"phase-status-filters"),g=gl(r,"task-status-filters"),x=gl(r,"hide-done"),b=gl(r,"hide-planned"),w=gl(r,"only-active-branches"),[S,R]=v.useState(""),C=v.useMemo(()=>kR(t,a),[t,a]),N=v.useMemo(()=>A2(S),[S]),z=O2(N),{matchedTaskIds:I,matchedFeatureIds:q,matchedPhaseIds:Q}=v.useMemo(()=>{const ye=new Set,Oe=new Set,ze=new Set;if(!z)return{matchedTaskIds:ye,matchedFeatureIds:Oe,matchedPhaseIds:ze};for(const Ge of C)for(const lt of Ge.allPhases)for(const At of lt.allTasks)M2(N,{feature:Ge.feature,phase:lt.phase,task:At})&&(ye.add(At.id),Oe.add(Ge.feature.id),ze.add(lt.phase.id));return{matchedTaskIds:ye,matchedFeatureIds:Oe,matchedPhaseIds:ze}},[z,N,C]),[ee,te]=v.useState(()=>{if(typeof window>"u")return!0;const ye=window.localStorage.getItem(i);return ye===null?!0:ye==="true"}),[D,j]=v.useState(()=>{if(typeof window>"u")return"all";const ye=window.localStorage.getItem(u);return ye==="smart"||ye==="none"||ye==="all"?ye:"all"}),[re,ue]=v.useState(()=>{if(typeof window>"u")return[];try{const ye=window.localStorage.getItem(o);return ye?JSON.parse(ye):[]}catch{return[]}}),[xe,pe]=v.useState(()=>{if(typeof window>"u")return[];try{const ye=window.localStorage.getItem(h);return ye?JSON.parse(ye):[]}catch{return[]}}),[Te,Ae]=v.useState(()=>dh(m,ru,ru)),[Re,B]=v.useState(()=>dh(p,su,su)),[V,de]=v.useState(()=>dh(g,iu,iu)),[fe,Ne]=v.useState(()=>hh(x,!1)),[O,X]=v.useState(()=>hh(b,!1)),[se,ce]=v.useState(()=>hh(w,!1)),[we,Se]=v.useState([]),[He,it]=v.useState([]),[Fe,et]=v.useState([]),en=v.useRef({});v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(i,String(ee))},[ee,i]),v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(u,D)},[D,u]),v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(o,JSON.stringify(re))},[re,o]),v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(h,JSON.stringify(xe))},[xe,h]),v.useEffect(()=>{typeof window>"u"||fh(m,Te,ru)},[Te,m]),v.useEffect(()=>{typeof window>"u"||fh(p,Re,su)},[Re,p]),v.useEffect(()=>{typeof window>"u"||fh(g,V,iu)},[V,g]),v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(x,String(fe))},[fe,x]),v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(b,String(O))},[O,b]),v.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(w,String(se))},[se,w]),v.useEffect(()=>()=>{Object.values(en.current).forEach(ye=>window.clearTimeout(ye)),en.current={}},[]);const qt=v.useMemo(()=>{let ye=[...Te];return fe&&(ye=ye.filter(Oe=>Oe!=="done")),O&&(ye=ye.filter(Oe=>Oe!=="planned")),ye},[Te,fe,O]),ut=v.useMemo(()=>{let ye=[...Re];return fe&&(ye=ye.filter(Oe=>Oe!=="done")),O&&(ye=ye.filter(Oe=>Oe!=="planned"&&Oe!=="draft")),ye},[Re,fe,O]),le=v.useMemo(()=>{let ye=[...V];return fe&&(ye=ye.filter(Oe=>Oe!=="done")),O&&(ye=ye.filter(Oe=>Oe!=="planned")),ye},[V,fe,O]),Le=v.useMemo(()=>{if(z)return C.map(ze=>({...ze,allPhases:ze.allPhases.map(Ge=>({...Ge,allTasks:Ge.allTasks.filter(lt=>I.has(lt.id))})).filter(Ge=>Ge.allTasks.length>0)})).filter(ze=>ze.allPhases.length>0);const ye=!ee||se;return(ee?C:C.filter(ze=>ze.isActive)).filter(({feature:ze})=>ch(ze.status,qt)).map(ze=>({...ze,allPhases:ze.allPhases.filter(({phase:Ge,hasActiveTask:lt})=>ch(Ge.status,ut)?ye?Ge.status==="in-progress"||Ge.status==="discovery"||lt:!0:!1).map(Ge=>({...Ge,allTasks:Ge.allTasks.filter(lt=>!!ch(lt.status,le))})).filter(Ge=>Ge.allTasks.length>0||ee||!ye)})).filter(({hasActiveTask:ze,allPhases:Ge})=>ye?ze||Ge.some(lt=>lt.hasActiveTask):Ge.length>0||ee)},[z,I,C,qt,ut,le,se,ee]);v.useEffect(()=>{if(D==="none"){ue([]),pe([]);return}if(D==="all"){ue(Le.filter(({feature:ze})=>ze.status!=="done").map(({feature:ze})=>ze.id)),pe(Le.flatMap(({allPhases:ze})=>ze.map(({phase:Ge})=>Ge.id)));return}const ye=new Set(Le.map(({feature:ze})=>ze.id)),Oe=new Set(Le.flatMap(({allPhases:ze})=>ze.map(({phase:Ge})=>Ge.id)));ue(ze=>ze.filter(Ge=>ye.has(Ge))),pe(ze=>ze.filter(Ge=>Oe.has(Ge)))},[Le,D]),v.useEffect(()=>{z&&(j("smart"),ue(Array.from(q)),pe(Array.from(Q)))},[z,q,Q]);const at=ye=>{j("smart"),ue(Oe=>Oe.includes(ye)?Oe.filter(ze=>ze!==ye):[...Oe,ye])},Xt=ye=>{j("smart"),pe(Oe=>Oe.includes(ye)?Oe.filter(ze=>ze!==ye):[...Oe,ye])},Cn=()=>{j("smart"),ue(Le.map(({feature:ye})=>ye.id)),pe(Le.flatMap(({allPhases:ye})=>ye.map(({phase:Oe})=>Oe.id)))};return v.useEffect(()=>{const ye=(ze,Ge)=>{const lt=Ge.filter(At=>!!At);for(const At of lt){const Ot=`${ze}:${At}`,tn=ze==="feature"?Se:ze==="phase"?it:et;tn(It=>It.includes(At)?It:[...It,At]),en.current[Ot]!==void 0&&window.clearTimeout(en.current[Ot]),en.current[Ot]=window.setTimeout(()=>{tn(It=>It.filter(ca=>ca!==At)),delete en.current[Ot]},CR)}},Oe=ze=>{var At,Ot,tn,It,ca,gn;const lt=ze.detail;if(lt!=null&<.type){if(lt.type==="features-updated"){const J=((At=lt.data)==null?void 0:At.featureId)??((Ot=lt.data)==null?void 0:Ot.id);ye("feature",[J]),J&&(j("smart"),ue(St=>St.includes(J)?St:[...St,J]));return}if(lt.type==="phases-updated"){const J=(tn=lt.data)==null?void 0:tn.featureId,St=((It=lt.data)==null?void 0:It.phaseId)??((ca=lt.data)==null?void 0:ca.id);ye("phase",[St]),ye("feature",[J]),ye("task",[(gn=lt.data)==null?void 0:gn.taskId]),j("smart"),J&&ue(Lt=>Lt.includes(J)?Lt:[...Lt,J]),St&&pe(Lt=>Lt.includes(St)?Lt:[...Lt,St])}}};return window.addEventListener("agent-plan:ws-event",Oe),()=>{window.removeEventListener("agent-plan:ws-event",Oe)}},[]),{workTree:C,displayedWorkTree:Le,treeOpenMode:D,setTreeOpenMode:j,expandAll:Cn,expandedFeatureIds:re,expandedPhaseIds:xe,toggleExpandedFeature:at,toggleExpandedPhase:Xt,recentFeatureIds:we,recentPhaseIds:He,recentTaskIds:Fe,showAllFeatures:ee,setShowAllFeatures:te,featureStatusFilters:Te,phaseStatusFilters:Re,taskStatusFilters:V,hideDone:fe,setHideDone:Ne,hidePlanned:O,setHidePlanned:X,onlyActiveBranches:se,setOnlyActiveBranches:ce,resetFilters:()=>{te(!0),Ne(!1),X(!1),Ae(ru),B(su),de(iu),ce(!1),j("all")},toggleFeatureStatusFilter:ye=>Ae(Oe=>oh(Oe,ye,ru)),togglePhaseStatusFilter:ye=>B(Oe=>oh(Oe,ye,su)),toggleTaskStatusFilter:ye=>de(Oe=>oh(Oe,ye,iu)),searchQuery:S,setSearchQuery:R,searchActive:z,matchedTaskIds:I,matchedFeatureIds:q,matchedPhaseIds:Q}}const Bb=v.createContext(null);function dm({id:t,children:a}){const r=T2({id:t}),i={transform:Or.Transform.toString(r.transform),transition:r.transition};return d.jsx(Bb.Provider,{value:r,children:d.jsx("div",{ref:r.setNodeRef,style:i,className:r.isDragging?"ap-sortable--dragging":"",children:a})})}function fm(){const t=v.useContext(Bb);return t?d.jsx("button",{type:"button",className:"drag-handle","aria-label":"Drag to reorder",title:"Drag to reorder",...t.listeners,...t.attributes,children:d.jsx(jw,{className:"h-4 w-4"})}):null}const hm="mt-1 block min-w-0 break-words font-mono text-sm font-semibold leading-snug [overflow-wrap:anywhere]";function _2(){return d.jsx("span",{className:"rounded-full bg-[color:color-mix(in_srgb,var(--accent)_16%,transparent)] px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.12em] text-[var(--accent)]",children:"Updated"})}function ni({status:t,doneTasks:a,totalTasks:r,recentlyChanged:i,className:u}){const o=a!=null&&r!=null;return d.jsxs("div",{className:u,children:[i?d.jsx(_2,{}):null,o?d.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["(",a,"/",r||0,")"]}):null,d.jsx("span",{className:"shrink-0",children:d.jsx(Oa,{status:t})})]})}function L2({entry:t,expanded:a,recentlyChanged:r,onToggle:i,isPhaseExpanded:u,onTogglePhase:o,isPhaseRecentlyChanged:h,isTaskRecentlyChanged:m,highlightedTaskIds:p}){const{feature:g,totalTasks:x,doneTasks:b,allPhases:w,hasActiveTask:S}=t;return d.jsxs("div",{className:`surface-card min-w-0 px-3 py-3 transition-colors sm:px-4 ${S?"ap-in-progress":g.status==="in-progress"?"border-[color:var(--color-status-in-progress)]/40 bg-[color:color-mix(in_srgb,var(--color-status-in-progress)_7%,transparent)]":""} ${g.status==="done"?"!opacity-70 !bg-[color:color-mix(in_srgb,var(--color-status-done)_10%,transparent)] !border-[color:color-mix(in_srgb,var(--color-status-done)_35%,transparent)]":""} ${r?"ring-1 ring-[color:color-mix(in_srgb,var(--accent)_55%,transparent)] bg-[color:color-mix(in_srgb,var(--accent)_12%,transparent)]":""}`,children:[d.jsxs("div",{className:`flex min-w-0 flex-col gap-1.5 rounded-[12px] px-1 py-1 transition-colors hover:bg-[var(--accent-soft)] sm:flex-row sm:items-start sm:justify-between sm:gap-3 ${r?"bg-[color:color-mix(in_srgb,var(--accent)_10%,transparent)]":""}`,children:[d.jsxs("div",{className:"flex min-w-0 items-start gap-2 sm:flex-1",children:[d.jsx("button",{type:"button",onClick:i,className:"mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded text-[var(--text-subtle)] hover:bg-[var(--surface-elevated)] hover:text-[var(--text)]","aria-label":a?`Collapse feature ${g.name}`:`Expand feature ${g.name}`,"aria-expanded":a,children:d.jsx(tb,{className:`h-4 w-4 transition ${a?"rotate-90":"rotate-0"}`})}),d.jsxs("div",{className:"min-w-0 flex-1",children:[d.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[d.jsx(fm,{}),d.jsx(Wl,{id:li({featureNum:g.number}),children:d.jsx(Jl,{featureNum:g.number})}),g.shortId?d.jsx(ri,{shortId:g.shortId}):null,S?d.jsx("span",{"aria-hidden":"true",className:"ap-progress-dot"}):null]}),d.jsx(ni,{status:g.status,doneTasks:b,totalTasks:x,recentlyChanged:r,className:"mt-1 flex flex-wrap items-center gap-2 sm:hidden"}),d.jsx(wt,{to:`/features/${g.id}`,className:`entity-link--feature ${hm} underline-offset-4 hover:underline`,children:g.name})]})]}),d.jsx(ni,{status:g.status,doneTasks:b,totalTasks:x,recentlyChanged:r,className:"hidden shrink-0 items-center gap-2 sm:flex"})]}),a&&w.length>0?d.jsx("div",{className:"mt-2 ml-1.5 grid grid-cols-1 gap-2 border-l border-[var(--border)] pl-3 sm:ml-4 sm:pl-4",children:d.jsx(cm,{items:w.map(R=>R.phase.id),strategy:om,children:w.map(R=>d.jsx(dm,{id:R.phase.id,children:d.jsx(z2,{feature:g,phaseEntry:R,expanded:u(R.phase.id),recentlyChanged:h(R.phase.id),onToggle:()=>o(R.phase.id),isTaskRecentlyChanged:m,highlightedTaskIds:p})},R.phase.id))})}):null]})}function z2({feature:t,phaseEntry:a,expanded:r,recentlyChanged:i,onToggle:u,isTaskRecentlyChanged:o,highlightedTaskIds:h}){const{phase:m,totalTasks:p,doneTasks:g,allTasks:x,hasActiveTask:b}=a;return d.jsxs("div",{className:`work-tree-row grid min-w-0 grid-cols-1 gap-2 rounded-[12px] p-3 transition-colors ${b?"ap-in-progress":m.status==="in-progress"?"border border-[color:color-mix(in_srgb,var(--color-status-in-progress)_35%,transparent)] bg-[color:color-mix(in_srgb,var(--color-status-in-progress)_6%,transparent)]":""} ${m.status==="done"?"opacity-70 bg-[color:color-mix(in_srgb,var(--color-status-done)_6%,transparent)]":""} ${i?"ring-1 ring-[color:color-mix(in_srgb,var(--accent)_55%,transparent)] bg-[color:color-mix(in_srgb,var(--accent)_12%,transparent)]":""}`,children:[d.jsxs("div",{className:`flex min-w-0 flex-col gap-1.5 rounded-[10px] px-1 py-1 transition-colors hover:bg-[var(--accent-soft)] sm:flex-row sm:items-start sm:justify-between sm:gap-3 ${i?"bg-[color:color-mix(in_srgb,var(--accent)_8%,transparent)]":""}`,children:[d.jsxs("div",{className:"flex min-w-0 items-start gap-2 sm:flex-1",children:[d.jsx("button",{type:"button",onClick:u,className:"mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded text-[var(--text-subtle)] hover:bg-[var(--surface-elevated)] hover:text-[var(--text)]","aria-label":r?`Collapse phase ${m.title}`:`Expand phase ${m.title}`,"aria-expanded":r,children:d.jsx(tb,{className:`h-4 w-4 transition ${r?"rotate-90":"rotate-0"}`})}),d.jsxs("div",{className:"min-w-0 flex-1",children:[d.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[d.jsx(fm,{}),d.jsx(Wl,{id:li({featureNum:t==null?void 0:t.number,phaseNum:m.number}),children:d.jsx(Jl,{featureNum:t==null?void 0:t.number,phaseNum:m.number})}),m.shortId?d.jsx(ri,{shortId:m.shortId}):null,m.handoff?d.jsx(tm,{updatedAt:m.handoffUpdatedAt}):null,b?d.jsx("span",{"aria-hidden":"true",className:"ap-progress-dot"}):null]}),d.jsx(ni,{status:m.status,doneTasks:g,totalTasks:p,recentlyChanged:i,className:"mt-1 flex flex-wrap items-center gap-2 sm:hidden"}),d.jsx(wt,{to:`/features/${t.id}/phases/${m.id}`,className:`entity-link--phase ${hm} underline-offset-4 hover:underline`,children:m.title})]})]}),d.jsx(ni,{status:m.status,doneTasks:g,totalTasks:p,recentlyChanged:i,className:"hidden shrink-0 items-center gap-2 sm:flex"})]}),r?x.length>0?d.jsx("div",{className:"ml-1.5 grid grid-cols-1 gap-1 border-l border-[var(--border)] pl-3 sm:ml-4 sm:pl-4",children:d.jsx(cm,{items:x.map(w=>w.id),strategy:om,children:x.map(w=>d.jsx(dm,{id:w.id,children:d.jsx(U2,{feature:t,phase:m,task:w,recentlyChanged:o(w.id),highlighted:h==null?void 0:h.has(w.id)})},w.id))})}):d.jsx("p",{className:"ml-1.5 text-xs italic text-[var(--text-subtle)] sm:ml-4",children:"No tasks"}):null]})}function U2({feature:t,phase:a,task:r,recentlyChanged:i,highlighted:u}){return d.jsxs("div",{className:`flex min-w-0 flex-col gap-1.5 rounded-[10px] px-2 py-2 transition-colors hover:bg-[var(--accent-soft)] sm:flex-row sm:items-start sm:justify-between sm:gap-3 ${r.status==="in-progress"?"ap-in-progress":""} ${r.status==="done"?"opacity-60 bg-[color:color-mix(in_srgb,var(--color-status-done)_6%,transparent)] text-[var(--text-muted)]":""} ${i?"ring-1 ring-[color:color-mix(in_srgb,var(--accent)_55%,transparent)] bg-[color:color-mix(in_srgb,var(--accent)_12%,transparent)]":""} ${u?"ap-search-hit":""}`,children:[d.jsxs("div",{className:"min-w-0 flex-1",children:[d.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[d.jsx(fm,{}),d.jsx(Wl,{id:li({featureNum:t==null?void 0:t.number,phaseNum:a.number,taskNum:r.number}),children:d.jsx(Jl,{featureNum:t==null?void 0:t.number,phaseNum:a.number,taskNum:r.number})}),r.shortId?d.jsx(ri,{shortId:r.shortId}):null,r.status==="in-progress"?d.jsx("span",{"aria-hidden":"true",className:"ap-progress-dot"}):null]}),d.jsx(ni,{status:r.status,recentlyChanged:i,className:"mt-1 flex flex-wrap items-center gap-2 sm:hidden"}),d.jsx(wt,{to:`/features/${t.id}/phases/${a.id}/tasks/${r.id}`,className:`entity-link--task ${hm} underline-offset-4 hover:underline`,children:r.title})]}),d.jsx(ni,{status:r.status,recentlyChanged:i,className:"hidden shrink-0 items-center gap-2 sm:flex"})]})}var k=(function(t){return t.FIELD_NAME="FIELD_NAME",t.COLON="COLON",t.VALUE="VALUE",t.QUOTED_VALUE="QUOTED_VALUE",t.AND="AND",t.OR="OR",t.NOT="NOT",t.COMPARISON_OP="COMPARISON_OP",t.LPAREN="LPAREN",t.RPAREN="RPAREN",t.SAVED_SEARCH="SAVED_SEARCH",t.HISTORY_REF="HISTORY_REF",t.PREFIX_OP="PREFIX_OP",t.WILDCARD="WILDCARD",t.REGEX="REGEX",t.RANGE="RANGE",t.TILDE="TILDE",t.BOOST="BOOST",t.WHITESPACE="WHITESPACE",t.UNKNOWN="UNKNOWN",t})({}),ra=(function(t){return t[t.EXPECT_TERM=0]="EXPECT_TERM",t[t.EXPECT_VALUE=1]="EXPECT_VALUE",t})(ra||{}),Ks=class{constructor(t,a){mn(this,"input");mn(this,"pos");mn(this,"state");mn(this,"tokens");mn(this,"options");this.input=t,this.pos=0,this.state=ra.EXPECT_TERM,this.tokens=[],this.options=a||{}}tokenize(){for(this.tokens=[],this.pos=0,this.state=ra.EXPECT_TERM;this.pos<this.input.length;)this.state===ra.EXPECT_VALUE?this.readValue():this.readTerm();return this.tokens}peek(){return this.input[this.pos]}peekAt(t){return this.input[this.pos+t]}advance(){return this.input[this.pos++]}isWhitespace(t){return t===" "||t===" "||t===`
|
|
198
198
|
`||t==="\r"}isAlpha(t){return/[a-zA-Z_]/.test(t)}isAlphaNumeric(t){return/[a-zA-Z0-9_.\-]/.test(t)}readWhitespace(){const t=this.pos;for(;this.pos<this.input.length&&this.isWhitespace(this.peek());)this.advance();this.tokens.push({type:k.WHITESPACE,value:this.input.slice(t,this.pos),start:t,end:this.pos})}readQuotedString(){const t=this.pos,a=this.advance();for(;this.pos<this.input.length;){const r=this.advance();if(r==="\\"&&this.pos<this.input.length)this.advance();else if(r===a)break}this.tokens.push({type:k.QUOTED_VALUE,value:this.input.slice(t,this.pos),start:t,end:this.pos}),this.tryReadModifier(),this.state=ra.EXPECT_TERM}readTerm(){const t=this.peek();if(this.isWhitespace(t)){this.readWhitespace();return}if(t==='"'){this.readQuotedString();return}if(t==="("){this.tokens.push({type:k.LPAREN,value:"(",start:this.pos,end:this.pos+1}),this.advance();return}if(t===")"){this.tokens.push({type:k.RPAREN,value:")",start:this.pos,end:this.pos+1}),this.advance();return}if(t==="~"||t==="^"){const r=this.pos,i=t==="~"?k.TILDE:k.BOOST;for(this.advance();this.pos<this.input.length&&/[0-9.]/.test(this.peek());)this.advance();this.tokens.push({type:i,value:this.input.slice(r,this.pos),start:r,end:this.pos});return}if(t==="["||t==="{"){this.readRangeValue();return}if(t==="#"&&this.options.savedSearches){this.readSavedSearch();return}if(t==="!"&&this.options.historySearch){this.readHistoryRef();return}if(t==="-"||t==="+"){const r=this.peekAt(1);if(r&&(this.isAlpha(r)||r==='"'||r==="("||r==="#"||r==="!"||r==="["||r==="{")||!r||r===")"||r===" "||r===" "||r===`
|
|
199
199
|
`||r==="\r"){this.tokens.push({type:k.PREFIX_OP,value:t,start:this.pos,end:this.pos+1}),this.advance();return}}if(t==="&"&&this.peekAt(1)==="&"){this.tokens.push({type:k.AND,value:"&&",start:this.pos,end:this.pos+2}),this.advance(),this.advance();return}if(t==="|"&&this.peekAt(1)==="|"){this.tokens.push({type:k.OR,value:"||",start:this.pos,end:this.pos+2}),this.advance(),this.advance();return}if((t===">"||t==="<")&&this.state===ra.EXPECT_TERM){const r=this.pos;this.advance(),this.pos<this.input.length&&this.peek()==="="&&this.advance(),this.tokens.push({type:k.COMPARISON_OP,value:this.input.slice(r,this.pos),start:r,end:this.pos}),this.state=ra.EXPECT_VALUE;return}if(t==="/"){this.readRegex();return}const a=this.pos;for(;this.pos<this.input.length&&!this.isWhitespace(this.peek())&&this.peek()!=="("&&this.peek()!==")"&&this.peek()!=='"'&&this.peek()!=="~"&&this.peek()!=="^"&&!(this.peek()==="&"&&this.peekAt(1)==="&")&&!(this.peek()==="|"&&this.peekAt(1)==="|");){if(this.peek()==="\\"&&this.pos+1<this.input.length){this.advance(),this.advance();continue}if(this.peek()===":"){this.pos>a&&this.tokens.push({type:k.FIELD_NAME,value:this.input.slice(a,this.pos),start:a,end:this.pos}),this.tokens.push({type:k.COLON,value:":",start:this.pos,end:this.pos+1}),this.advance(),this.state=ra.EXPECT_VALUE;return}this.advance()}if(this.pos>a){const r=this.input.slice(a,this.pos),i=r.toUpperCase();i==="AND"?this.tokens.push({type:k.AND,value:r,start:a,end:this.pos}):i==="OR"?this.tokens.push({type:k.OR,value:r,start:a,end:this.pos}):i==="NOT"?this.tokens.push({type:k.NOT,value:r,start:a,end:this.pos}):r.includes("*")||r.includes("?")?this.tokens.push({type:k.WILDCARD,value:r,start:a,end:this.pos}):this.tokens.push({type:k.VALUE,value:r,start:a,end:this.pos}),this.tryReadModifier()}}readValue(){const t=this.peek();if(this.isWhitespace(t)){this.readWhitespace(),this.state=ra.EXPECT_TERM;return}if(t==='"'){this.readQuotedString(),this.state=ra.EXPECT_TERM;return}if(t==="("||t===")"){this.state=ra.EXPECT_TERM,this.readTerm();return}if(t===">"||t==="<"){const r=this.pos;this.advance(),this.pos<this.input.length&&this.peek()==="="&&this.advance(),this.tokens.push({type:k.COMPARISON_OP,value:this.input.slice(r,this.pos),start:r,end:this.pos});return}if(t==="["||t==="{"){this.readRangeValue();return}if(t==="/"){this.readRegex(),this.state=ra.EXPECT_TERM;return}const a=this.pos;for(;this.pos<this.input.length&&!this.isWhitespace(this.peek())&&this.peek()!==")"&&this.peek()!=="("&&this.peek()!=='"'&&this.peek()!=="~"&&this.peek()!=="^";){if(this.peek()==="\\"&&this.pos+1<this.input.length){this.advance(),this.advance();continue}this.advance()}if(this.pos>a){const r=this.input.slice(a,this.pos);r.includes("*")||r.includes("?")?this.tokens.push({type:k.WILDCARD,value:r,start:a,end:this.pos}):this.tokens.push({type:k.VALUE,value:r,start:a,end:this.pos}),this.tryReadModifier()}this.state=ra.EXPECT_TERM}readRangeValue(){const t=this.pos;for(this.advance();this.pos<this.input.length&&this.peek()!=="]"&&this.peek()!=="}";)this.advance();this.pos<this.input.length&&(this.peek()==="]"||this.peek()==="}")&&this.advance(),this.tokens.push({type:k.RANGE,value:this.input.slice(t,this.pos),start:t,end:this.pos}),this.state=ra.EXPECT_TERM}tryReadModifier(){for(;this.pos<this.input.length&&(this.peek()==="~"||this.peek()==="^");){const t=this.pos,a=this.advance()==="~"?k.TILDE:k.BOOST;for(;this.pos<this.input.length&&/[0-9.]/.test(this.peek());)this.advance();this.tokens.push({type:a,value:this.input.slice(t,this.pos),start:t,end:this.pos})}}readRegex(){const t=this.pos;for(this.advance();this.pos<this.input.length;){const a=this.peek();if(a==="\\"&&this.pos+1<this.input.length){this.advance(),this.advance();continue}if(a==="/"){this.advance(),this.tokens.push({type:k.REGEX,value:this.input.slice(t,this.pos),start:t,end:this.pos}),this.tryReadModifier(),this.state=ra.EXPECT_TERM;return}this.advance()}this.tokens.push({type:k.VALUE,value:this.input.slice(t,this.pos),start:t,end:this.pos}),this.state=ra.EXPECT_TERM}readSavedSearch(){const t=this.pos;for(this.advance();this.pos<this.input.length&&this.isAlphaNumeric(this.peek());)this.advance();this.tokens.push({type:k.SAVED_SEARCH,value:this.input.slice(t,this.pos),start:t,end:this.pos})}readHistoryRef(){const t=this.pos;for(this.advance();this.pos<this.input.length&&this.isAlphaNumeric(this.peek());)this.advance();this.tokens.push({type:k.HISTORY_REF,value:this.input.slice(t,this.pos),start:t,end:this.pos})}},ls=class{constructor(t){mn(this,"tokens");mn(this,"pos");mn(this,"nonWsTokens");mn(this,"errors",[]);this.tokens=t,this.nonWsTokens=t.filter(a=>a.type!==k.WHITESPACE),this.pos=0}getErrors(){return this.errors}isUnclosedQuote(t){if(t.type!==k.QUOTED_VALUE)return!1;const a=t.value;if(a.length<2)return!0;const r=a[0];return a[a.length-1]!==r}stripQuotes(t){const a=t.value;return this.isUnclosedQuote(t)?a.slice(1):a.slice(1,-1)}checkUnclosedQuote(t){this.isUnclosedQuote(t)&&this.errors.push({type:"Error",value:t.value[0],message:"Missing closing quote",start:t.start,end:t.start+1})}parse(){if(this.nonWsTokens.length===0)return null;let t=this.parseOr();for(;this.peek();){const a=this.peek();if(a.type===k.RPAREN)this.advance(),this.errors.push({type:"Error",value:a.value,message:"Unexpected closing parenthesis",start:a.start,end:a.end});else{const r=this.parseOr();t={type:"BooleanExpr",operator:"AND",left:t,right:r,implicit:!0,start:t.start,end:r.end}}}return t}peek(){return this.nonWsTokens[this.pos]}advance(){return this.nonWsTokens[this.pos++]}match(t){var a;if(((a=this.peek())==null?void 0:a.type)===t)return this.advance()}parseOr(){var a;let t=this.parseAnd();for(;((a=this.peek())==null?void 0:a.type)===k.OR;){const r=this.advance(),i=this.parseAnd();if(i.type==="Error"&&i.value===""){this.errors.push({type:"Error",value:r.value,message:"Missing search term after OR",start:r.start,end:r.end});break}t={type:"BooleanExpr",operator:"OR",left:t,right:i,sourceOperator:r.value,start:t.start,end:i.end}}return t}parseAnd(){let t=this.parseNot();for(;;){const a=this.peek();if(!a)break;if(a.type===k.AND){const r=this.advance(),i=this.parseNot();if(i.type==="Error"&&i.value===""){this.errors.push({type:"Error",value:r.value,message:"Missing search term after AND",start:r.start,end:r.end});break}t={type:"BooleanExpr",operator:"AND",left:t,right:i,sourceOperator:r.value,start:t.start,end:i.end}}else{if(a.type===k.OR||a.type===k.RPAREN)break;{const r=this.parseNot();t={type:"BooleanExpr",operator:"AND",left:t,right:r,implicit:!0,start:t.start,end:r.end}}}}return t}parseNot(){var t;if(((t=this.peek())==null?void 0:t.type)===k.NOT){const a=this.advance(),r=this.parsePrimary();return r.type==="Error"&&r.value===""?(this.errors.push({type:"Error",value:a.value,message:"Missing search term after NOT",start:a.start,end:a.end}),r):{type:"Not",expression:r,sourceOperator:a.value,start:a.start,end:r.end}}return this.parsePrimary()}applyGroupBoost(t){var a;if(((a=this.peek())==null?void 0:a.type)===k.BOOST){const r=this.advance(),i=r.value.slice(1),u=parseFloat(i);t.boost=isNaN(u)?1:u,t.end=r.end}return t}applyModifiers(t){var a,r;if(t.type!=="BareTerm"&&t.type!=="FieldValue")return t;if(((a=this.peek())==null?void 0:a.type)===k.TILDE){const i=this.advance(),u=i.value.slice(1),o=parseInt(u,10);t.quoted?t.proximity=isNaN(o)?0:o:t.fuzzy=isNaN(o)?0:o,t.end=i.end}if(((r=this.peek())==null?void 0:r.type)===k.BOOST){const i=this.advance(),u=i.value.slice(1),o=parseFloat(u);t.boost=isNaN(o)?1:o,t.end=i.end}return t}parseRangeBound(t,a){const r=t.length-t.trimStart().length,i=t.trim();return i.startsWith('"')&&i.endsWith('"')&&i.length>=2?{value:i.slice(1,-1),quoted:!0,valueStart:a+r,valueEnd:a+r+i.length}:i.startsWith('"')?{value:i.slice(1),quoted:!0,valueStart:a+r,valueEnd:a+r+i.length}:{value:i,quoted:!1,valueStart:a+r,valueEnd:a+r+i.length}}parseRange(t){const a=t.value,r=a[0],i=r==="[",u=a[a.length-1],o=u==="]"||u==="}",h=u==="]";o||this.errors.push({type:"Error",value:r,message:"Unclosed range expression",start:t.start,end:t.start+1});const m=o?a.slice(1,-1):a.slice(1),p=m.match(/^(.*?)\s+[Tt][Oo]\s+(.*)$/),g=t.start+1;if(!p){this.errors.push({type:"Error",value:a,message:"Range expression missing TO keyword",start:t.start,end:t.end});const S=this.parseRangeBound(m,g);return{type:"Range",lower:S.value,upper:"",lowerInclusive:i,upperInclusive:o?h:!0,lowerQuoted:S.quoted,upperQuoted:!1,lowerStart:S.valueStart,lowerEnd:S.valueEnd,upperStart:t.end,upperEnd:t.end,start:t.start,end:t.end}}const x=this.parseRangeBound(p[1],g),b=g+p[1].length+(m.length-p[1].length-p[2].length),w=this.parseRangeBound(p[2],b);return{type:"Range",lower:x.value,upper:w.value,lowerInclusive:i,upperInclusive:o?h:!0,lowerQuoted:x.quoted,upperQuoted:w.quoted,lowerStart:x.valueStart,lowerEnd:x.valueEnd,upperStart:w.valueStart,upperEnd:w.valueEnd,start:t.start,end:t.end}}parsePrimary(){var r,i,u;const t=this.peek();if(!t)return{type:"Error",value:"",message:"Unexpected end of input",start:this.nonWsTokens.length>0?this.nonWsTokens[this.nonWsTokens.length-1].end:0,end:this.nonWsTokens.length>0?this.nonWsTokens[this.nonWsTokens.length-1].end:0};if(t.type===k.AND){const o=this.advance();return this.errors.push({type:"Error",value:o.value,message:"Unexpected AND",start:o.start,end:o.end}),this.parsePrimary()}if(t.type===k.OR){const o=this.advance();return this.errors.push({type:"Error",value:o.value,message:"Unexpected OR",start:o.start,end:o.end}),this.parsePrimary()}if(t.type===k.PREFIX_OP){const o=this.advance(),h=this.parsePrimary();return o.value==="-"?{type:"Not",expression:h,sourceOperator:o.value,start:o.start,end:h.end}:{...h,start:o.start}}if(t.type===k.LPAREN){const o=this.advance();if(!this.peek()||this.peek().type===k.RPAREN){const g=this.match(k.RPAREN);g||this.errors.push({type:"Error",value:o.value,message:"Unclosed parenthesis",start:o.start,end:o.end});const x={type:"Group",expression:{type:"BareTerm",value:"",quoted:!1,start:o.end,end:o.end},start:o.start,end:g?g.end:o.end};return this.applyGroupBoost(x)}const h=this.parseOr(),m=this.match(k.RPAREN);m||this.errors.push({type:"Error",value:o.value,message:"Missing closing parenthesis",start:o.start,end:o.end});const p={type:"Group",expression:h,start:o.start,end:m?m.end:h.end};return this.applyGroupBoost(p)}if(t.type===k.SAVED_SEARCH){const o=this.advance();return{type:"SavedSearch",name:o.value.slice(1),start:o.start,end:o.end}}if(t.type===k.HISTORY_REF){const o=this.advance();return{type:"HistoryRef",ref:o.value.slice(1),start:o.start,end:o.end}}if(t.type===k.FIELD_NAME){const o=this.advance(),h=this.match(k.COLON);if(h){let m=":";const p=this.match(k.COMPARISON_OP);if(p&&(m=p.value),((r=this.peek())==null?void 0:r.type)===k.LPAREN){const x=this.advance();if(!this.peek()||this.peek().type===k.RPAREN){const R=this.match(k.RPAREN);R||this.errors.push({type:"Error",value:x.value,message:"Unclosed parenthesis",start:x.start,end:x.end});const C={type:"FieldGroup",field:o.value,expression:{type:"BareTerm",value:"",quoted:!1,start:x.end,end:x.end},start:o.start,end:R?R.end:x.end};return this.applyGroupBoost(C)}const b=this.parseOr(),w=this.match(k.RPAREN);w||this.errors.push({type:"Error",value:x.value,message:"Missing closing parenthesis",start:x.start,end:x.end});const S={type:"FieldGroup",field:o.value,expression:b,start:o.start,end:w?w.end:b.end};return this.applyGroupBoost(S)}if(((i=this.peek())==null?void 0:i.type)===k.RANGE){const x=this.advance(),b=this.parseRange(x);return b.field=o.value,b.start=o.start,b}if(((u=this.peek())==null?void 0:u.type)===k.REGEX){const x=this.advance();return{type:"Regex",pattern:x.value.slice(1,-1),start:o.start,end:x.end}}const g=this.peek();if(g&&(g.type===k.VALUE||g.type===k.QUOTED_VALUE||g.type===k.WILDCARD)){const x=this.advance(),b=x.type===k.QUOTED_VALUE;b&&this.checkUnclosedQuote(x);const w=b?this.stripQuotes(x):x.value;return this.applyModifiers({type:"FieldValue",field:o.value,operator:m,value:w,quoted:b,start:o.start,end:x.end})}return{type:"FieldValue",field:o.value,operator:m,value:"",quoted:!1,start:o.start,end:p?p.end:h.end}}return{type:"BareTerm",value:o.value,quoted:!1,start:o.start,end:o.end}}if(t.type===k.COMPARISON_OP){const o=this.advance(),h=this.peek();if(h&&(h.type===k.VALUE||h.type===k.QUOTED_VALUE)){const m=this.advance();return{type:"BareTerm",value:o.value+m.value,quoted:!1,start:o.start,end:m.end}}return{type:"Error",value:o.value,message:"Comparison operator without value",start:o.start,end:o.end}}if(t.type===k.QUOTED_VALUE){const o=this.advance();return this.checkUnclosedQuote(o),this.applyModifiers({type:"BareTerm",value:this.stripQuotes(o),quoted:!0,start:o.start,end:o.end})}if(t.type===k.WILDCARD){const o=this.advance();return this.applyModifiers({type:"BareTerm",value:o.value,quoted:!1,start:o.start,end:o.end})}if(t.type===k.RANGE){const o=this.advance();return this.parseRange(o)}if(t.type===k.REGEX){const o=this.advance();return{type:"Regex",pattern:o.value.slice(1,-1),start:o.start,end:o.end}}if(t.type===k.VALUE){const o=this.advance();return this.applyModifiers({type:"BareTerm",value:o.value,quoted:!1,start:o.start,end:o.end})}if(t.type===k.RPAREN){const o=this.advance();return this.errors.push({type:"Error",value:o.value,message:"Unexpected closing parenthesis",start:o.start,end:o.end}),{type:"Error",value:o.value,message:"Unexpected closing parenthesis",start:o.start,end:o.end}}const a=this.advance();return{type:"Error",value:a.value,message:`Unexpected token: ${a.value}`,start:a.start,end:a.end}}static getCursorContext(t,a){let r,i;for(const o of t)if(o.type!==k.WHITESPACE){if(a>=o.start&&a<=o.end){r=o;break}o.end<=a&&(i=o)}const u=o=>{let h=0;for(let m=o;m>=0;m--){const p=t[m];if(p.type!==k.WHITESPACE){if(p.type===k.RPAREN){h++;continue}if(p.type===k.LPAREN){if(h>0){h--;continue}for(let g=m-1;g>=0;g--)if(t[g].type!==k.WHITESPACE){if(t[g].type===k.COLON){for(let x=g-1;x>=0;x--)if(t[x].type!==k.WHITESPACE){if(t[x].type===k.FIELD_NAME)return t[x].value;break}}break}}}}return""};if((r==null?void 0:r.type)===k.COLON){let o="";const h=t.indexOf(r);for(let m=h-1;m>=0;m--){if(t[m].type===k.FIELD_NAME){o=t[m].value;break}if(t[m].type!==k.WHITESPACE)break}if(!o&&a===r.start)return{type:"FIELD_NAME",partial:"",token:r};if(a===r.end){for(let m=h+1;m<t.length;m++)if(t[m].type!==k.WHITESPACE){if(t[m].type===k.VALUE||t[m].type===k.QUOTED_VALUE||t[m].type===k.WILDCARD||t[m].type===k.RANGE)return{type:"FIELD_VALUE",partial:t[m].type===k.QUOTED_VALUE?t[m].value.slice(1,t[m].value.endsWith('"')||t[m].value.endsWith("'")?-1:void 0):t[m].value,fieldName:o,token:t[m]};break}}return{type:"FIELD_VALUE",partial:"",fieldName:o,token:void 0}}if((r==null?void 0:r.type)===k.SAVED_SEARCH)return{type:"SAVED_SEARCH",partial:r.value.slice(1),token:r};if((r==null?void 0:r.type)===k.HISTORY_REF)return{type:"HISTORY_REF",partial:r.value.slice(1),token:r};if((r==null?void 0:r.type)===k.RANGE){const o=t.indexOf(r);let h="";for(let m=o-1;m>=0;m--){if(t[m].type===k.FIELD_NAME){h=t[m].value;break}if(!(t[m].type===k.WHITESPACE||t[m].type===k.COLON))break}return{type:"RANGE",partial:"",fieldName:h,token:r}}if((i==null?void 0:i.type)===k.COLON||(i==null?void 0:i.type)===k.COMPARISON_OP){const o=t.indexOf(i);let h="";for(let m=o-1;m>=0;m--){if(t[m].type===k.FIELD_NAME){h=t[m].value;break}if(!(t[m].type===k.WHITESPACE||t[m].type===k.COLON||t[m].type===k.COMPARISON_OP))break}return r&&(r.type===k.VALUE||r.type===k.QUOTED_VALUE||r.type===k.WILDCARD)?{type:"FIELD_VALUE",partial:r.type===k.QUOTED_VALUE?r.value.slice(1,r.value.endsWith('"')||r.value.endsWith("'")?-1:void 0):r.value,fieldName:h,token:r}:{type:"FIELD_VALUE",partial:"",fieldName:h,token:i}}if((r==null?void 0:r.type)===k.VALUE||(r==null?void 0:r.type)===k.QUOTED_VALUE||(r==null?void 0:r.type)===k.WILDCARD){const o=t.indexOf(r);for(let h=o-1;h>=0;h--)if(t[h].type!==k.WHITESPACE){if(t[h].type===k.COLON||t[h].type===k.COMPARISON_OP){let m="";for(let p=h-1;p>=0;p--){if(t[p].type===k.FIELD_NAME){m=t[p].value;break}if(!(t[p].type===k.WHITESPACE||t[p].type===k.COLON||t[p].type===k.COMPARISON_OP))break}return{type:"FIELD_VALUE",partial:r.type===k.QUOTED_VALUE?r.value.slice(1,r.value.endsWith('"')||r.value.endsWith("'")?-1:void 0):r.value,fieldName:m,token:r}}break}}if((r==null?void 0:r.type)===k.QUOTED_VALUE)return{type:"FIELD_NAME",partial:r.value,token:r};if((r==null?void 0:r.type)===k.FIELD_NAME||(r==null?void 0:r.type)===k.VALUE){const o=u(t.indexOf(r));return o?{type:"FIELD_VALUE",partial:r.value,fieldName:o,token:r}:{type:"FIELD_NAME",partial:r.value,token:r}}if((i==null?void 0:i.type)===k.PREFIX_OP){const o=u(t.indexOf(i));return o?{type:"FIELD_VALUE",partial:"",fieldName:o,token:void 0}:{type:"FIELD_NAME",partial:"",token:void 0}}if(i&&(i.type===k.AND||i.type===k.OR||i.type===k.NOT)){const o=u(t.indexOf(i));return o?{type:"FIELD_VALUE",partial:"",fieldName:o,token:void 0}:{type:"FIELD_NAME",partial:"",token:void 0}}if(t.length===0||t.every(o=>o.type===k.WHITESPACE))return{type:"EMPTY",partial:""};if((r==null?void 0:r.type)===k.LPAREN||(i==null?void 0:i.type)===k.LPAREN){const o=(r==null?void 0:r.type)===k.LPAREN?r:i,h=u(t.indexOf(o));return h?{type:"FIELD_VALUE",partial:"",fieldName:h,token:void 0}:{type:"FIELD_NAME",partial:"",token:void 0}}if((r==null?void 0:r.type)===k.TILDE||(r==null?void 0:r.type)===k.BOOST)return{type:"OPERATOR",partial:""};if(i&&(i.type===k.VALUE||i.type===k.QUOTED_VALUE||i.type===k.RPAREN||i.type===k.RANGE||i.type===k.TILDE||i.type===k.BOOST)){const o=u(t.indexOf(i));return o?{type:"FIELD_VALUE",partial:"",fieldName:o,token:void 0}:{type:"OPERATOR",partial:""}}return{type:"FIELD_NAME",partial:"",token:void 0}}};function Mh(t,a){if(a<t.start||a>t.end)return null;if(t.type==="BooleanExpr"){const r=Mh(t.left,a);if(r)return r;const i=Mh(t.right,a);return i||null}return t}function H2(t,a,r){if(!t)return null;const i=Mh(t,r);if(!i)return null;let u=i.start,o=i.end;const h=a.slice(o).match(/^(\s+(?:AND|OR|&&|\|\|)\s+|\s+)(?=\S)/i);if(h)return o+=h[0].length,{start:u,end:o};const m=a.slice(0,u).match(/(\s+(?:AND|OR|&&|\|\|)\s+|\s+)$/i);return m&&m.index!==void 0&&m.index>0&&(u-=m[0].length),{start:u,end:o}}var B2={fieldName:"#0550ae",fieldValue:"#1a7f37",operator:"#cf222e",booleanOp:"#8250df",quoted:"#0a3069",paren:"#656d76",savedSearch:"#bf8700",historyRef:"#6639ba",wildcard:"#953800",error:"#cf222e",background:"#ffffff",text:"#1f2328",placeholder:"#656d76",cursor:"#1f2328",dropdownSelected:"#0969da",dropdownHover:"#f6f8fa",regexDelimiter:"#cf222e",regexCharClass:"#0550ae",regexGroup:"#656d76",regexEscape:"#953800",regexQuantifier:"#8250df",regexAnchor:"#cf222e",regexAlternation:"#8250df",regexText:"#0a3069",matchedParenBg:"#fff3cd",warning:"#d4a72c",valueTypes:{}},$2={fontFamily:"'SF Mono', 'Fira Code', 'Fira Mono', Menlo, Consolas, monospace",fontSize:"14px",lineHeight:"1.5",inputMinHeight:"40px",inputPadding:"8px 12px",inputBorderWidth:"2px",inputBorderColor:"#d0d7de",inputBorderRadius:"8px",inputFocusBorderColor:"#0969da",inputFocusShadow:"0 0 0 3px rgba(9, 105, 218, 0.3)",dropdownBorderColor:"#d0d7de",dropdownBorderRadius:"8px",dropdownShadow:"0 8px 24px rgba(0, 0, 0, 0.12)",dropdownMaxHeight:"300px",dropdownMinWidth:"200px",dropdownMaxWidth:"400px",dropdownZIndex:99999,dropdownItemPadding:"6px 12px",dropdownItemFontSize:"13px",dropdownItemContentGap:"8px",typeBadgeBg:"#eef1f5",typeBadgeSelectedBg:"rgba(255,255,255,0.2)",typeBadgeColor:"#656d76",typeBadgeSelectedColor:"#ffffff"},q2=["AND","OR","NOT"];function Ky(t){return t.replace(/\r\n/g,`
|
|
200
200
|
`).replace(/\r/g,`
|
package/web-ui-dist/index.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>Agent Plan</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-BQmx1zqk.js"></script>
|
|
8
8
|
<link rel="stylesheet" crossorigin href="/assets/index-Jy8Yy6I4.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|