pipe-kan 0.30.0 → 0.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ npx pipe-kan
|
|
|
12
12
|
|
|
13
13
|
Opens `http://127.0.0.1:5173`. No clone, no `bun install`. `bunx` / `npx` installs the published package into a cache and runs it.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
If `--plane` is set, first paint is live Refresh. A failed live Refresh stays in Plane mode and keeps the last live Board, with the error on the Board. If live Refresh never succeeded, the Fixture is not shown. If `jira` is on PATH and `--plane` is off, first paint is the Fixture, then Refresh from your existing `jira init`. If `jira` is missing and `--plane` is off, first paint is the Fixture and Refresh, Move, Create, and Edit use the in-process store.
|
|
16
16
|
|
|
17
17
|
The published CLI is on npm. From a clone: `bun run build && bun dist/pipe-kan.js`.
|
|
18
18
|
|
|
@@ -68,6 +68,8 @@ On Refresh:
|
|
|
68
68
|
|
|
69
69
|
Create and Edit use Plane REST when `--plane` is set. Pulse, Plane Pro, scraping, and SQL workspace moves are out of scope.
|
|
70
70
|
|
|
71
|
+
A Plane `429 RATE_LIMIT_EXCEEDED` does not fall back to Fake Jira. Plane waits the rate-limit window, then continues.
|
|
72
|
+
|
|
71
73
|
## Multiple projects
|
|
72
74
|
|
|
73
75
|
Default Scope is one Project — jira-cli's `jira init` project. To list more than one Project key:
|
package/dist/pipe-kan.js
CHANGED
|
@@ -1231,6 +1231,8 @@ function createApp(opts) {
|
|
|
1231
1231
|
let childrenRaw = [];
|
|
1232
1232
|
let hasChildrenCache = false;
|
|
1233
1233
|
let childrenError;
|
|
1234
|
+
let refreshError;
|
|
1235
|
+
let live = false;
|
|
1234
1236
|
let targetEndFieldId = readTargetEndFieldMap(fieldMapPath).targetEnd ?? targetEndFieldIdFromJiraConfig(safeRead(jiraConfigPath) ?? "");
|
|
1235
1237
|
let workflowStates;
|
|
1236
1238
|
function boardOpts() {
|
|
@@ -1330,11 +1332,13 @@ function createApp(opts) {
|
|
|
1330
1332
|
childrenRaw = mergeSelectedChildren(childrenRaw, hydrated, keys);
|
|
1331
1333
|
hasChildrenCache = true;
|
|
1332
1334
|
childrenError = undefined;
|
|
1335
|
+
refreshError = undefined;
|
|
1333
1336
|
return app.board();
|
|
1334
1337
|
} catch (err) {
|
|
1335
1338
|
const message = err instanceof Error ? err.message : "Refresh failed";
|
|
1339
|
+
refreshError = message;
|
|
1336
1340
|
console.error("Refresh failed", message);
|
|
1337
|
-
return
|
|
1341
|
+
return app.board();
|
|
1338
1342
|
}
|
|
1339
1343
|
}
|
|
1340
1344
|
async function tryMove(key, status) {
|
|
@@ -1350,12 +1354,21 @@ function createApp(opts) {
|
|
|
1350
1354
|
return flags;
|
|
1351
1355
|
},
|
|
1352
1356
|
board() {
|
|
1357
|
+
const error = refreshError ?? childrenError;
|
|
1358
|
+
if (!live && (refreshError || opts.liveBackend)) {
|
|
1359
|
+
const empty = toBoard([]);
|
|
1360
|
+
return {
|
|
1361
|
+
columns: empty.columns,
|
|
1362
|
+
epics: [],
|
|
1363
|
+
...error ? { error } : {}
|
|
1364
|
+
};
|
|
1365
|
+
}
|
|
1353
1366
|
const board = toBoard(payload);
|
|
1354
1367
|
return {
|
|
1355
1368
|
columns: board.columns,
|
|
1356
1369
|
epics: mergeEpics(toBoard(epicsPayload).epics, board.epics),
|
|
1357
1370
|
...hasChildrenCache ? { children: columnsOf(childrenRaw, targetEndFieldId) } : {},
|
|
1358
|
-
...
|
|
1371
|
+
...error ? { error } : {}
|
|
1359
1372
|
};
|
|
1360
1373
|
},
|
|
1361
1374
|
hydrate(raw, hydrateOpts) {
|
|
@@ -1364,6 +1377,8 @@ function createApp(opts) {
|
|
|
1364
1377
|
childrenRaw = [];
|
|
1365
1378
|
hasChildrenCache = false;
|
|
1366
1379
|
childrenError = undefined;
|
|
1380
|
+
refreshError = undefined;
|
|
1381
|
+
live = false;
|
|
1367
1382
|
if (hydrateOpts?.fromStore)
|
|
1368
1383
|
cacheFromStore();
|
|
1369
1384
|
rememberTargetEndId([...payload, ...epicsPayload, ...childrenRaw]);
|
|
@@ -1417,11 +1432,14 @@ function createApp(opts) {
|
|
|
1417
1432
|
childrenRaw = nextHasCache ? await hydrateRaw(nextChildren) : nextChildren;
|
|
1418
1433
|
hasChildrenCache = nextHasCache;
|
|
1419
1434
|
childrenError = nextError;
|
|
1435
|
+
refreshError = undefined;
|
|
1436
|
+
live = true;
|
|
1420
1437
|
return app.board();
|
|
1421
1438
|
} catch (err) {
|
|
1422
1439
|
const message = err instanceof Error ? err.message : "Refresh failed";
|
|
1440
|
+
refreshError = message;
|
|
1423
1441
|
console.error("Refresh failed", message);
|
|
1424
|
-
return
|
|
1442
|
+
return app.board();
|
|
1425
1443
|
}
|
|
1426
1444
|
},
|
|
1427
1445
|
async children(epic) {
|
|
@@ -1495,7 +1513,6 @@ function createApp(opts) {
|
|
|
1495
1513
|
var DEFAULT_PLANE_HOST = "https://plane.tail48fe8.ts.net";
|
|
1496
1514
|
var DEFAULT_PLANE_WORKSPACE = "personal";
|
|
1497
1515
|
var STATE_GROUPS = ["backlog", "unstarted", "started", "completed", "cancelled"];
|
|
1498
|
-
var RETRY_LIMIT2 = 4;
|
|
1499
1516
|
function planeHost(env = process.env) {
|
|
1500
1517
|
return (env.PLANE_HOST ?? DEFAULT_PLANE_HOST).replace(/\/$/, "");
|
|
1501
1518
|
}
|
|
@@ -1696,6 +1713,30 @@ function queryPath(path, query) {
|
|
|
1696
1713
|
return path;
|
|
1697
1714
|
return `${path}${path.includes("?") ? "&" : "?"}${encoded}`;
|
|
1698
1715
|
}
|
|
1716
|
+
function rateLimitWaitMs(headers, nowMs, on429) {
|
|
1717
|
+
const retryAfter = headers.get("Retry-After");
|
|
1718
|
+
if (retryAfter) {
|
|
1719
|
+
const seconds = Number(retryAfter.trim());
|
|
1720
|
+
if (Number.isFinite(seconds) && seconds >= 0)
|
|
1721
|
+
return seconds * 1000;
|
|
1722
|
+
const parsed = Date.parse(retryAfter);
|
|
1723
|
+
if (!Number.isNaN(parsed))
|
|
1724
|
+
return Math.max(0, parsed - nowMs);
|
|
1725
|
+
}
|
|
1726
|
+
const reset = headers.get("X-RateLimit-Reset");
|
|
1727
|
+
if (reset) {
|
|
1728
|
+
const n = Number(reset.trim());
|
|
1729
|
+
if (Number.isFinite(n)) {
|
|
1730
|
+
const resetMs = n < 1000000000000 ? n * 1000 : n;
|
|
1731
|
+
return Math.max(0, resetMs - nowMs);
|
|
1732
|
+
}
|
|
1733
|
+
}
|
|
1734
|
+
if (on429)
|
|
1735
|
+
return 60000;
|
|
1736
|
+
if (headers.get("X-RateLimit-Remaining")?.trim() === "0")
|
|
1737
|
+
return 60000;
|
|
1738
|
+
return 0;
|
|
1739
|
+
}
|
|
1699
1740
|
function errorMessage(status, body) {
|
|
1700
1741
|
try {
|
|
1701
1742
|
const parsed = JSON.parse(body);
|
|
@@ -1718,33 +1759,63 @@ function createPlaneCli(opts) {
|
|
|
1718
1759
|
const apiBase = planeApiBase(host);
|
|
1719
1760
|
const defaultFlags = opts.flags ?? DEFAULT_FLAGS;
|
|
1720
1761
|
const fetchFn = opts.fetch ?? fetch;
|
|
1721
|
-
const
|
|
1762
|
+
const nowFn = opts.now ?? Date.now;
|
|
1763
|
+
const sleepFn = opts.sleep ?? ((ms) => ms <= 0 ? Promise.resolve() : new Promise((resolve) => setTimeout(resolve, ms)));
|
|
1722
1764
|
let lastFlags = defaultFlags;
|
|
1723
1765
|
let workItemResource = "work-items";
|
|
1724
1766
|
let catalog;
|
|
1725
1767
|
function workspaceOf(flags) {
|
|
1726
1768
|
return planeWorkspace(flags || defaultFlags);
|
|
1727
1769
|
}
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1770
|
+
let notBefore = 0;
|
|
1771
|
+
let gate = Promise.resolve();
|
|
1772
|
+
function locked(fn) {
|
|
1773
|
+
const run = gate.then(fn, fn);
|
|
1774
|
+
gate = run.then(() => {
|
|
1775
|
+
return;
|
|
1776
|
+
}, () => {
|
|
1777
|
+
return;
|
|
1778
|
+
});
|
|
1779
|
+
return run;
|
|
1780
|
+
}
|
|
1781
|
+
function fail(status, body) {
|
|
1782
|
+
const error = new Error(errorMessage(status, body));
|
|
1783
|
+
error.status = status;
|
|
1784
|
+
throw error;
|
|
1785
|
+
}
|
|
1786
|
+
function noteHeaders(headers, status) {
|
|
1787
|
+
const remaining = headers.get("X-RateLimit-Remaining")?.trim();
|
|
1788
|
+
if (status !== 429 && remaining !== "0")
|
|
1789
|
+
return;
|
|
1790
|
+
const wait = rateLimitWaitMs(headers, nowFn(), status === 429);
|
|
1791
|
+
notBefore = Math.max(notBefore, nowFn() + wait);
|
|
1792
|
+
}
|
|
1793
|
+
async function request(path, init = {}) {
|
|
1794
|
+
return locked(async () => {
|
|
1795
|
+
let retried = false;
|
|
1796
|
+
while (true) {
|
|
1797
|
+
const headers = new Headers(init.headers);
|
|
1798
|
+
headers.set("X-API-Key", opts.apiKey);
|
|
1799
|
+
if (init.body && !headers.has("content-type")) {
|
|
1800
|
+
headers.set("content-type", "application/json");
|
|
1801
|
+
}
|
|
1802
|
+
const delay = notBefore - nowFn();
|
|
1803
|
+
if (delay > 0)
|
|
1804
|
+
await sleepFn(delay);
|
|
1805
|
+
const response = await fetchFn(joinUrl(apiBase, path), { ...init, headers });
|
|
1806
|
+
const body = await response.text();
|
|
1807
|
+
noteHeaders(response.headers, response.status);
|
|
1808
|
+
if (response.status === 429) {
|
|
1809
|
+
if (retried)
|
|
1810
|
+
fail(response.status, body);
|
|
1811
|
+
retried = true;
|
|
1812
|
+
continue;
|
|
1813
|
+
}
|
|
1814
|
+
if (!response.ok)
|
|
1815
|
+
fail(response.status, body);
|
|
1816
|
+
return { status: response.status, body };
|
|
1817
|
+
}
|
|
1818
|
+
});
|
|
1748
1819
|
}
|
|
1749
1820
|
async function requestJson(path, init) {
|
|
1750
1821
|
const { body } = await request(path, init);
|
|
@@ -1853,14 +1924,12 @@ function createPlaneCli(opts) {
|
|
|
1853
1924
|
const modules = new Map;
|
|
1854
1925
|
const columnStates = [];
|
|
1855
1926
|
for (const project of projects) {
|
|
1856
|
-
const
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
})))
|
|
1863
|
-
]);
|
|
1927
|
+
const stateRows = await paginate(`/workspaces/${workspace}/projects/${project.id}/states/`);
|
|
1928
|
+
const labelRows = await paginate(`/workspaces/${workspace}/projects/${project.id}/labels/`);
|
|
1929
|
+
const moduleRows = await paginate(`/workspaces/${workspace}/projects/${project.id}/modules/`);
|
|
1930
|
+
const workRows = await withResource((resource) => paginate(queryPath(`/workspaces/${workspace}/projects/${project.id}/${resource}/`, {
|
|
1931
|
+
expand: "assignees,labels,state,module"
|
|
1932
|
+
})));
|
|
1864
1933
|
const stateById = new Map;
|
|
1865
1934
|
for (const row of stateRows) {
|
|
1866
1935
|
const state = parseState(row);
|
|
@@ -1891,11 +1960,11 @@ function createPlaneCli(opts) {
|
|
|
1891
1960
|
const missingModules = moduleById.size > 0 && workItems.some((item) => item.module_ids == null && item.modules == null && item.module == null);
|
|
1892
1961
|
const issueByModule = new Map;
|
|
1893
1962
|
if (missingModules && moduleById.size) {
|
|
1894
|
-
|
|
1963
|
+
for (const moduleId of moduleById.keys()) {
|
|
1895
1964
|
const rows = await paginate(`/workspaces/${workspace}/projects/${project.id}/modules/${moduleId}/module-issues/`);
|
|
1896
1965
|
const ids = rows.map((row) => asId(asRecord(row)?.issue) ?? asId(row)).filter((id) => !!id);
|
|
1897
1966
|
issueByModule.set(moduleId, ids);
|
|
1898
|
-
}
|
|
1967
|
+
}
|
|
1899
1968
|
}
|
|
1900
1969
|
for (const raw of workItems) {
|
|
1901
1970
|
const item = raw;
|
|
@@ -2146,7 +2215,8 @@ async function createBoardApp(opts) {
|
|
|
2146
2215
|
store,
|
|
2147
2216
|
cli,
|
|
2148
2217
|
flags,
|
|
2149
|
-
jiraConfigPath: jiraCliConfigPath(env)
|
|
2218
|
+
jiraConfigPath: jiraCliConfigPath(env),
|
|
2219
|
+
liveBackend: plane
|
|
2150
2220
|
});
|
|
2151
2221
|
if (opts.piped) {
|
|
2152
2222
|
app.hydrate(opts.raw);
|
|
@@ -13237,7 +13307,11 @@ function handleFakeJira(req, res, store) {
|
|
|
13237
13307
|
|
|
13238
13308
|
// src/http.ts
|
|
13239
13309
|
function handleRequest(req, res, ctx) {
|
|
13240
|
-
|
|
13310
|
+
if (handleAppApi(req, res, ctx.app) || handleAgentApi(req, res, ctx.app))
|
|
13311
|
+
return true;
|
|
13312
|
+
if (ctx.kind === "plane")
|
|
13313
|
+
return false;
|
|
13314
|
+
return handleFakeJira(req, res, ctx.store);
|
|
13241
13315
|
}
|
|
13242
13316
|
|
|
13243
13317
|
// src/jira-config.ts
|
|
@@ -13356,7 +13430,7 @@ async function runServer(opts) {
|
|
|
13356
13430
|
flags
|
|
13357
13431
|
});
|
|
13358
13432
|
const server = createServer((req, res) => {
|
|
13359
|
-
if (handleRequest(req, res, { app, store }))
|
|
13433
|
+
if (handleRequest(req, res, { app, store, kind }))
|
|
13360
13434
|
return;
|
|
13361
13435
|
if (opts.fallback) {
|
|
13362
13436
|
opts.fallback(req, res);
|
|
@@ -13367,20 +13441,30 @@ async function runServer(opts) {
|
|
|
13367
13441
|
res.end("pipe-kan UI is missing. Run bun run build.");
|
|
13368
13442
|
}
|
|
13369
13443
|
});
|
|
13444
|
+
if (kind === "plane") {
|
|
13445
|
+
try {
|
|
13446
|
+
await refreshFromJira(app, kind, { piped: Boolean(piped) });
|
|
13447
|
+
} catch (err) {
|
|
13448
|
+
console.error(`${kind} Refresh failed`, err);
|
|
13449
|
+
}
|
|
13450
|
+
const error = app.board().error;
|
|
13451
|
+
if (error)
|
|
13452
|
+
console.error(`${kind} Refresh failed; keeping last live Board`, error);
|
|
13453
|
+
}
|
|
13370
13454
|
const { host, port } = resolveListen();
|
|
13371
13455
|
await bindListen(server, host, port);
|
|
13372
13456
|
const origin = `http://127.0.0.1:${port}`;
|
|
13373
|
-
const fakeConfig = writeJiraConfig(join10(tmpdir3(), "pipe-kan"), origin);
|
|
13374
13457
|
announce(`pipe-kan http://${host}:${port}`);
|
|
13375
13458
|
if (kind === "plane") {
|
|
13376
13459
|
announce(`cli plane ${planeHost()} ${planeWorkspace(flags)}`);
|
|
13377
13460
|
announce(`Plane host default ${DEFAULT_PLANE_HOST}`);
|
|
13378
13461
|
} else {
|
|
13462
|
+
const fakeConfig = writeJiraConfig(join10(tmpdir3(), "pipe-kan"), origin);
|
|
13379
13463
|
announce(`cli ${kind === "jira" ? resolveJiraBin() : "store"}`);
|
|
13380
13464
|
announce(`Fake Jira ${origin}/rest/api/2/search`);
|
|
13381
13465
|
announce(`Fake Jira config ${fakeConfig}`);
|
|
13382
13466
|
}
|
|
13383
|
-
if (kind === "jira"
|
|
13467
|
+
if (kind === "jira") {
|
|
13384
13468
|
try {
|
|
13385
13469
|
await refreshFromJira(app, kind, { piped: Boolean(piped) });
|
|
13386
13470
|
} catch (err) {
|
|
@@ -53,4 +53,4 @@ Error generating stack: `+e.message+`
|
|
|
53
53
|
To pick up a draggable item, press the space bar.
|
|
54
54
|
While dragging, use the arrow keys to move the item.
|
|
55
55
|
Press space again to drop the item in its new position, or press escape to cancel.
|
|
56
|
-
`},hO={onDragStart(e){let{active:t}=e;return`Picked up draggable item `+t.id+`.`},onDragOver(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was moved over droppable area `+n.id+`.`:`Draggable item `+t.id+` is no longer over a droppable area.`},onDragEnd(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was dropped over droppable area `+n.id:`Draggable item `+t.id+` was dropped.`},onDragCancel(e){let{active:t}=e;return`Dragging was cancelled. Draggable item `+t.id+` was dropped.`}};function gO(e){let{announcements:t=hO,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=mO}=e,{announce:a,announcement:o}=uO(),s=XD(`DndLiveRegion`),[c,l]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{l(!0)},[]),fO((0,C.useMemo)(()=>({onDragStart(e){let{active:n}=e;a(t.onDragStart({active:n}))},onDragMove(e){let{active:n,over:r}=e;t.onDragMove&&a(t.onDragMove({active:n,over:r}))},onDragOver(e){let{active:n,over:r}=e;a(t.onDragOver({active:n,over:r}))},onDragEnd(e){let{active:n,over:r}=e;a(t.onDragEnd({active:n,over:r}))},onDragCancel(e){let{active:n,over:r}=e;a(t.onDragCancel({active:n,over:r}))}}),[a,t])),!c)return null;let u=C.createElement(C.Fragment,null,C.createElement(cO,{id:r,value:i.draggable}),C.createElement(lO,{id:s,announcement:o}));return n?(0,pe.createPortal)(u,n):u}var _O;(function(e){e.DragStart=`dragStart`,e.DragMove=`dragMove`,e.DragEnd=`dragEnd`,e.DragCancel=`dragCancel`,e.DragOver=`dragOver`,e.RegisterDroppable=`registerDroppable`,e.SetDroppableDisabled=`setDroppableDisabled`,e.UnregisterDroppable=`unregisterDroppable`})(_O||={});function vO(){}function yO(e,t){return(0,C.useMemo)(()=>({sensor:e,options:t??{}}),[e,t])}function bO(){var e=[...arguments];return(0,C.useMemo)(()=>[...e].filter(e=>e!=null),[...e])}var xO=Object.freeze({x:0,y:0});function SO(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function CO(e,t){let n=rO(e);if(!n)return`0 0`;let r={x:(n.x-t.left)/t.width*100,y:(n.y-t.top)/t.height*100};return r.x+`% `+r.y+`%`}function wO(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function TO(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function EO(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function DO(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}var OO=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=EO(t),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=EO(r),o=i.reduce((e,t,r)=>e+SO(n[r],t),0),s=Number((o/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:s}})}}return a.sort(wO)};function kO(e,t){let n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=i-r,s=a-n;if(r<i&&n<a){let n=t.width*t.height,r=e.width*e.height,i=o*s,a=i/(n+r-i);return Number(a.toFixed(4))}return 0}var AO=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=[];for(let e of r){let{id:r}=e,a=n.get(r);if(a){let n=kO(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(TO)};function jO(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function MO(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:xO}function NO(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}var PO=NO(1);function FO(e){if(e.startsWith(`matrix3d(`)){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}if(e.startsWith(`matrix(`)){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function IO(e,t,n){let r=FO(t);if(!r)return e;let{scaleX:i,scaleY:a,x:o,y:s}=r,c=e.left-o-(1-i)*parseFloat(n),l=e.top-s-(1-a)*parseFloat(n.slice(n.indexOf(` `)+1)),u=i?e.width/i:e.width,d=a?e.height/a:e.height;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c}}var LO={ignoreTransform:!1};function RO(e,t){t===void 0&&(t=LO);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=LD(e).getComputedStyle(e);t&&(n=IO(n,t,r))}let{top:r,left:i,width:a,height:o,bottom:s,right:c}=n;return{top:r,left:i,width:a,height:o,bottom:s,right:c}}function zO(e){return RO(e,{ignoreTransform:!0})}function BO(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function VO(e,t){return t===void 0&&(t=LD(e).getComputedStyle(e)),t.position===`fixed`}function HO(e,t){t===void 0&&(t=LD(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`&&n.test(r)})}function UO(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(RD(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!zD(i)||BD(i)||n.includes(i))return n;let a=LD(e).getComputedStyle(i);return i!==e&&HO(i,a)&&n.push(i),VO(i,a)?n:r(i.parentNode)}return e?r(e):n}function WO(e){let[t]=UO(e,1);return t??null}function GO(e){return!PD||!e?null:FD(e)?e:ID(e)?RD(e)||e===VD(e).scrollingElement?window:zD(e)?e:null:null}function KO(e){return FD(e)?e.scrollX:e.scrollLeft}function qO(e){return FD(e)?e.scrollY:e.scrollTop}function JO(e){return{x:KO(e),y:qO(e)}}var YO;(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(YO||={});function XO(e){return!PD||!e?!1:e===document.scrollingElement}function ZO(e){let t={x:0,y:0},n=XO(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}var QO={x:.2,y:.2};function $O(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=QO);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=ZO(e),p={x:0,y:0},m={x:0,y:0},h={height:t.height*i.y,width:t.width*i.x};return!l&&a<=t.top+h.height?(p.y=YO.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=YO.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=YO.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=YO.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function ek(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function tk(e){return e.reduce((e,t)=>QD(e,JO(t)),xO)}function nk(e){return e.reduce((e,t)=>e+KO(t),0)}function rk(e){return e.reduce((e,t)=>e+qO(t),0)}function ik(e,t){if(t===void 0&&(t=RO),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);WO(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}var ak=[[`x`,[`left`,`right`],nk],[`y`,[`top`,`bottom`],rk]],ok=class{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;let n=UO(t),r=tk(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of ak)for(let a of t)Object.defineProperty(this,a,{get:()=>{let t=i(n),o=r[e]-t;return this.rect[a]+o},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}},sk=class{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>this.target?.removeEventListener(...e))},this.target=e}add(e,t,n){var r;(r=this.target)==null||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}};function ck(e){let{EventTarget:t}=LD(e);return e instanceof t?e:VD(e)}function lk(e,t){let n=Math.abs(e.x),r=Math.abs(e.y);return typeof t==`number`?Math.sqrt(n**2+r**2)>t:`x`in t&&`y`in t?n>t.x&&r>t.y:`x`in t?n>t.x:`y`in t&&r>t.y}var uk;(function(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(uk||={});function dk(e){e.preventDefault()}function fk(e){e.stopPropagation()}var pk;(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})(pk||={});var mk={start:[pk.Space,pk.Enter],cancel:[pk.Esc],end:[pk.Space,pk.Enter,pk.Tab]},hk=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case pk.Right:return{...n,x:n.x+25};case pk.Left:return{...n,x:n.x-25};case pk.Down:return{...n,y:n.y+25};case pk.Up:return{...n,y:n.y-25}}},gk=class{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;let{event:{target:t}}=e;this.props=e,this.listeners=new sk(VD(t)),this.windowListeners=new sk(LD(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(uk.Resize,this.handleCancel),this.windowListeners.add(uk.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(uk.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&ik(n),t(xO)}handleKeyDown(e){if(tO(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=mk,coordinateGetter:a=hk,scrollBehavior:o=`smooth`}=r,{code:s}=e;if(i.end.includes(s)){this.handleEnd(e);return}if(i.cancel.includes(s)){this.handleCancel(e);return}let{collisionRect:c}=n.current,l=c?{x:c.left,y:c.top}:xO;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=$D(u,l),r={x:0,y:0},{scrollableAncestors:i}=n.current;for(let n of i){let i=e.code,{isTop:a,isRight:s,isLeft:c,isBottom:l,maxScroll:d,minScroll:f}=ZO(n),p=ek(n),m={x:Math.min(i===pk.Right?p.right-p.width/2:p.right,Math.max(i===pk.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===pk.Down?p.bottom-p.height/2:p.bottom,Math.max(i===pk.Down?p.top:p.top+p.height/2,u.y))},h=i===pk.Right&&!s||i===pk.Left&&!c,g=i===pk.Down&&!l||i===pk.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===pk.Right&&e<=d.x||i===pk.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}r.x=a?n.scrollLeft-e:i===pk.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===pk.Down&&e<=d.y||i===pk.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}r.y=a?n.scrollTop-e:i===pk.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,QD($D(u,this.referenceCoordinates),r))}}}handleMove(e,t){let{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}};gk.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=mk,onActivation:i}=t,{active:a}=n,{code:o}=e.nativeEvent;if(r.start.includes(o)){let t=a.activatorNode.current;return t&&e.target!==t?!1:(e.preventDefault(),i?.({event:e.nativeEvent}),!0)}return!1}}];function _k(e){return!!(e&&`distance`in e)}function vk(e){return!!(e&&`delay`in e)}var yk=class{constructor(e,t,n){n===void 0&&(n=ck(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;let{event:r}=e,{target:i}=r;this.props=e,this.events=t,this.document=VD(i),this.documentListeners=new sk(this.document),this.listeners=new sk(n),this.windowListeners=new sk(LD(i)),this.initialCoordinates=rO(r)??xO,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(uk.Resize,this.handleCancel),this.windowListeners.add(uk.DragStart,dk),this.windowListeners.add(uk.VisibilityChange,this.handleCancel),this.windowListeners.add(uk.ContextMenu,dk),this.documentListeners.add(uk.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(vk(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(_k(t)){this.handlePending(t);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(uk.Click,fk,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(uk.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){let{activated:t,initialCoordinates:n,props:r}=this,{onMove:i,options:{activationConstraint:a}}=r;if(!n)return;let o=rO(e)??xO,s=$D(n,o);if(!t&&a){if(_k(a)){if(a.tolerance!=null&&lk(s,a.tolerance))return this.handleCancel();if(lk(s,a.distance))return this.handleStart()}if(vk(a)&&lk(s,a.tolerance))return this.handleCancel();this.handlePending(a,s);return}e.cancelable&&e.preventDefault(),i(o)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===pk.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},bk={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},xk=class extends yk{constructor(e){let{event:t}=e,n=VD(t.target);super(e,bk,n)}};xk.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];var Sk={move:{name:`mousemove`},end:{name:`mouseup`}},Ck;(function(e){e[e.RightClick=2]=`RightClick`})(Ck||={});var wk=class extends yk{constructor(e){super(e,Sk,VD(e.event.target))}};wk.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button!==Ck.RightClick&&(r?.({event:n}),!0)}}];var Tk={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},Ek=class extends yk{constructor(e){super(e,Tk)}static setup(){return window.addEventListener(Tk.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(Tk.move.name,e)};function e(){}}};Ek.activators=[{eventName:`onTouchStart`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t,{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}];var Dk;(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(Dk||={});var Ok;(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})(Ok||={});function kk(e){let{acceleration:t,activator:n=Dk.Pointer,canScroll:r,draggingRect:i,enabled:a,interval:o=5,order:s=Ok.TreeOrder,pointerCoordinates:c,scrollableAncestors:l,scrollableAncestorRects:u,delta:d,threshold:f}=e,p=jk({delta:d,disabled:!a}),[m,h]=WD(),g=(0,C.useRef)({x:0,y:0}),_=(0,C.useRef)({x:0,y:0}),v=(0,C.useMemo)(()=>{switch(n){case Dk.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case Dk.DraggableRect:return i}},[n,i,c]),y=(0,C.useRef)(null),b=(0,C.useCallback)(()=>{let e=y.current;if(!e)return;let t=g.current.x*_.current.x,n=g.current.y*_.current.y;e.scrollBy(t,n)},[]),x=(0,C.useMemo)(()=>s===Ok.TreeOrder?[...l].reverse():l,[s,l]);(0,C.useEffect)(()=>{if(!a||!l.length||!v){h();return}for(let e of x){if(r?.(e)===!1)continue;let n=l.indexOf(e),i=u[n];if(!i)continue;let{direction:a,speed:s}=$O(e,i,v,t,f);for(let e of[`x`,`y`])p[e][a[e]]||(s[e]=0,a[e]=0);if(s.x>0||s.y>0){h(),y.current=e,m(b,o),g.current=s,_.current=a;return}}g.current={x:0,y:0},_.current={x:0,y:0},h()},[t,b,r,h,a,o,JSON.stringify(v),JSON.stringify(p),m,l,x,u,JSON.stringify(f)])}var Ak={x:{[YO.Backward]:!1,[YO.Forward]:!1},y:{[YO.Backward]:!1,[YO.Forward]:!1}};function jk(e){let{delta:t,disabled:n}=e,r=JD(t);return KD(e=>{if(n||!r||!e)return Ak;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[YO.Backward]:e.x[YO.Backward]||i.x===-1,[YO.Forward]:e.x[YO.Forward]||i.x===1},y:{[YO.Backward]:e.y[YO.Backward]||i.y===-1,[YO.Forward]:e.y[YO.Forward]||i.y===1}}},[n,t,r])}function Mk(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return KD(e=>t==null?null:r??e??null,[r,t])}function Nk(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{sensor:r}=n,i=r.activators.map(e=>({eventName:e.eventName,handler:t(e.handler,n)}));return[...e,...i]},[]),[e,t])}var Pk;(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(Pk||={});var Fk;(function(e){e.Optimized=`optimized`})(Fk||={});var Ik=new Map;function Lk(e,t){let{dragging:n,dependencies:r,config:i}=t,[a,o]=(0,C.useState)(null),{frequency:s,measure:c,strategy:l}=i,u=(0,C.useRef)(e),d=g(),f=GD(d),p=(0,C.useCallback)(function(e){e===void 0&&(e=[]),!f.current&&o(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[f]),m=(0,C.useRef)(null),h=KD(t=>{if(d&&!n)return Ik;if(!t||t===Ik||u.current!==e||a!=null){let t=new Map;for(let n of e){if(!n)continue;if(a&&a.length>0&&!a.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new ok(c(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,a,n,d,c]);return(0,C.useEffect)(()=>{u.current=e},[e]),(0,C.useEffect)(()=>{d||p()},[n,d]),(0,C.useEffect)(()=>{a&&a.length>0&&o(null)},[JSON.stringify(a)]),(0,C.useEffect)(()=>{d||typeof s!=`number`||m.current!==null||(m.current=setTimeout(()=>{p(),m.current=null},s))},[s,d,p,...r]),{droppableRects:h,measureDroppableContainers:p,measuringScheduled:a!=null};function g(){switch(l){case Pk.Always:return!1;case Pk.BeforeDragging:return n;default:return!n}}}function Rk(e,t){return KD(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function zk(e,t){return Rk(e,t)}function Bk(e){let{callback:t,disabled:n}=e,r=UD(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(r)},[r,n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function Vk(e){let{callback:t,disabled:n}=e,r=UD(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(r)},[n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function Hk(e){return new ok(RO(e),e)}function Uk(e,t,n){t===void 0&&(t=Hk);let[r,i]=(0,C.useState)(null);function a(){i(r=>{if(!e)return null;if(e.isConnected===!1)return r??n??null;let i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i})}let o=Bk({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){a();break}}}}),s=Vk({callback:a});return HD(()=>{a(),e?(s?.observe(e),o?.observe(document.body,{childList:!0,subtree:!0})):(s?.disconnect(),o?.disconnect())},[e]),r}function Wk(e){return MO(e,Rk(e))}var Gk=[];function Kk(e){let t=(0,C.useRef)(e),n=KD(n=>e?n&&n!==Gk&&e&&t.current&&e.parentNode===t.current.parentNode?n:UO(e):Gk,[e]);return(0,C.useEffect)(()=>{t.current=e},[e]),n}function qk(e){let[t,n]=(0,C.useState)(null),r=(0,C.useRef)(e),i=(0,C.useCallback)(e=>{let t=GO(e.target);t&&n(e=>e?(e.set(t,JO(t)),new Map(e)):null)},[]);return(0,C.useEffect)(()=>{let t=r.current;if(e!==t){a(t);let o=e.map(e=>{let t=GO(e);return t?(t.addEventListener(`scroll`,i,{passive:!0}),[t,JO(t)]):null}).filter(e=>e!=null);n(o.length?new Map(o):null),r.current=e}return()=>{a(e),a(t)};function a(e){e.forEach(e=>{GO(e)?.removeEventListener(`scroll`,i)})}},[i,e]),(0,C.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>QD(e,t),xO):tk(e):xO,[e,t])}function Jk(e,t){t===void 0&&(t=[]);let n=(0,C.useRef)(null);return(0,C.useEffect)(()=>{n.current=null},t),(0,C.useEffect)(()=>{let t=e!==xO;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)},[e]),n.current?$D(e,n.current):xO}function Yk(e){(0,C.useEffect)(()=>{if(!PD)return;let t=e.map(e=>{let{sensor:t}=e;return t.setup==null?void 0:t.setup()});return()=>{for(let e of t)e?.()}},e.map(e=>{let{sensor:t}=e;return t}))}function Xk(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{eventName:r,handler:i}=n;return e[r]=e=>{i(e,t)},e},{}),[e,t])}function Zk(e){return(0,C.useMemo)(()=>e?BO(e):null,[e])}var Qk=[];function $k(e,t){t===void 0&&(t=RO);let[n]=e,r=Zk(n?LD(n):null),[i,a]=(0,C.useState)(Qk);function o(){a(()=>e.length?e.map(e=>XO(e)?r:new ok(t(e),e)):Qk)}let s=Vk({callback:o});return HD(()=>{s?.disconnect(),o(),e.forEach(e=>s?.observe(e))},[e]),i}function eA(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return zD(t)?t:e}function tA(e){let{measure:t}=e,[n,r]=(0,C.useState)(null),i=Vk({callback:(0,C.useCallback)(e=>{for(let{target:n}of e)if(zD(n)){r(e=>{let r=t(n);return e?{...e,width:r.width,height:r.height}:r});break}},[t])}),[a,o]=qD((0,C.useCallback)(e=>{let n=eA(e);i?.disconnect(),n&&i?.observe(n),r(n?t(n):null)},[t,i]));return(0,C.useMemo)(()=>({nodeRef:a,rect:n,setRef:o}),[n,a,o])}var nA=[{sensor:xk,options:{}},{sensor:gk,options:{}}],rA={current:{}},iA={draggable:{measure:zO},droppable:{measure:zO,strategy:Pk.WhileDragging,frequency:Fk.Optimized},dragOverlay:{measure:RO}},aA=class extends Map{get(e){return e==null?void 0:super.get(e)??void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){return this.get(e)?.node.current??void 0}},oA={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new aA,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:vO},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:iA,measureDroppableContainers:vO,windowRect:null,measuringScheduled:!1},sA={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:vO,draggableNodes:new Map,over:null,measureDroppableContainers:vO},cA=(0,C.createContext)(sA),lA=(0,C.createContext)(oA);function uA(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new aA}}}function dA(e,t){switch(t.type){case _O.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case _O.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case _O.DragEnd:case _O.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case _O.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new aA(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case _O.SetDroppableDisabled:{let{id:n,key:r,disabled:i}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;let o=new aA(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case _O.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new aA(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function fA(e){let{disabled:t}=e,{active:n,activatorEvent:r,draggableNodes:i}=(0,C.useContext)(cA),a=JD(r),o=JD(n?.id);return(0,C.useEffect)(()=>{if(!t&&!r&&a&&o!=null){if(!tO(a)||document.activeElement===a.target)return;let e=i.get(o);if(!e)return;let{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(let e of[t.current,n.current]){if(!e)continue;let t=oO(e);if(t){t.focus();break}}})}},[r,t,i,o,a]),null}function pA(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function mA(e){return(0,C.useMemo)(()=>({draggable:{...iA.draggable,...e?.draggable},droppable:{...iA.droppable,...e?.droppable},dragOverlay:{...iA.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function hA(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e,a=(0,C.useRef)(!1),{x:o,y:s}=typeof i==`boolean`?{x:i,y:i}:i;HD(()=>{if(!o&&!s||!t){a.current=!1;return}if(a.current||!r)return;let e=t?.node.current;if(!e||e.isConnected===!1)return;let i=MO(n(e),r);if(o||(i.x=0),s||(i.y=0),a.current=!0,Math.abs(i.x)>0||Math.abs(i.y)>0){let t=WO(e);t&&t.scrollBy({top:i.y,left:i.x})}},[t,o,s,r,n])}var gA=(0,C.createContext)({...xO,scaleX:1,scaleY:1}),_A;(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(_A||={});var vA=(0,C.memo)(function(e){let{id:t,accessibility:n,autoScroll:r=!0,children:i,sensors:a=nA,collisionDetection:o=AO,measuring:s,modifiers:c,...l}=e,[u,d]=(0,C.useReducer)(dA,void 0,uA),[f,p]=pO(),[m,h]=(0,C.useState)(_A.Uninitialized),g=m===_A.Initialized,{draggable:{active:_,nodes:v,translate:y},droppable:{containers:b}}=u,x=_==null?null:v.get(_),S=(0,C.useRef)({initial:null,translated:null}),w=(0,C.useMemo)(()=>_==null?null:{id:_,data:x?.data??rA,rect:S},[_,x]),T=(0,C.useRef)(null),[E,D]=(0,C.useState)(null),[O,ee]=(0,C.useState)(null),k=GD(l,Object.values(l)),A=XD(`DndDescribedBy`,t),j=(0,C.useMemo)(()=>b.getEnabled(),[b]),M=mA(s),{droppableRects:te,measureDroppableContainers:N,measuringScheduled:P}=Lk(j,{dragging:g,dependencies:[y.x,y.y],config:M.droppable}),F=Mk(v,_),ne=(0,C.useMemo)(()=>O?rO(O):null,[O]),re=Ae(),ie=zk(F,M.draggable.measure);hA({activeNode:_==null?null:v.get(_),config:re.layoutShiftCompensation,initialRect:ie,measure:M.draggable.measure});let I=Uk(F,M.draggable.measure,ie),L=Uk(F?F.parentElement:null),R=(0,C.useRef)({activatorEvent:null,active:null,activeNode:F,collisionRect:null,collisions:null,droppableRects:te,draggableNodes:v,draggingNode:null,draggingNodeRect:null,droppableContainers:b,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ae=b.getNodeFor(R.current.over?.id),z=tA({measure:M.dragOverlay.measure}),B=z.nodeRef.current??F,oe=g?z.rect??I:null,se=!!(z.nodeRef.current&&z.rect),ce=Wk(se?null:I),le=Zk(B?LD(B):null),ue=Kk(g?ae??F:null),de=$k(ue),fe=pA(c,{transform:{x:y.x-ce.x,y:y.y-ce.y,scaleX:1,scaleY:1},activatorEvent:O,active:w,activeNodeRect:I,containerNodeRect:L,draggingNodeRect:oe,over:R.current.over,overlayNodeRect:z.rect,scrollableAncestors:ue,scrollableAncestorRects:de,windowRect:le}),me=ne?QD(ne,y):null,he=qk(ue),ge=Jk(he),_e=Jk(he,[I]),ve=QD(fe,ge),ye=oe?PO(oe,fe):null,be=w&&ye?o({active:w,collisionRect:ye,droppableRects:te,droppableContainers:j,pointerCoordinates:me}):null,xe=DO(be,`id`),[Se,Ce]=(0,C.useState)(null),we=jO(se?fe:QD(fe,_e),Se?.rect??null,I),Te=(0,C.useRef)(null),Ee=(0,C.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(T.current==null)return;let i=v.get(T.current);if(!i)return;let a=e.nativeEvent,o=new n({active:T.current,activeNode:i,event:a,options:r,context:R,onAbort(e){if(!v.get(e))return;let{onDragAbort:t}=k.current,n={id:e};t?.(n),f({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!v.get(e))return;let{onDragPending:i}=k.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),f({type:`onDragPending`,event:a})},onStart(e){let t=T.current;if(t==null)return;let n=v.get(t);if(!n)return;let{onDragStart:r}=k.current,i={activatorEvent:a,active:{id:t,data:n.data,rect:S}};(0,pe.unstable_batchedUpdates)(()=>{r?.(i),h(_A.Initializing),d({type:_O.DragStart,initialCoordinates:e,active:t}),f({type:`onDragStart`,event:i}),D(Te.current),ee(a)})},onMove(e){d({type:_O.DragMove,coordinates:e})},onEnd:s(_O.DragEnd),onCancel:s(_O.DragCancel)});Te.current=o;function s(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:i}=R.current,o=null;if(t&&i){let{cancelDrop:s}=k.current;o={activatorEvent:a,active:t,collisions:n,delta:i,over:r},e===_O.DragEnd&&typeof s==`function`&&await Promise.resolve(s(o))&&(e=_O.DragCancel)}T.current=null,(0,pe.unstable_batchedUpdates)(()=>{d({type:e}),h(_A.Uninitialized),Ce(null),D(null),ee(null),Te.current=null;let t=e===_O.DragEnd?`onDragEnd`:`onDragCancel`;if(o){let e=k.current[t];e?.(o),f({type:t,event:o})}})}}},[v]),De=Nk(a,(0,C.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=v.get(r);if(T.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},T.current=r,Ee(n,t))},[v,Ee]));Yk(a),HD(()=>{I&&m===_A.Initializing&&h(_A.Initialized)},[I,m]),(0,C.useEffect)(()=>{let{onDragMove:e}=k.current,{active:t,activatorEvent:n,collisions:r,over:i}=R.current;if(!t||!n)return;let a={active:t,activatorEvent:n,collisions:r,delta:{x:ve.x,y:ve.y},over:i};(0,pe.unstable_batchedUpdates)(()=>{e?.(a),f({type:`onDragMove`,event:a})})},[ve.x,ve.y]),(0,C.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:i}=R.current;if(!e||T.current==null||!t||!i)return;let{onDragOver:a}=k.current,o=r.get(xe),s=o&&o.rect.current?{id:o.id,rect:o.rect.current,data:o.data,disabled:o.disabled}:null,c={active:e,activatorEvent:t,collisions:n,delta:{x:i.x,y:i.y},over:s};(0,pe.unstable_batchedUpdates)(()=>{Ce(s),a?.(c),f({type:`onDragOver`,event:c})})},[xe]),HD(()=>{R.current={activatorEvent:O,active:w,activeNode:F,collisionRect:ye,collisions:be,droppableRects:te,draggableNodes:v,draggingNode:B,draggingNodeRect:oe,droppableContainers:b,over:Se,scrollableAncestors:ue,scrollAdjustedTranslate:ve},S.current={initial:oe,translated:ye}},[w,F,be,ye,v,B,oe,te,b,Se,ue,ve]),kk({...re,delta:y,draggingRect:ye,pointerCoordinates:me,scrollableAncestors:ue,scrollableAncestorRects:de});let Oe=(0,C.useMemo)(()=>({active:w,activeNode:F,activeNodeRect:I,activatorEvent:O,collisions:be,containerNodeRect:L,dragOverlay:z,draggableNodes:v,droppableContainers:b,droppableRects:te,over:Se,measureDroppableContainers:N,scrollableAncestors:ue,scrollableAncestorRects:de,measuringConfiguration:M,measuringScheduled:P,windowRect:le}),[w,F,I,O,be,L,z,v,b,te,Se,N,ue,de,M,P,le]),ke=(0,C.useMemo)(()=>({activatorEvent:O,activators:De,active:w,activeNodeRect:I,ariaDescribedById:{draggable:A},dispatch:d,draggableNodes:v,over:Se,measureDroppableContainers:N}),[O,De,w,I,d,A,v,Se,N]);return C.createElement(dO.Provider,{value:p},C.createElement(cA.Provider,{value:ke},C.createElement(lA.Provider,{value:Oe},C.createElement(gA.Provider,{value:we},i)),C.createElement(fA,{disabled:n?.restoreFocus===!1})),C.createElement(gO,{...n,hiddenTextDescribedById:A}));function Ae(){let e=E?.autoScrollEnabled===!1,t=typeof r==`object`?r.enabled===!1:r===!1,n=g&&!e&&!t;return typeof r==`object`?{...r,enabled:n}:{enabled:n}}}),yA=(0,C.createContext)(null),bA=`button`,xA=`Draggable`;function SA(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e,a=XD(xA),{activators:o,activatorEvent:s,active:c,activeNodeRect:l,ariaDescribedById:u,draggableNodes:d,over:f}=(0,C.useContext)(cA),{role:p=bA,roleDescription:m=`draggable`,tabIndex:h=0}=i??{},g=c?.id===t,_=(0,C.useContext)(g?gA:yA),[v,y]=qD(),[b,x]=qD(),S=Xk(o,t),w=GD(n);return HD(()=>(d.set(t,{id:t,key:a,node:v,activatorNode:b,data:w}),()=>{let e=d.get(t);e&&e.key===a&&d.delete(t)}),[d,t]),{active:c,activatorEvent:s,activeNodeRect:l,attributes:(0,C.useMemo)(()=>({role:p,tabIndex:h,"aria-disabled":r,"aria-pressed":g&&p===bA?!0:void 0,"aria-roledescription":m,"aria-describedby":u.draggable}),[r,p,h,g,m,u.draggable]),isDragging:g,listeners:r?void 0:S,node:v,over:f,setNodeRef:y,setActivatorNodeRef:x,transform:_}}function CA(){return(0,C.useContext)(lA)}var wA=`Droppable`,TA={timeout:25};function EA(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e,a=XD(wA),{active:o,dispatch:s,over:c,measureDroppableContainers:l}=(0,C.useContext)(cA),u=(0,C.useRef)({disabled:n}),d=(0,C.useRef)(!1),f=(0,C.useRef)(null),p=(0,C.useRef)(null),{disabled:m,updateMeasurementsFor:h,timeout:g}={...TA,...i},_=GD(h??r),v=Vk({callback:(0,C.useCallback)(()=>{if(!d.current){d.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{l(Array.isArray(_.current)?_.current:[_.current]),p.current=null},g)},[g]),disabled:m||!o}),[y,b]=qD((0,C.useCallback)((e,t)=>{v&&(t&&(v.unobserve(t),d.current=!1),e&&v.observe(e))},[v])),x=GD(t);return(0,C.useEffect)(()=>{v&&y.current&&(v.disconnect(),d.current=!1,v.observe(y.current))},[y,v]),(0,C.useEffect)(()=>(s({type:_O.RegisterDroppable,element:{id:r,key:a,disabled:n,node:y,rect:f,data:x}}),()=>s({type:_O.UnregisterDroppable,key:a,id:r})),[r]),(0,C.useEffect)(()=>{n!==u.current.disabled&&(s({type:_O.SetDroppableDisabled,id:r,key:a,disabled:n}),u.current.disabled=n)},[r,a,n,s]),{active:o,rect:f,isOver:c?.id===r,node:y,over:c,setNodeRef:b}}function DA(e){let{animation:t,children:n}=e,[r,i]=(0,C.useState)(null),[a,o]=(0,C.useState)(null),s=JD(n);return!n&&!r&&s&&i(s),HD(()=>{if(!a)return;let e=r?.key,n=r?.props.id;if(e==null||n==null){i(null);return}Promise.resolve(t(n,a)).then(()=>{i(null)})},[t,r,a]),C.createElement(C.Fragment,null,n,r?(0,C.cloneElement)(r,{ref:o}):null)}var OA={x:0,y:0,scaleX:1,scaleY:1};function kA(e){let{children:t}=e;return C.createElement(cA.Provider,{value:sA},C.createElement(gA.Provider,{value:OA},t))}var AA={position:`fixed`,touchAction:`none`},jA=e=>tO(e)?`transform 250ms ease`:void 0,MA=(0,C.forwardRef)((e,t)=>{let{as:n,activatorEvent:r,adjustScale:i,children:a,className:o,rect:s,style:c,transform:l,transition:u=jA}=e;if(!s)return null;let d=i?l:{...l,scaleX:1,scaleY:1},f={...AA,width:s.width,height:s.height,top:s.top,left:s.left,transform:iO.Transform.toString(d),transformOrigin:i&&r?CO(r,s):void 0,transition:typeof u==`function`?u(r):u,...c};return C.createElement(n,{className:o,style:f,ref:t},a)}),NA=e=>t=>{let{active:n,dragOverlay:r}=t,i={},{styles:a,className:o}=e;if(a!=null&&a.active)for(let[e,t]of Object.entries(a.active))t!==void 0&&(i[e]=n.node.style.getPropertyValue(e),n.node.style.setProperty(e,t));if(a!=null&&a.dragOverlay)for(let[e,t]of Object.entries(a.dragOverlay))t!==void 0&&r.node.style.setProperty(e,t);return o!=null&&o.active&&n.node.classList.add(o.active),o!=null&&o.dragOverlay&&r.node.classList.add(o.dragOverlay),function(){for(let[e,t]of Object.entries(i))n.node.style.setProperty(e,t);o!=null&&o.active&&n.node.classList.remove(o.active)}},PA={duration:250,easing:`ease`,keyframes:e=>{let{transform:{initial:t,final:n}}=e;return[{transform:iO.Transform.toString(t)},{transform:iO.Transform.toString(n)}]},sideEffects:NA({styles:{active:{opacity:`0`}}})};function FA(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:i}=e;return UD((e,a)=>{if(t===null)return;let o=n.get(e);if(!o)return;let s=o.node.current;if(!s)return;let c=eA(a);if(!c)return;let{transform:l}=LD(a).getComputedStyle(a),u=FO(l);if(!u)return;let d=typeof t==`function`?t:IA(t);return ik(s,i.draggable.measure),d({active:{id:e,data:o.data,node:s,rect:i.draggable.measure(s)},draggableNodes:n,dragOverlay:{node:a,rect:i.dragOverlay.measure(c)},droppableContainers:r,measuringConfiguration:i,transform:u})})}function IA(e){let{duration:t,easing:n,sideEffects:r,keyframes:i}={...PA,...e};return e=>{let{active:a,dragOverlay:o,transform:s,...c}=e;if(!t)return;let l={x:o.rect.left-a.rect.left,y:o.rect.top-a.rect.top},u={scaleX:s.scaleX===1?1:a.rect.width*s.scaleX/o.rect.width,scaleY:s.scaleY===1?1:a.rect.height*s.scaleY/o.rect.height},d={x:s.x-l.x,y:s.y-l.y,...u},f=i({...c,active:a,dragOverlay:o,transform:{initial:s,final:d}}),[p]=f,m=f[f.length-1];if(JSON.stringify(p)===JSON.stringify(m))return;let h=r?.({active:a,dragOverlay:o,...c}),g=o.node.animate(f,{duration:t,easing:n,fill:`forwards`});return new Promise(e=>{g.onfinish=()=>{h?.(),e()}})}}var LA=0;function RA(e){return(0,C.useMemo)(()=>{if(e!=null)return LA++,LA},[e])}var zA=C.memo(e=>{let{adjustScale:t=!1,children:n,dropAnimation:r,style:i,transition:a,modifiers:o,wrapperElement:s=`div`,className:c,zIndex:l=999}=e,{activatorEvent:u,active:d,activeNodeRect:f,containerNodeRect:p,draggableNodes:m,droppableContainers:h,dragOverlay:g,over:_,measuringConfiguration:v,scrollableAncestors:y,scrollableAncestorRects:b,windowRect:x}=CA(),S=(0,C.useContext)(gA),w=RA(d?.id),T=pA(o,{activatorEvent:u,active:d,activeNodeRect:f,containerNodeRect:p,draggingNodeRect:g.rect,over:_,overlayNodeRect:g.rect,scrollableAncestors:y,scrollableAncestorRects:b,transform:S,windowRect:x}),E=Rk(f),D=FA({config:r,draggableNodes:m,droppableContainers:h,measuringConfiguration:v}),O=E?g.setRef:void 0;return C.createElement(kA,null,C.createElement(DA,{animation:D},d&&w?C.createElement(MA,{key:w,id:d.id,ref:O,as:s,activatorEvent:u,adjustScale:t,className:c,transition:a,rect:E,style:{zIndex:l,...i},transform:T},n):null))});function BA(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function VA(e,t){return e.reduce((e,n,r)=>{let i=t.get(n);return i&&(e[r]=i),e},Array(e.length))}function HA(e){return e!==null&&e>=0}function UA(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function WA(e){return typeof e==`boolean`?{draggable:e,droppable:e}:e}var GA=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e,a=BA(t,r,n),o=t[i],s=a[i];return!s||!o?null:{x:s.left-o.left,y:s.top-o.top,scaleX:s.width/o.width,scaleY:s.height/o.height}},KA={scaleX:1,scaleY:1},qA=e=>{let{activeIndex:t,activeNodeRect:n,index:r,rects:i,overIndex:a}=e,o=i[t]??n;if(!o)return null;if(r===t){let e=i[a];return e?{x:0,y:t<a?e.top+e.height-(o.top+o.height):e.top-o.top,...KA}:null}let s=JA(i,r,t);return r>t&&r<=a?{x:0,y:-o.height-s,...KA}:r<t&&r>=a?{x:0,y:o.height+s,...KA}:{x:0,y:0,...KA}};function JA(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return r?n<t?i?r.top-(i.top+i.height):a?a.top-(r.top+r.height):0:a?a.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}var YA=`Sortable`,XA=C.createContext({activeIndex:-1,containerId:YA,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:GA,disabled:{draggable:!1,droppable:!1}});function ZA(e){let{children:t,id:n,items:r,strategy:i=GA,disabled:a=!1}=e,{active:o,dragOverlay:s,droppableRects:c,over:l,measureDroppableContainers:u}=CA(),d=XD(YA,n),f=s.rect!==null,p=(0,C.useMemo)(()=>r.map(e=>typeof e==`object`&&`id`in e?e.id:e),[r]),m=o!=null,h=o?p.indexOf(o.id):-1,g=l?p.indexOf(l.id):-1,_=(0,C.useRef)(p),v=!UA(p,_.current),y=g!==-1&&h===-1||v,b=WA(a);HD(()=>{v&&m&&u(p)},[v,p,m,u]),(0,C.useEffect)(()=>{_.current=p},[p]);let x=(0,C.useMemo)(()=>({activeIndex:h,containerId:d,disabled:b,disableTransforms:y,items:p,overIndex:g,useDragOverlay:f,sortedRects:VA(p,c),strategy:i}),[h,d,b.draggable,b.droppable,y,p,g,c,f,i]);return C.createElement(XA.Provider,{value:x},t)}var QA=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return BA(n,r,i).indexOf(t)},$A=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:i,items:a,newIndex:o,previousItems:s,previousContainerId:c,transition:l}=e;return!l||!r||s!==a&&i===o?!1:n?!0:o!==i&&t===c},ej={duration:200,easing:`ease`},tj=`transform`,nj=iO.Transition.toString({property:tj,duration:0,easing:`linear`}),rj={roleDescription:`sortable`};function ij(e){let{disabled:t,index:n,node:r,rect:i}=e,[a,o]=(0,C.useState)(null),s=(0,C.useRef)(n);return HD(()=>{if(!t&&n!==s.current&&r.current){let e=i.current;if(e){let t=RO(r.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&o(n)}}n!==s.current&&(s.current=n)},[t,n,r,i]),(0,C.useEffect)(()=>{a&&o(null)},[a]),a}function aj(e){let{animateLayoutChanges:t=$A,attributes:n,disabled:r,data:i,getNewIndex:a=QA,id:o,strategy:s,resizeObserverConfig:c,transition:l=ej}=e,{items:u,containerId:d,activeIndex:f,disabled:p,disableTransforms:m,sortedRects:h,overIndex:g,useDragOverlay:_,strategy:v}=(0,C.useContext)(XA),y=oj(r,p),b=u.indexOf(o),x=(0,C.useMemo)(()=>({sortable:{containerId:d,index:b,items:u},...i}),[d,i,b,u]),S=(0,C.useMemo)(()=>u.slice(u.indexOf(o)),[u,o]),{rect:w,node:T,isOver:E,setNodeRef:D}=EA({id:o,data:x,disabled:y.droppable,resizeObserverConfig:{updateMeasurementsFor:S,...c}}),{active:O,activatorEvent:ee,activeNodeRect:k,attributes:A,setNodeRef:j,listeners:M,isDragging:te,over:N,setActivatorNodeRef:P,transform:F}=SA({id:o,data:x,attributes:{...rj,...n},disabled:y.draggable}),ne=ND(D,j),re=!!O,ie=re&&!m&&HA(f)&&HA(g),I=!_&&te,L=ie?(I&&ie?F:null)??(s??v)({rects:h,activeNodeRect:k,activeIndex:f,overIndex:g,index:b}):null,R=HA(f)&&HA(g)?a({id:o,items:u,activeIndex:f,overIndex:g}):b,ae=O?.id,z=(0,C.useRef)({activeId:ae,items:u,newIndex:R,containerId:d}),B=u!==z.current.items,oe=t({active:O,containerId:d,isDragging:te,isSorting:re,id:o,index:b,items:u,newIndex:z.current.newIndex,previousItems:z.current.items,previousContainerId:z.current.containerId,transition:l,wasDragging:z.current.activeId!=null}),se=ij({disabled:!oe,index:b,node:T,rect:w});return(0,C.useEffect)(()=>{re&&z.current.newIndex!==R&&(z.current.newIndex=R),d!==z.current.containerId&&(z.current.containerId=d),u!==z.current.items&&(z.current.items=u)},[re,R,d,u]),(0,C.useEffect)(()=>{if(ae===z.current.activeId)return;if(ae!=null&&z.current.activeId==null){z.current.activeId=ae;return}let e=setTimeout(()=>{z.current.activeId=ae},50);return()=>clearTimeout(e)},[ae]),{active:O,activeIndex:f,attributes:A,data:x,rect:w,index:b,newIndex:R,items:u,isOver:E,isSorting:re,isDragging:te,listeners:M,node:T,overIndex:g,over:N,setNodeRef:ne,setActivatorNodeRef:P,setDroppableNodeRef:D,setDraggableNodeRef:j,transform:se??L,transition:ce()};function ce(){if(se||B&&z.current.newIndex===b)return nj;if(!(I&&!tO(ee)||!l)&&(re||oe))return iO.Transition.toString({...l,property:tj})}}function oj(e,t){return typeof e==`boolean`?{draggable:e,droppable:!1}:{draggable:e?.draggable??t.draggable,droppable:e?.droppable??t.droppable}}function sj(e){if(!e)return!1;let t=e.data.current;return!!(t&&`sortable`in t&&typeof t.sortable==`object`&&`containerId`in t.sortable&&`items`in t.sortable&&`index`in t.sortable)}var cj=[pk.Down,pk.Right,pk.Up,pk.Left],lj=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:i,droppableContainers:a,over:o,scrollableAncestors:s}}=t;if(cj.includes(e.code)){if(e.preventDefault(),!n||!r)return;let t=[];a.getEnabled().forEach(n=>{if(!n||n!=null&&n.disabled)return;let a=i.get(n.id);if(a)switch(e.code){case pk.Down:r.top<a.top&&t.push(n);break;case pk.Up:r.top>a.top&&t.push(n);break;case pk.Left:r.left>a.left&&t.push(n);break;case pk.Right:r.left<a.left&&t.push(n)}});let c=OO({active:n,collisionRect:r,droppableRects:i,droppableContainers:t,pointerCoordinates:null}),l=DO(c,`id`);if(l===o?.id&&c.length>1&&(l=c[1].id),l!=null){let e=a.get(n.id),t=a.get(l),o=t?i.get(t.id):null,c=t?.node.current;if(c&&o&&e&&t){let n=UO(c).some((e,t)=>s[t]!==e),i=uj(e,t),a=dj(e,t),l=n||!i?{x:0,y:0}:{x:a?r.width-o.width:0,y:a?r.height-o.height:0},u={x:o.left,y:o.top};return l.x&&l.y?u:$D(u,l)}}}};function uj(e,t){return!sj(e)||!sj(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function dj(e,t){return!sj(e)||!sj(t)||!uj(e,t)?!1:e.data.current.sortable.index<t.data.current.sortable.index}var fj=(0,C.createContext)({columns:{},setColumns:()=>{},getItemId:()=>``,columnIds:[],activeId:null,setActiveId:()=>{},findContainer:()=>void 0,isColumn:()=>!1,modifiers:void 0}),pj=(0,C.createContext)({attributes:{},listeners:void 0,isDragging:!1,disabled:!1}),mj=(0,C.createContext)({listeners:void 0,isDragging:!1,disabled:!1}),hj=(0,C.createContext)(!1),gj=e=>$A({...e,wasDragging:!0}),_j={sideEffects:NA({styles:{active:{opacity:`0.4`}}})},vj=()=>()=>{},yj=()=>!0,bj=()=>!1,xj={activationConstraint:{distance:10}},Sj={activationConstraint:{delay:250,tolerance:5}},Cj={coordinateGetter:lj},wj={droppable:{strategy:Pk.Always}};function Tj({value:e,onValueChange:t,getItemValue:n,children:r,className:i,asChild:a=!1,onMove:o,onValueCommit:s,restoreOnCancel:c=!1,onDragStart:l,onDragEnd:u,onDragCancel:d,accessibility:f,modifiers:p,...m}){let h=e,g=t,[_,v]=(0,C.useState)(null),y=(0,C.useRef)(e),b=(0,C.useRef)(n);(0,C.useLayoutEffect)(()=>{y.current=e,b.current=n});let x=(0,C.useRef)(null),S=bO(yO(wk,xj),yO(Ek,Sj),yO(gk,Cj)),w=(0,C.useMemo)(()=>Object.keys(h),[h,n]),T=(0,C.useCallback)(e=>w.includes(e),[w]),E=(0,C.useCallback)(e=>T(e)?e:w.find(t=>h[t].some(t=>n(t)===e)),[h,w,n,T]),D=(0,C.useCallback)((e,t,n)=>{if(!s)return;let r=x.current;if(!r)return;let i=t.active.id;if(n===`column`){let n=Object.keys(e).indexOf(i);if(n===-1||n===r.index)return;s(e,{kind:`column`,event:t,activeContainer:i,activeIndex:r.index,overContainer:String(t.over?.id??i),overIndex:n,previousValue:r.value});return}let a=b.current,o,c=-1;for(let t of Object.keys(e)){let n=e[t].findIndex(e=>a(e)===i);if(n!==-1){o=t,c=n;break}}o!==void 0&&(o!==r.container||c!==r.index)&&s(e,{kind:`item`,event:t,activeContainer:r.container??o,activeIndex:r.index,overContainer:o,overIndex:c,previousValue:r.value})},[s]),O=(0,C.useCallback)(e=>{if(v(e.active.id),l?.(e),s||c){let t=y.current,n=e.active.id,r=Object.keys(t);if(r.includes(n))x.current={value:t,container:n,index:r.indexOf(n)};else{let e=b.current,i,a=-1;for(let o of r){let r=t[o].findIndex(t=>e(t)===n);if(r!==-1){i=o,a=r;break}}x.current={value:t,container:i,index:a}}}},[l,s,c]),ee=(0,C.useCallback)(e=>{if(o)return;let{active:t,over:r}=e;if(!r||T(t.id))return;let i=E(t.id),a=E(r.id);if(i&&a){if(i!==a){let e=h[i],o=h[a],s=e.findIndex(e=>n(e)===t.id),c=o.findIndex(e=>n(e)===r.id);T(r.id)&&(c=o.length);let l=[...e],u=[...o],[d]=l.splice(s,1);u.splice(c,0,d),g({...h,[i]:l,[a]:u})}else{let e=i,a=h[e].findIndex(e=>n(e)===t.id),o=h[e].findIndex(e=>n(e)===r.id);a!==o&&g({...h,[e]:BA(h[e],a,o)})}}},[E,n,T,g,h,o]),k=(0,C.useCallback)(e=>{let t=x.current;c&&t&&!o?g(t.value):s&&t&&!o&&D(y.current,e,`item`),x.current=null,v(null),d?.(e)},[c,o,s,g,d,D]),A=(0,C.useCallback)(e=>{let{active:t,over:r}=e;if(v(null),u?.(e),!r){D(y.current,e,`item`),x.current=null;return}if(o&&!T(t.id)){let i=E(t.id),a=E(r.id);i&&a&&o({event:e,activeContainer:i,activeIndex:h[i].findIndex(e=>n(e)===t.id),overContainer:a,overIndex:T(r.id)?h[a].length:h[a].findIndex(e=>n(e)===r.id)}),x.current=null;return}if(T(t.id)&&T(r.id)){let n=w.indexOf(t.id),i=w.indexOf(r.id);if(n!==i){let t=BA(Object.keys(h),n,i),r={};t.forEach(e=>{r[e]=h[e]}),g(r),D(r,e,`column`)}x.current=null;return}if(T(t.id)){x.current=null;return}let i=E(t.id),a=E(r.id);if(i&&a&&i===a){let a=i,o=h[a].findIndex(e=>n(e)===t.id),s=h[a].findIndex(e=>n(e)===r.id);if(o!==s){let t={...h,[a]:BA(h[a],o,s)};g(t),D(t,e,`item`)}else D(h,e,`item`)}else D(h,e,`item`);x.current=null},[w,h,E,n,T,g,o,u,D]),j=(0,C.useMemo)(()=>({columns:h,setColumns:g,getItemId:n,columnIds:w,activeId:_,setActiveId:v,findContainer:E,isColumn:T,modifiers:p}),[h,g,n,w,_,E,T,p]),M=a?Ni:`div`;return(0,G.jsx)(fj.Provider,{value:j,children:(0,G.jsx)(vA,{sensors:S,modifiers:p,accessibility:f,measuring:wj,onDragStart:O,onDragOver:ee,onDragEnd:A,onDragCancel:k,children:(0,G.jsx)(M,{"data-slot":`kanban`,"data-dragging":_!==null,className:W(_!==null&&`cursor-grabbing!`,i),...m,children:r})})})}function Ej({className:e,asChild:t=!1,children:n,...r}){let{columnIds:i}=(0,C.useContext)(fj);return(0,G.jsx)(ZA,{items:i,strategy:GA,children:(0,G.jsx)(t?Ni:`div`,{"data-slot":`kanban-board`,className:W(`grid auto-rows-fr gap-4`,e),...r,children:n})})}function Dj({value:e,className:t,asChild:n=!1,disabled:r,children:i,...a}){let o=(0,C.useContext)(hj),{setNodeRef:s,transform:c,transition:l,attributes:u,listeners:d,isDragging:f}=aj({id:e,disabled:r||o,animateLayoutChanges:gj}),{activeId:p,isColumn:m}=(0,C.useContext)(fj),h=p?m(p):!1,g={transition:l,transform:iO.Transform.toString(c)},_=n?Ni:`div`;return o?(0,G.jsx)(pj.Provider,{value:{attributes:{},listeners:void 0,isDragging:!0,disabled:!1},children:(0,G.jsx)(_,{"data-slot":`kanban-column`,"data-value":e,"data-dragging":!0,className:W(`group/kanban-column flex flex-col`,t),...a,children:i})}):(0,G.jsx)(pj.Provider,{value:{attributes:u,listeners:d,isDragging:h,disabled:r},children:(0,G.jsx)(_,{"data-slot":`kanban-column`,"data-value":e,"data-dragging":f,"data-disabled":r,ref:s,style:g,className:W(`group/kanban-column flex flex-col`,f&&`z-50 opacity-50`,r&&`opacity-50`,t),...a,children:i})})}function Oj({className:e,asChild:t=!1,cursor:n=!0,children:r,...i}){let{attributes:a,listeners:o,isDragging:s,disabled:c}=(0,C.useContext)(pj);return(0,G.jsx)(t?Ni:`div`,{"data-slot":`kanban-column-handle`,"data-dragging":s,"data-disabled":c,...a,...o,className:W(`opacity-0 transition-opacity group-hover/kanban-column:opacity-100`,n&&(s?`cursor-grabbing!`:`cursor-grab!`),e),...i,children:r})}function kj({value:e,className:t,asChild:n=!1,disabled:r,children:i,...a}){let o=(0,C.useContext)(hj),{setNodeRef:s,transform:c,transition:l,attributes:u,listeners:d,isDragging:f}=aj({id:e,disabled:r||o,animateLayoutChanges:gj}),{activeId:p,isColumn:m}=(0,C.useContext)(fj),h=p?!m(p):!1,g={transition:l,transform:iO.Transform.toString(c)},_=n?Ni:`div`;return o?(0,G.jsx)(mj.Provider,{value:{listeners:void 0,isDragging:!0,disabled:!1},children:(0,G.jsx)(_,{"data-slot":`kanban-item`,"data-value":e,"data-dragging":!0,className:W(t),...a,children:i})}):(0,G.jsx)(mj.Provider,{value:{listeners:d,isDragging:h,disabled:r},children:(0,G.jsx)(_,{"data-slot":`kanban-item`,"data-value":e,"data-dragging":f,"data-disabled":r,ref:s,style:g,...u,className:W(`outline-none focus-visible:ring-2 focus-visible:ring-ring/50`,f&&`z-50 opacity-50`,r&&`opacity-50`,t),...a,children:i})})}function Aj({className:e,asChild:t=!1,cursor:n=!0,children:r,...i}){let{listeners:a,isDragging:o,disabled:s}=(0,C.useContext)(mj);return(0,G.jsx)(t?Ni:`div`,{"data-slot":`kanban-item-handle`,"data-dragging":o,"data-disabled":s,...a,className:W(n&&(o?`cursor-grabbing!`:`cursor-grab!`),e),...i,children:r})}function jj({value:e,className:t,asChild:n=!1,children:r,...i}){let{columns:a,getItemId:o}=(0,C.useContext)(fj),s=(0,C.useMemo)(()=>{let t=a[e];if(!t)throw Error(`KanbanColumnContent: column "${e}" was not found in the Kanban value. Available columns: ${Object.keys(a).join(`, `)||`(none)`}.`);return t.map(o)},[a,o,e]);return(0,G.jsx)(ZA,{items:s,strategy:qA,children:(0,G.jsx)(n?Ni:`div`,{"data-slot":`kanban-column-content`,className:W(`flex flex-col gap-2`,t),...i,children:r})})}function Mj({children:e,className:t,...n}){let{activeId:r,isColumn:i,modifiers:a}=(0,C.useContext)(fj),o=(0,C.useSyncExternalStore)(vj,yj,bj),s=r&&i(r)?`column`:`item`,c=r&&e?typeof e==`function`?e({value:r,variant:s}):e:null;return o?(0,pe.createPortal)((0,G.jsx)(zA,{dropAnimation:_j,modifiers:a,className:W(`z-50`,r&&`cursor-grabbing`,t),...n,children:(0,G.jsx)(hj.Provider,{value:!0,children:c})}),document.body):null}function Nj({className:e,...t}){return(0,G.jsx)(`div`,{"data-slot":`input-group`,role:`group`,className:W(`group/input-group border-input dark:bg-input/30 relative flex h-9 w-full min-w-0 items-center rounded-md border shadow-xs outline-none`,`has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]`,e),...t})}var Pj=yi(`text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm select-none [&>svg:not([class*='size-'])]:size-4`,{variants:{align:{"inline-start":`order-first pl-3`,"inline-end":`order-last pr-3`}},defaultVariants:{align:`inline-start`}});function Fj({className:e,align:t=`inline-start`,...n}){return(0,G.jsx)(`div`,{"data-slot":`input-group-addon`,className:W(Pj({align:t}),e),onClick:e=>{e.target.closest(`button`)||e.currentTarget.parentElement?.querySelector(`input`)?.focus()},...n})}function Ij({className:e,...t}){return(0,G.jsx)(SE,{"data-slot":`input-group-control`,className:W(`flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent`,e),...t})}var Lj=`collapsed-columns`,Rj=`collapsed-epic-statuses`,zj=`collapsed-favourite-folders`,Bj=`board-chrome`,Vj=`board-opener`,Hj=`favourite-epics`,Uj=`board-presets`,Wj=`board-sidebar-open`,Gj=`board-column-order`,Kj=[`In Progress`,`Completed`,`Cancelled`,`Canceled`],qj=[`created`,`targetEnd`,`priority`,`labels`,`assignee`,`dueDate`],Jj={filter:{},sort:`payload`,hide:[],shown:[...qj]},Yj={keys:[],folders:[],projects:void 0};function Xj(e=Lj,t=[]){try{let n=localStorage.getItem(e);if(n===null)return new Set(t);let r=JSON.parse(n);return new Set(Array.isArray(r)?r.filter(e=>typeof e==`string`):t)}catch{return new Set(t)}}function Zj(e,t=Lj){localStorage.setItem(t,JSON.stringify([...e]))}function Qj(e,t){let n=t.toLowerCase();return[...e].some(e=>e.toLowerCase()===n)}function $j(e){if(!e||typeof e!=`object`)return{};let t={};for(let[n,r]of Object.entries(e))n!==`priorities`&&n!==`assignees`&&Array.isArray(r)&&(t[n]=r.filter(e=>typeof e==`string`));return Array.isArray(e.priorities)&&!t.priority&&(t.priority=e.priorities.filter(e=>typeof e==`string`)),Array.isArray(e.assignees)&&!t.assignee&&(t.assignee=e.assignees.filter(e=>typeof e==`string`)),t}function eM(){try{let e=localStorage.getItem(Bj);if(e===null)return Jj;let t=JSON.parse(e),n=Array.isArray(t.shown)?t.shown.filter(e=>qj.includes(e)):[...qj];return{filter:$j(t.filter),sort:t.sort===`priority`||t.sort===`age`||t.sort===`due`||t.sort===`key`?t.sort:`payload`,hide:Array.isArray(t.hide)?t.hide.filter(e=>typeof e==`string`):[],shown:n.length?n:[...qj]}}catch{return Jj}}function tM(e){localStorage.setItem(Bj,JSON.stringify(e))}function nM(){try{let e=localStorage.getItem(Hj);if(e===null)return Yj;let t=JSON.parse(e);if(Array.isArray(t)&&t.every(e=>typeof e==`string`))return{keys:t,folders:[]};if(t&&typeof t==`object`){let e=t;return{keys:Array.isArray(e.keys)?e.keys.filter(e=>typeof e==`string`):[],folders:Array.isArray(e.folders)?e.folders.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return typeof t.name!=`string`||!t.name.trim()?[]:[{name:t.name,keys:Array.isArray(t.keys)?t.keys.filter(e=>typeof e==`string`):[]}]}):[],projects:Array.isArray(e.projects)?e.projects.filter(e=>typeof e==`string`):void 0}}return Yj}catch{return Yj}}function rM(e){localStorage.setItem(Hj,JSON.stringify(e))}function iM(){try{let e=localStorage.getItem(Uj);if(e===null)return[];let t=JSON.parse(e);return Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return typeof t.name!=`string`||!t.name.trim()?[]:[{name:t.name,filter:$j(t.filter),sort:t.sort===`priority`||t.sort===`age`||t.sort===`due`||t.sort===`key`?t.sort:`payload`,hide:Array.isArray(t.hide)?t.hide.filter(e=>typeof e==`string`):[]}]}):[]}catch{return[]}}function aM(e){localStorage.setItem(Uj,JSON.stringify(e))}function oM(e,t){let n=(e??[]).slice().sort(),r=(t??[]).slice().sort();return n.length===r.length&&n.every((e,t)=>e===r[t])}function sM(e,t){return!t.length||oM(e.projects,t)?e:{keys:[],folders:[],projects:t}}function cM(e,t){return t.length?e.filter(e=>oM(e.projects,t)):e}function lM(){try{let e=localStorage.getItem(Vj);return e===`epics`||e===`combined`?e:`stories`}catch{return`stories`}}function uM(e){localStorage.setItem(Vj,e)}function dM(){try{let e=localStorage.getItem(Wj);return e===null||e===`true`}catch{return!0}}function fM(e){localStorage.setItem(Wj,e?`true`:`false`)}function pM(){try{let e=localStorage.getItem(Gj);if(e===null)return{};let t=JSON.parse(e);return!t||typeof t!=`object`?{}:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,Array.isArray(t)?t.filter(e=>typeof e==`string`):[]]))}catch{return{}}}function mM(e){localStorage.setItem(Gj,JSON.stringify(e))}function hM(e,t){let n=[{label:`Key`,value:e.key},{label:`Summary`,value:e.summary}];return t&&n.push({label:`Jira URL`,value:t}),e.priority&&n.push({label:`Priority`,value:e.priority}),e.assignee&&n.push({label:`Assignee`,value:e.assignee}),e.dueDate&&n.push({label:`Due date`,value:e.dueDate}),e.targetEnd&&n.push({label:`Target end`,value:e.targetEnd}),e.labels?.length&&n.push({label:`Labels`,value:e.labels.join(`, `),pills:e.labels}),n}async function gM(e,t){return(await fetch(e,{headers:{"content-type":`application/json`},...t})).json()}function _M(e){return Object.fromEntries(e.map(e=>[e.title,e.cards]))}function vM(){return typeof document>`u`?`light`:document.documentElement.classList.contains(`dark`)?`dark`:`light`}function yM(e){document.documentElement.classList.toggle(`dark`,e===`dark`),localStorage.setItem(`theme`,e)}var bM={done:`green`,complete:`green`,completed:`green`,closed:`green`,resolved:`green`,progress:`yellow`,review:`yellow`,doing:`yellow`,cancelled:`gray`,canceled:`gray`};function xM(e){if(!e)return`var(--primary)`;let t=e.toLowerCase(),n=Object.keys(bM).find(e=>t.includes(e));return`var(--kanban-board-circle-${n?bM[n]:`gray`})`}function SM(e){let t=(e??``).toLowerCase();return t===`high`||t===`highest`||t===`critical`?`text-red-500`:t===`medium`?`text-orange-400`:`text-yellow-500`}function CM(e,t){return e.includes(t)?e.filter(e=>e!==t):[...e,t]}function wM(e,t){return e.includes(t)?e.filter(e=>e!==t):[...e,t]}function TM(e){let t=[];for(let n of e){let e=t.at(-1);n.group&&e?.group===n.group?e.facets.push(n):t.push({group:n.group,facets:[n]})}return t}function EM({facet:e,selected:t,onToggle:n}){return(0,G.jsxs)(G.Fragment,{children:[e.label===e.group?null:(0,G.jsx)(jp,{children:e.label}),e.values.map(e=>(0,G.jsx)(Np,{checked:t.includes(e),onCheckedChange:()=>n(e),children:e},e))]})}function DM({facets:e,filter:t,onToggle:n,onClear:r}){let[i,a]=(0,C.useState)({});return(0,G.jsxs)(Ap,{align:`end`,className:`w-56 max-h-[min(70vh,28rem)]`,children:[TM(e).map((e,r)=>{let o=e.facets.map(e=>(0,G.jsx)(EM,{facet:e,selected:t[e.key]??[],onToggle:t=>n(e.key,t)},e.key));return(0,G.jsxs)(C.Fragment,{children:[r>0?(0,G.jsx)(Ip,{}):null,e.group?(0,G.jsxs)(pg,{open:i[e.group]!==!1,onOpenChange:t=>a(n=>({...n,[e.group]:t})),className:`flex flex-col`,children:[(0,G.jsx)(mg,{asChild:!0,children:(0,G.jsxs)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground flex w-full items-center gap-1.5 px-2 py-1.5 text-left text-[11px] font-medium`,onPointerDown:e=>e.preventDefault(),children:[(0,G.jsx)(j,{className:W(`size-3.5 shrink-0 transition-transform`,i[e.group]===!1&&`-rotate-90`)}),e.group]})}),(0,G.jsx)(hg,{className:`flex flex-col`,children:o})]}):o]},e.group??e.facets[0]?.key)}),e.length?(0,G.jsx)(Ip,{}):null,(0,G.jsx)(Mp,{onClick:r,children:`Clear Filter, Sort, and Hide`})]})}function OM({card:e,asHandle:t,isOverlay:n,disabled:r,selected:i,onClick:a,onDoubleClick:o,variant:s=`story`,shown:c}){let l=s===`epic`||(e.type??``).toLowerCase()===`epic`,u=e=>c?.has(e)??!0,d=u(`created`)?qe(e.created):void 0,f=u(`targetEnd`)?Je(e.targetEnd):void 0,p=f?(()=>{let t=/^(\d{4})-(\d{2})-(\d{2})/.exec(e.targetEnd??``),n=t?Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3])):Date.parse(e.targetEnd??``);return!Number.isNaN(n)&&n<Date.now()})():!1,m=f?(()=>{let t=/^(\d{4})-(\d{2})-(\d{2})/.exec(e.targetEnd??``),n=t?Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3])):Date.parse(e.targetEnd??``);if(Number.isNaN(n)||n<Date.now())return!1;let r=new Date,i=Date.UTC(r.getUTCFullYear(),r.getUTCMonth(),r.getUTCDate());return Math.round((n-i)/864e5)<=3})():!1,h=u(`priority`)&&e.priority||u(`labels`)&&e.labels?.length||u(`assignee`)&&e.assignee||u(`dueDate`)&&e.dueDate||f,g=(0,G.jsxs)(`div`,{className:W(`bg-card hover:bg-foreground/5 rounded-[9px] border px-3 pt-2 pb-3`,i&&`ring-primary ring-2`,l&&`bg-muted/40 border-l-4 border-l-primary`),children:[(0,G.jsxs)(`div`,{className:`flex h-[22px] items-center justify-between gap-2`,children:[(0,G.jsxs)(`span`,{className:`flex min-w-0 items-baseline gap-1.5`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground text-[12px] font-medium tabular-nums`,children:e.key}),(e.type??``).toLowerCase()===`epic`?(0,G.jsx)(`span`,{className:`text-muted-foreground/60 text-[11px] font-normal`,children:`Epic`}):null]}),d?(0,G.jsx)(`span`,{className:`text-muted-foreground text-[11px] tabular-nums`,children:d}):null]}),(0,G.jsx)(`p`,{className:`mt-0.5 truncate text-[13px] leading-[18px]`,children:e.summary}),h?(0,G.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center gap-2 pt-2`,children:[u(`priority`)&&e.priority?(0,G.jsx)(`span`,{className:W(`inline-flex h-6 shrink-0 items-center rounded-full border px-2 text-[12px] font-medium capitalize`,SM(e.priority)),children:e.priority}):null,u(`labels`)?e.labels?.map(e=>Xe(e)?(0,G.jsx)(xi,{variant:`warning-light`,className:`h-6 rounded-full px-2 text-[12px]`,children:e},e):(0,G.jsx)(`span`,{className:`text-muted-foreground inline-flex h-6 shrink-0 items-center rounded-full border px-2 text-[12px]`,children:e},e)):null,(0,G.jsx)(`span`,{className:`flex-1`}),f?(0,G.jsx)(`span`,{className:W(`shrink-0 text-[11px] tabular-nums`,p&&`text-destructive font-medium`,m&&!p&&`text-amber-500 dark:text-amber-400`,!p&&!m&&`text-muted-foreground`),title:e.targetEnd,children:f}):null,u(`dueDate`)&&e.dueDate?(0,G.jsx)(`time`,{className:`text-muted-foreground shrink-0 text-[11px] tabular-nums`,children:e.dueDate}):null,u(`assignee`)&&e.assignee?(0,G.jsx)(`span`,{className:`text-muted-foreground shrink-0 text-[12px]`,children:e.assignee}):null]}):null]});return(0,G.jsx)(kj,{value:e.key,disabled:r,children:t&&!n?(0,G.jsx)(Aj,{onClick:a,onDoubleClick:o,children:g}):g})}function kM({title:e,cards:t,isOverlay:n,disabled:r,selected:i,onClick:a,onDoubleClick:o,onCreate:s,onHide:c,shown:l}){let[u,d]=(0,C.useState)(()=>n||!Xj().has(e));function f(t){if(d(t),n)return;let r=Xj();t?r.delete(e):r.add(e),Zj(r)}return(0,G.jsx)(Dj,{value:e,className:`group h-full min-h-0`,children:(0,G.jsx)(pg,{open:u,onOpenChange:f,className:W(`flex h-full min-h-0 flex-col`,!u&&`h-auto`),children:(0,G.jsxs)(`div`,{className:W(`flex flex-col`,u?`h-full min-h-0`:`h-auto`),children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2 px-3 pt-[13px] pb-5`,children:[(0,G.jsx)(mg,{asChild:!0,children:(0,G.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 items-center gap-2 text-left`,children:[(0,G.jsx)(`span`,{className:`size-3.5 shrink-0 rounded-full`,style:{backgroundColor:xM(e)}}),(0,G.jsx)(`span`,{className:`truncate text-[13px] font-medium`,children:e}),(0,G.jsx)(`span`,{className:`text-muted-foreground text-[12px] tabular-nums`,children:t.length}),(0,G.jsx)(j,{className:W(`text-muted-foreground size-3.5 shrink-0 transition-transform`,!u&&`-rotate-90`)})]})}),s?(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":`Create issue in ${e}`,title:`Create issue`,onPointerDown:e=>e.stopPropagation(),onClick:()=>s(e),children:(0,G.jsx)(ae,{})}):null,c?(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":`Hide ${e}`,onClick:c,children:(0,G.jsx)(ne,{})}):null,(0,G.jsx)(Oj,{className:`opacity-0 transition-opacity group-hover:opacity-60`,children:(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,tabIndex:-1,type:`button`,children:(0,G.jsx)(ie,{})})})]}),(0,G.jsx)(hg,{className:`min-h-0 flex-1 overflow-hidden`,children:(0,G.jsxs)(jj,{value:e,className:`flex h-full flex-col gap-2 overflow-auto px-2 pb-2`,children:[t.map(e=>(0,G.jsx)(OM,{card:e,asHandle:!n,isOverlay:n,disabled:r,selected:i?.has(e.key),variant:(e.type??``).toLowerCase()===`epic`?`epic`:`story`,shown:l,onClick:t=>a?.(e.key,t),onDoubleClick:t=>o?.(e.key,t)},e.key)),s?(0,G.jsxs)(`button`,{type:`button`,className:`text-muted-foreground hover:bg-foreground/5 hover:text-foreground flex min-h-8 w-full shrink-0 items-center gap-1.5 rounded-md px-2 text-[12px]`,"aria-label":`Create issue in ${e}`,onPointerDown:e=>e.stopPropagation(),onClick:()=>s(e),children:[(0,G.jsx)(ae,{className:`size-3.5`}),`Create`]}):null]})})]})})})}function AM(e,t){return[...new Set(e.map(e=>e.status?.trim()).filter(e=>!!e))].filter(e=>e!==t)}function jM({epic:e,selected:t,count:n,favourited:r,folders:i,moveTo:a,onSelect:o,onToggleFavourite:s,onFile:c,onMove:l,onOpen:u}){let d=a??[],f=!!(c&&r),p=!!u||f||d.length>0;return(0,G.jsxs)(`div`,{className:W(`flex h-14 w-full items-center gap-1 rounded-lg pr-1`,t?`bg-sidebar-accent text-sidebar-accent-foreground`:`hover:bg-foreground/5`),children:[(0,G.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 items-center gap-3 px-3 text-left`,onClick:()=>void o(e.key),children:[(0,G.jsx)(`span`,{className:`size-2 shrink-0 rounded-full`,style:{backgroundColor:xM(e.status)}}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px] leading-[18px]`,children:e.summary}),(0,G.jsx)(`span`,{className:`text-muted-foreground text-[11px] font-medium tabular-nums`,children:e.key}),(0,G.jsx)(`span`,{className:`text-muted-foreground text-[11px] tabular-nums`,children:n})]}),p?(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":f?`File ${e.key}`:d.length?`Move ${e.key}`:`Open ${e.key}`,children:(0,G.jsx)(F,{})})}),(0,G.jsxs)(Ap,{align:`end`,children:[u?(0,G.jsx)(Mp,{onClick:()=>u(e.key),children:`Open`}):null,f?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Mp,{onClick:()=>c?.(e.key,null),children:`Unfiled`}),i?.map(t=>(0,G.jsx)(Mp,{onClick:()=>c?.(e.key,t),children:t},t))]}):null,f&&d.length?(0,G.jsxs)(Lp,{children:[(0,G.jsx)(Rp,{children:`Move`}),(0,G.jsx)(zp,{children:d.map(t=>(0,G.jsx)(Mp,{onClick:()=>l?.(e.key,t),children:t},t))})]}):null,f?null:d.map(t=>(0,G.jsx)(Mp,{onClick:()=>l?.(e.key,t),children:t},t))]})]}):null,(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":r?`Unfavourite ${e.key}`:`Favourite ${e.key}`,onClick:t=>{t.stopPropagation(),s(e.key)},children:(0,G.jsx)(ce,{className:W(r&&`fill-current`)})})]})}function MM({status:e,epics:t,selectedEpic:n,childCount:r,favourites:i,listedEpics:a,onSelect:o,onToggleFavourite:s,onMove:c,onOpen:l}){let[u,d]=(0,C.useState)(()=>!Qj(Xj(Rj,Kj),e));function f(t){d(t);let n=Xj(Rj,Kj);if(t)for(let t of[...n])t.toLowerCase()===e.toLowerCase()&&n.delete(t);else n.add(e);Zj(n,Rj)}return(0,G.jsxs)(pg,{open:u,onOpenChange:f,className:`flex flex-col`,children:[(0,G.jsx)(mg,{asChild:!0,children:(0,G.jsxs)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground flex h-7 items-center gap-1.5 px-3 text-left`,children:[(0,G.jsx)(j,{className:W(`size-3.5 shrink-0 transition-transform`,!u&&`-rotate-90`)}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[12px] font-medium`,children:e}),(0,G.jsx)(`span`,{className:`text-[11px] tabular-nums`,children:t.length})]})}),(0,G.jsx)(hg,{className:`flex flex-col gap-0.5`,children:t.map(e=>(0,G.jsx)(jM,{epic:e,selected:n===e.key,count:r(e.key),favourited:i.keys.includes(e.key),onSelect:o,onToggleFavourite:s,moveTo:AM(a,e.status),onMove:c,onOpen:l},e.key))})]})}function NM({fields:e}){return(0,G.jsx)(`dl`,{className:`flex flex-col gap-3 p-4 text-[13px]`,children:e.map(e=>(0,G.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,G.jsx)(`dt`,{className:`text-muted-foreground text-[11px] font-medium`,children:e.label}),(0,G.jsx)(`dd`,{className:`whitespace-pre-wrap`,children:e.label===`Jira URL`?(0,G.jsx)(`a`,{className:`text-foreground font-medium underline-offset-4 hover:underline`,href:e.value,target:`_blank`,rel:`noreferrer`,children:e.value}):e.pills?.length?(0,G.jsx)(`span`,{className:`flex flex-wrap gap-1`,children:e.pills.map(e=>(0,G.jsx)(`span`,{className:`text-muted-foreground inline-flex h-6 items-center rounded-full border px-2 text-[12px]`,children:e},e))}):e.value})]},e.label))})}function PM(){let[e,t]=(0,C.useState)({}),[n,r]=(0,C.useState)([]),[i,a]=(0,C.useState)(null),[o,s]=(0,C.useState)(!1),[c,l]=(0,C.useState)(null),[u,d]=(0,C.useState)(null),[f,p]=(0,C.useState)(!1),[m,h]=(0,C.useState)(``),[g,_]=(0,C.useState)(null),[v,y]=(0,C.useState)(null),[b,x]=(0,C.useState)(null),[S,w]=(0,C.useState)([]),[T,E]=(0,C.useState)(``),[D,ee]=(0,C.useState)(``),[A,j]=(0,C.useState)(``),[P,F]=(0,C.useState)(``),[ne,ie]=(0,C.useState)(!1),[L,ae]=(0,C.useState)(vM),[B,oe]=(0,C.useState)(eM),se=(0,C.useMemo)(()=>nt(D).projects,[D]),[ce,ue]=(0,C.useState)(()=>sM(nM(),se)),[fe,pe]=(0,C.useState)(()=>cM(iM(),se)),[me,he]=(0,C.useState)(``),[ge,_e]=(0,C.useState)(``),[ve,ye]=(0,C.useState)(``),[be,xe]=(0,C.useState)(``),[Se,Ce]=(0,C.useState)(lM),[we,Te]=(0,C.useState)(Dn),[Ee,De]=(0,C.useState)(()=>dM()),Oe=Gh(),ke=(0,C.useRef)(null),[je,Me]=(0,C.useState)(null),[Ne,Pe]=(0,C.useState)(!1),[Fe,Ie]=(0,C.useState)(!1),[Le,Re]=(0,C.useState)(void 0),ze=(0,C.useRef)(!1),Be=(0,C.useRef)(null),Ve=wn(t,r),[He,Ue]=(0,C.useState)(new Set),We={...B,epics:n},Ge=(0,C.useMemo)(()=>new Set(B.shown),[B.shown]),Ke=Se===`epics`,qe=(0,C.useMemo)(()=>Se===`combined`?wt(e,n,A,We):Tt(Ke?e:Ct(e,je?.children,A),Ke?null:g,A,We),[e,g,A,B,n,Ke,je,Se]),Je=(0,C.useMemo)(()=>Object.values(e).flat(),[e]),Ye=i??Je,Xe=(0,C.useMemo)(()=>{let e=new Map;for(let t of je?.columns.flatMap(e=>e.cards)??[])e.set(t.key,t);for(let t of Ye)e.has(t.key)||e.set(t.key,t);return[...e.values()]},[je,Ye]),et=(0,C.useMemo)(()=>jt(n,Ye,A,B.filter),[n,Ye,A,B.filter]),tt=(0,C.useMemo)(()=>Mt(et),[et]),rt=(0,C.useMemo)(()=>zt(n,ce,A,Ye,B.filter),[n,ce,A,Ye,B.filter]),it=Object.keys(qe),at=`${Se}:${[...se].sort().join(`,`)}`,st=v?[`cards`,`open`]:[`cards`],ct=zh({id:`shell`,panelIds:[`epics`,`board`],onlySaveAfterUserInteractions:!0}),lt=zh({id:`board-open`,panelIds:st,onlySaveAfterUserInteractions:!0}),ut=zh({id:`columns`,panelIds:it,onlySaveAfterUserInteractions:!0}),dt=b?Tn(b,window.location.origin):null,ft=gt(Je,n),pt=Object.keys(e),mt=(0,C.useMemo)(()=>nn([...Je,...n,...Xe]),[Je,n,Xe]),ht=rt.unfiled.length>0||rt.folders.length>0;function _t(e){oe(e),tM(e)}function vt(e){let t=se.length?{...e,projects:se}:e;ue(t),rM(t)}function yt(e){pe(e),aM(e)}function bt(){Ue(new Set)}function xt(e,n){ke.current=e,Me(e);let i=e.epics??[];r(i);let o=pM()[`${n}:${[...se].sort().join(`,`)}`];t(Pt(_M(n===`epics`?Ze(i):e.columns),o)),a(e.children?Object.values(e.children).flat():null),e.error&&F(e.error)}function St(e){bt(),ke.current=e,Me(e);let n=e.epics??[];r(n);let i=pM()[at];t(Pt(_M(Se===`epics`?Ze(n):e.columns),i)),a(e.children?Object.values(e.children).flat():null),_(t=>t&&(e.epics??[]).some(e=>e.key===t)?t:null),e.error&&F(e.error)}async function Et(){let e=await gM(`/api/board`);St(e),e.flags&&ee(e.flags)}(0,C.useEffect)(()=>{Et()},[]),(0,C.useEffect)(()=>{Ee||Oe.current?.collapse()},[]),(0,C.useEffect)(()=>{let e=pM()[at];e?.length&&t(t=>Pt(t,e))},[at]),(0,C.useEffect)(()=>{function e(e){if((e.metaKey||e.ctrlKey)&&!e.altKey&&!e.shiftKey&&e.key.toLowerCase()===`k`){if(e.preventDefault(),ze.current){ze.current=!1,Pe(!1),Be.current?.focus();return}Be.current=document.activeElement instanceof HTMLElement?document.activeElement:null,ze.current=!0,Pe(!0);return}e.key===`Escape`&&ze.current&&(e.preventDefault(),ze.current=!1,Pe(!1),Be.current?.focus())}return window.addEventListener(`keydown`,e,!0),()=>window.removeEventListener(`keydown`,e,!0)},[]);function Dt(e){Re(e),Ie(!0)}async function Ot(e){let t=Qe(e,g,Le??D);t&&(Ie(!1),Re(void 0),await kt(t))}async function kt(e){ie(!0),F(``),console.info(`[pipe-kan] Refresh`,e);let t=Ae.loading(`Refreshing…`,{description:e.scope===`selected`?`Listing the focused Epic's works`:`Listing Issues and Epics`});try{let n=await gM(`/api/refresh`,{method:`POST`,body:JSON.stringify(e)});St(n),e.scope===`all`&&ee(e.flags),n.error?(console.info(`[pipe-kan] Refresh error`,n.error),Ae.error(`Refresh failed`,{id:t,description:n.error})):(console.info(`[pipe-kan] Refreshed`,n.epics.length,`epics`),Ae.success(`Refreshed`,{id:t,description:e.scope===`selected`?e.epicKeys?.join(`, `):`${n.epics.length} epics`}))}catch(e){let n=e instanceof Error?e.message:`Refresh failed`;console.info(`[pipe-kan] Refresh failed`,n),F(n),Ae.error(`Refresh failed`,{id:t,description:n})}finally{ie(!1)}}function Nt(t){for(let[n,r]of Object.entries(e))if(r.some(e=>e.key===t))return n;return``}function Rt(e,i,a){F(``);let o=n.find(t=>t.key===e);if(o){let n=a??o.status??`To Do`;r(n=>{let r=n.findIndex(t=>t.key===e);if(r===-1)return n;let a=[...n];return a[r]={...a[r],status:i},Se===`epics`&&t(Pt(_M(Ze(a)),pM()[at])),a}),Ve.move({key:e,target:i,source:n,kind:`epic`});return}let s=a??Nt(e);Ve.move({key:e,target:i,source:s,kind:`card`})}function Gt(e,t){if(t.ctrlKey||t.metaKey){t.preventDefault(),t.stopPropagation(),Ue(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n});return}bt(),on(e)}function Kt(e,t){t.preventDefault(),t.stopPropagation(),bt(),rn(e)}function Qt(e){return{...e?{status:e}:{},selectedEpic:g,boardKind:Se}}function $t(e){h(``),p(!1),d(dn(Qt(e)))}function en(e){l(Sn(e)),s(!0)}function tn(e){let{draft:t,seed:n}=fn(Qt(e));h(``),p(!1),d(t),l(n),s(!0)}async function rn(e){let t=Je.find(t=>t.key===e)??Xe.find(t=>t.key===e),r=n.find(t=>t.key===e),i=Nt(e)||r?.status;h(``),p(!1),d(pn({key:e,summary:t?.summary??r?.summary??``,labels:t?.labels??r?.labels??[],...i?{status:i}:{},...t?.epic?{epic:t.epic}:{},...t?.type||r?{type:t?.type??`Epic`}:{},...v===e&&S.length?{fields:S}:{}}));try{let t=await gM(`/api/open`,{method:`POST`,body:JSON.stringify({key:e})});if(t.error||!t.fields?.length)return;d(n=>n?.mode===`edit`&&n.key===e?xn(n,t.fields):n)}catch{}}async function an(){if(u&&mn(u,f)){p(!0),h(``);try{if(u.mode===`create`){let e=hn(u);if(!e)return;let t=await gM(`/api/issue/create`,{method:`POST`,body:JSON.stringify(e)});if(!t.ok){let e=t.error??`Create failed`;h(e),Ae.error(`Create failed`,{description:e});return}t.board&&St(t.board),Ae.success(`Created`,{description:t.key??u.title.trim()}),d(null);return}let e=gn(u);if(!e)return;let t=await gM(`/api/issue/edit`,{method:`POST`,body:JSON.stringify(e)});if(!t.ok){let e=t.error??`Edit failed`;h(e),Ae.error(`Edit failed`,{description:e});return}t.board&&St(t.board),Ae.success(`Saved`,{description:u.key});let n=u.key;d(null),v===n&&on(n)}catch(e){let t=e instanceof Error?e.message:`Save failed`;h(t),Ae.error(`Save failed`,{description:t})}finally{p(!1)}}}async function on(e){let t=ke.current?.columns.flatMap(e=>e.cards)??[],r=Je.find(t=>t.key===e)??t.find(t=>t.key===e),i=n.find(t=>t.key===e),a=r??(i?{key:i.key,summary:i.summary,priority:i.priority,assignee:i.assignee,dueDate:i.dueDate,labels:i.labels}:void 0),o=`/browse/${e}`;y(e),x(o),E(``),w(a?hM(a,o):[{label:`Jira URL`,value:o}]);let s=await gM(`/api/open`,{method:`POST`,body:JSON.stringify({key:e})});if(x(s.url),s.error){E(s.error),w(a?hM(a,s.url):[{label:`Jira URL`,value:s.url}]);return}w(s.fields)}function sn(e,t){let n=[];for(let[r,i]of Object.entries(t))for(let t of i)He.has(t.key)&&n.push({key:t.key,target:e,source:r,kind:`card`});return n}function cn(e,n){if(B.hide.includes(n.overContainer)){t(e=>It(n.previousValue,e,g,A,We));return}if(n.kind===`column`){let n=Object.keys(e),r=pM();r[at]=n,mM(r),t(e=>Pt(e,n));return}if(n.activeContainer===n.overContainer)return;let r=String(n.event.active.id);if(He.has(r)&&He.size>1){let e=sn(n.overContainer,n.previousValue);if(e.length===0)return;t(e=>{let t={},r=[];for(let[n,i]of Object.entries(e)){let e=[];for(let t of i)He.has(t.key)?r.push(t):e.push(t);t[n]=e}return t[n.overContainer]=[...t[n.overContainer]??[],...r],t}),bt(),Ve.move(e);return}let i=Object.entries(n.previousValue).find(([,e])=>e.some(e=>e.key===r))?.[0];i&&(bt(),Rt(r,n.overContainer,i))}function ln(){let e=L===`dark`?`light`:`dark`;yM(e),ae(e)}function un(e){return At(Ye,e,A,B.filter,n)}function _n(){uM(`stories`),Ce(`stories`),_(null),ke.current&&xt(ke.current,`stories`)}function vn(){uM(`epics`),Ce(`epics`),_(null),ke.current&&xt(ke.current,`epics`)}function yn(){uM(`combined`),Ce(`combined`),_(null),ke.current&&xt(ke.current,`combined`)}function bn(e){On(e),Te(e)}function Cn(){kn(),Te(`calendar`)}async function En(e){let r=Se===`epics`||Se===`combined`;if(r&&_n(),_(e),!e||!n.some(t=>t.key===e)||(r&&ke.current?ke.current.columns.flatMap(e=>e.cards):Je).filter(t=>t.epic===e&&ot(t,A)).length>0)return;ie(!0),F(``);let i=Ae.loading(`Listing children…`);try{let n=await gM(`/api/epic`,{method:`POST`,body:JSON.stringify({key:e})});t(t=>Lt(t,_M(n.columns),e)),Ae.success(`Listed children`,{id:i})}catch(e){let t=e instanceof Error?e.message:`Epic list failed`;F(t),Ae.error(`Epic list failed`,{id:i,description:t})}finally{ie(!1)}}function An(){let e=Vt(ce,me);if(!e.ok){_e(`Folder names must be unique`);return}he(``),_e(``),vt(e.state)}function jn(){let e=qt(fe,ve,{...B,boardKind:Se,projects:se});if(!e.ok){xe(`Preset names must be unique`);return}ye(``),xe(``),yt(e.presets)}function Mn(e){let t=Jt(fe,e);if(!t.ok||se.length&&!oM(t.chrome.projects,se))return;_t({...B,...t.chrome});let n=t.chrome.boardKind??`stories`;n===`combined`?yn():n===`epics`?vn():Se!==`stories`&&_n()}function Nn(e){ze.current=!1,Pe(!1),j(``),e.kind===`all-stories`?_n():e.kind===`all-epics`?vn():e.kind===`all-combined`?yn():e.kind===`refresh`?Dt():e.kind===`agent`?s(!0):e.kind===`create`?$t():e.kind===`create-ai`?tn():e.kind===`preset`?Mn(e.name):e.kind===`epic`?(y(null),x(null),w([]),E(``),En(e.key)):e.kind===`card`&&(e.epic?En(e.epic):_n(),on(e.key))}function Pn(e){let t=Yt(fe,e,{...B,boardKind:Se,projects:se});t.ok&&yt(t.presets)}function Fn(e,t){let n=Xt(fe,e,t);if(!n.ok){xe(`Preset names must be unique`);return}xe(``),yt(n.presets)}return(0,G.jsxs)(`div`,{className:`bg-sidebar flex h-screen`,children:[(0,G.jsxs)(Jh,{id:`shell`,orientation:`horizontal`,className:`min-h-0 flex-1`,defaultLayout:ct.defaultLayout,onLayoutChanged:(e,t)=>{if(ct.onLayoutChanged(e,t),!t.isUserInteraction)return;let n=(e.epics??0)<=0;De(!n),fM(!n)},children:[(0,G.jsx)(Yh,{id:`epics`,panelRef:Oe,defaultSize:`244px`,minSize:`12rem`,maxSize:`40%`,collapsible:!0,collapsedSize:0,className:`min-h-0 overflow-hidden`,children:(0,G.jsxs)(`aside`,{className:`text-sidebar-foreground flex h-full min-h-0 flex-col`,children:[(0,G.jsxs)(`div`,{className:`flex h-10 items-center justify-between px-4`,children:[(0,G.jsx)(`span`,{className:`text-[13px] font-medium`,children:`pipe-kan`}),(0,G.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground text-[12px] tabular-nums`,children:et.length}),(0,G.jsx)(K,{variant:`ghost`,size:`icon-xs`,"aria-label":`Collapse sidebar`,title:`Collapse sidebar`,onClick:()=>{De(!1),fM(!1),Oe.current?.collapse()},children:(0,G.jsx)(M,{className:`size-4`})})]})]}),(0,G.jsxs)(`nav`,{className:`flex flex-1 flex-col gap-0.5 overflow-auto px-2 pb-2`,children:[(0,G.jsx)(`button`,{type:`button`,className:W(`h-8 rounded-lg px-3 text-left text-[13px]`,Se===`stories`&&g===null?`bg-sidebar-accent text-sidebar-accent-foreground`:`hover:bg-foreground/5`),onClick:_n,children:`All stories`}),(0,G.jsx)(`button`,{type:`button`,className:W(`h-8 rounded-lg px-3 text-left text-[13px]`,Se===`epics`?`bg-sidebar-accent text-sidebar-accent-foreground`:`hover:bg-foreground/5`),onClick:vn,children:`All epics`}),(0,G.jsx)(`button`,{type:`button`,className:W(`h-8 rounded-lg px-3 text-left text-[13px]`,Se===`combined`?`bg-sidebar-accent text-sidebar-accent-foreground`:`hover:bg-foreground/5`),onClick:yn,children:`Combined`}),(0,G.jsx)(`button`,{type:`button`,className:W(`h-8 rounded-lg px-3 text-left text-[13px]`,we===`calendar`?`bg-sidebar-accent text-sidebar-accent-foreground`:`hover:bg-foreground/5`),onClick:Cn,children:`Calendar`}),ht?(0,G.jsx)(FM,{pane:rt,selectedEpic:g,childCount:un,favourites:ce,folderName:me,folderError:ge,onFolderName:he,onCreateFolder:An,onRenameFolder:(e,t)=>{let n=Ht(ce,e,t);if(!n.ok){_e(`Folder names must be unique`);return}_e(``),vt(n.state)},onDeleteFolder:e=>vt(Ut(ce,e)),listedEpics:n,onSelect:En,onToggleFavourite:e=>vt(Bt(ce,e)),onFile:(e,t)=>vt(Wt(ce,e,t)),onMove:Rt,onOpen:on}):null,(0,G.jsx)(LM,{presets:fe,presetName:ve,presetError:be,onPresetName:ye,onCreatePreset:jn,onApplyPreset:Mn,onOverwritePreset:Pn,onRenamePreset:Fn,onDeletePreset:e=>yt(Zt(fe,e))}),(0,G.jsx)(`div`,{className:`text-muted-foreground px-3 pt-3 pb-1 text-[11px] font-medium`,children:`Epics`}),tt.map(e=>e.status?(0,G.jsx)(MM,{status:e.status,epics:e.epics,selectedEpic:g,childCount:un,favourites:ce,listedEpics:n,onSelect:En,onToggleFavourite:e=>vt(Bt(ce,e)),onMove:Rt,onOpen:on},e.status):e.epics.map(e=>(0,G.jsx)(jM,{epic:e,selected:g===e.key,count:un(e.key),favourited:ce.keys.includes(e.key),moveTo:AM(n,e.status),onSelect:En,onToggleFavourite:e=>vt(Bt(ce,e)),onMove:Rt,onOpen:on},e.key)))]})]})}),(0,G.jsx)(Xh,{className:W(!Ee&&`hidden`)}),(0,G.jsx)(Yh,{id:`board`,defaultSize:`80%`,minSize:`24rem`,className:`min-h-0`,children:(0,G.jsx)(`div`,{className:`flex h-full min-h-0 flex-col p-2 pl-0`,children:(0,G.jsxs)(`div`,{className:`bg-background flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border`,children:[(0,G.jsxs)(`header`,{className:`flex min-h-11 shrink-0 flex-wrap items-center gap-2 px-3`,children:[Ee?null:(0,G.jsx)(K,{variant:`ghost`,size:`icon-xs`,"aria-label":`Expand sidebar`,title:`Expand sidebar`,onClick:()=>{De(!0),fM(!0),Oe.current?.expand()},children:(0,G.jsx)(te,{className:`size-4`})}),(0,G.jsxs)(`div`,{role:`tablist`,"aria-label":`Board or Calendar`,className:`flex items-center gap-0.5`,children:[(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":we===`board`,className:W(`h-7 rounded-md px-2 text-[13px] font-medium`,we===`board`?`bg-muted text-foreground`:`text-muted-foreground hover:text-foreground`),onClick:()=>bn(`board`),children:`Board`}),(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":we===`calendar`,className:W(`h-7 rounded-md px-2 text-[13px] font-medium`,we===`calendar`?`bg-muted text-foreground`:`text-muted-foreground hover:text-foreground`),onClick:()=>bn(`calendar`),children:`Calendar`})]}),(0,G.jsx)(`span`,{className:`bg-primary/10 text-primary inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium`,children:(()=>{let{projects:e}=nt(D);return e.length>0?e.join(`, `):`DEMO`})()}),(0,G.jsxs)(Nj,{className:`h-7 max-w-72 min-w-40 flex-1 border-transparent bg-muted shadow-none`,children:[(0,G.jsx)(Fj,{children:(0,G.jsx)(z,{className:`size-3.5`})}),(0,G.jsx)(Ij,{value:A,onChange:e=>j(e.target.value),placeholder:`Search Epics and Cards`,"aria-label":`Search`,className:`h-7 text-[13px]`}),A?(0,G.jsx)(Fj,{align:`inline-end`,children:(0,G.jsx)(`button`,{type:`button`,"aria-label":`Clear search`,onClick:()=>j(``),children:(0,G.jsx)(de,{className:`size-3.5`})})}):null]}),(0,G.jsx)(`input`,{className:`placeholder:text-muted-foreground h-7 min-w-40 flex-1 rounded-md bg-muted px-2.5 text-[13px] outline-none`,value:D,onChange:e=>ee(e.target.value),placeholder:`Scope flags`,spellCheck:!1,"aria-label":`Scope flags`}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsxs)(K,{variant:`ghost`,size:`sm`,children:[(0,G.jsx)(I,{}),`Filter`]})}),(0,G.jsx)(DM,{facets:ft,filter:B.filter,onToggle:(e,t)=>_t({...B,filter:{...B.filter,[e]:CM(B.filter[e]??[],t)}}),onClear:()=>_t(Jj)})]}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsxs)(K,{variant:`ghost`,size:`sm`,children:[(0,G.jsx)(O,{}),`Sort`]})}),(0,G.jsx)(Ap,{align:`end`,children:(0,G.jsxs)(Pp,{value:B.sort,onValueChange:e=>_t({...B,sort:e}),children:[(0,G.jsx)(Fp,{value:`payload`,children:`Payload order`}),(0,G.jsx)(Fp,{value:`priority`,children:`Priority`}),(0,G.jsx)(Fp,{value:`age`,children:`Age`}),(0,G.jsx)(Fp,{value:`due`,children:`Due date`}),(0,G.jsx)(Fp,{value:`key`,children:`Key`})]})})]}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsxs)(K,{variant:`ghost`,size:`sm`,children:[(0,G.jsx)(N,{}),`Columns`]})}),(0,G.jsx)(Ap,{align:`end`,children:pt.map(e=>(0,G.jsx)(Np,{checked:!B.hide.includes(e),onCheckedChange:t=>_t({...B,hide:t?B.hide.filter(t=>t!==e):[...B.hide,e]}),children:e},e))})]}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsxs)(K,{variant:`ghost`,size:`sm`,children:[(0,G.jsx)(re,{}),`Display`]})}),(0,G.jsxs)(Ap,{align:`end`,className:`w-44`,children:[(0,G.jsx)(jp,{children:`Card properties`}),qj.map(e=>(0,G.jsxs)(Np,{checked:B.shown.includes(e),onCheckedChange:()=>_t({...B,shown:wM(B.shown,e)}),children:[e===`created`&&`Age`,e===`targetEnd`&&`Target end`,e===`priority`&&`Priority`,e===`labels`&&`Labels`,e===`assignee`&&`Assignee`,e===`dueDate`&&`Due date`]},e))]})]}),(0,G.jsxs)(K,{variant:`ghost`,size:`sm`,onClick:()=>Dt(),disabled:ne,"aria-busy":ne,children:[ne?(0,G.jsx)(TE,{className:`size-3.5`}):null,`Refresh`]}),(0,G.jsxs)(K,{variant:`ghost`,size:`sm`,onClick:()=>s(e=>!e),"aria-pressed":o,children:[(0,G.jsx)(k,{className:`mr-1 size-4`}),`Agent`]}),(0,G.jsx)(K,{variant:`ghost`,size:`icon-xs`,onClick:ln,"aria-label":L===`dark`?`Switch to light mode`:`Switch to dark mode`,children:L===`dark`?(0,G.jsx)(le,{}):(0,G.jsx)(R,{})}),P?(0,G.jsx)(`p`,{className:`text-destructive w-full text-[13px] whitespace-pre-wrap`,children:P}):null]}),(0,G.jsxs)(Jh,{id:`board-open`,orientation:`horizontal`,className:`min-h-0 flex-1`,defaultLayout:lt.defaultLayout,onLayoutChanged:lt.onLayoutChanged,children:[(0,G.jsx)(Yh,{id:`cards`,defaultSize:v?`70%`:`100%`,minSize:`16rem`,className:`min-h-0`,children:(0,G.jsx)(`main`,{className:W(`h-full min-h-0 min-w-0 px-2 pb-2`,we===`calendar`?`overflow-hidden`:`overflow-auto`),children:we===`calendar`?(0,G.jsx)(yE,{cards:Object.values(qe).flat(),onOpen:e=>void on(e)}):(0,G.jsxs)(Tj,{className:`h-full min-h-0`,value:qe,onValueChange:e=>t(t=>Ft(e,t,g,A,We)),getItemValue:e=>e.key,restoreOnCancel:!0,onValueCommit:cn,children:[(0,G.jsx)(Ej,{className:`grid h-full min-h-0 grid-cols-1 auto-rows-fr gap-3`,children:it.length?(0,G.jsx)(Jh,{id:`columns`,orientation:`horizontal`,className:`min-h-0`,defaultLayout:ut.defaultLayout,onLayoutChanged:ut.onLayoutChanged,children:Object.entries(qe).map(([e,t],n,r)=>(0,G.jsxs)(C.Fragment,{children:[n>0?(0,G.jsx)(Xh,{}):null,(0,G.jsx)(Yh,{id:e,defaultSize:`${100/Math.max(r.length,1)}%`,minSize:`16rem`,className:`min-h-0 min-w-0`,children:(0,G.jsx)(kM,{title:e,cards:t,disabled:ne,selected:He,shown:Ge,onClick:Gt,onDoubleClick:Kt,onCreate:$t,onHide:()=>_t({...B,hide:[...B.hide,e]})})})]},e))}):null}),(0,G.jsx)(Mj,{children:({value:e,variant:t})=>{if(t===`column`)return(0,G.jsx)(kM,{title:String(e),cards:qe[String(e)]??[],isOverlay:!0,shown:Ge});let n=Object.values(qe).flat().find(t=>t.key===e);if(!n)return null;let r=He.has(n.key)?He.size:1;return(0,G.jsxs)(`div`,{className:`relative`,children:[(0,G.jsx)(OM,{card:n,isOverlay:!0,variant:(n.type??``).toLowerCase()===`epic`?`epic`:`story`,shown:Ge}),r>1?(0,G.jsx)(`span`,{className:`absolute -top-2 -right-2 flex h-5 min-w-5 items-center justify-center rounded-full bg-primary px-1.5 text-[11px] font-medium text-primary-foreground`,children:r}):null]})}})]})})}),v?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Xh,{}),(0,G.jsx)(Yh,{id:`open`,defaultSize:`30%`,minSize:`16rem`,className:`min-h-0`,children:(0,G.jsxs)(`aside`,{className:`flex h-full min-h-0 flex-col border-l`,children:[(0,G.jsxs)(`div`,{className:`flex h-10 items-center gap-2 px-3`,children:[(0,G.jsx)(`a`,{className:`min-w-0 flex-1 truncate text-[13px] font-medium underline-offset-4 hover:underline`,href:b??void 0,target:`_blank`,rel:`noreferrer`,children:v}),(0,G.jsx)(K,{variant:`ghost`,size:`sm`,className:`h-7 text-[12px]`,type:`button`,onClick:()=>{v&&rn(v)},children:`Edit`}),(0,G.jsx)(K,{variant:`ghost`,size:`icon-xs`,"aria-label":`Close issue`,onClick:()=>{y(null),x(null),w([]),E(``)},children:(0,G.jsx)(de,{})})]}),(0,G.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:[T?(0,G.jsx)(`p`,{className:`text-destructive px-4 pt-3 text-[13px] whitespace-pre-wrap`,children:T}):null,(0,G.jsx)(NM,{fields:S}),dt?(0,G.jsx)(`iframe`,{title:v??`Issue`,src:dt,className:`min-h-64 w-full border-0 bg-background`}):b?(0,G.jsx)(`div`,{className:`text-muted-foreground px-4 pb-6 text-[13px]`,children:`Jira refuses to embed this page.`}):null]})]})})]}):null]})]})})}),o?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Xh,{}),(0,G.jsx)(yg,{open:o,onClose:()=>s(!1),selectedIssueKey:v??g??void 0,boardView:{scope:`view`,kind:Se,selectedEpic:Ke?null:g,search:A,filter:B.filter,sort:B.sort,hide:B.hide,columns:Object.entries(qe).map(([e,t])=>({title:e,cards:t.map(e=>({key:e.key,summary:e.summary,epic:e.epic,assignee:e.assignee,priority:e.priority,labels:e.labels,dueDate:e.dueDate,targetEnd:e.targetEnd}))})),epics:et.map(e=>({key:e.key,summary:e.summary,status:e.status}))},pipeView:je?{scope:`pipe`,kind:`stories`,selectedEpic:null,search:``,filter:{},sort:`payload`,hide:[],columns:je.columns.map(e=>({title:e.title,cards:e.cards.map(e=>({key:e.key,summary:e.summary,epic:e.epic,assignee:e.assignee,priority:e.priority,labels:e.labels,dueDate:e.dueDate,targetEnd:e.targetEnd}))})),epics:je.epics.map(e=>({key:e.key,summary:e.summary,status:e.status}))}:void 0,onApplyPreset:Mn,onSetFilter:e=>_t({...B,filter:e}),onConfirmRefresh:Dt,onBoardMutated:()=>{Et()},seedPrompt:c,onSeedConsumed:()=>l(null)})]}):null]}),(0,G.jsx)(wD,{open:Fe,onOpenChange:e=>{Ie(e),e||Re(void 0)},children:(0,G.jsxs)(DD,{children:[(0,G.jsxs)(OD,{children:[(0,G.jsx)(AD,{children:`Refresh`}),(0,G.jsx)(jD,{children:g?`Refresh all Epics, or only the focused Epic ${g}.`:$e})]}),(0,G.jsxs)(kD,{children:[(0,G.jsx)(MD,{disabled:ne,children:`Cancel`}),(0,G.jsx)(K,{type:`button`,variant:`outline`,disabled:ne||!g,onClick:()=>void Ot(`selected`),children:g?`Refresh selected (${g})`:`Refresh selected`}),(0,G.jsx)(K,{type:`button`,disabled:ne,onClick:()=>void Ot(`all`),children:`Refresh all Epics`})]})]})}),(0,G.jsx)(wE,{theme:L}),u?(0,G.jsx)(CE,{draft:u,catalog:mt,busy:f,error:m,onChange:d,onSubmit:()=>void an(),onClose:()=>{f||(d(null),h(``))},onDraftWithAi:u.mode===`create`?()=>en(u):void 0}):null,Ne?(0,G.jsx)(xE,{presets:fe.map(e=>e.name),epics:je?.epics??n,cards:Xe,favouriteKeys:ce.keys,onPick:Nn,onClose:()=>{ze.current=!1,Pe(!1),Be.current?.focus()}}):null]})}function FM({pane:e,selectedEpic:t,childCount:n,favourites:r,folderName:i,folderError:a,onFolderName:o,onCreateFolder:s,onRenameFolder:c,onDeleteFolder:l,listedEpics:u,onSelect:d,onToggleFavourite:f,onFile:p,onMove:m,onOpen:h}){let[g,_]=(0,C.useState)(()=>!Qj(Xj(Rj,Kj),`Favourites`));function v(e){_(e);let t=Xj(Rj,Kj);if(e)for(let e of[...t])e.toLowerCase()===`favourites`&&t.delete(e);else t.add(`Favourites`);Zj(t,Rj)}let y=r.folders.map(e=>e.name);return(0,G.jsxs)(pg,{open:g,onOpenChange:v,className:`flex flex-col`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-1 px-1`,children:[(0,G.jsx)(mg,{asChild:!0,children:(0,G.jsxs)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground flex h-7 min-w-0 flex-1 items-center gap-1.5 px-2 text-left`,children:[(0,G.jsx)(j,{className:W(`size-3.5 shrink-0 transition-transform`,!g&&`-rotate-90`)}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[12px] font-medium`,children:`Favourites`})]})}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":`Favourite Folders`,children:(0,G.jsx)(F,{})})}),(0,G.jsxs)(Ap,{align:`start`,className:`w-56`,children:[(0,G.jsx)(jp,{children:`Create Folder`}),(0,G.jsxs)(`div`,{className:`px-2 pb-2`,children:[(0,G.jsx)(`input`,{className:`border-input h-7 w-full rounded-md border bg-transparent px-2 text-[13px] outline-none`,value:i,onChange:e=>o(e.target.value),placeholder:`Name`,"aria-label":`Folder name`,onKeyDown:e=>{e.key===`Enter`&&s()}}),a?(0,G.jsx)(`p`,{className:`text-destructive pt-1 text-[11px]`,children:a}):null]}),(0,G.jsx)(Mp,{onClick:s,children:`Create`}),y.length?(0,G.jsx)(Ip,{}):null,y.map(e=>(0,G.jsxs)(Mp,{onClick:()=>{let t=window.prompt(`Rename Folder`,e);t!=null&&c(e,t)},children:[`Rename `,e]},`rename-${e}`)),y.map(e=>(0,G.jsxs)(Mp,{onClick:()=>l(e),children:[`Delete `,e]},`delete-${e}`))]})]})]}),(0,G.jsxs)(hg,{className:`flex flex-col gap-0.5`,children:[e.unfiled.map(e=>(0,G.jsx)(jM,{epic:e,selected:t===e.key,count:n(e.key),favourited:!0,folders:y,onSelect:d,onToggleFavourite:f,onFile:p,moveTo:AM(u,e.status),onMove:m,onOpen:h},e.key)),e.folders.map(e=>(0,G.jsx)(IM,{folder:e,selectedEpic:t,childCount:n,folderNames:y,listedEpics:u,onSelect:d,onToggleFavourite:f,onFile:p,onMove:m,onOpen:h},e.name))]})]})}function IM({folder:e,selectedEpic:t,childCount:n,folderNames:r,listedEpics:i,onSelect:a,onToggleFavourite:o,onFile:s,onMove:c,onOpen:l}){let[u,d]=(0,C.useState)(()=>!Qj(Xj(zj),e.name));function f(t){d(t);let n=Xj(zj);if(t)for(let t of[...n])t.toLowerCase()===e.name.toLowerCase()&&n.delete(t);else n.add(e.name);Zj(n,zj)}return(0,G.jsxs)(pg,{open:u,onOpenChange:f,className:`flex flex-col`,children:[(0,G.jsx)(mg,{asChild:!0,children:(0,G.jsxs)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground flex h-7 items-center gap-1.5 px-3 text-left`,children:[(0,G.jsx)(j,{className:W(`size-3.5 shrink-0 transition-transform`,!u&&`-rotate-90`)}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[12px] font-medium`,children:e.name}),(0,G.jsx)(`span`,{className:`text-[11px] tabular-nums`,children:e.epics.length})]})}),(0,G.jsx)(hg,{className:`flex flex-col gap-0.5`,children:e.epics.map(e=>(0,G.jsx)(jM,{epic:e,selected:t===e.key,count:n(e.key),favourited:!0,folders:r,onSelect:a,onToggleFavourite:o,onFile:s,moveTo:AM(i,e.status),onMove:c,onOpen:l},e.key))})]})}function LM({presets:e,presetName:t,presetError:n,onPresetName:r,onCreatePreset:i,onApplyPreset:a,onOverwritePreset:o,onRenamePreset:s,onDeletePreset:c}){let[l,u]=(0,C.useState)(()=>!Qj(Xj(Rj,Kj),`Presets`));function d(e){u(e);let t=Xj(Rj,Kj);if(e)for(let e of[...t])e.toLowerCase()===`presets`&&t.delete(e);else t.add(`Presets`);Zj(t,Rj)}return(0,G.jsxs)(pg,{open:l,onOpenChange:d,className:`flex flex-col`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-1 px-1`,children:[(0,G.jsx)(mg,{asChild:!0,children:(0,G.jsxs)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground flex h-7 min-w-0 flex-1 items-center gap-1.5 px-2 text-left`,children:[(0,G.jsx)(j,{className:W(`size-3.5 shrink-0 transition-transform`,!l&&`-rotate-90`)}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[12px] font-medium`,children:`Presets`})]})}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":`Presets`,children:(0,G.jsx)(F,{})})}),(0,G.jsxs)(Ap,{align:`start`,className:`w-56`,children:[(0,G.jsx)(jp,{children:`Save Preset`}),(0,G.jsxs)(`div`,{className:`px-2 pb-2`,children:[(0,G.jsx)(`input`,{className:`border-input h-7 w-full rounded-md border bg-transparent px-2 text-[13px] outline-none`,value:t,onChange:e=>r(e.target.value),placeholder:`Name`,"aria-label":`Preset name`,onKeyDown:e=>{e.key===`Enter`&&i()}}),n?(0,G.jsx)(`p`,{className:`text-destructive pt-1 text-[11px]`,children:n}):null]}),(0,G.jsx)(Mp,{onClick:i,children:`Save`})]})]})]}),(0,G.jsx)(hg,{className:`flex flex-col gap-0.5`,children:e.map(e=>(0,G.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,G.jsx)(`button`,{type:`button`,className:`hover:bg-foreground/5 flex h-7 min-w-0 flex-1 items-center rounded-lg px-[7px] text-left text-[13px] font-medium`,onClick:()=>a(e.name),children:(0,G.jsx)(`span`,{className:`min-w-0 truncate`,children:e.name})}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":`Preset ${e.name}`,children:(0,G.jsx)(F,{})})}),(0,G.jsxs)(Ap,{align:`end`,children:[(0,G.jsx)(Mp,{onClick:()=>o(e.name),children:`Save over`}),(0,G.jsx)(Mp,{onClick:()=>{let t=window.prompt(`Rename Preset`,e.name);t!=null&&s(e.name,t)},children:`Rename`}),(0,G.jsx)(Mp,{onClick:()=>c(e.name),children:`Delete`})]})]})]},e.name))})]})}(0,fe.createRoot)(document.getElementById(`root`)).render((0,G.jsx)(C.StrictMode,{children:(0,G.jsx)(PM,{})}));
|
|
56
|
+
`},hO={onDragStart(e){let{active:t}=e;return`Picked up draggable item `+t.id+`.`},onDragOver(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was moved over droppable area `+n.id+`.`:`Draggable item `+t.id+` is no longer over a droppable area.`},onDragEnd(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was dropped over droppable area `+n.id:`Draggable item `+t.id+` was dropped.`},onDragCancel(e){let{active:t}=e;return`Dragging was cancelled. Draggable item `+t.id+` was dropped.`}};function gO(e){let{announcements:t=hO,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=mO}=e,{announce:a,announcement:o}=uO(),s=XD(`DndLiveRegion`),[c,l]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{l(!0)},[]),fO((0,C.useMemo)(()=>({onDragStart(e){let{active:n}=e;a(t.onDragStart({active:n}))},onDragMove(e){let{active:n,over:r}=e;t.onDragMove&&a(t.onDragMove({active:n,over:r}))},onDragOver(e){let{active:n,over:r}=e;a(t.onDragOver({active:n,over:r}))},onDragEnd(e){let{active:n,over:r}=e;a(t.onDragEnd({active:n,over:r}))},onDragCancel(e){let{active:n,over:r}=e;a(t.onDragCancel({active:n,over:r}))}}),[a,t])),!c)return null;let u=C.createElement(C.Fragment,null,C.createElement(cO,{id:r,value:i.draggable}),C.createElement(lO,{id:s,announcement:o}));return n?(0,pe.createPortal)(u,n):u}var _O;(function(e){e.DragStart=`dragStart`,e.DragMove=`dragMove`,e.DragEnd=`dragEnd`,e.DragCancel=`dragCancel`,e.DragOver=`dragOver`,e.RegisterDroppable=`registerDroppable`,e.SetDroppableDisabled=`setDroppableDisabled`,e.UnregisterDroppable=`unregisterDroppable`})(_O||={});function vO(){}function yO(e,t){return(0,C.useMemo)(()=>({sensor:e,options:t??{}}),[e,t])}function bO(){var e=[...arguments];return(0,C.useMemo)(()=>[...e].filter(e=>e!=null),[...e])}var xO=Object.freeze({x:0,y:0});function SO(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function CO(e,t){let n=rO(e);if(!n)return`0 0`;let r={x:(n.x-t.left)/t.width*100,y:(n.y-t.top)/t.height*100};return r.x+`% `+r.y+`%`}function wO(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function TO(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function EO(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function DO(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}var OO=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=EO(t),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=EO(r),o=i.reduce((e,t,r)=>e+SO(n[r],t),0),s=Number((o/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:s}})}}return a.sort(wO)};function kO(e,t){let n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=i-r,s=a-n;if(r<i&&n<a){let n=t.width*t.height,r=e.width*e.height,i=o*s,a=i/(n+r-i);return Number(a.toFixed(4))}return 0}var AO=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=[];for(let e of r){let{id:r}=e,a=n.get(r);if(a){let n=kO(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(TO)};function jO(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function MO(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:xO}function NO(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}var PO=NO(1);function FO(e){if(e.startsWith(`matrix3d(`)){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}if(e.startsWith(`matrix(`)){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function IO(e,t,n){let r=FO(t);if(!r)return e;let{scaleX:i,scaleY:a,x:o,y:s}=r,c=e.left-o-(1-i)*parseFloat(n),l=e.top-s-(1-a)*parseFloat(n.slice(n.indexOf(` `)+1)),u=i?e.width/i:e.width,d=a?e.height/a:e.height;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c}}var LO={ignoreTransform:!1};function RO(e,t){t===void 0&&(t=LO);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=LD(e).getComputedStyle(e);t&&(n=IO(n,t,r))}let{top:r,left:i,width:a,height:o,bottom:s,right:c}=n;return{top:r,left:i,width:a,height:o,bottom:s,right:c}}function zO(e){return RO(e,{ignoreTransform:!0})}function BO(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function VO(e,t){return t===void 0&&(t=LD(e).getComputedStyle(e)),t.position===`fixed`}function HO(e,t){t===void 0&&(t=LD(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`&&n.test(r)})}function UO(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(RD(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!zD(i)||BD(i)||n.includes(i))return n;let a=LD(e).getComputedStyle(i);return i!==e&&HO(i,a)&&n.push(i),VO(i,a)?n:r(i.parentNode)}return e?r(e):n}function WO(e){let[t]=UO(e,1);return t??null}function GO(e){return!PD||!e?null:FD(e)?e:ID(e)?RD(e)||e===VD(e).scrollingElement?window:zD(e)?e:null:null}function KO(e){return FD(e)?e.scrollX:e.scrollLeft}function qO(e){return FD(e)?e.scrollY:e.scrollTop}function JO(e){return{x:KO(e),y:qO(e)}}var YO;(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(YO||={});function XO(e){return!PD||!e?!1:e===document.scrollingElement}function ZO(e){let t={x:0,y:0},n=XO(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}var QO={x:.2,y:.2};function $O(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=QO);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=ZO(e),p={x:0,y:0},m={x:0,y:0},h={height:t.height*i.y,width:t.width*i.x};return!l&&a<=t.top+h.height?(p.y=YO.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=YO.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=YO.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=YO.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function ek(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function tk(e){return e.reduce((e,t)=>QD(e,JO(t)),xO)}function nk(e){return e.reduce((e,t)=>e+KO(t),0)}function rk(e){return e.reduce((e,t)=>e+qO(t),0)}function ik(e,t){if(t===void 0&&(t=RO),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);WO(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}var ak=[[`x`,[`left`,`right`],nk],[`y`,[`top`,`bottom`],rk]],ok=class{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;let n=UO(t),r=tk(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of ak)for(let a of t)Object.defineProperty(this,a,{get:()=>{let t=i(n),o=r[e]-t;return this.rect[a]+o},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}},sk=class{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>this.target?.removeEventListener(...e))},this.target=e}add(e,t,n){var r;(r=this.target)==null||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}};function ck(e){let{EventTarget:t}=LD(e);return e instanceof t?e:VD(e)}function lk(e,t){let n=Math.abs(e.x),r=Math.abs(e.y);return typeof t==`number`?Math.sqrt(n**2+r**2)>t:`x`in t&&`y`in t?n>t.x&&r>t.y:`x`in t?n>t.x:`y`in t&&r>t.y}var uk;(function(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(uk||={});function dk(e){e.preventDefault()}function fk(e){e.stopPropagation()}var pk;(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})(pk||={});var mk={start:[pk.Space,pk.Enter],cancel:[pk.Esc],end:[pk.Space,pk.Enter,pk.Tab]},hk=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case pk.Right:return{...n,x:n.x+25};case pk.Left:return{...n,x:n.x-25};case pk.Down:return{...n,y:n.y+25};case pk.Up:return{...n,y:n.y-25}}},gk=class{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;let{event:{target:t}}=e;this.props=e,this.listeners=new sk(VD(t)),this.windowListeners=new sk(LD(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(uk.Resize,this.handleCancel),this.windowListeners.add(uk.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(uk.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&ik(n),t(xO)}handleKeyDown(e){if(tO(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=mk,coordinateGetter:a=hk,scrollBehavior:o=`smooth`}=r,{code:s}=e;if(i.end.includes(s)){this.handleEnd(e);return}if(i.cancel.includes(s)){this.handleCancel(e);return}let{collisionRect:c}=n.current,l=c?{x:c.left,y:c.top}:xO;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=$D(u,l),r={x:0,y:0},{scrollableAncestors:i}=n.current;for(let n of i){let i=e.code,{isTop:a,isRight:s,isLeft:c,isBottom:l,maxScroll:d,minScroll:f}=ZO(n),p=ek(n),m={x:Math.min(i===pk.Right?p.right-p.width/2:p.right,Math.max(i===pk.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===pk.Down?p.bottom-p.height/2:p.bottom,Math.max(i===pk.Down?p.top:p.top+p.height/2,u.y))},h=i===pk.Right&&!s||i===pk.Left&&!c,g=i===pk.Down&&!l||i===pk.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===pk.Right&&e<=d.x||i===pk.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}r.x=a?n.scrollLeft-e:i===pk.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===pk.Down&&e<=d.y||i===pk.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}r.y=a?n.scrollTop-e:i===pk.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,QD($D(u,this.referenceCoordinates),r))}}}handleMove(e,t){let{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}};gk.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=mk,onActivation:i}=t,{active:a}=n,{code:o}=e.nativeEvent;if(r.start.includes(o)){let t=a.activatorNode.current;return t&&e.target!==t?!1:(e.preventDefault(),i?.({event:e.nativeEvent}),!0)}return!1}}];function _k(e){return!!(e&&`distance`in e)}function vk(e){return!!(e&&`delay`in e)}var yk=class{constructor(e,t,n){n===void 0&&(n=ck(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;let{event:r}=e,{target:i}=r;this.props=e,this.events=t,this.document=VD(i),this.documentListeners=new sk(this.document),this.listeners=new sk(n),this.windowListeners=new sk(LD(i)),this.initialCoordinates=rO(r)??xO,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(uk.Resize,this.handleCancel),this.windowListeners.add(uk.DragStart,dk),this.windowListeners.add(uk.VisibilityChange,this.handleCancel),this.windowListeners.add(uk.ContextMenu,dk),this.documentListeners.add(uk.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(vk(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(_k(t)){this.handlePending(t);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(uk.Click,fk,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(uk.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){let{activated:t,initialCoordinates:n,props:r}=this,{onMove:i,options:{activationConstraint:a}}=r;if(!n)return;let o=rO(e)??xO,s=$D(n,o);if(!t&&a){if(_k(a)){if(a.tolerance!=null&&lk(s,a.tolerance))return this.handleCancel();if(lk(s,a.distance))return this.handleStart()}if(vk(a)&&lk(s,a.tolerance))return this.handleCancel();this.handlePending(a,s);return}e.cancelable&&e.preventDefault(),i(o)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===pk.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},bk={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},xk=class extends yk{constructor(e){let{event:t}=e,n=VD(t.target);super(e,bk,n)}};xk.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];var Sk={move:{name:`mousemove`},end:{name:`mouseup`}},Ck;(function(e){e[e.RightClick=2]=`RightClick`})(Ck||={});var wk=class extends yk{constructor(e){super(e,Sk,VD(e.event.target))}};wk.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button!==Ck.RightClick&&(r?.({event:n}),!0)}}];var Tk={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},Ek=class extends yk{constructor(e){super(e,Tk)}static setup(){return window.addEventListener(Tk.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(Tk.move.name,e)};function e(){}}};Ek.activators=[{eventName:`onTouchStart`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t,{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}];var Dk;(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(Dk||={});var Ok;(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})(Ok||={});function kk(e){let{acceleration:t,activator:n=Dk.Pointer,canScroll:r,draggingRect:i,enabled:a,interval:o=5,order:s=Ok.TreeOrder,pointerCoordinates:c,scrollableAncestors:l,scrollableAncestorRects:u,delta:d,threshold:f}=e,p=jk({delta:d,disabled:!a}),[m,h]=WD(),g=(0,C.useRef)({x:0,y:0}),_=(0,C.useRef)({x:0,y:0}),v=(0,C.useMemo)(()=>{switch(n){case Dk.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case Dk.DraggableRect:return i}},[n,i,c]),y=(0,C.useRef)(null),b=(0,C.useCallback)(()=>{let e=y.current;if(!e)return;let t=g.current.x*_.current.x,n=g.current.y*_.current.y;e.scrollBy(t,n)},[]),x=(0,C.useMemo)(()=>s===Ok.TreeOrder?[...l].reverse():l,[s,l]);(0,C.useEffect)(()=>{if(!a||!l.length||!v){h();return}for(let e of x){if(r?.(e)===!1)continue;let n=l.indexOf(e),i=u[n];if(!i)continue;let{direction:a,speed:s}=$O(e,i,v,t,f);for(let e of[`x`,`y`])p[e][a[e]]||(s[e]=0,a[e]=0);if(s.x>0||s.y>0){h(),y.current=e,m(b,o),g.current=s,_.current=a;return}}g.current={x:0,y:0},_.current={x:0,y:0},h()},[t,b,r,h,a,o,JSON.stringify(v),JSON.stringify(p),m,l,x,u,JSON.stringify(f)])}var Ak={x:{[YO.Backward]:!1,[YO.Forward]:!1},y:{[YO.Backward]:!1,[YO.Forward]:!1}};function jk(e){let{delta:t,disabled:n}=e,r=JD(t);return KD(e=>{if(n||!r||!e)return Ak;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[YO.Backward]:e.x[YO.Backward]||i.x===-1,[YO.Forward]:e.x[YO.Forward]||i.x===1},y:{[YO.Backward]:e.y[YO.Backward]||i.y===-1,[YO.Forward]:e.y[YO.Forward]||i.y===1}}},[n,t,r])}function Mk(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return KD(e=>t==null?null:r??e??null,[r,t])}function Nk(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{sensor:r}=n,i=r.activators.map(e=>({eventName:e.eventName,handler:t(e.handler,n)}));return[...e,...i]},[]),[e,t])}var Pk;(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(Pk||={});var Fk;(function(e){e.Optimized=`optimized`})(Fk||={});var Ik=new Map;function Lk(e,t){let{dragging:n,dependencies:r,config:i}=t,[a,o]=(0,C.useState)(null),{frequency:s,measure:c,strategy:l}=i,u=(0,C.useRef)(e),d=g(),f=GD(d),p=(0,C.useCallback)(function(e){e===void 0&&(e=[]),!f.current&&o(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[f]),m=(0,C.useRef)(null),h=KD(t=>{if(d&&!n)return Ik;if(!t||t===Ik||u.current!==e||a!=null){let t=new Map;for(let n of e){if(!n)continue;if(a&&a.length>0&&!a.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new ok(c(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,a,n,d,c]);return(0,C.useEffect)(()=>{u.current=e},[e]),(0,C.useEffect)(()=>{d||p()},[n,d]),(0,C.useEffect)(()=>{a&&a.length>0&&o(null)},[JSON.stringify(a)]),(0,C.useEffect)(()=>{d||typeof s!=`number`||m.current!==null||(m.current=setTimeout(()=>{p(),m.current=null},s))},[s,d,p,...r]),{droppableRects:h,measureDroppableContainers:p,measuringScheduled:a!=null};function g(){switch(l){case Pk.Always:return!1;case Pk.BeforeDragging:return n;default:return!n}}}function Rk(e,t){return KD(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function zk(e,t){return Rk(e,t)}function Bk(e){let{callback:t,disabled:n}=e,r=UD(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(r)},[r,n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function Vk(e){let{callback:t,disabled:n}=e,r=UD(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(r)},[n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function Hk(e){return new ok(RO(e),e)}function Uk(e,t,n){t===void 0&&(t=Hk);let[r,i]=(0,C.useState)(null);function a(){i(r=>{if(!e)return null;if(e.isConnected===!1)return r??n??null;let i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i})}let o=Bk({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){a();break}}}}),s=Vk({callback:a});return HD(()=>{a(),e?(s?.observe(e),o?.observe(document.body,{childList:!0,subtree:!0})):(s?.disconnect(),o?.disconnect())},[e]),r}function Wk(e){return MO(e,Rk(e))}var Gk=[];function Kk(e){let t=(0,C.useRef)(e),n=KD(n=>e?n&&n!==Gk&&e&&t.current&&e.parentNode===t.current.parentNode?n:UO(e):Gk,[e]);return(0,C.useEffect)(()=>{t.current=e},[e]),n}function qk(e){let[t,n]=(0,C.useState)(null),r=(0,C.useRef)(e),i=(0,C.useCallback)(e=>{let t=GO(e.target);t&&n(e=>e?(e.set(t,JO(t)),new Map(e)):null)},[]);return(0,C.useEffect)(()=>{let t=r.current;if(e!==t){a(t);let o=e.map(e=>{let t=GO(e);return t?(t.addEventListener(`scroll`,i,{passive:!0}),[t,JO(t)]):null}).filter(e=>e!=null);n(o.length?new Map(o):null),r.current=e}return()=>{a(e),a(t)};function a(e){e.forEach(e=>{GO(e)?.removeEventListener(`scroll`,i)})}},[i,e]),(0,C.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>QD(e,t),xO):tk(e):xO,[e,t])}function Jk(e,t){t===void 0&&(t=[]);let n=(0,C.useRef)(null);return(0,C.useEffect)(()=>{n.current=null},t),(0,C.useEffect)(()=>{let t=e!==xO;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)},[e]),n.current?$D(e,n.current):xO}function Yk(e){(0,C.useEffect)(()=>{if(!PD)return;let t=e.map(e=>{let{sensor:t}=e;return t.setup==null?void 0:t.setup()});return()=>{for(let e of t)e?.()}},e.map(e=>{let{sensor:t}=e;return t}))}function Xk(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{eventName:r,handler:i}=n;return e[r]=e=>{i(e,t)},e},{}),[e,t])}function Zk(e){return(0,C.useMemo)(()=>e?BO(e):null,[e])}var Qk=[];function $k(e,t){t===void 0&&(t=RO);let[n]=e,r=Zk(n?LD(n):null),[i,a]=(0,C.useState)(Qk);function o(){a(()=>e.length?e.map(e=>XO(e)?r:new ok(t(e),e)):Qk)}let s=Vk({callback:o});return HD(()=>{s?.disconnect(),o(),e.forEach(e=>s?.observe(e))},[e]),i}function eA(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return zD(t)?t:e}function tA(e){let{measure:t}=e,[n,r]=(0,C.useState)(null),i=Vk({callback:(0,C.useCallback)(e=>{for(let{target:n}of e)if(zD(n)){r(e=>{let r=t(n);return e?{...e,width:r.width,height:r.height}:r});break}},[t])}),[a,o]=qD((0,C.useCallback)(e=>{let n=eA(e);i?.disconnect(),n&&i?.observe(n),r(n?t(n):null)},[t,i]));return(0,C.useMemo)(()=>({nodeRef:a,rect:n,setRef:o}),[n,a,o])}var nA=[{sensor:xk,options:{}},{sensor:gk,options:{}}],rA={current:{}},iA={draggable:{measure:zO},droppable:{measure:zO,strategy:Pk.WhileDragging,frequency:Fk.Optimized},dragOverlay:{measure:RO}},aA=class extends Map{get(e){return e==null?void 0:super.get(e)??void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){return this.get(e)?.node.current??void 0}},oA={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new aA,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:vO},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:iA,measureDroppableContainers:vO,windowRect:null,measuringScheduled:!1},sA={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:vO,draggableNodes:new Map,over:null,measureDroppableContainers:vO},cA=(0,C.createContext)(sA),lA=(0,C.createContext)(oA);function uA(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new aA}}}function dA(e,t){switch(t.type){case _O.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case _O.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case _O.DragEnd:case _O.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case _O.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new aA(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case _O.SetDroppableDisabled:{let{id:n,key:r,disabled:i}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;let o=new aA(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case _O.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new aA(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function fA(e){let{disabled:t}=e,{active:n,activatorEvent:r,draggableNodes:i}=(0,C.useContext)(cA),a=JD(r),o=JD(n?.id);return(0,C.useEffect)(()=>{if(!t&&!r&&a&&o!=null){if(!tO(a)||document.activeElement===a.target)return;let e=i.get(o);if(!e)return;let{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(let e of[t.current,n.current]){if(!e)continue;let t=oO(e);if(t){t.focus();break}}})}},[r,t,i,o,a]),null}function pA(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function mA(e){return(0,C.useMemo)(()=>({draggable:{...iA.draggable,...e?.draggable},droppable:{...iA.droppable,...e?.droppable},dragOverlay:{...iA.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function hA(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e,a=(0,C.useRef)(!1),{x:o,y:s}=typeof i==`boolean`?{x:i,y:i}:i;HD(()=>{if(!o&&!s||!t){a.current=!1;return}if(a.current||!r)return;let e=t?.node.current;if(!e||e.isConnected===!1)return;let i=MO(n(e),r);if(o||(i.x=0),s||(i.y=0),a.current=!0,Math.abs(i.x)>0||Math.abs(i.y)>0){let t=WO(e);t&&t.scrollBy({top:i.y,left:i.x})}},[t,o,s,r,n])}var gA=(0,C.createContext)({...xO,scaleX:1,scaleY:1}),_A;(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(_A||={});var vA=(0,C.memo)(function(e){let{id:t,accessibility:n,autoScroll:r=!0,children:i,sensors:a=nA,collisionDetection:o=AO,measuring:s,modifiers:c,...l}=e,[u,d]=(0,C.useReducer)(dA,void 0,uA),[f,p]=pO(),[m,h]=(0,C.useState)(_A.Uninitialized),g=m===_A.Initialized,{draggable:{active:_,nodes:v,translate:y},droppable:{containers:b}}=u,x=_==null?null:v.get(_),S=(0,C.useRef)({initial:null,translated:null}),w=(0,C.useMemo)(()=>_==null?null:{id:_,data:x?.data??rA,rect:S},[_,x]),T=(0,C.useRef)(null),[E,D]=(0,C.useState)(null),[O,ee]=(0,C.useState)(null),k=GD(l,Object.values(l)),A=XD(`DndDescribedBy`,t),j=(0,C.useMemo)(()=>b.getEnabled(),[b]),M=mA(s),{droppableRects:te,measureDroppableContainers:N,measuringScheduled:P}=Lk(j,{dragging:g,dependencies:[y.x,y.y],config:M.droppable}),F=Mk(v,_),ne=(0,C.useMemo)(()=>O?rO(O):null,[O]),re=Ae(),ie=zk(F,M.draggable.measure);hA({activeNode:_==null?null:v.get(_),config:re.layoutShiftCompensation,initialRect:ie,measure:M.draggable.measure});let I=Uk(F,M.draggable.measure,ie),L=Uk(F?F.parentElement:null),R=(0,C.useRef)({activatorEvent:null,active:null,activeNode:F,collisionRect:null,collisions:null,droppableRects:te,draggableNodes:v,draggingNode:null,draggingNodeRect:null,droppableContainers:b,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ae=b.getNodeFor(R.current.over?.id),z=tA({measure:M.dragOverlay.measure}),B=z.nodeRef.current??F,oe=g?z.rect??I:null,se=!!(z.nodeRef.current&&z.rect),ce=Wk(se?null:I),le=Zk(B?LD(B):null),ue=Kk(g?ae??F:null),de=$k(ue),fe=pA(c,{transform:{x:y.x-ce.x,y:y.y-ce.y,scaleX:1,scaleY:1},activatorEvent:O,active:w,activeNodeRect:I,containerNodeRect:L,draggingNodeRect:oe,over:R.current.over,overlayNodeRect:z.rect,scrollableAncestors:ue,scrollableAncestorRects:de,windowRect:le}),me=ne?QD(ne,y):null,he=qk(ue),ge=Jk(he),_e=Jk(he,[I]),ve=QD(fe,ge),ye=oe?PO(oe,fe):null,be=w&&ye?o({active:w,collisionRect:ye,droppableRects:te,droppableContainers:j,pointerCoordinates:me}):null,xe=DO(be,`id`),[Se,Ce]=(0,C.useState)(null),we=jO(se?fe:QD(fe,_e),Se?.rect??null,I),Te=(0,C.useRef)(null),Ee=(0,C.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(T.current==null)return;let i=v.get(T.current);if(!i)return;let a=e.nativeEvent,o=new n({active:T.current,activeNode:i,event:a,options:r,context:R,onAbort(e){if(!v.get(e))return;let{onDragAbort:t}=k.current,n={id:e};t?.(n),f({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!v.get(e))return;let{onDragPending:i}=k.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),f({type:`onDragPending`,event:a})},onStart(e){let t=T.current;if(t==null)return;let n=v.get(t);if(!n)return;let{onDragStart:r}=k.current,i={activatorEvent:a,active:{id:t,data:n.data,rect:S}};(0,pe.unstable_batchedUpdates)(()=>{r?.(i),h(_A.Initializing),d({type:_O.DragStart,initialCoordinates:e,active:t}),f({type:`onDragStart`,event:i}),D(Te.current),ee(a)})},onMove(e){d({type:_O.DragMove,coordinates:e})},onEnd:s(_O.DragEnd),onCancel:s(_O.DragCancel)});Te.current=o;function s(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:i}=R.current,o=null;if(t&&i){let{cancelDrop:s}=k.current;o={activatorEvent:a,active:t,collisions:n,delta:i,over:r},e===_O.DragEnd&&typeof s==`function`&&await Promise.resolve(s(o))&&(e=_O.DragCancel)}T.current=null,(0,pe.unstable_batchedUpdates)(()=>{d({type:e}),h(_A.Uninitialized),Ce(null),D(null),ee(null),Te.current=null;let t=e===_O.DragEnd?`onDragEnd`:`onDragCancel`;if(o){let e=k.current[t];e?.(o),f({type:t,event:o})}})}}},[v]),De=Nk(a,(0,C.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=v.get(r);if(T.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},T.current=r,Ee(n,t))},[v,Ee]));Yk(a),HD(()=>{I&&m===_A.Initializing&&h(_A.Initialized)},[I,m]),(0,C.useEffect)(()=>{let{onDragMove:e}=k.current,{active:t,activatorEvent:n,collisions:r,over:i}=R.current;if(!t||!n)return;let a={active:t,activatorEvent:n,collisions:r,delta:{x:ve.x,y:ve.y},over:i};(0,pe.unstable_batchedUpdates)(()=>{e?.(a),f({type:`onDragMove`,event:a})})},[ve.x,ve.y]),(0,C.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:i}=R.current;if(!e||T.current==null||!t||!i)return;let{onDragOver:a}=k.current,o=r.get(xe),s=o&&o.rect.current?{id:o.id,rect:o.rect.current,data:o.data,disabled:o.disabled}:null,c={active:e,activatorEvent:t,collisions:n,delta:{x:i.x,y:i.y},over:s};(0,pe.unstable_batchedUpdates)(()=>{Ce(s),a?.(c),f({type:`onDragOver`,event:c})})},[xe]),HD(()=>{R.current={activatorEvent:O,active:w,activeNode:F,collisionRect:ye,collisions:be,droppableRects:te,draggableNodes:v,draggingNode:B,draggingNodeRect:oe,droppableContainers:b,over:Se,scrollableAncestors:ue,scrollAdjustedTranslate:ve},S.current={initial:oe,translated:ye}},[w,F,be,ye,v,B,oe,te,b,Se,ue,ve]),kk({...re,delta:y,draggingRect:ye,pointerCoordinates:me,scrollableAncestors:ue,scrollableAncestorRects:de});let Oe=(0,C.useMemo)(()=>({active:w,activeNode:F,activeNodeRect:I,activatorEvent:O,collisions:be,containerNodeRect:L,dragOverlay:z,draggableNodes:v,droppableContainers:b,droppableRects:te,over:Se,measureDroppableContainers:N,scrollableAncestors:ue,scrollableAncestorRects:de,measuringConfiguration:M,measuringScheduled:P,windowRect:le}),[w,F,I,O,be,L,z,v,b,te,Se,N,ue,de,M,P,le]),ke=(0,C.useMemo)(()=>({activatorEvent:O,activators:De,active:w,activeNodeRect:I,ariaDescribedById:{draggable:A},dispatch:d,draggableNodes:v,over:Se,measureDroppableContainers:N}),[O,De,w,I,d,A,v,Se,N]);return C.createElement(dO.Provider,{value:p},C.createElement(cA.Provider,{value:ke},C.createElement(lA.Provider,{value:Oe},C.createElement(gA.Provider,{value:we},i)),C.createElement(fA,{disabled:n?.restoreFocus===!1})),C.createElement(gO,{...n,hiddenTextDescribedById:A}));function Ae(){let e=E?.autoScrollEnabled===!1,t=typeof r==`object`?r.enabled===!1:r===!1,n=g&&!e&&!t;return typeof r==`object`?{...r,enabled:n}:{enabled:n}}}),yA=(0,C.createContext)(null),bA=`button`,xA=`Draggable`;function SA(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e,a=XD(xA),{activators:o,activatorEvent:s,active:c,activeNodeRect:l,ariaDescribedById:u,draggableNodes:d,over:f}=(0,C.useContext)(cA),{role:p=bA,roleDescription:m=`draggable`,tabIndex:h=0}=i??{},g=c?.id===t,_=(0,C.useContext)(g?gA:yA),[v,y]=qD(),[b,x]=qD(),S=Xk(o,t),w=GD(n);return HD(()=>(d.set(t,{id:t,key:a,node:v,activatorNode:b,data:w}),()=>{let e=d.get(t);e&&e.key===a&&d.delete(t)}),[d,t]),{active:c,activatorEvent:s,activeNodeRect:l,attributes:(0,C.useMemo)(()=>({role:p,tabIndex:h,"aria-disabled":r,"aria-pressed":g&&p===bA?!0:void 0,"aria-roledescription":m,"aria-describedby":u.draggable}),[r,p,h,g,m,u.draggable]),isDragging:g,listeners:r?void 0:S,node:v,over:f,setNodeRef:y,setActivatorNodeRef:x,transform:_}}function CA(){return(0,C.useContext)(lA)}var wA=`Droppable`,TA={timeout:25};function EA(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e,a=XD(wA),{active:o,dispatch:s,over:c,measureDroppableContainers:l}=(0,C.useContext)(cA),u=(0,C.useRef)({disabled:n}),d=(0,C.useRef)(!1),f=(0,C.useRef)(null),p=(0,C.useRef)(null),{disabled:m,updateMeasurementsFor:h,timeout:g}={...TA,...i},_=GD(h??r),v=Vk({callback:(0,C.useCallback)(()=>{if(!d.current){d.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{l(Array.isArray(_.current)?_.current:[_.current]),p.current=null},g)},[g]),disabled:m||!o}),[y,b]=qD((0,C.useCallback)((e,t)=>{v&&(t&&(v.unobserve(t),d.current=!1),e&&v.observe(e))},[v])),x=GD(t);return(0,C.useEffect)(()=>{v&&y.current&&(v.disconnect(),d.current=!1,v.observe(y.current))},[y,v]),(0,C.useEffect)(()=>(s({type:_O.RegisterDroppable,element:{id:r,key:a,disabled:n,node:y,rect:f,data:x}}),()=>s({type:_O.UnregisterDroppable,key:a,id:r})),[r]),(0,C.useEffect)(()=>{n!==u.current.disabled&&(s({type:_O.SetDroppableDisabled,id:r,key:a,disabled:n}),u.current.disabled=n)},[r,a,n,s]),{active:o,rect:f,isOver:c?.id===r,node:y,over:c,setNodeRef:b}}function DA(e){let{animation:t,children:n}=e,[r,i]=(0,C.useState)(null),[a,o]=(0,C.useState)(null),s=JD(n);return!n&&!r&&s&&i(s),HD(()=>{if(!a)return;let e=r?.key,n=r?.props.id;if(e==null||n==null){i(null);return}Promise.resolve(t(n,a)).then(()=>{i(null)})},[t,r,a]),C.createElement(C.Fragment,null,n,r?(0,C.cloneElement)(r,{ref:o}):null)}var OA={x:0,y:0,scaleX:1,scaleY:1};function kA(e){let{children:t}=e;return C.createElement(cA.Provider,{value:sA},C.createElement(gA.Provider,{value:OA},t))}var AA={position:`fixed`,touchAction:`none`},jA=e=>tO(e)?`transform 250ms ease`:void 0,MA=(0,C.forwardRef)((e,t)=>{let{as:n,activatorEvent:r,adjustScale:i,children:a,className:o,rect:s,style:c,transform:l,transition:u=jA}=e;if(!s)return null;let d=i?l:{...l,scaleX:1,scaleY:1},f={...AA,width:s.width,height:s.height,top:s.top,left:s.left,transform:iO.Transform.toString(d),transformOrigin:i&&r?CO(r,s):void 0,transition:typeof u==`function`?u(r):u,...c};return C.createElement(n,{className:o,style:f,ref:t},a)}),NA=e=>t=>{let{active:n,dragOverlay:r}=t,i={},{styles:a,className:o}=e;if(a!=null&&a.active)for(let[e,t]of Object.entries(a.active))t!==void 0&&(i[e]=n.node.style.getPropertyValue(e),n.node.style.setProperty(e,t));if(a!=null&&a.dragOverlay)for(let[e,t]of Object.entries(a.dragOverlay))t!==void 0&&r.node.style.setProperty(e,t);return o!=null&&o.active&&n.node.classList.add(o.active),o!=null&&o.dragOverlay&&r.node.classList.add(o.dragOverlay),function(){for(let[e,t]of Object.entries(i))n.node.style.setProperty(e,t);o!=null&&o.active&&n.node.classList.remove(o.active)}},PA={duration:250,easing:`ease`,keyframes:e=>{let{transform:{initial:t,final:n}}=e;return[{transform:iO.Transform.toString(t)},{transform:iO.Transform.toString(n)}]},sideEffects:NA({styles:{active:{opacity:`0`}}})};function FA(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:i}=e;return UD((e,a)=>{if(t===null)return;let o=n.get(e);if(!o)return;let s=o.node.current;if(!s)return;let c=eA(a);if(!c)return;let{transform:l}=LD(a).getComputedStyle(a),u=FO(l);if(!u)return;let d=typeof t==`function`?t:IA(t);return ik(s,i.draggable.measure),d({active:{id:e,data:o.data,node:s,rect:i.draggable.measure(s)},draggableNodes:n,dragOverlay:{node:a,rect:i.dragOverlay.measure(c)},droppableContainers:r,measuringConfiguration:i,transform:u})})}function IA(e){let{duration:t,easing:n,sideEffects:r,keyframes:i}={...PA,...e};return e=>{let{active:a,dragOverlay:o,transform:s,...c}=e;if(!t)return;let l={x:o.rect.left-a.rect.left,y:o.rect.top-a.rect.top},u={scaleX:s.scaleX===1?1:a.rect.width*s.scaleX/o.rect.width,scaleY:s.scaleY===1?1:a.rect.height*s.scaleY/o.rect.height},d={x:s.x-l.x,y:s.y-l.y,...u},f=i({...c,active:a,dragOverlay:o,transform:{initial:s,final:d}}),[p]=f,m=f[f.length-1];if(JSON.stringify(p)===JSON.stringify(m))return;let h=r?.({active:a,dragOverlay:o,...c}),g=o.node.animate(f,{duration:t,easing:n,fill:`forwards`});return new Promise(e=>{g.onfinish=()=>{h?.(),e()}})}}var LA=0;function RA(e){return(0,C.useMemo)(()=>{if(e!=null)return LA++,LA},[e])}var zA=C.memo(e=>{let{adjustScale:t=!1,children:n,dropAnimation:r,style:i,transition:a,modifiers:o,wrapperElement:s=`div`,className:c,zIndex:l=999}=e,{activatorEvent:u,active:d,activeNodeRect:f,containerNodeRect:p,draggableNodes:m,droppableContainers:h,dragOverlay:g,over:_,measuringConfiguration:v,scrollableAncestors:y,scrollableAncestorRects:b,windowRect:x}=CA(),S=(0,C.useContext)(gA),w=RA(d?.id),T=pA(o,{activatorEvent:u,active:d,activeNodeRect:f,containerNodeRect:p,draggingNodeRect:g.rect,over:_,overlayNodeRect:g.rect,scrollableAncestors:y,scrollableAncestorRects:b,transform:S,windowRect:x}),E=Rk(f),D=FA({config:r,draggableNodes:m,droppableContainers:h,measuringConfiguration:v}),O=E?g.setRef:void 0;return C.createElement(kA,null,C.createElement(DA,{animation:D},d&&w?C.createElement(MA,{key:w,id:d.id,ref:O,as:s,activatorEvent:u,adjustScale:t,className:c,transition:a,rect:E,style:{zIndex:l,...i},transform:T},n):null))});function BA(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function VA(e,t){return e.reduce((e,n,r)=>{let i=t.get(n);return i&&(e[r]=i),e},Array(e.length))}function HA(e){return e!==null&&e>=0}function UA(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function WA(e){return typeof e==`boolean`?{draggable:e,droppable:e}:e}var GA=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e,a=BA(t,r,n),o=t[i],s=a[i];return!s||!o?null:{x:s.left-o.left,y:s.top-o.top,scaleX:s.width/o.width,scaleY:s.height/o.height}},KA={scaleX:1,scaleY:1},qA=e=>{let{activeIndex:t,activeNodeRect:n,index:r,rects:i,overIndex:a}=e,o=i[t]??n;if(!o)return null;if(r===t){let e=i[a];return e?{x:0,y:t<a?e.top+e.height-(o.top+o.height):e.top-o.top,...KA}:null}let s=JA(i,r,t);return r>t&&r<=a?{x:0,y:-o.height-s,...KA}:r<t&&r>=a?{x:0,y:o.height+s,...KA}:{x:0,y:0,...KA}};function JA(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return r?n<t?i?r.top-(i.top+i.height):a?a.top-(r.top+r.height):0:a?a.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}var YA=`Sortable`,XA=C.createContext({activeIndex:-1,containerId:YA,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:GA,disabled:{draggable:!1,droppable:!1}});function ZA(e){let{children:t,id:n,items:r,strategy:i=GA,disabled:a=!1}=e,{active:o,dragOverlay:s,droppableRects:c,over:l,measureDroppableContainers:u}=CA(),d=XD(YA,n),f=s.rect!==null,p=(0,C.useMemo)(()=>r.map(e=>typeof e==`object`&&`id`in e?e.id:e),[r]),m=o!=null,h=o?p.indexOf(o.id):-1,g=l?p.indexOf(l.id):-1,_=(0,C.useRef)(p),v=!UA(p,_.current),y=g!==-1&&h===-1||v,b=WA(a);HD(()=>{v&&m&&u(p)},[v,p,m,u]),(0,C.useEffect)(()=>{_.current=p},[p]);let x=(0,C.useMemo)(()=>({activeIndex:h,containerId:d,disabled:b,disableTransforms:y,items:p,overIndex:g,useDragOverlay:f,sortedRects:VA(p,c),strategy:i}),[h,d,b.draggable,b.droppable,y,p,g,c,f,i]);return C.createElement(XA.Provider,{value:x},t)}var QA=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return BA(n,r,i).indexOf(t)},$A=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:i,items:a,newIndex:o,previousItems:s,previousContainerId:c,transition:l}=e;return!l||!r||s!==a&&i===o?!1:n?!0:o!==i&&t===c},ej={duration:200,easing:`ease`},tj=`transform`,nj=iO.Transition.toString({property:tj,duration:0,easing:`linear`}),rj={roleDescription:`sortable`};function ij(e){let{disabled:t,index:n,node:r,rect:i}=e,[a,o]=(0,C.useState)(null),s=(0,C.useRef)(n);return HD(()=>{if(!t&&n!==s.current&&r.current){let e=i.current;if(e){let t=RO(r.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&o(n)}}n!==s.current&&(s.current=n)},[t,n,r,i]),(0,C.useEffect)(()=>{a&&o(null)},[a]),a}function aj(e){let{animateLayoutChanges:t=$A,attributes:n,disabled:r,data:i,getNewIndex:a=QA,id:o,strategy:s,resizeObserverConfig:c,transition:l=ej}=e,{items:u,containerId:d,activeIndex:f,disabled:p,disableTransforms:m,sortedRects:h,overIndex:g,useDragOverlay:_,strategy:v}=(0,C.useContext)(XA),y=oj(r,p),b=u.indexOf(o),x=(0,C.useMemo)(()=>({sortable:{containerId:d,index:b,items:u},...i}),[d,i,b,u]),S=(0,C.useMemo)(()=>u.slice(u.indexOf(o)),[u,o]),{rect:w,node:T,isOver:E,setNodeRef:D}=EA({id:o,data:x,disabled:y.droppable,resizeObserverConfig:{updateMeasurementsFor:S,...c}}),{active:O,activatorEvent:ee,activeNodeRect:k,attributes:A,setNodeRef:j,listeners:M,isDragging:te,over:N,setActivatorNodeRef:P,transform:F}=SA({id:o,data:x,attributes:{...rj,...n},disabled:y.draggable}),ne=ND(D,j),re=!!O,ie=re&&!m&&HA(f)&&HA(g),I=!_&&te,L=ie?(I&&ie?F:null)??(s??v)({rects:h,activeNodeRect:k,activeIndex:f,overIndex:g,index:b}):null,R=HA(f)&&HA(g)?a({id:o,items:u,activeIndex:f,overIndex:g}):b,ae=O?.id,z=(0,C.useRef)({activeId:ae,items:u,newIndex:R,containerId:d}),B=u!==z.current.items,oe=t({active:O,containerId:d,isDragging:te,isSorting:re,id:o,index:b,items:u,newIndex:z.current.newIndex,previousItems:z.current.items,previousContainerId:z.current.containerId,transition:l,wasDragging:z.current.activeId!=null}),se=ij({disabled:!oe,index:b,node:T,rect:w});return(0,C.useEffect)(()=>{re&&z.current.newIndex!==R&&(z.current.newIndex=R),d!==z.current.containerId&&(z.current.containerId=d),u!==z.current.items&&(z.current.items=u)},[re,R,d,u]),(0,C.useEffect)(()=>{if(ae===z.current.activeId)return;if(ae!=null&&z.current.activeId==null){z.current.activeId=ae;return}let e=setTimeout(()=>{z.current.activeId=ae},50);return()=>clearTimeout(e)},[ae]),{active:O,activeIndex:f,attributes:A,data:x,rect:w,index:b,newIndex:R,items:u,isOver:E,isSorting:re,isDragging:te,listeners:M,node:T,overIndex:g,over:N,setNodeRef:ne,setActivatorNodeRef:P,setDroppableNodeRef:D,setDraggableNodeRef:j,transform:se??L,transition:ce()};function ce(){if(se||B&&z.current.newIndex===b)return nj;if(!(I&&!tO(ee)||!l)&&(re||oe))return iO.Transition.toString({...l,property:tj})}}function oj(e,t){return typeof e==`boolean`?{draggable:e,droppable:!1}:{draggable:e?.draggable??t.draggable,droppable:e?.droppable??t.droppable}}function sj(e){if(!e)return!1;let t=e.data.current;return!!(t&&`sortable`in t&&typeof t.sortable==`object`&&`containerId`in t.sortable&&`items`in t.sortable&&`index`in t.sortable)}var cj=[pk.Down,pk.Right,pk.Up,pk.Left],lj=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:i,droppableContainers:a,over:o,scrollableAncestors:s}}=t;if(cj.includes(e.code)){if(e.preventDefault(),!n||!r)return;let t=[];a.getEnabled().forEach(n=>{if(!n||n!=null&&n.disabled)return;let a=i.get(n.id);if(a)switch(e.code){case pk.Down:r.top<a.top&&t.push(n);break;case pk.Up:r.top>a.top&&t.push(n);break;case pk.Left:r.left>a.left&&t.push(n);break;case pk.Right:r.left<a.left&&t.push(n)}});let c=OO({active:n,collisionRect:r,droppableRects:i,droppableContainers:t,pointerCoordinates:null}),l=DO(c,`id`);if(l===o?.id&&c.length>1&&(l=c[1].id),l!=null){let e=a.get(n.id),t=a.get(l),o=t?i.get(t.id):null,c=t?.node.current;if(c&&o&&e&&t){let n=UO(c).some((e,t)=>s[t]!==e),i=uj(e,t),a=dj(e,t),l=n||!i?{x:0,y:0}:{x:a?r.width-o.width:0,y:a?r.height-o.height:0},u={x:o.left,y:o.top};return l.x&&l.y?u:$D(u,l)}}}};function uj(e,t){return!sj(e)||!sj(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function dj(e,t){return!sj(e)||!sj(t)||!uj(e,t)?!1:e.data.current.sortable.index<t.data.current.sortable.index}var fj=(0,C.createContext)({columns:{},setColumns:()=>{},getItemId:()=>``,columnIds:[],activeId:null,setActiveId:()=>{},findContainer:()=>void 0,isColumn:()=>!1,modifiers:void 0}),pj=(0,C.createContext)({attributes:{},listeners:void 0,isDragging:!1,disabled:!1}),mj=(0,C.createContext)({listeners:void 0,isDragging:!1,disabled:!1}),hj=(0,C.createContext)(!1),gj=e=>$A({...e,wasDragging:!0}),_j={sideEffects:NA({styles:{active:{opacity:`0.4`}}})},vj=()=>()=>{},yj=()=>!0,bj=()=>!1,xj={activationConstraint:{distance:10}},Sj={activationConstraint:{delay:250,tolerance:5}},Cj={coordinateGetter:lj},wj={droppable:{strategy:Pk.Always}};function Tj({value:e,onValueChange:t,getItemValue:n,children:r,className:i,asChild:a=!1,onMove:o,onValueCommit:s,restoreOnCancel:c=!1,onDragStart:l,onDragEnd:u,onDragCancel:d,accessibility:f,modifiers:p,...m}){let h=e,g=t,[_,v]=(0,C.useState)(null),y=(0,C.useRef)(e),b=(0,C.useRef)(n);(0,C.useLayoutEffect)(()=>{y.current=e,b.current=n});let x=(0,C.useRef)(null),S=bO(yO(wk,xj),yO(Ek,Sj),yO(gk,Cj)),w=(0,C.useMemo)(()=>Object.keys(h),[h,n]),T=(0,C.useCallback)(e=>w.includes(e),[w]),E=(0,C.useCallback)(e=>T(e)?e:w.find(t=>h[t].some(t=>n(t)===e)),[h,w,n,T]),D=(0,C.useCallback)((e,t,n)=>{if(!s)return;let r=x.current;if(!r)return;let i=t.active.id;if(n===`column`){let n=Object.keys(e).indexOf(i);if(n===-1||n===r.index)return;s(e,{kind:`column`,event:t,activeContainer:i,activeIndex:r.index,overContainer:String(t.over?.id??i),overIndex:n,previousValue:r.value});return}let a=b.current,o,c=-1;for(let t of Object.keys(e)){let n=e[t].findIndex(e=>a(e)===i);if(n!==-1){o=t,c=n;break}}o!==void 0&&(o!==r.container||c!==r.index)&&s(e,{kind:`item`,event:t,activeContainer:r.container??o,activeIndex:r.index,overContainer:o,overIndex:c,previousValue:r.value})},[s]),O=(0,C.useCallback)(e=>{if(v(e.active.id),l?.(e),s||c){let t=y.current,n=e.active.id,r=Object.keys(t);if(r.includes(n))x.current={value:t,container:n,index:r.indexOf(n)};else{let e=b.current,i,a=-1;for(let o of r){let r=t[o].findIndex(t=>e(t)===n);if(r!==-1){i=o,a=r;break}}x.current={value:t,container:i,index:a}}}},[l,s,c]),ee=(0,C.useCallback)(e=>{if(o)return;let{active:t,over:r}=e;if(!r||T(t.id))return;let i=E(t.id),a=E(r.id);if(i&&a){if(i!==a){let e=h[i],o=h[a],s=e.findIndex(e=>n(e)===t.id),c=o.findIndex(e=>n(e)===r.id);T(r.id)&&(c=o.length);let l=[...e],u=[...o],[d]=l.splice(s,1);u.splice(c,0,d),g({...h,[i]:l,[a]:u})}else{let e=i,a=h[e].findIndex(e=>n(e)===t.id),o=h[e].findIndex(e=>n(e)===r.id);a!==o&&g({...h,[e]:BA(h[e],a,o)})}}},[E,n,T,g,h,o]),k=(0,C.useCallback)(e=>{let t=x.current;c&&t&&!o?g(t.value):s&&t&&!o&&D(y.current,e,`item`),x.current=null,v(null),d?.(e)},[c,o,s,g,d,D]),A=(0,C.useCallback)(e=>{let{active:t,over:r}=e;if(v(null),u?.(e),!r){D(y.current,e,`item`),x.current=null;return}if(o&&!T(t.id)){let i=E(t.id),a=E(r.id);i&&a&&o({event:e,activeContainer:i,activeIndex:h[i].findIndex(e=>n(e)===t.id),overContainer:a,overIndex:T(r.id)?h[a].length:h[a].findIndex(e=>n(e)===r.id)}),x.current=null;return}if(T(t.id)&&T(r.id)){let n=w.indexOf(t.id),i=w.indexOf(r.id);if(n!==i){let t=BA(Object.keys(h),n,i),r={};t.forEach(e=>{r[e]=h[e]}),g(r),D(r,e,`column`)}x.current=null;return}if(T(t.id)){x.current=null;return}let i=E(t.id),a=E(r.id);if(i&&a&&i===a){let a=i,o=h[a].findIndex(e=>n(e)===t.id),s=h[a].findIndex(e=>n(e)===r.id);if(o!==s){let t={...h,[a]:BA(h[a],o,s)};g(t),D(t,e,`item`)}else D(h,e,`item`)}else D(h,e,`item`);x.current=null},[w,h,E,n,T,g,o,u,D]),j=(0,C.useMemo)(()=>({columns:h,setColumns:g,getItemId:n,columnIds:w,activeId:_,setActiveId:v,findContainer:E,isColumn:T,modifiers:p}),[h,g,n,w,_,E,T,p]),M=a?Ni:`div`;return(0,G.jsx)(fj.Provider,{value:j,children:(0,G.jsx)(vA,{sensors:S,modifiers:p,accessibility:f,measuring:wj,onDragStart:O,onDragOver:ee,onDragEnd:A,onDragCancel:k,children:(0,G.jsx)(M,{"data-slot":`kanban`,"data-dragging":_!==null,className:W(_!==null&&`cursor-grabbing!`,i),...m,children:r})})})}function Ej({className:e,asChild:t=!1,children:n,...r}){let{columnIds:i}=(0,C.useContext)(fj);return(0,G.jsx)(ZA,{items:i,strategy:GA,children:(0,G.jsx)(t?Ni:`div`,{"data-slot":`kanban-board`,className:W(`grid auto-rows-fr gap-4`,e),...r,children:n})})}function Dj({value:e,className:t,asChild:n=!1,disabled:r,children:i,...a}){let o=(0,C.useContext)(hj),{setNodeRef:s,transform:c,transition:l,attributes:u,listeners:d,isDragging:f}=aj({id:e,disabled:r||o,animateLayoutChanges:gj}),{activeId:p,isColumn:m}=(0,C.useContext)(fj),h=p?m(p):!1,g={transition:l,transform:iO.Transform.toString(c)},_=n?Ni:`div`;return o?(0,G.jsx)(pj.Provider,{value:{attributes:{},listeners:void 0,isDragging:!0,disabled:!1},children:(0,G.jsx)(_,{"data-slot":`kanban-column`,"data-value":e,"data-dragging":!0,className:W(`group/kanban-column flex flex-col`,t),...a,children:i})}):(0,G.jsx)(pj.Provider,{value:{attributes:u,listeners:d,isDragging:h,disabled:r},children:(0,G.jsx)(_,{"data-slot":`kanban-column`,"data-value":e,"data-dragging":f,"data-disabled":r,ref:s,style:g,className:W(`group/kanban-column flex flex-col`,f&&`z-50 opacity-50`,r&&`opacity-50`,t),...a,children:i})})}function Oj({className:e,asChild:t=!1,cursor:n=!0,children:r,...i}){let{attributes:a,listeners:o,isDragging:s,disabled:c}=(0,C.useContext)(pj);return(0,G.jsx)(t?Ni:`div`,{"data-slot":`kanban-column-handle`,"data-dragging":s,"data-disabled":c,...a,...o,className:W(`opacity-0 transition-opacity group-hover/kanban-column:opacity-100`,n&&(s?`cursor-grabbing!`:`cursor-grab!`),e),...i,children:r})}function kj({value:e,className:t,asChild:n=!1,disabled:r,children:i,...a}){let o=(0,C.useContext)(hj),{setNodeRef:s,transform:c,transition:l,attributes:u,listeners:d,isDragging:f}=aj({id:e,disabled:r||o,animateLayoutChanges:gj}),{activeId:p,isColumn:m}=(0,C.useContext)(fj),h=p?!m(p):!1,g={transition:l,transform:iO.Transform.toString(c)},_=n?Ni:`div`;return o?(0,G.jsx)(mj.Provider,{value:{listeners:void 0,isDragging:!0,disabled:!1},children:(0,G.jsx)(_,{"data-slot":`kanban-item`,"data-value":e,"data-dragging":!0,className:W(t),...a,children:i})}):(0,G.jsx)(mj.Provider,{value:{listeners:d,isDragging:h,disabled:r},children:(0,G.jsx)(_,{"data-slot":`kanban-item`,"data-value":e,"data-dragging":f,"data-disabled":r,ref:s,style:g,...u,className:W(`outline-none focus-visible:ring-2 focus-visible:ring-ring/50`,f&&`z-50 opacity-50`,r&&`opacity-50`,t),...a,children:i})})}function Aj({className:e,asChild:t=!1,cursor:n=!0,children:r,...i}){let{listeners:a,isDragging:o,disabled:s}=(0,C.useContext)(mj);return(0,G.jsx)(t?Ni:`div`,{"data-slot":`kanban-item-handle`,"data-dragging":o,"data-disabled":s,...a,className:W(n&&(o?`cursor-grabbing!`:`cursor-grab!`),e),...i,children:r})}function jj({value:e,className:t,asChild:n=!1,children:r,...i}){let{columns:a,getItemId:o}=(0,C.useContext)(fj),s=(0,C.useMemo)(()=>{let t=a[e];if(!t)throw Error(`KanbanColumnContent: column "${e}" was not found in the Kanban value. Available columns: ${Object.keys(a).join(`, `)||`(none)`}.`);return t.map(o)},[a,o,e]);return(0,G.jsx)(ZA,{items:s,strategy:qA,children:(0,G.jsx)(n?Ni:`div`,{"data-slot":`kanban-column-content`,className:W(`flex flex-col gap-2`,t),...i,children:r})})}function Mj({children:e,className:t,...n}){let{activeId:r,isColumn:i,modifiers:a}=(0,C.useContext)(fj),o=(0,C.useSyncExternalStore)(vj,yj,bj),s=r&&i(r)?`column`:`item`,c=r&&e?typeof e==`function`?e({value:r,variant:s}):e:null;return o?(0,pe.createPortal)((0,G.jsx)(zA,{dropAnimation:_j,modifiers:a,className:W(`z-50`,r&&`cursor-grabbing`,t),...n,children:(0,G.jsx)(hj.Provider,{value:!0,children:c})}),document.body):null}function Nj({className:e,...t}){return(0,G.jsx)(`div`,{"data-slot":`input-group`,role:`group`,className:W(`group/input-group border-input dark:bg-input/30 relative flex h-9 w-full min-w-0 items-center rounded-md border shadow-xs outline-none`,`has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]`,e),...t})}var Pj=yi(`text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm select-none [&>svg:not([class*='size-'])]:size-4`,{variants:{align:{"inline-start":`order-first pl-3`,"inline-end":`order-last pr-3`}},defaultVariants:{align:`inline-start`}});function Fj({className:e,align:t=`inline-start`,...n}){return(0,G.jsx)(`div`,{"data-slot":`input-group-addon`,className:W(Pj({align:t}),e),onClick:e=>{e.target.closest(`button`)||e.currentTarget.parentElement?.querySelector(`input`)?.focus()},...n})}function Ij({className:e,...t}){return(0,G.jsx)(SE,{"data-slot":`input-group-control`,className:W(`flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent`,e),...t})}var Lj=`collapsed-columns`,Rj=`collapsed-epic-statuses`,zj=`collapsed-favourite-folders`,Bj=`board-chrome`,Vj=`board-opener`,Hj=`favourite-epics`,Uj=`board-presets`,Wj=`board-sidebar-open`,Gj=`board-column-order`,Kj=[`In Progress`,`Completed`,`Cancelled`,`Canceled`],qj=[`created`,`targetEnd`,`priority`,`labels`,`assignee`,`dueDate`],Jj={filter:{},sort:`payload`,hide:[],shown:[...qj]},Yj={keys:[],folders:[],projects:void 0};function Xj(e=Lj,t=[]){try{let n=localStorage.getItem(e);if(n===null)return new Set(t);let r=JSON.parse(n);return new Set(Array.isArray(r)?r.filter(e=>typeof e==`string`):t)}catch{return new Set(t)}}function Zj(e,t=Lj){localStorage.setItem(t,JSON.stringify([...e]))}function Qj(e,t){let n=t.toLowerCase();return[...e].some(e=>e.toLowerCase()===n)}function $j(e){if(!e||typeof e!=`object`)return{};let t={};for(let[n,r]of Object.entries(e))n!==`priorities`&&n!==`assignees`&&Array.isArray(r)&&(t[n]=r.filter(e=>typeof e==`string`));return Array.isArray(e.priorities)&&!t.priority&&(t.priority=e.priorities.filter(e=>typeof e==`string`)),Array.isArray(e.assignees)&&!t.assignee&&(t.assignee=e.assignees.filter(e=>typeof e==`string`)),t}function eM(){try{let e=localStorage.getItem(Bj);if(e===null)return Jj;let t=JSON.parse(e),n=Array.isArray(t.shown)?t.shown.filter(e=>qj.includes(e)):[...qj];return{filter:$j(t.filter),sort:t.sort===`priority`||t.sort===`age`||t.sort===`due`||t.sort===`key`?t.sort:`payload`,hide:Array.isArray(t.hide)?t.hide.filter(e=>typeof e==`string`):[],shown:n.length?n:[...qj]}}catch{return Jj}}function tM(e){localStorage.setItem(Bj,JSON.stringify(e))}function nM(){try{let e=localStorage.getItem(Hj);if(e===null)return Yj;let t=JSON.parse(e);if(Array.isArray(t)&&t.every(e=>typeof e==`string`))return{keys:t,folders:[]};if(t&&typeof t==`object`){let e=t;return{keys:Array.isArray(e.keys)?e.keys.filter(e=>typeof e==`string`):[],folders:Array.isArray(e.folders)?e.folders.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return typeof t.name!=`string`||!t.name.trim()?[]:[{name:t.name,keys:Array.isArray(t.keys)?t.keys.filter(e=>typeof e==`string`):[]}]}):[],projects:Array.isArray(e.projects)?e.projects.filter(e=>typeof e==`string`):void 0}}return Yj}catch{return Yj}}function rM(e){localStorage.setItem(Hj,JSON.stringify(e))}function iM(){try{let e=localStorage.getItem(Uj);if(e===null)return[];let t=JSON.parse(e);return Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return typeof t.name!=`string`||!t.name.trim()?[]:[{name:t.name,filter:$j(t.filter),sort:t.sort===`priority`||t.sort===`age`||t.sort===`due`||t.sort===`key`?t.sort:`payload`,hide:Array.isArray(t.hide)?t.hide.filter(e=>typeof e==`string`):[]}]}):[]}catch{return[]}}function aM(e){localStorage.setItem(Uj,JSON.stringify(e))}function oM(e,t){let n=(e??[]).slice().sort(),r=(t??[]).slice().sort();return n.length===r.length&&n.every((e,t)=>e===r[t])}function sM(e,t){return!t.length||oM(e.projects,t)?e:{keys:[],folders:[],projects:t}}function cM(e,t){return t.length?e.filter(e=>oM(e.projects,t)):e}function lM(){try{let e=localStorage.getItem(Vj);return e===`epics`||e===`combined`?e:`stories`}catch{return`stories`}}function uM(e){localStorage.setItem(Vj,e)}function dM(){try{let e=localStorage.getItem(Wj);return e===null||e===`true`}catch{return!0}}function fM(e){localStorage.setItem(Wj,e?`true`:`false`)}function pM(){try{let e=localStorage.getItem(Gj);if(e===null)return{};let t=JSON.parse(e);return!t||typeof t!=`object`?{}:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,Array.isArray(t)?t.filter(e=>typeof e==`string`):[]]))}catch{return{}}}function mM(e){localStorage.setItem(Gj,JSON.stringify(e))}function hM(e,t){let n=[{label:`Key`,value:e.key},{label:`Summary`,value:e.summary}];return t&&n.push({label:`Jira URL`,value:t}),e.priority&&n.push({label:`Priority`,value:e.priority}),e.assignee&&n.push({label:`Assignee`,value:e.assignee}),e.dueDate&&n.push({label:`Due date`,value:e.dueDate}),e.targetEnd&&n.push({label:`Target end`,value:e.targetEnd}),e.labels?.length&&n.push({label:`Labels`,value:e.labels.join(`, `),pills:e.labels}),n}async function gM(e,t){return(await fetch(e,{headers:{"content-type":`application/json`},...t})).json()}function _M(e){return Object.fromEntries(e.map(e=>[e.title,e.cards]))}function vM(){return typeof document>`u`?`light`:document.documentElement.classList.contains(`dark`)?`dark`:`light`}function yM(e){document.documentElement.classList.toggle(`dark`,e===`dark`),localStorage.setItem(`theme`,e)}var bM={done:`green`,complete:`green`,completed:`green`,closed:`green`,resolved:`green`,progress:`yellow`,review:`yellow`,doing:`yellow`,cancelled:`gray`,canceled:`gray`};function xM(e){if(!e)return`var(--primary)`;let t=e.toLowerCase(),n=Object.keys(bM).find(e=>t.includes(e));return`var(--kanban-board-circle-${n?bM[n]:`gray`})`}function SM(e){let t=(e??``).toLowerCase();return t===`high`||t===`highest`||t===`critical`?`text-red-500`:t===`medium`?`text-orange-400`:`text-yellow-500`}function CM(e,t){return e.includes(t)?e.filter(e=>e!==t):[...e,t]}function wM(e,t){return e.includes(t)?e.filter(e=>e!==t):[...e,t]}function TM(e){let t=[];for(let n of e){let e=t.at(-1);n.group&&e?.group===n.group?e.facets.push(n):t.push({group:n.group,facets:[n]})}return t}function EM({facet:e,selected:t,onToggle:n}){return(0,G.jsxs)(G.Fragment,{children:[e.label===e.group?null:(0,G.jsx)(jp,{children:e.label}),e.values.map(e=>(0,G.jsx)(Np,{checked:t.includes(e),onCheckedChange:()=>n(e),children:e},e))]})}function DM({facets:e,filter:t,onToggle:n,onClear:r}){let[i,a]=(0,C.useState)({});return(0,G.jsxs)(Ap,{align:`end`,className:`w-56 max-h-[min(70vh,28rem)]`,children:[TM(e).map((e,r)=>{let o=e.facets.map(e=>(0,G.jsx)(EM,{facet:e,selected:t[e.key]??[],onToggle:t=>n(e.key,t)},e.key));return(0,G.jsxs)(C.Fragment,{children:[r>0?(0,G.jsx)(Ip,{}):null,e.group?(0,G.jsxs)(pg,{open:i[e.group]!==!1,onOpenChange:t=>a(n=>({...n,[e.group]:t})),className:`flex flex-col`,children:[(0,G.jsx)(mg,{asChild:!0,children:(0,G.jsxs)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground flex w-full items-center gap-1.5 px-2 py-1.5 text-left text-[11px] font-medium`,onPointerDown:e=>e.preventDefault(),children:[(0,G.jsx)(j,{className:W(`size-3.5 shrink-0 transition-transform`,i[e.group]===!1&&`-rotate-90`)}),e.group]})}),(0,G.jsx)(hg,{className:`flex flex-col`,children:o})]}):o]},e.group??e.facets[0]?.key)}),e.length?(0,G.jsx)(Ip,{}):null,(0,G.jsx)(Mp,{onClick:r,children:`Clear Filter, Sort, and Hide`})]})}function OM({card:e,asHandle:t,isOverlay:n,disabled:r,selected:i,onClick:a,onDoubleClick:o,variant:s=`story`,shown:c}){let l=s===`epic`||(e.type??``).toLowerCase()===`epic`,u=e=>c?.has(e)??!0,d=u(`created`)?qe(e.created):void 0,f=u(`targetEnd`)?Je(e.targetEnd):void 0,p=f?(()=>{let t=/^(\d{4})-(\d{2})-(\d{2})/.exec(e.targetEnd??``),n=t?Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3])):Date.parse(e.targetEnd??``);return!Number.isNaN(n)&&n<Date.now()})():!1,m=f?(()=>{let t=/^(\d{4})-(\d{2})-(\d{2})/.exec(e.targetEnd??``),n=t?Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3])):Date.parse(e.targetEnd??``);if(Number.isNaN(n)||n<Date.now())return!1;let r=new Date,i=Date.UTC(r.getUTCFullYear(),r.getUTCMonth(),r.getUTCDate());return Math.round((n-i)/864e5)<=3})():!1,h=u(`priority`)&&e.priority||u(`labels`)&&e.labels?.length||u(`assignee`)&&e.assignee||u(`dueDate`)&&e.dueDate||f,g=(0,G.jsxs)(`div`,{className:W(`bg-card hover:bg-foreground/5 rounded-[9px] border px-3 pt-2 pb-3`,i&&`ring-primary ring-2`,l&&`bg-muted/40 border-l-4 border-l-primary`),children:[(0,G.jsxs)(`div`,{className:`flex h-[22px] items-center justify-between gap-2`,children:[(0,G.jsxs)(`span`,{className:`flex min-w-0 items-baseline gap-1.5`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground text-[12px] font-medium tabular-nums`,children:e.key}),(e.type??``).toLowerCase()===`epic`?(0,G.jsx)(`span`,{className:`text-muted-foreground/60 text-[11px] font-normal`,children:`Epic`}):null]}),d?(0,G.jsx)(`span`,{className:`text-muted-foreground text-[11px] tabular-nums`,children:d}):null]}),(0,G.jsx)(`p`,{className:`mt-0.5 truncate text-[13px] leading-[18px]`,children:e.summary}),h?(0,G.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center gap-2 pt-2`,children:[u(`priority`)&&e.priority?(0,G.jsx)(`span`,{className:W(`inline-flex h-6 shrink-0 items-center rounded-full border px-2 text-[12px] font-medium capitalize`,SM(e.priority)),children:e.priority}):null,u(`labels`)?e.labels?.map(e=>Xe(e)?(0,G.jsx)(xi,{variant:`warning-light`,className:`h-6 rounded-full px-2 text-[12px]`,children:e},e):(0,G.jsx)(`span`,{className:`text-muted-foreground inline-flex h-6 shrink-0 items-center rounded-full border px-2 text-[12px]`,children:e},e)):null,(0,G.jsx)(`span`,{className:`flex-1`}),f?(0,G.jsx)(`span`,{className:W(`shrink-0 text-[11px] tabular-nums`,p&&`text-destructive font-medium`,m&&!p&&`text-amber-500 dark:text-amber-400`,!p&&!m&&`text-muted-foreground`),title:e.targetEnd,children:f}):null,u(`dueDate`)&&e.dueDate?(0,G.jsx)(`time`,{className:`text-muted-foreground shrink-0 text-[11px] tabular-nums`,children:e.dueDate}):null,u(`assignee`)&&e.assignee?(0,G.jsx)(`span`,{className:`text-muted-foreground shrink-0 text-[12px]`,children:e.assignee}):null]}):null]});return(0,G.jsx)(kj,{value:e.key,disabled:r,children:t&&!n?(0,G.jsx)(Aj,{onClick:a,onDoubleClick:o,children:g}):g})}function kM({title:e,cards:t,isOverlay:n,disabled:r,selected:i,onClick:a,onDoubleClick:o,onCreate:s,onHide:c,shown:l}){let[u,d]=(0,C.useState)(()=>n||!Xj().has(e));function f(t){if(d(t),n)return;let r=Xj();t?r.delete(e):r.add(e),Zj(r)}return(0,G.jsx)(Dj,{value:e,className:`group h-full min-h-0`,children:(0,G.jsx)(pg,{open:u,onOpenChange:f,className:W(`flex h-full min-h-0 flex-col`,!u&&`h-auto`),children:(0,G.jsxs)(`div`,{className:W(`flex flex-col`,u?`h-full min-h-0`:`h-auto`),children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2 px-3 pt-[13px] pb-5`,children:[(0,G.jsx)(mg,{asChild:!0,children:(0,G.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 items-center gap-2 text-left`,children:[(0,G.jsx)(`span`,{className:`size-3.5 shrink-0 rounded-full`,style:{backgroundColor:xM(e)}}),(0,G.jsx)(`span`,{className:`truncate text-[13px] font-medium`,children:e}),(0,G.jsx)(`span`,{className:`text-muted-foreground text-[12px] tabular-nums`,children:t.length}),(0,G.jsx)(j,{className:W(`text-muted-foreground size-3.5 shrink-0 transition-transform`,!u&&`-rotate-90`)})]})}),s?(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":`Create issue in ${e}`,title:`Create issue`,onPointerDown:e=>e.stopPropagation(),onClick:()=>s(e),children:(0,G.jsx)(ae,{})}):null,c?(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":`Hide ${e}`,onClick:c,children:(0,G.jsx)(ne,{})}):null,(0,G.jsx)(Oj,{className:`opacity-0 transition-opacity group-hover:opacity-60`,children:(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,tabIndex:-1,type:`button`,children:(0,G.jsx)(ie,{})})})]}),(0,G.jsx)(hg,{className:`min-h-0 flex-1 overflow-hidden`,children:(0,G.jsxs)(jj,{value:e,className:`flex h-full flex-col gap-2 overflow-auto px-2 pb-2`,children:[t.map(e=>(0,G.jsx)(OM,{card:e,asHandle:!n,isOverlay:n,disabled:r,selected:i?.has(e.key),variant:(e.type??``).toLowerCase()===`epic`?`epic`:`story`,shown:l,onClick:t=>a?.(e.key,t),onDoubleClick:t=>o?.(e.key,t)},e.key)),s?(0,G.jsxs)(`button`,{type:`button`,className:`text-muted-foreground hover:bg-foreground/5 hover:text-foreground flex min-h-8 w-full shrink-0 items-center gap-1.5 rounded-md px-2 text-[12px]`,"aria-label":`Create issue in ${e}`,onPointerDown:e=>e.stopPropagation(),onClick:()=>s(e),children:[(0,G.jsx)(ae,{className:`size-3.5`}),`Create`]}):null]})})]})})})}function AM(e,t){return[...new Set(e.map(e=>e.status?.trim()).filter(e=>!!e))].filter(e=>e!==t)}function jM({epic:e,selected:t,count:n,favourited:r,folders:i,moveTo:a,onSelect:o,onToggleFavourite:s,onFile:c,onMove:l,onOpen:u}){let d=a??[],f=!!(c&&r),p=!!u||f||d.length>0;return(0,G.jsxs)(`div`,{className:W(`flex h-14 w-full items-center gap-1 rounded-lg pr-1`,t?`bg-sidebar-accent text-sidebar-accent-foreground`:`hover:bg-foreground/5`),children:[(0,G.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 items-center gap-3 px-3 text-left`,onClick:()=>void o(e.key),children:[(0,G.jsx)(`span`,{className:`size-2 shrink-0 rounded-full`,style:{backgroundColor:xM(e.status)}}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px] leading-[18px]`,children:e.summary}),(0,G.jsx)(`span`,{className:`text-muted-foreground text-[11px] font-medium tabular-nums`,children:e.key}),(0,G.jsx)(`span`,{className:`text-muted-foreground text-[11px] tabular-nums`,children:n})]}),p?(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":f?`File ${e.key}`:d.length?`Move ${e.key}`:`Open ${e.key}`,children:(0,G.jsx)(F,{})})}),(0,G.jsxs)(Ap,{align:`end`,children:[u?(0,G.jsx)(Mp,{onClick:()=>u(e.key),children:`Open`}):null,f?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Mp,{onClick:()=>c?.(e.key,null),children:`Unfiled`}),i?.map(t=>(0,G.jsx)(Mp,{onClick:()=>c?.(e.key,t),children:t},t))]}):null,f&&d.length?(0,G.jsxs)(Lp,{children:[(0,G.jsx)(Rp,{children:`Move`}),(0,G.jsx)(zp,{children:d.map(t=>(0,G.jsx)(Mp,{onClick:()=>l?.(e.key,t),children:t},t))})]}):null,f?null:d.map(t=>(0,G.jsx)(Mp,{onClick:()=>l?.(e.key,t),children:t},t))]})]}):null,(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":r?`Unfavourite ${e.key}`:`Favourite ${e.key}`,onClick:t=>{t.stopPropagation(),s(e.key)},children:(0,G.jsx)(ce,{className:W(r&&`fill-current`)})})]})}function MM({status:e,epics:t,selectedEpic:n,childCount:r,favourites:i,listedEpics:a,onSelect:o,onToggleFavourite:s,onMove:c,onOpen:l}){let[u,d]=(0,C.useState)(()=>!Qj(Xj(Rj,Kj),e));function f(t){d(t);let n=Xj(Rj,Kj);if(t)for(let t of[...n])t.toLowerCase()===e.toLowerCase()&&n.delete(t);else n.add(e);Zj(n,Rj)}return(0,G.jsxs)(pg,{open:u,onOpenChange:f,className:`flex flex-col`,children:[(0,G.jsx)(mg,{asChild:!0,children:(0,G.jsxs)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground flex h-7 items-center gap-1.5 px-3 text-left`,children:[(0,G.jsx)(j,{className:W(`size-3.5 shrink-0 transition-transform`,!u&&`-rotate-90`)}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[12px] font-medium`,children:e}),(0,G.jsx)(`span`,{className:`text-[11px] tabular-nums`,children:t.length})]})}),(0,G.jsx)(hg,{className:`flex flex-col gap-0.5`,children:t.map(e=>(0,G.jsx)(jM,{epic:e,selected:n===e.key,count:r(e.key),favourited:i.keys.includes(e.key),onSelect:o,onToggleFavourite:s,moveTo:AM(a,e.status),onMove:c,onOpen:l},e.key))})]})}function NM({fields:e}){return(0,G.jsx)(`dl`,{className:`flex flex-col gap-3 p-4 text-[13px]`,children:e.map(e=>(0,G.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,G.jsx)(`dt`,{className:`text-muted-foreground text-[11px] font-medium`,children:e.label}),(0,G.jsx)(`dd`,{className:`whitespace-pre-wrap`,children:e.label===`Jira URL`?(0,G.jsx)(`a`,{className:`text-foreground font-medium underline-offset-4 hover:underline`,href:e.value,target:`_blank`,rel:`noreferrer`,children:e.value}):e.pills?.length?(0,G.jsx)(`span`,{className:`flex flex-wrap gap-1`,children:e.pills.map(e=>(0,G.jsx)(`span`,{className:`text-muted-foreground inline-flex h-6 items-center rounded-full border px-2 text-[12px]`,children:e},e))}):e.value})]},e.label))})}function PM(){let[e,t]=(0,C.useState)({}),[n,r]=(0,C.useState)([]),[i,a]=(0,C.useState)(null),[o,s]=(0,C.useState)(!1),[c,l]=(0,C.useState)(null),[u,d]=(0,C.useState)(null),[f,p]=(0,C.useState)(!1),[m,h]=(0,C.useState)(``),[g,_]=(0,C.useState)(null),[v,y]=(0,C.useState)(null),[b,x]=(0,C.useState)(null),[S,w]=(0,C.useState)([]),[T,E]=(0,C.useState)(``),[D,ee]=(0,C.useState)(``),[A,j]=(0,C.useState)(``),[P,F]=(0,C.useState)(``),[ne,ie]=(0,C.useState)(!1),[L,ae]=(0,C.useState)(vM),[B,oe]=(0,C.useState)(eM),se=(0,C.useMemo)(()=>nt(D).projects,[D]),[ce,ue]=(0,C.useState)(()=>sM(nM(),se)),[fe,pe]=(0,C.useState)(()=>cM(iM(),se)),[me,he]=(0,C.useState)(``),[ge,_e]=(0,C.useState)(``),[ve,ye]=(0,C.useState)(``),[be,xe]=(0,C.useState)(``),[Se,Ce]=(0,C.useState)(lM),[we,Te]=(0,C.useState)(Dn),[Ee,De]=(0,C.useState)(()=>dM()),Oe=Gh(),ke=(0,C.useRef)(null),[je,Me]=(0,C.useState)(null),[Ne,Pe]=(0,C.useState)(!1),[Fe,Ie]=(0,C.useState)(!1),[Le,Re]=(0,C.useState)(void 0),ze=(0,C.useRef)(!1),Be=(0,C.useRef)(null),Ve=wn(t,r),[He,Ue]=(0,C.useState)(new Set),We={...B,epics:n},Ge=(0,C.useMemo)(()=>new Set(B.shown),[B.shown]),Ke=Se===`epics`,qe=(0,C.useMemo)(()=>Se===`combined`?wt(e,n,A,We):Tt(Ke?e:Ct(e,je?.children,A),Ke?null:g,A,We),[e,g,A,B,n,Ke,je,Se]),Je=(0,C.useMemo)(()=>Object.values(e).flat(),[e]),Ye=i??Je,Xe=(0,C.useMemo)(()=>{let e=new Map;for(let t of je?.columns.flatMap(e=>e.cards)??[])e.set(t.key,t);for(let t of Ye)e.has(t.key)||e.set(t.key,t);return[...e.values()]},[je,Ye]),et=(0,C.useMemo)(()=>jt(n,Ye,A,B.filter),[n,Ye,A,B.filter]),tt=(0,C.useMemo)(()=>Mt(et),[et]),rt=(0,C.useMemo)(()=>zt(n,ce,A,Ye,B.filter),[n,ce,A,Ye,B.filter]),it=Object.keys(qe),at=`${Se}:${[...se].sort().join(`,`)}`,st=v?[`cards`,`open`]:[`cards`],ct=zh({id:`shell`,panelIds:[`epics`,`board`],onlySaveAfterUserInteractions:!0}),lt=zh({id:`board-open`,panelIds:st,onlySaveAfterUserInteractions:!0}),ut=zh({id:`columns`,panelIds:it,onlySaveAfterUserInteractions:!0}),dt=b?Tn(b,window.location.origin):null,ft=gt(Je,n),pt=Object.keys(e),mt=(0,C.useMemo)(()=>nn([...Je,...n,...Xe]),[Je,n,Xe]),ht=rt.unfiled.length>0||rt.folders.length>0;function _t(e){oe(e),tM(e)}function vt(e){let t=se.length?{...e,projects:se}:e;ue(t),rM(t)}function yt(e){pe(e),aM(e)}function bt(){Ue(new Set)}function xt(e,n){ke.current=e,Me(e);let i=e.epics??[];r(i);let o=pM()[`${n}:${[...se].sort().join(`,`)}`];t(Pt(_M(n===`epics`?Ze(i):e.columns),o)),a(e.children?Object.values(e.children).flat():null),F(e.error??``)}function St(e){bt(),ke.current=e,Me(e);let n=e.epics??[];r(n);let i=pM()[at];t(Pt(_M(Se===`epics`?Ze(n):e.columns),i)),a(e.children?Object.values(e.children).flat():null),_(t=>t&&(e.epics??[]).some(e=>e.key===t)?t:null),F(e.error??``)}async function Et(){let e=await gM(`/api/board`);St(e),e.flags&&ee(e.flags)}(0,C.useEffect)(()=>{Et()},[]),(0,C.useEffect)(()=>{Ee||Oe.current?.collapse()},[]),(0,C.useEffect)(()=>{let e=pM()[at];e?.length&&t(t=>Pt(t,e))},[at]),(0,C.useEffect)(()=>{function e(e){if((e.metaKey||e.ctrlKey)&&!e.altKey&&!e.shiftKey&&e.key.toLowerCase()===`k`){if(e.preventDefault(),ze.current){ze.current=!1,Pe(!1),Be.current?.focus();return}Be.current=document.activeElement instanceof HTMLElement?document.activeElement:null,ze.current=!0,Pe(!0);return}e.key===`Escape`&&ze.current&&(e.preventDefault(),ze.current=!1,Pe(!1),Be.current?.focus())}return window.addEventListener(`keydown`,e,!0),()=>window.removeEventListener(`keydown`,e,!0)},[]);function Dt(e){Re(e),Ie(!0)}async function Ot(e){let t=Qe(e,g,Le??D);t&&(Ie(!1),Re(void 0),await kt(t))}async function kt(e){ie(!0),F(``),console.info(`[pipe-kan] Refresh`,e);let t=Ae.loading(`Refreshing…`,{description:e.scope===`selected`?`Listing the focused Epic's works`:`Listing Issues and Epics`});try{let n=await gM(`/api/refresh`,{method:`POST`,body:JSON.stringify(e)});St(n),e.scope===`all`&&ee(e.flags),n.error?(console.info(`[pipe-kan] Refresh error`,n.error),Ae.error(`Refresh failed`,{id:t,description:n.error})):(console.info(`[pipe-kan] Refreshed`,n.epics.length,`epics`),Ae.success(`Refreshed`,{id:t,description:e.scope===`selected`?e.epicKeys?.join(`, `):`${n.epics.length} epics`}))}catch(e){let n=e instanceof Error?e.message:`Refresh failed`;console.info(`[pipe-kan] Refresh failed`,n),F(n),Ae.error(`Refresh failed`,{id:t,description:n})}finally{ie(!1)}}function Nt(t){for(let[n,r]of Object.entries(e))if(r.some(e=>e.key===t))return n;return``}function Rt(e,i,a){F(``);let o=n.find(t=>t.key===e);if(o){let n=a??o.status??`To Do`;r(n=>{let r=n.findIndex(t=>t.key===e);if(r===-1)return n;let a=[...n];return a[r]={...a[r],status:i},Se===`epics`&&t(Pt(_M(Ze(a)),pM()[at])),a}),Ve.move({key:e,target:i,source:n,kind:`epic`});return}let s=a??Nt(e);Ve.move({key:e,target:i,source:s,kind:`card`})}function Gt(e,t){if(t.ctrlKey||t.metaKey){t.preventDefault(),t.stopPropagation(),Ue(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n});return}bt(),on(e)}function Kt(e,t){t.preventDefault(),t.stopPropagation(),bt(),rn(e)}function Qt(e){return{...e?{status:e}:{},selectedEpic:g,boardKind:Se}}function $t(e){h(``),p(!1),d(dn(Qt(e)))}function en(e){l(Sn(e)),s(!0)}function tn(e){let{draft:t,seed:n}=fn(Qt(e));h(``),p(!1),d(t),l(n),s(!0)}async function rn(e){let t=Je.find(t=>t.key===e)??Xe.find(t=>t.key===e),r=n.find(t=>t.key===e),i=Nt(e)||r?.status;h(``),p(!1),d(pn({key:e,summary:t?.summary??r?.summary??``,labels:t?.labels??r?.labels??[],...i?{status:i}:{},...t?.epic?{epic:t.epic}:{},...t?.type||r?{type:t?.type??`Epic`}:{},...v===e&&S.length?{fields:S}:{}}));try{let t=await gM(`/api/open`,{method:`POST`,body:JSON.stringify({key:e})});if(t.error||!t.fields?.length)return;d(n=>n?.mode===`edit`&&n.key===e?xn(n,t.fields):n)}catch{}}async function an(){if(u&&mn(u,f)){p(!0),h(``);try{if(u.mode===`create`){let e=hn(u);if(!e)return;let t=await gM(`/api/issue/create`,{method:`POST`,body:JSON.stringify(e)});if(!t.ok){let e=t.error??`Create failed`;h(e),Ae.error(`Create failed`,{description:e});return}t.board&&St(t.board),Ae.success(`Created`,{description:t.key??u.title.trim()}),d(null);return}let e=gn(u);if(!e)return;let t=await gM(`/api/issue/edit`,{method:`POST`,body:JSON.stringify(e)});if(!t.ok){let e=t.error??`Edit failed`;h(e),Ae.error(`Edit failed`,{description:e});return}t.board&&St(t.board),Ae.success(`Saved`,{description:u.key});let n=u.key;d(null),v===n&&on(n)}catch(e){let t=e instanceof Error?e.message:`Save failed`;h(t),Ae.error(`Save failed`,{description:t})}finally{p(!1)}}}async function on(e){let t=ke.current?.columns.flatMap(e=>e.cards)??[],r=Je.find(t=>t.key===e)??t.find(t=>t.key===e),i=n.find(t=>t.key===e),a=r??(i?{key:i.key,summary:i.summary,priority:i.priority,assignee:i.assignee,dueDate:i.dueDate,labels:i.labels}:void 0),o=`/browse/${e}`;y(e),x(o),E(``),w(a?hM(a,o):[{label:`Jira URL`,value:o}]);let s=await gM(`/api/open`,{method:`POST`,body:JSON.stringify({key:e})});if(x(s.url),s.error){E(s.error),w(a?hM(a,s.url):[{label:`Jira URL`,value:s.url}]);return}w(s.fields)}function sn(e,t){let n=[];for(let[r,i]of Object.entries(t))for(let t of i)He.has(t.key)&&n.push({key:t.key,target:e,source:r,kind:`card`});return n}function cn(e,n){if(B.hide.includes(n.overContainer)){t(e=>It(n.previousValue,e,g,A,We));return}if(n.kind===`column`){let n=Object.keys(e),r=pM();r[at]=n,mM(r),t(e=>Pt(e,n));return}if(n.activeContainer===n.overContainer)return;let r=String(n.event.active.id);if(He.has(r)&&He.size>1){let e=sn(n.overContainer,n.previousValue);if(e.length===0)return;t(e=>{let t={},r=[];for(let[n,i]of Object.entries(e)){let e=[];for(let t of i)He.has(t.key)?r.push(t):e.push(t);t[n]=e}return t[n.overContainer]=[...t[n.overContainer]??[],...r],t}),bt(),Ve.move(e);return}let i=Object.entries(n.previousValue).find(([,e])=>e.some(e=>e.key===r))?.[0];i&&(bt(),Rt(r,n.overContainer,i))}function ln(){let e=L===`dark`?`light`:`dark`;yM(e),ae(e)}function un(e){return At(Ye,e,A,B.filter,n)}function _n(){uM(`stories`),Ce(`stories`),_(null),ke.current&&xt(ke.current,`stories`)}function vn(){uM(`epics`),Ce(`epics`),_(null),ke.current&&xt(ke.current,`epics`)}function yn(){uM(`combined`),Ce(`combined`),_(null),ke.current&&xt(ke.current,`combined`)}function bn(e){On(e),Te(e)}function Cn(){kn(),Te(`calendar`)}async function En(e){let r=Se===`epics`||Se===`combined`;if(r&&_n(),_(e),!e||!n.some(t=>t.key===e)||(r&&ke.current?ke.current.columns.flatMap(e=>e.cards):Je).filter(t=>t.epic===e&&ot(t,A)).length>0)return;ie(!0),F(``);let i=Ae.loading(`Listing children…`);try{let n=await gM(`/api/epic`,{method:`POST`,body:JSON.stringify({key:e})});t(t=>Lt(t,_M(n.columns),e)),Ae.success(`Listed children`,{id:i})}catch(e){let t=e instanceof Error?e.message:`Epic list failed`;F(t),Ae.error(`Epic list failed`,{id:i,description:t})}finally{ie(!1)}}function An(){let e=Vt(ce,me);if(!e.ok){_e(`Folder names must be unique`);return}he(``),_e(``),vt(e.state)}function jn(){let e=qt(fe,ve,{...B,boardKind:Se,projects:se});if(!e.ok){xe(`Preset names must be unique`);return}ye(``),xe(``),yt(e.presets)}function Mn(e){let t=Jt(fe,e);if(!t.ok||se.length&&!oM(t.chrome.projects,se))return;_t({...B,...t.chrome});let n=t.chrome.boardKind??`stories`;n===`combined`?yn():n===`epics`?vn():Se!==`stories`&&_n()}function Nn(e){ze.current=!1,Pe(!1),j(``),e.kind===`all-stories`?_n():e.kind===`all-epics`?vn():e.kind===`all-combined`?yn():e.kind===`refresh`?Dt():e.kind===`agent`?s(!0):e.kind===`create`?$t():e.kind===`create-ai`?tn():e.kind===`preset`?Mn(e.name):e.kind===`epic`?(y(null),x(null),w([]),E(``),En(e.key)):e.kind===`card`&&(e.epic?En(e.epic):_n(),on(e.key))}function Pn(e){let t=Yt(fe,e,{...B,boardKind:Se,projects:se});t.ok&&yt(t.presets)}function Fn(e,t){let n=Xt(fe,e,t);if(!n.ok){xe(`Preset names must be unique`);return}xe(``),yt(n.presets)}return(0,G.jsxs)(`div`,{className:`bg-sidebar flex h-screen`,children:[(0,G.jsxs)(Jh,{id:`shell`,orientation:`horizontal`,className:`min-h-0 flex-1`,defaultLayout:ct.defaultLayout,onLayoutChanged:(e,t)=>{if(ct.onLayoutChanged(e,t),!t.isUserInteraction)return;let n=(e.epics??0)<=0;De(!n),fM(!n)},children:[(0,G.jsx)(Yh,{id:`epics`,panelRef:Oe,defaultSize:`244px`,minSize:`12rem`,maxSize:`40%`,collapsible:!0,collapsedSize:0,className:`min-h-0 overflow-hidden`,children:(0,G.jsxs)(`aside`,{className:`text-sidebar-foreground flex h-full min-h-0 flex-col`,children:[(0,G.jsxs)(`div`,{className:`flex h-10 items-center justify-between px-4`,children:[(0,G.jsx)(`span`,{className:`text-[13px] font-medium`,children:`pipe-kan`}),(0,G.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground text-[12px] tabular-nums`,children:et.length}),(0,G.jsx)(K,{variant:`ghost`,size:`icon-xs`,"aria-label":`Collapse sidebar`,title:`Collapse sidebar`,onClick:()=>{De(!1),fM(!1),Oe.current?.collapse()},children:(0,G.jsx)(M,{className:`size-4`})})]})]}),(0,G.jsxs)(`nav`,{className:`flex flex-1 flex-col gap-0.5 overflow-auto px-2 pb-2`,children:[(0,G.jsx)(`button`,{type:`button`,className:W(`h-8 rounded-lg px-3 text-left text-[13px]`,Se===`stories`&&g===null?`bg-sidebar-accent text-sidebar-accent-foreground`:`hover:bg-foreground/5`),onClick:_n,children:`All stories`}),(0,G.jsx)(`button`,{type:`button`,className:W(`h-8 rounded-lg px-3 text-left text-[13px]`,Se===`epics`?`bg-sidebar-accent text-sidebar-accent-foreground`:`hover:bg-foreground/5`),onClick:vn,children:`All epics`}),(0,G.jsx)(`button`,{type:`button`,className:W(`h-8 rounded-lg px-3 text-left text-[13px]`,Se===`combined`?`bg-sidebar-accent text-sidebar-accent-foreground`:`hover:bg-foreground/5`),onClick:yn,children:`Combined`}),(0,G.jsx)(`button`,{type:`button`,className:W(`h-8 rounded-lg px-3 text-left text-[13px]`,we===`calendar`?`bg-sidebar-accent text-sidebar-accent-foreground`:`hover:bg-foreground/5`),onClick:Cn,children:`Calendar`}),ht?(0,G.jsx)(FM,{pane:rt,selectedEpic:g,childCount:un,favourites:ce,folderName:me,folderError:ge,onFolderName:he,onCreateFolder:An,onRenameFolder:(e,t)=>{let n=Ht(ce,e,t);if(!n.ok){_e(`Folder names must be unique`);return}_e(``),vt(n.state)},onDeleteFolder:e=>vt(Ut(ce,e)),listedEpics:n,onSelect:En,onToggleFavourite:e=>vt(Bt(ce,e)),onFile:(e,t)=>vt(Wt(ce,e,t)),onMove:Rt,onOpen:on}):null,(0,G.jsx)(LM,{presets:fe,presetName:ve,presetError:be,onPresetName:ye,onCreatePreset:jn,onApplyPreset:Mn,onOverwritePreset:Pn,onRenamePreset:Fn,onDeletePreset:e=>yt(Zt(fe,e))}),(0,G.jsx)(`div`,{className:`text-muted-foreground px-3 pt-3 pb-1 text-[11px] font-medium`,children:`Epics`}),tt.map(e=>e.status?(0,G.jsx)(MM,{status:e.status,epics:e.epics,selectedEpic:g,childCount:un,favourites:ce,listedEpics:n,onSelect:En,onToggleFavourite:e=>vt(Bt(ce,e)),onMove:Rt,onOpen:on},e.status):e.epics.map(e=>(0,G.jsx)(jM,{epic:e,selected:g===e.key,count:un(e.key),favourited:ce.keys.includes(e.key),moveTo:AM(n,e.status),onSelect:En,onToggleFavourite:e=>vt(Bt(ce,e)),onMove:Rt,onOpen:on},e.key)))]})]})}),(0,G.jsx)(Xh,{className:W(!Ee&&`hidden`)}),(0,G.jsx)(Yh,{id:`board`,defaultSize:`80%`,minSize:`24rem`,className:`min-h-0`,children:(0,G.jsx)(`div`,{className:`flex h-full min-h-0 flex-col p-2 pl-0`,children:(0,G.jsxs)(`div`,{className:`bg-background flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border`,children:[(0,G.jsxs)(`header`,{className:`flex min-h-11 shrink-0 flex-wrap items-center gap-2 px-3`,children:[Ee?null:(0,G.jsx)(K,{variant:`ghost`,size:`icon-xs`,"aria-label":`Expand sidebar`,title:`Expand sidebar`,onClick:()=>{De(!0),fM(!0),Oe.current?.expand()},children:(0,G.jsx)(te,{className:`size-4`})}),(0,G.jsxs)(`div`,{role:`tablist`,"aria-label":`Board or Calendar`,className:`flex items-center gap-0.5`,children:[(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":we===`board`,className:W(`h-7 rounded-md px-2 text-[13px] font-medium`,we===`board`?`bg-muted text-foreground`:`text-muted-foreground hover:text-foreground`),onClick:()=>bn(`board`),children:`Board`}),(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":we===`calendar`,className:W(`h-7 rounded-md px-2 text-[13px] font-medium`,we===`calendar`?`bg-muted text-foreground`:`text-muted-foreground hover:text-foreground`),onClick:()=>bn(`calendar`),children:`Calendar`})]}),(0,G.jsx)(`span`,{className:`bg-primary/10 text-primary inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium`,children:(()=>{let{projects:e}=nt(D);return e.length>0?e.join(`, `):`DEMO`})()}),(0,G.jsxs)(Nj,{className:`h-7 max-w-72 min-w-40 flex-1 border-transparent bg-muted shadow-none`,children:[(0,G.jsx)(Fj,{children:(0,G.jsx)(z,{className:`size-3.5`})}),(0,G.jsx)(Ij,{value:A,onChange:e=>j(e.target.value),placeholder:`Search Epics and Cards`,"aria-label":`Search`,className:`h-7 text-[13px]`}),A?(0,G.jsx)(Fj,{align:`inline-end`,children:(0,G.jsx)(`button`,{type:`button`,"aria-label":`Clear search`,onClick:()=>j(``),children:(0,G.jsx)(de,{className:`size-3.5`})})}):null]}),(0,G.jsx)(`input`,{className:`placeholder:text-muted-foreground h-7 min-w-40 flex-1 rounded-md bg-muted px-2.5 text-[13px] outline-none`,value:D,onChange:e=>ee(e.target.value),placeholder:`Scope flags`,spellCheck:!1,"aria-label":`Scope flags`}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsxs)(K,{variant:`ghost`,size:`sm`,children:[(0,G.jsx)(I,{}),`Filter`]})}),(0,G.jsx)(DM,{facets:ft,filter:B.filter,onToggle:(e,t)=>_t({...B,filter:{...B.filter,[e]:CM(B.filter[e]??[],t)}}),onClear:()=>_t(Jj)})]}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsxs)(K,{variant:`ghost`,size:`sm`,children:[(0,G.jsx)(O,{}),`Sort`]})}),(0,G.jsx)(Ap,{align:`end`,children:(0,G.jsxs)(Pp,{value:B.sort,onValueChange:e=>_t({...B,sort:e}),children:[(0,G.jsx)(Fp,{value:`payload`,children:`Payload order`}),(0,G.jsx)(Fp,{value:`priority`,children:`Priority`}),(0,G.jsx)(Fp,{value:`age`,children:`Age`}),(0,G.jsx)(Fp,{value:`due`,children:`Due date`}),(0,G.jsx)(Fp,{value:`key`,children:`Key`})]})})]}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsxs)(K,{variant:`ghost`,size:`sm`,children:[(0,G.jsx)(N,{}),`Columns`]})}),(0,G.jsx)(Ap,{align:`end`,children:pt.map(e=>(0,G.jsx)(Np,{checked:!B.hide.includes(e),onCheckedChange:t=>_t({...B,hide:t?B.hide.filter(t=>t!==e):[...B.hide,e]}),children:e},e))})]}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsxs)(K,{variant:`ghost`,size:`sm`,children:[(0,G.jsx)(re,{}),`Display`]})}),(0,G.jsxs)(Ap,{align:`end`,className:`w-44`,children:[(0,G.jsx)(jp,{children:`Card properties`}),qj.map(e=>(0,G.jsxs)(Np,{checked:B.shown.includes(e),onCheckedChange:()=>_t({...B,shown:wM(B.shown,e)}),children:[e===`created`&&`Age`,e===`targetEnd`&&`Target end`,e===`priority`&&`Priority`,e===`labels`&&`Labels`,e===`assignee`&&`Assignee`,e===`dueDate`&&`Due date`]},e))]})]}),(0,G.jsxs)(K,{variant:`ghost`,size:`sm`,onClick:()=>Dt(),disabled:ne,"aria-busy":ne,children:[ne?(0,G.jsx)(TE,{className:`size-3.5`}):null,`Refresh`]}),(0,G.jsxs)(K,{variant:`ghost`,size:`sm`,onClick:()=>s(e=>!e),"aria-pressed":o,children:[(0,G.jsx)(k,{className:`mr-1 size-4`}),`Agent`]}),(0,G.jsx)(K,{variant:`ghost`,size:`icon-xs`,onClick:ln,"aria-label":L===`dark`?`Switch to light mode`:`Switch to dark mode`,children:L===`dark`?(0,G.jsx)(le,{}):(0,G.jsx)(R,{})}),P?(0,G.jsx)(`p`,{className:`text-destructive w-full text-[13px] whitespace-pre-wrap`,children:P}):null]}),(0,G.jsxs)(Jh,{id:`board-open`,orientation:`horizontal`,className:`min-h-0 flex-1`,defaultLayout:lt.defaultLayout,onLayoutChanged:lt.onLayoutChanged,children:[(0,G.jsx)(Yh,{id:`cards`,defaultSize:v?`70%`:`100%`,minSize:`16rem`,className:`min-h-0`,children:(0,G.jsx)(`main`,{className:W(`h-full min-h-0 min-w-0 px-2 pb-2`,we===`calendar`?`overflow-hidden`:`overflow-auto`),children:we===`calendar`?(0,G.jsx)(yE,{cards:Object.values(qe).flat(),onOpen:e=>void on(e)}):(0,G.jsxs)(Tj,{className:`h-full min-h-0`,value:qe,onValueChange:e=>t(t=>Ft(e,t,g,A,We)),getItemValue:e=>e.key,restoreOnCancel:!0,onValueCommit:cn,children:[(0,G.jsx)(Ej,{className:`grid h-full min-h-0 grid-cols-1 auto-rows-fr gap-3`,children:it.length?(0,G.jsx)(Jh,{id:`columns`,orientation:`horizontal`,className:`min-h-0`,defaultLayout:ut.defaultLayout,onLayoutChanged:ut.onLayoutChanged,children:Object.entries(qe).map(([e,t],n,r)=>(0,G.jsxs)(C.Fragment,{children:[n>0?(0,G.jsx)(Xh,{}):null,(0,G.jsx)(Yh,{id:e,defaultSize:`${100/Math.max(r.length,1)}%`,minSize:`16rem`,className:`min-h-0 min-w-0`,children:(0,G.jsx)(kM,{title:e,cards:t,disabled:ne,selected:He,shown:Ge,onClick:Gt,onDoubleClick:Kt,onCreate:$t,onHide:()=>_t({...B,hide:[...B.hide,e]})})})]},e))}):null}),(0,G.jsx)(Mj,{children:({value:e,variant:t})=>{if(t===`column`)return(0,G.jsx)(kM,{title:String(e),cards:qe[String(e)]??[],isOverlay:!0,shown:Ge});let n=Object.values(qe).flat().find(t=>t.key===e);if(!n)return null;let r=He.has(n.key)?He.size:1;return(0,G.jsxs)(`div`,{className:`relative`,children:[(0,G.jsx)(OM,{card:n,isOverlay:!0,variant:(n.type??``).toLowerCase()===`epic`?`epic`:`story`,shown:Ge}),r>1?(0,G.jsx)(`span`,{className:`absolute -top-2 -right-2 flex h-5 min-w-5 items-center justify-center rounded-full bg-primary px-1.5 text-[11px] font-medium text-primary-foreground`,children:r}):null]})}})]})})}),v?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Xh,{}),(0,G.jsx)(Yh,{id:`open`,defaultSize:`30%`,minSize:`16rem`,className:`min-h-0`,children:(0,G.jsxs)(`aside`,{className:`flex h-full min-h-0 flex-col border-l`,children:[(0,G.jsxs)(`div`,{className:`flex h-10 items-center gap-2 px-3`,children:[(0,G.jsx)(`a`,{className:`min-w-0 flex-1 truncate text-[13px] font-medium underline-offset-4 hover:underline`,href:b??void 0,target:`_blank`,rel:`noreferrer`,children:v}),(0,G.jsx)(K,{variant:`ghost`,size:`sm`,className:`h-7 text-[12px]`,type:`button`,onClick:()=>{v&&rn(v)},children:`Edit`}),(0,G.jsx)(K,{variant:`ghost`,size:`icon-xs`,"aria-label":`Close issue`,onClick:()=>{y(null),x(null),w([]),E(``)},children:(0,G.jsx)(de,{})})]}),(0,G.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:[T?(0,G.jsx)(`p`,{className:`text-destructive px-4 pt-3 text-[13px] whitespace-pre-wrap`,children:T}):null,(0,G.jsx)(NM,{fields:S}),dt?(0,G.jsx)(`iframe`,{title:v??`Issue`,src:dt,className:`min-h-64 w-full border-0 bg-background`}):b?(0,G.jsx)(`div`,{className:`text-muted-foreground px-4 pb-6 text-[13px]`,children:`Jira refuses to embed this page.`}):null]})]})})]}):null]})]})})}),o?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Xh,{}),(0,G.jsx)(yg,{open:o,onClose:()=>s(!1),selectedIssueKey:v??g??void 0,boardView:{scope:`view`,kind:Se,selectedEpic:Ke?null:g,search:A,filter:B.filter,sort:B.sort,hide:B.hide,columns:Object.entries(qe).map(([e,t])=>({title:e,cards:t.map(e=>({key:e.key,summary:e.summary,epic:e.epic,assignee:e.assignee,priority:e.priority,labels:e.labels,dueDate:e.dueDate,targetEnd:e.targetEnd}))})),epics:et.map(e=>({key:e.key,summary:e.summary,status:e.status}))},pipeView:je?{scope:`pipe`,kind:`stories`,selectedEpic:null,search:``,filter:{},sort:`payload`,hide:[],columns:je.columns.map(e=>({title:e.title,cards:e.cards.map(e=>({key:e.key,summary:e.summary,epic:e.epic,assignee:e.assignee,priority:e.priority,labels:e.labels,dueDate:e.dueDate,targetEnd:e.targetEnd}))})),epics:je.epics.map(e=>({key:e.key,summary:e.summary,status:e.status}))}:void 0,onApplyPreset:Mn,onSetFilter:e=>_t({...B,filter:e}),onConfirmRefresh:Dt,onBoardMutated:()=>{Et()},seedPrompt:c,onSeedConsumed:()=>l(null)})]}):null]}),(0,G.jsx)(wD,{open:Fe,onOpenChange:e=>{Ie(e),e||Re(void 0)},children:(0,G.jsxs)(DD,{children:[(0,G.jsxs)(OD,{children:[(0,G.jsx)(AD,{children:`Refresh`}),(0,G.jsx)(jD,{children:g?`Refresh all Epics, or only the focused Epic ${g}.`:$e})]}),(0,G.jsxs)(kD,{children:[(0,G.jsx)(MD,{disabled:ne,children:`Cancel`}),(0,G.jsx)(K,{type:`button`,variant:`outline`,disabled:ne||!g,onClick:()=>void Ot(`selected`),children:g?`Refresh selected (${g})`:`Refresh selected`}),(0,G.jsx)(K,{type:`button`,disabled:ne,onClick:()=>void Ot(`all`),children:`Refresh all Epics`})]})]})}),(0,G.jsx)(wE,{theme:L}),u?(0,G.jsx)(CE,{draft:u,catalog:mt,busy:f,error:m,onChange:d,onSubmit:()=>void an(),onClose:()=>{f||(d(null),h(``))},onDraftWithAi:u.mode===`create`?()=>en(u):void 0}):null,Ne?(0,G.jsx)(xE,{presets:fe.map(e=>e.name),epics:je?.epics??n,cards:Xe,favouriteKeys:ce.keys,onPick:Nn,onClose:()=>{ze.current=!1,Pe(!1),Be.current?.focus()}}):null]})}function FM({pane:e,selectedEpic:t,childCount:n,favourites:r,folderName:i,folderError:a,onFolderName:o,onCreateFolder:s,onRenameFolder:c,onDeleteFolder:l,listedEpics:u,onSelect:d,onToggleFavourite:f,onFile:p,onMove:m,onOpen:h}){let[g,_]=(0,C.useState)(()=>!Qj(Xj(Rj,Kj),`Favourites`));function v(e){_(e);let t=Xj(Rj,Kj);if(e)for(let e of[...t])e.toLowerCase()===`favourites`&&t.delete(e);else t.add(`Favourites`);Zj(t,Rj)}let y=r.folders.map(e=>e.name);return(0,G.jsxs)(pg,{open:g,onOpenChange:v,className:`flex flex-col`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-1 px-1`,children:[(0,G.jsx)(mg,{asChild:!0,children:(0,G.jsxs)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground flex h-7 min-w-0 flex-1 items-center gap-1.5 px-2 text-left`,children:[(0,G.jsx)(j,{className:W(`size-3.5 shrink-0 transition-transform`,!g&&`-rotate-90`)}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[12px] font-medium`,children:`Favourites`})]})}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":`Favourite Folders`,children:(0,G.jsx)(F,{})})}),(0,G.jsxs)(Ap,{align:`start`,className:`w-56`,children:[(0,G.jsx)(jp,{children:`Create Folder`}),(0,G.jsxs)(`div`,{className:`px-2 pb-2`,children:[(0,G.jsx)(`input`,{className:`border-input h-7 w-full rounded-md border bg-transparent px-2 text-[13px] outline-none`,value:i,onChange:e=>o(e.target.value),placeholder:`Name`,"aria-label":`Folder name`,onKeyDown:e=>{e.key===`Enter`&&s()}}),a?(0,G.jsx)(`p`,{className:`text-destructive pt-1 text-[11px]`,children:a}):null]}),(0,G.jsx)(Mp,{onClick:s,children:`Create`}),y.length?(0,G.jsx)(Ip,{}):null,y.map(e=>(0,G.jsxs)(Mp,{onClick:()=>{let t=window.prompt(`Rename Folder`,e);t!=null&&c(e,t)},children:[`Rename `,e]},`rename-${e}`)),y.map(e=>(0,G.jsxs)(Mp,{onClick:()=>l(e),children:[`Delete `,e]},`delete-${e}`))]})]})]}),(0,G.jsxs)(hg,{className:`flex flex-col gap-0.5`,children:[e.unfiled.map(e=>(0,G.jsx)(jM,{epic:e,selected:t===e.key,count:n(e.key),favourited:!0,folders:y,onSelect:d,onToggleFavourite:f,onFile:p,moveTo:AM(u,e.status),onMove:m,onOpen:h},e.key)),e.folders.map(e=>(0,G.jsx)(IM,{folder:e,selectedEpic:t,childCount:n,folderNames:y,listedEpics:u,onSelect:d,onToggleFavourite:f,onFile:p,onMove:m,onOpen:h},e.name))]})]})}function IM({folder:e,selectedEpic:t,childCount:n,folderNames:r,listedEpics:i,onSelect:a,onToggleFavourite:o,onFile:s,onMove:c,onOpen:l}){let[u,d]=(0,C.useState)(()=>!Qj(Xj(zj),e.name));function f(t){d(t);let n=Xj(zj);if(t)for(let t of[...n])t.toLowerCase()===e.name.toLowerCase()&&n.delete(t);else n.add(e.name);Zj(n,zj)}return(0,G.jsxs)(pg,{open:u,onOpenChange:f,className:`flex flex-col`,children:[(0,G.jsx)(mg,{asChild:!0,children:(0,G.jsxs)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground flex h-7 items-center gap-1.5 px-3 text-left`,children:[(0,G.jsx)(j,{className:W(`size-3.5 shrink-0 transition-transform`,!u&&`-rotate-90`)}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[12px] font-medium`,children:e.name}),(0,G.jsx)(`span`,{className:`text-[11px] tabular-nums`,children:e.epics.length})]})}),(0,G.jsx)(hg,{className:`flex flex-col gap-0.5`,children:e.epics.map(e=>(0,G.jsx)(jM,{epic:e,selected:t===e.key,count:n(e.key),favourited:!0,folders:r,onSelect:a,onToggleFavourite:o,onFile:s,moveTo:AM(i,e.status),onMove:c,onOpen:l},e.key))})]})}function LM({presets:e,presetName:t,presetError:n,onPresetName:r,onCreatePreset:i,onApplyPreset:a,onOverwritePreset:o,onRenamePreset:s,onDeletePreset:c}){let[l,u]=(0,C.useState)(()=>!Qj(Xj(Rj,Kj),`Presets`));function d(e){u(e);let t=Xj(Rj,Kj);if(e)for(let e of[...t])e.toLowerCase()===`presets`&&t.delete(e);else t.add(`Presets`);Zj(t,Rj)}return(0,G.jsxs)(pg,{open:l,onOpenChange:d,className:`flex flex-col`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-1 px-1`,children:[(0,G.jsx)(mg,{asChild:!0,children:(0,G.jsxs)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground flex h-7 min-w-0 flex-1 items-center gap-1.5 px-2 text-left`,children:[(0,G.jsx)(j,{className:W(`size-3.5 shrink-0 transition-transform`,!l&&`-rotate-90`)}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[12px] font-medium`,children:`Presets`})]})}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":`Presets`,children:(0,G.jsx)(F,{})})}),(0,G.jsxs)(Ap,{align:`start`,className:`w-56`,children:[(0,G.jsx)(jp,{children:`Save Preset`}),(0,G.jsxs)(`div`,{className:`px-2 pb-2`,children:[(0,G.jsx)(`input`,{className:`border-input h-7 w-full rounded-md border bg-transparent px-2 text-[13px] outline-none`,value:t,onChange:e=>r(e.target.value),placeholder:`Name`,"aria-label":`Preset name`,onKeyDown:e=>{e.key===`Enter`&&i()}}),n?(0,G.jsx)(`p`,{className:`text-destructive pt-1 text-[11px]`,children:n}):null]}),(0,G.jsx)(Mp,{onClick:i,children:`Save`})]})]})]}),(0,G.jsx)(hg,{className:`flex flex-col gap-0.5`,children:e.map(e=>(0,G.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,G.jsx)(`button`,{type:`button`,className:`hover:bg-foreground/5 flex h-7 min-w-0 flex-1 items-center rounded-lg px-[7px] text-left text-[13px] font-medium`,onClick:()=>a(e.name),children:(0,G.jsx)(`span`,{className:`min-w-0 truncate`,children:e.name})}),(0,G.jsxs)(Op,{children:[(0,G.jsx)(kp,{asChild:!0,children:(0,G.jsx)(K,{size:`icon-xs`,variant:`ghost`,type:`button`,"aria-label":`Preset ${e.name}`,children:(0,G.jsx)(F,{})})}),(0,G.jsxs)(Ap,{align:`end`,children:[(0,G.jsx)(Mp,{onClick:()=>o(e.name),children:`Save over`}),(0,G.jsx)(Mp,{onClick:()=>{let t=window.prompt(`Rename Preset`,e.name);t!=null&&s(e.name,t)},children:`Rename`}),(0,G.jsx)(Mp,{onClick:()=>c(e.name),children:`Delete`})]})]})]},e.name))})]})}(0,fe.createRoot)(document.getElementById(`root`)).render((0,G.jsx)(C.StrictMode,{children:(0,G.jsx)(PM,{})}));
|
package/dist/ui/index.html
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
(!theme && matchMedia("(prefers-color-scheme: dark)").matches);
|
|
18
18
|
document.documentElement.classList.toggle("dark", dark);
|
|
19
19
|
</script>
|
|
20
|
-
<script type="module" crossorigin src="/assets/index-
|
|
20
|
+
<script type="module" crossorigin src="/assets/index-CyO_1G_D.js"></script>
|
|
21
21
|
<link rel="stylesheet" crossorigin href="/assets/index-BLLz4u2n.css">
|
|
22
22
|
</head>
|
|
23
23
|
<body>
|