@object-ui/plugin-kanban 3.3.2 → 4.0.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/CHANGELOG.md CHANGED
@@ -1,5 +1,76 @@
1
1
  # @object-ui/plugin-kanban
2
2
 
3
+ ## 4.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - @object-ui/types@4.0.1
8
+ - @object-ui/core@4.0.1
9
+ - @object-ui/react@4.0.1
10
+ - @object-ui/components@4.0.1
11
+
12
+ ## 4.0.0
13
+
14
+ ### Patch Changes
15
+
16
+ - Updated dependencies
17
+ - @object-ui/types@4.0.0
18
+ - @object-ui/components@4.0.0
19
+ - @object-ui/core@4.0.0
20
+ - @object-ui/react@4.0.0
21
+
22
+ ## 3.4.0
23
+
24
+ ### Patch Changes
25
+
26
+ - a2d7023: End-user feature batch — forms, designer history, import/export, and PWA offline sync.
27
+
28
+ **Forms (`@object-ui/fields`, `@object-ui/providers`)**
29
+ - `FileField`: native `<input capture="environment">` camera capture for mobile devices, plus a uploading-progress indicator driven by `UploadProvider`.
30
+ - `ImageField`: per-image inline crop/rotate via the lazy-loaded `ImageCropperDialog` (canvas-based, zero new deps).
31
+ - New `UploadProvider` in `@object-ui/providers` with pluggable adapters for S3 and Azure Blob (plus the default object-URL adapter for local previews). XHR-based with progress, abort, and retry.
32
+ - `LookupField`: `lookup.dependsOn: string | string[]` to chain dependent lookups (e.g. State depends on Country); the trigger is gated until parent values are present and the OData `$filter` is built automatically.
33
+
34
+ **Container-aware widget widths (`@object-ui/components`)**
35
+ - New `useResizeObserver(ref)` hook exposing `{ width, height }` of any element. SSR-safe; reads the initial size via `getBoundingClientRect`.
36
+ - `plugin-gantt` and `plugin-kanban` now react to their container size instead of `window.innerWidth`, so they behave correctly inside split panels and dashboards.
37
+
38
+ **Designer history (`@object-ui/plugin-designer`)**
39
+ - `useUndoRedo` (and therefore `useDesignerHistory`) gains `persistKey` + `storage` options to round-trip the undo/redo stack through `sessionStorage`, plus a `clearPersisted()` cleanup helper. Drafts now survive accidental tab refreshes.
40
+ - New `<HistoryPanel>` component renders the timeline visually with one-click jump-to-checkpoint via the new `jumpTo(index)` API.
41
+
42
+ **Import wizard (`@object-ui/plugin-grid`)**
43
+ - Saved column-mapping templates: name, save, re-apply, and delete via a new template bar in the mapping step. Persisted under `objectui:import-templates:${objectName}` (override via `templateStorageKey` / `templateStorage`).
44
+ - Inline validation correction: cells with errors in the preview step are now editable; corrections feed straight into the import without requiring a re-upload, with green-bar status indicators for fixed rows.
45
+
46
+ **PWA offline sync (`@object-ui/mobile`)**
47
+ - New `MemoryOfflineQueue` / `IndexedDbOfflineQueue` (`createOfflineQueue()` picks the best backend) backed by IndexedDB.
48
+ - `createOfflineDataSource(inner, { queue })` wraps any DataSource so mutations issued while offline (or that fail with a network-style error) are queued and replayed in order on reconnect. Includes `replay()`, `drop()`, `clear()`, `pending()`, an `onChange` notifier, and an opt-in `resolveConflict` hook for stale-write conflicts.
49
+ - New `useOfflineSync(source)` hook exposes `{ isOnline, pending, isReplaying, replay, drop, clear }` and auto-replays on the browser's `online` event.
50
+ - `getServiceWorkerSource(opts)` emits a customisable Service Worker that pre-caches the app shell, applies network-first to API requests, and broadcasts `REPLAY_QUEUE` to clients on Background Sync. `requestBackgroundSync(tag)` registers a one-shot sync from the page.
51
+
52
+ - b2be122: fix(mobile): round 2 — kanban readability, calendar default view, timeline dot clipping
53
+
54
+ **Kanban**
55
+ - Remove `font-mono` from card titles, descriptions, column headers, and empty-state labels — CRM cards no longer render in a monospace font.
56
+ - Constrain column body height (`max-h-full min-h-0` + `h-full` on the layout root) so `ScrollArea` activates and cards don't bleed past the viewport bottom.
57
+ - Opportunistically derive `description` (e.g. `$60K · Acme Corp · @owner`) and up to two `badges` (priority/severity/industry/rating) in `ObjectKanban` when the schema/source omits them, giving mobile cards more context at a glance.
58
+
59
+ **Calendar**
60
+ - `ObjectCalendar` previously hardcoded `view={schema.defaultView ?? 'month'}`, making the view-selector dropdown a no-op. Wire the `view` state through to the `<Calendar>` prop so user selection is respected.
61
+ - On mobile (viewport < 768 px) coerce `day` defaults to `month` via a synchronous lazy initialiser and a resize/orientation effect — avoids the useless 24-hour empty-hour grid for date-only events.
62
+
63
+ **Timeline**
64
+ - Add `ml-3` to the `<Timeline>` `<ol>` so the `absolute -left-3` marker dots are no longer clipped at the scroll-container edge.
65
+
66
+ - Updated dependencies [a2d7023]
67
+ - Updated dependencies [f1ca238]
68
+ - Updated dependencies [de881ef]
69
+ - @object-ui/components@3.4.0
70
+ - @object-ui/types@3.4.0
71
+ - @object-ui/core@3.4.0
72
+ - @object-ui/react@3.4.0
73
+
3
74
  ## 3.3.2
4
75
 
5
76
  ### Patch Changes
@@ -592,10 +592,10 @@ function Y({ card: e, conditionalFormatting: t }) {
592
592
  /* @__PURE__ */ (0, K.jsxs)(x, {
593
593
  className: "p-4",
594
594
  children: [/* @__PURE__ */ (0, K.jsx)(S, {
595
- className: "text-sm font-medium font-mono tracking-tight text-foreground group-hover:text-primary transition-colors",
595
+ className: "text-sm font-medium tracking-tight text-foreground group-hover:text-primary transition-colors",
596
596
  children: e.title
597
597
  }), e.description && /* @__PURE__ */ (0, K.jsx)(b, {
598
- className: "text-xs text-muted-foreground font-mono",
598
+ className: "text-xs text-muted-foreground",
599
599
  children: e.description
600
600
  })]
601
601
  }),
@@ -693,13 +693,13 @@ function Q({ column: e, cards: t, onToggle: n, enableVirtual: i, quickAdd: a, on
693
693
  onClick: () => n(!e.collapsed),
694
694
  children: e.collapsed ? /* @__PURE__ */ (0, K.jsx)(T, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, K.jsx)(r, { className: "h-4 w-4" })
695
695
  }), !e.collapsed && /* @__PURE__ */ (0, K.jsxs)(K.Fragment, { children: [/* @__PURE__ */ (0, K.jsx)("h3", {
696
- className: "font-mono text-sm font-semibold tracking-wider text-primary/90 uppercase truncate",
696
+ className: " text-sm font-semibold tracking-wider text-primary/90 uppercase truncate",
697
697
  children: e.title
698
698
  }), /* @__PURE__ */ (0, K.jsxs)("div", {
699
699
  className: "flex items-center gap-2",
700
700
  children: [
701
701
  /* @__PURE__ */ (0, K.jsxs)("span", {
702
- className: q("font-mono text-xs", m ? "text-destructive" : v ? "text-yellow-500" : "text-muted-foreground"),
702
+ className: q(" text-xs", m ? "text-destructive" : v ? "text-yellow-500" : "text-muted-foreground"),
703
703
  children: [l.length, e.limit && ` / ${e.limit}`]
704
704
  }),
705
705
  m && /* @__PURE__ */ (0, K.jsx)(g, {
@@ -713,7 +713,7 @@ function Q({ column: e, cards: t, onToggle: n, enableVirtual: i, quickAdd: a, on
713
713
  }), e.collapsed && /* @__PURE__ */ (0, K.jsxs)("div", {
714
714
  className: "flex flex-col items-center gap-1",
715
715
  children: [/* @__PURE__ */ (0, K.jsx)("span", {
716
- className: "font-mono text-xs font-bold text-primary/90 [writing-mode:vertical-rl] rotate-180",
716
+ className: " text-xs font-bold text-primary/90 [writing-mode:vertical-rl] rotate-180",
717
717
  children: e.title
718
718
  }), /* @__PURE__ */ (0, K.jsx)(g, {
719
719
  variant: "secondary",
@@ -2,10 +2,10 @@ import { r as e, t } from "./plus-CHsXVJSY.js";
2
2
  import { a as n, c as r, d as i, f as a, i as o, l as s, n as c, o as l, r as u, s as d, t as f, u as p } from "./sortable.esm-LJG1TjKd.js";
3
3
  import * as m from "react";
4
4
  import { useDnd as h, useHasDndProvider as g } from "@object-ui/react";
5
- import { Badge as _, Button as v, Card as y, CardContent as b, CardDescription as x, CardHeader as S, CardTitle as C, Input as w, ScrollArea as T } from "@object-ui/components";
5
+ import { Badge as _, Button as v, Card as y, CardContent as b, CardDescription as x, CardHeader as S, CardTitle as C, Input as w, ScrollArea as T, useResizeObserver as E } from "@object-ui/components";
6
6
  //#region src/KanbanImpl.tsx
7
- var E = e(), D = (...e) => e.filter(Boolean).join(" "), O = "Uncategorized";
8
- function k(e, t) {
7
+ var D = e(), O = (...e) => e.filter(Boolean).join(" "), k = "Uncategorized";
8
+ function A(e, t) {
9
9
  if (!t || t.length === 0) return {};
10
10
  for (let n of t) {
11
11
  let t = e[n.field];
@@ -32,13 +32,13 @@ function k(e, t) {
32
32
  }
33
33
  return {};
34
34
  }
35
- function A({ card: e, onCardClick: t, conditionalFormatting: n }) {
35
+ function j({ card: e, onCardClick: t, conditionalFormatting: n }) {
36
36
  let { attributes: r, listeners: i, setNodeRef: o, transform: s, transition: c, isDragging: l } = u({ id: e.id }), d = {
37
37
  transform: a.Transform.toString(s),
38
38
  transition: c,
39
39
  opacity: l ? .5 : void 0
40
- }, f = k(e, n);
41
- return /* @__PURE__ */ (0, E.jsx)("div", {
40
+ }, f = A(e, n);
41
+ return /* @__PURE__ */ (0, D.jsx)("div", {
42
42
  ref: o,
43
43
  style: d,
44
44
  ...r,
@@ -46,34 +46,34 @@ function A({ card: e, onCardClick: t, conditionalFormatting: n }) {
46
46
  role: "listitem",
47
47
  "aria-label": e.title,
48
48
  onClick: () => t?.(e),
49
- children: /* @__PURE__ */ (0, E.jsxs)(y, {
49
+ children: /* @__PURE__ */ (0, D.jsxs)(y, {
50
50
  className: "mb-2 cursor-grab active:cursor-grabbing border-border border-l-4 border-l-primary/40 bg-card/60 hover:border-primary/40 hover:shadow-lg hover:shadow-primary/10 transition-all duration-300 group touch-manipulation",
51
51
  style: f,
52
52
  children: [
53
- e.coverImage && /* @__PURE__ */ (0, E.jsx)("div", {
53
+ e.coverImage && /* @__PURE__ */ (0, D.jsx)("div", {
54
54
  className: "w-full h-32 overflow-hidden rounded-t-lg",
55
- children: /* @__PURE__ */ (0, E.jsx)("img", {
55
+ children: /* @__PURE__ */ (0, D.jsx)("img", {
56
56
  src: e.coverImage,
57
57
  alt: "",
58
58
  className: "w-full h-full object-cover",
59
59
  loading: "lazy"
60
60
  })
61
61
  }),
62
- /* @__PURE__ */ (0, E.jsxs)(S, {
62
+ /* @__PURE__ */ (0, D.jsxs)(S, {
63
63
  className: "p-2 sm:p-4",
64
- children: [/* @__PURE__ */ (0, E.jsx)(C, {
65
- className: "text-xs sm:text-sm font-medium font-mono tracking-tight text-foreground group-hover:text-primary transition-colors",
64
+ children: [/* @__PURE__ */ (0, D.jsx)(C, {
65
+ className: "text-xs sm:text-sm font-medium tracking-tight text-foreground group-hover:text-primary transition-colors",
66
66
  children: e.title
67
- }), e.description && /* @__PURE__ */ (0, E.jsx)(x, {
68
- className: "text-xs text-muted-foreground font-mono line-clamp-2 sm:line-clamp-none",
67
+ }), e.description && /* @__PURE__ */ (0, D.jsx)(x, {
68
+ className: "text-xs text-muted-foreground line-clamp-2 sm:line-clamp-none",
69
69
  children: e.description
70
70
  })]
71
71
  }),
72
- e.badges && e.badges.length > 0 && /* @__PURE__ */ (0, E.jsx)(b, {
72
+ e.badges && e.badges.length > 0 && /* @__PURE__ */ (0, D.jsx)(b, {
73
73
  className: "p-2 sm:p-4 pt-0",
74
- children: /* @__PURE__ */ (0, E.jsx)("div", {
74
+ children: /* @__PURE__ */ (0, D.jsx)("div", {
75
75
  className: "flex flex-wrap gap-1",
76
- children: e.badges.map((e, t) => /* @__PURE__ */ (0, E.jsx)(_, {
76
+ children: e.badges.map((e, t) => /* @__PURE__ */ (0, D.jsx)(_, {
77
77
  variant: e.variant || "default",
78
78
  className: "text-xs",
79
79
  children: e.label
@@ -84,14 +84,14 @@ function A({ card: e, onCardClick: t, conditionalFormatting: n }) {
84
84
  })
85
85
  });
86
86
  }
87
- function j({ columnId: e, onAdd: n }) {
87
+ function M({ columnId: e, onAdd: n }) {
88
88
  let [r, i] = m.useState(!1), [a, o] = m.useState(""), s = m.useRef(null), c = () => {
89
89
  let t = a.trim();
90
90
  t && (n(e, t), o("")), i(!1);
91
91
  };
92
- return r ? /* @__PURE__ */ (0, E.jsx)("div", {
92
+ return r ? /* @__PURE__ */ (0, D.jsx)("div", {
93
93
  className: "mt-2 space-y-2",
94
- children: /* @__PURE__ */ (0, E.jsx)(w, {
94
+ children: /* @__PURE__ */ (0, D.jsx)(w, {
95
95
  ref: s,
96
96
  value: a,
97
97
  onChange: (e) => o(e.target.value),
@@ -103,80 +103,81 @@ function j({ columnId: e, onAdd: n }) {
103
103
  className: "text-sm",
104
104
  autoFocus: !0
105
105
  })
106
- }) : /* @__PURE__ */ (0, E.jsxs)(v, {
106
+ }) : /* @__PURE__ */ (0, D.jsxs)(v, {
107
107
  variant: "ghost",
108
108
  size: "sm",
109
109
  className: "w-full mt-2 text-muted-foreground hover:text-foreground",
110
110
  onClick: () => {
111
111
  i(!0), setTimeout(() => s.current?.focus(), 0);
112
112
  },
113
- children: [/* @__PURE__ */ (0, E.jsx)(t, { className: "h-4 w-4 mr-1" }), "Add Card"]
113
+ children: [/* @__PURE__ */ (0, D.jsx)(t, { className: "h-4 w-4 mr-1" }), "Add Card"]
114
114
  });
115
115
  }
116
- function M({ column: e, cards: t, onCardClick: n, quickAdd: r, onQuickAdd: i, conditionalFormatting: a }) {
117
- let s = t || [], { setNodeRef: c } = u({
116
+ function N({ column: e, cards: t, onCardClick: n, quickAdd: r, onQuickAdd: i, conditionalFormatting: a, columnStyle: s }) {
117
+ let c = t || [], { setNodeRef: l } = u({
118
118
  id: e.id,
119
119
  data: { type: "column" }
120
- }), l = e.limit && s.length >= e.limit;
121
- return /* @__PURE__ */ (0, E.jsxs)("div", {
122
- ref: c,
120
+ }), d = e.limit && c.length >= e.limit, p = s && s.width != null ? "flex-shrink-0" : "w-[85vw] sm:w-80 flex-shrink-0";
121
+ return /* @__PURE__ */ (0, D.jsxs)("div", {
122
+ ref: l,
123
123
  role: "group",
124
124
  "aria-label": e.title,
125
- className: D("flex flex-col w-[85vw] sm:w-80 flex-shrink-0 rounded-lg border border-border bg-card/20 backdrop-blur-sm shadow-xl snap-start", e.className),
126
- children: [/* @__PURE__ */ (0, E.jsx)("div", {
125
+ style: s,
126
+ className: O("flex flex-col rounded-lg border border-border bg-card/20 backdrop-blur-sm shadow-xl snap-start max-h-full min-h-0", p, e.className),
127
+ children: [/* @__PURE__ */ (0, D.jsx)("div", {
127
128
  className: "p-3 sm:p-4 border-b border-border/50 bg-muted/30 rounded-t-lg",
128
- children: /* @__PURE__ */ (0, E.jsxs)("div", {
129
+ children: /* @__PURE__ */ (0, D.jsxs)("div", {
129
130
  className: "flex items-center justify-between",
130
- children: [/* @__PURE__ */ (0, E.jsx)("h3", {
131
+ children: [/* @__PURE__ */ (0, D.jsx)("h3", {
131
132
  id: `kanban-col-${e.id}`,
132
- className: "font-mono text-xs sm:text-sm font-semibold tracking-wider text-primary/90 uppercase truncate",
133
+ className: " text-xs sm:text-sm font-semibold tracking-wider text-primary/90 uppercase truncate",
133
134
  children: e.title
134
- }), /* @__PURE__ */ (0, E.jsxs)("div", {
135
+ }), /* @__PURE__ */ (0, D.jsxs)("div", {
135
136
  className: "flex items-center gap-2",
136
- children: [/* @__PURE__ */ (0, E.jsxs)(_, {
137
+ children: [/* @__PURE__ */ (0, D.jsxs)(_, {
137
138
  variant: "secondary",
138
- className: "text-xs font-mono tabular-nums",
139
- children: [s.length, e.limit && ` / ${e.limit}`]
140
- }), l && /* @__PURE__ */ (0, E.jsx)(_, {
139
+ className: "text-xs tabular-nums",
140
+ children: [c.length, e.limit && ` / ${e.limit}`]
141
+ }), d && /* @__PURE__ */ (0, D.jsx)(_, {
141
142
  variant: "destructive",
142
143
  className: "text-xs",
143
144
  children: "Full"
144
145
  })]
145
146
  })]
146
147
  })
147
- }), /* @__PURE__ */ (0, E.jsxs)(T, {
148
+ }), /* @__PURE__ */ (0, D.jsxs)(T, {
148
149
  className: "flex-1 p-4",
149
- children: [/* @__PURE__ */ (0, E.jsx)(f, {
150
- items: s.map((e) => e.id),
150
+ children: [/* @__PURE__ */ (0, D.jsx)(f, {
151
+ items: c.map((e) => e.id),
151
152
  strategy: o,
152
- children: /* @__PURE__ */ (0, E.jsxs)("div", {
153
+ children: /* @__PURE__ */ (0, D.jsxs)("div", {
153
154
  className: "space-y-2",
154
155
  role: "list",
155
156
  "aria-label": `${e.title} cards`,
156
- children: [s.length === 0 && /* @__PURE__ */ (0, E.jsx)("div", {
157
+ children: [c.length === 0 && /* @__PURE__ */ (0, D.jsx)("div", {
157
158
  className: "flex flex-col items-center justify-center py-8 text-muted-foreground/50",
158
- children: /* @__PURE__ */ (0, E.jsx)("span", {
159
- className: "text-xs font-mono",
159
+ children: /* @__PURE__ */ (0, D.jsx)("span", {
160
+ className: "text-xs",
160
161
  children: "No cards"
161
162
  })
162
- }), s.map((e) => /* @__PURE__ */ (0, E.jsx)(A, {
163
+ }), c.map((e) => /* @__PURE__ */ (0, D.jsx)(j, {
163
164
  card: e,
164
165
  onCardClick: n,
165
166
  conditionalFormatting: a
166
167
  }, e.id))]
167
168
  })
168
- }), r && i && /* @__PURE__ */ (0, E.jsx)(j, {
169
+ }), r && i && /* @__PURE__ */ (0, D.jsx)(M, {
169
170
  columnId: e.id,
170
171
  onAdd: i
171
172
  })]
172
173
  })]
173
174
  });
174
175
  }
175
- function N({ children: e }) {
176
- return /* @__PURE__ */ (0, E.jsx)(E.Fragment, { children: e(h()) });
176
+ function P({ children: e }) {
177
+ return /* @__PURE__ */ (0, D.jsx)(D.Fragment, { children: e(h()) });
177
178
  }
178
- function P({ columns: e, onCardMove: t, onCardClick: n, className: r, quickAdd: i, onQuickAdd: a, coverImageField: o, conditionalFormatting: s, swimlaneField: c }) {
179
- return g() ? /* @__PURE__ */ (0, E.jsx)(N, { children: (l) => /* @__PURE__ */ (0, E.jsx)(F, {
179
+ function F({ columns: e, onCardMove: t, onCardClick: n, className: r, quickAdd: i, onQuickAdd: a, coverImageField: o, conditionalFormatting: s, swimlaneField: c }) {
180
+ return g() ? /* @__PURE__ */ (0, D.jsx)(P, { children: (l) => /* @__PURE__ */ (0, D.jsx)(I, {
180
181
  columns: e,
181
182
  onCardMove: t,
182
183
  onCardClick: n,
@@ -187,7 +188,7 @@ function P({ columns: e, onCardMove: t, onCardClick: n, className: r, quickAdd:
187
188
  coverImageField: o,
188
189
  conditionalFormatting: s,
189
190
  swimlaneField: c
190
- }) }) : /* @__PURE__ */ (0, E.jsx)(F, {
191
+ }) }) : /* @__PURE__ */ (0, D.jsx)(I, {
191
192
  columns: e,
192
193
  onCardMove: t,
193
194
  onCardClick: n,
@@ -200,46 +201,46 @@ function P({ columns: e, onCardMove: t, onCardClick: n, className: r, quickAdd:
200
201
  swimlaneField: c
201
202
  });
202
203
  }
203
- function F({ columns: e, onCardMove: t, onCardClick: a, className: u, dnd: h, quickAdd: g, onQuickAdd: _, coverImageField: v, conditionalFormatting: y, swimlaneField: b }) {
204
- let [x, S] = m.useState(null), C = b ? `objectui:kanban-collapsed:${b}` : null, [w, T] = m.useState(() => {
205
- if (!C) return /* @__PURE__ */ new Set();
204
+ function I({ columns: e, onCardMove: t, onCardClick: a, className: u, dnd: h, quickAdd: g, onQuickAdd: _, coverImageField: v, conditionalFormatting: y, swimlaneField: b }) {
205
+ let [x, S] = m.useState(null), C = m.useRef(null), { width: w } = E(C), T = m.useMemo(() => w ? w < 480 ? { width: Math.max(w - 32, 220) } : w < 720 ? { width: 280 } : { width: 320 } : {}, [w]), A = b ? `objectui:kanban-collapsed:${b}` : null, [M, P] = m.useState(() => {
206
+ if (!A) return /* @__PURE__ */ new Set();
206
207
  try {
207
- let e = localStorage.getItem(C);
208
+ let e = localStorage.getItem(A);
208
209
  if (e) {
209
210
  let t = JSON.parse(e);
210
211
  if (Array.isArray(t)) return new Set(t.filter((e) => typeof e == "string"));
211
212
  }
212
213
  } catch {}
213
214
  return /* @__PURE__ */ new Set();
214
- }), k = m.useMemo(() => (e || []).map((e) => ({
215
+ }), F = m.useMemo(() => (e || []).map((e) => ({
215
216
  ...e,
216
217
  cards: e.cards || []
217
- })), [e]), [j, N] = m.useState(k);
218
+ })), [e]), [I, L] = m.useState(F);
218
219
  m.useEffect(() => {
219
- N(k);
220
- }, [k]);
221
- let P = m.useMemo(() => {
220
+ L(F);
221
+ }, [F]);
222
+ let R = m.useMemo(() => {
222
223
  if (!b) return null;
223
- let e = j.flatMap((e) => e.cards), t = /* @__PURE__ */ new Set();
224
+ let e = I.flatMap((e) => e.cards), t = /* @__PURE__ */ new Set();
224
225
  return e.forEach((e) => {
225
226
  let n = e[b];
226
- t.add(n == null ? O : String(n));
227
+ t.add(n == null ? k : String(n));
227
228
  }), Array.from(t).sort();
228
- }, [j, b]), F = m.useCallback((e) => {
229
- T((t) => {
229
+ }, [I, b]), z = m.useCallback((e) => {
230
+ P((t) => {
230
231
  let n = new Set(t);
231
- if (n.has(e) ? n.delete(e) : n.add(e), C) try {
232
- localStorage.setItem(C, JSON.stringify([...n]));
232
+ if (n.has(e) ? n.delete(e) : n.add(e), A) try {
233
+ localStorage.setItem(A, JSON.stringify([...n]));
233
234
  } catch {}
234
235
  return n;
235
236
  });
236
- }, [C]), I = i(p(d, { activationConstraint: { distance: 5 } }), p(r, { activationConstraint: {
237
+ }, [A]), B = i(p(d, { activationConstraint: { distance: 5 } }), p(r, { activationConstraint: {
237
238
  delay: 200,
238
239
  tolerance: 5
239
- } })), L = (e) => {
240
- let { active: t } = e, n = z(t.id);
240
+ } })), V = (e) => {
241
+ let { active: t } = e, n = U(t.id);
241
242
  if (S(n), h && n) {
242
- let e = B(n.id);
243
+ let e = W(n.id);
243
244
  e && h.startDrag({
244
245
  id: n.id,
245
246
  type: "kanban-card",
@@ -247,7 +248,7 @@ function F({ columns: e, onCardMove: t, onCardClick: a, className: u, dnd: h, qu
247
248
  sourceId: e.id
248
249
  });
249
250
  }
250
- }, R = (e) => {
251
+ }, H = (e) => {
251
252
  let { active: n, over: r } = e;
252
253
  if (S(null), !r) {
253
254
  h && h.endDrag();
@@ -258,20 +259,20 @@ function F({ columns: e, onCardMove: t, onCardClick: a, className: u, dnd: h, qu
258
259
  h && h.endDrag();
259
260
  return;
260
261
  }
261
- let o = B(i), s = B(a) || V(a);
262
+ let o = W(i), s = W(a) || G(a);
262
263
  if (!o || !s) {
263
264
  h && h.endDrag();
264
265
  return;
265
266
  }
266
267
  if (o.id === s.id) {
267
268
  let e = [...o.cards], t = c(e, e.findIndex((e) => e.id === i), e.findIndex((e) => e.id === a));
268
- N((e) => e.map((e) => e.id === o.id ? {
269
+ L((e) => e.map((e) => e.id === o.id ? {
269
270
  ...e,
270
271
  cards: t
271
272
  } : e));
272
273
  } else {
273
274
  let e = [...o.cards], n = [...s.cards], r = e.findIndex((e) => e.id === i), c = a === s.id ? n.length : n.findIndex((e) => e.id === a), [l] = e.splice(r, 1);
274
- n.splice(c, 0, l), N((t) => t.map((t) => t.id === o.id ? {
275
+ n.splice(c, 0, l), L((t) => t.map((t) => t.id === o.id ? {
275
276
  ...t,
276
277
  cards: e
277
278
  } : t.id === s.id ? {
@@ -280,36 +281,37 @@ function F({ columns: e, onCardMove: t, onCardClick: a, className: u, dnd: h, qu
280
281
  } : t)), t && t(i, o.id, s.id, c);
281
282
  }
282
283
  h && h.endDrag(s.id);
283
- }, z = m.useCallback((e) => {
284
- for (let t of j) {
284
+ }, U = m.useCallback((e) => {
285
+ for (let t of I) {
285
286
  let n = t.cards.find((t) => t.id === e);
286
287
  if (n) return n;
287
288
  }
288
289
  return null;
289
- }, [j]), B = m.useCallback((e) => j.find((t) => t.cards.some((t) => t.id === e)) || null, [j]), V = m.useCallback((e) => j.find((t) => t.id === e) || null, [j]);
290
- return /* @__PURE__ */ (0, E.jsxs)(n, {
291
- sensors: I,
290
+ }, [I]), W = m.useCallback((e) => I.find((t) => t.cards.some((t) => t.id === e)) || null, [I]), G = m.useCallback((e) => I.find((t) => t.id === e) || null, [I]);
291
+ return /* @__PURE__ */ (0, D.jsxs)(n, {
292
+ sensors: B,
292
293
  collisionDetection: s,
293
- onDragStart: L,
294
- onDragEnd: R,
295
- children: [
296
- /* @__PURE__ */ (0, E.jsxs)("div", {
294
+ onDragStart: V,
295
+ onDragEnd: H,
296
+ children: [/* @__PURE__ */ (0, D.jsxs)("div", {
297
+ ref: C,
298
+ className: "flex flex-col min-w-0 min-h-0 h-full",
299
+ children: [/* @__PURE__ */ (0, D.jsxs)("div", {
297
300
  className: "flex sm:hidden items-center justify-between px-3 pb-2 text-xs text-muted-foreground",
298
- children: [/* @__PURE__ */ (0, E.jsxs)("span", { children: [j.length, " columns"] }), /* @__PURE__ */ (0, E.jsx)("span", { children: "← Swipe to navigate →" })]
299
- }),
300
- P ? /* @__PURE__ */ (0, E.jsxs)("div", {
301
- className: D("flex flex-col gap-1 p-2 sm:p-4 min-w-0 overflow-hidden", u),
301
+ children: [/* @__PURE__ */ (0, D.jsxs)("span", { children: [I.length, " columns"] }), /* @__PURE__ */ (0, D.jsx)("span", { children: "← Swipe to navigate →" })]
302
+ }), R ? /* @__PURE__ */ (0, D.jsxs)("div", {
303
+ className: O("flex flex-col gap-1 p-2 sm:p-4 min-w-0 overflow-hidden", u),
302
304
  role: "region",
303
305
  "aria-label": "Kanban board with swimlanes",
304
- children: [/* @__PURE__ */ (0, E.jsx)("div", {
306
+ children: [/* @__PURE__ */ (0, D.jsx)("div", {
305
307
  className: "flex gap-3 sm:gap-4 pl-36 sm:pl-44 overflow-x-auto",
306
- children: j.map((e) => /* @__PURE__ */ (0, E.jsxs)("div", {
308
+ children: I.map((e) => /* @__PURE__ */ (0, D.jsxs)("div", {
307
309
  className: "w-[85vw] sm:w-80 flex-shrink-0 text-center",
308
- children: [/* @__PURE__ */ (0, E.jsx)("span", {
309
- className: "font-mono text-xs sm:text-sm font-semibold tracking-wider text-primary/90 uppercase",
310
+ children: [/* @__PURE__ */ (0, D.jsx)("span", {
311
+ className: " text-xs sm:text-sm font-semibold tracking-wider text-primary/90 uppercase",
310
312
  children: e.title
311
- }), /* @__PURE__ */ (0, E.jsxs)("span", {
312
- className: "ml-2 font-mono text-xs text-muted-foreground",
313
+ }), /* @__PURE__ */ (0, D.jsxs)("span", {
314
+ className: "ml-2 text-xs text-muted-foreground",
313
315
  children: [
314
316
  "(",
315
317
  e.cards.length,
@@ -317,25 +319,25 @@ function F({ columns: e, onCardMove: t, onCardClick: a, className: u, dnd: h, qu
317
319
  ]
318
320
  })]
319
321
  }, e.id))
320
- }), P.map((e) => {
321
- let t = w.has(e), n = j.reduce((t, n) => t + n.cards.filter((t) => (t[b] == null ? O : String(t[b])) === e).length, 0);
322
- return /* @__PURE__ */ (0, E.jsxs)("div", {
322
+ }), R.map((e) => {
323
+ let t = M.has(e), n = I.reduce((t, n) => t + n.cards.filter((t) => (t[b] == null ? k : String(t[b])) === e).length, 0);
324
+ return /* @__PURE__ */ (0, D.jsxs)("div", {
323
325
  className: "border rounded-lg bg-muted/10",
324
- children: [/* @__PURE__ */ (0, E.jsxs)("button", {
326
+ children: [/* @__PURE__ */ (0, D.jsxs)("button", {
325
327
  className: "w-full flex items-center gap-2 px-3 py-2 text-left hover:bg-muted/30 transition-colors",
326
- onClick: () => F(e),
328
+ onClick: () => z(e),
327
329
  "aria-expanded": !t,
328
330
  children: [
329
- /* @__PURE__ */ (0, E.jsx)("span", {
330
- className: D("transition-transform text-xs", t ? "" : "rotate-90"),
331
+ /* @__PURE__ */ (0, D.jsx)("span", {
332
+ className: O("transition-transform text-xs", t ? "" : "rotate-90"),
331
333
  children: "▶"
332
334
  }),
333
- /* @__PURE__ */ (0, E.jsx)("span", {
334
- className: "font-mono text-xs font-semibold text-muted-foreground uppercase tracking-wider",
335
+ /* @__PURE__ */ (0, D.jsx)("span", {
336
+ className: " text-xs font-semibold text-muted-foreground uppercase tracking-wider",
335
337
  children: e
336
338
  }),
337
- /* @__PURE__ */ (0, E.jsxs)("span", {
338
- className: "font-mono text-xs text-muted-foreground",
339
+ /* @__PURE__ */ (0, D.jsxs)("span", {
340
+ className: " text-xs text-muted-foreground",
339
341
  children: [
340
342
  "(",
341
343
  n,
@@ -343,20 +345,20 @@ function F({ columns: e, onCardMove: t, onCardClick: a, className: u, dnd: h, qu
343
345
  ]
344
346
  })
345
347
  ]
346
- }), !t && /* @__PURE__ */ (0, E.jsx)("div", {
348
+ }), !t && /* @__PURE__ */ (0, D.jsx)("div", {
347
349
  className: "flex gap-3 sm:gap-4 overflow-x-auto px-2 pb-3 pl-36 sm:pl-44",
348
- children: j.map((t) => {
349
- let n = t.cards.filter((t) => (t[b] == null ? O : String(t[b])) === e);
350
- return /* @__PURE__ */ (0, E.jsx)("div", {
350
+ children: I.map((t) => {
351
+ let n = t.cards.filter((t) => (t[b] == null ? k : String(t[b])) === e);
352
+ return /* @__PURE__ */ (0, D.jsx)("div", {
351
353
  className: "w-[85vw] sm:w-80 flex-shrink-0 min-h-[60px] rounded-md bg-card/20 p-2",
352
- children: /* @__PURE__ */ (0, E.jsx)(f, {
354
+ children: /* @__PURE__ */ (0, D.jsx)(f, {
353
355
  items: n.map((e) => e.id),
354
356
  strategy: o,
355
- children: /* @__PURE__ */ (0, E.jsx)("div", {
357
+ children: /* @__PURE__ */ (0, D.jsx)("div", {
356
358
  className: "space-y-2",
357
359
  role: "list",
358
360
  "aria-label": `${t.title} - ${e} cards`,
359
- children: n.map((e) => /* @__PURE__ */ (0, E.jsx)(A, {
361
+ children: n.map((e) => /* @__PURE__ */ (0, D.jsx)(j, {
360
362
  card: e,
361
363
  onCardClick: a,
362
364
  conditionalFormatting: y
@@ -368,29 +370,29 @@ function F({ columns: e, onCardMove: t, onCardClick: a, className: u, dnd: h, qu
368
370
  })]
369
371
  }, e);
370
372
  })]
371
- }) : /* @__PURE__ */ (0, E.jsx)("div", {
372
- className: D("flex gap-3 sm:gap-4 overflow-x-auto snap-x snap-mandatory p-2 sm:p-4 bg-muted/10 rounded-lg [-webkit-overflow-scrolling:touch] min-w-0", u),
373
+ }) : /* @__PURE__ */ (0, D.jsx)("div", {
374
+ className: O("flex gap-3 sm:gap-4 overflow-x-auto snap-x snap-mandatory p-2 sm:p-4 bg-muted/10 rounded-lg [-webkit-overflow-scrolling:touch] min-w-0 min-h-0 h-full", u),
373
375
  role: "region",
374
376
  "aria-label": "Kanban board",
375
- children: j.map((e) => /* @__PURE__ */ (0, E.jsx)(M, {
377
+ children: I.map((e) => /* @__PURE__ */ (0, D.jsx)(N, {
376
378
  column: e,
377
379
  cards: e.cards,
378
380
  onCardClick: a,
379
381
  quickAdd: g,
380
382
  onQuickAdd: _,
381
- conditionalFormatting: y
383
+ conditionalFormatting: y,
384
+ columnStyle: T
382
385
  }, e.id))
383
- }),
384
- /* @__PURE__ */ (0, E.jsx)(l, { children: /* @__PURE__ */ (0, E.jsx)("div", {
385
- "aria-live": "assertive",
386
- "aria-label": x ? `Dragging ${x.title}` : void 0,
387
- children: x ? /* @__PURE__ */ (0, E.jsx)(A, {
388
- card: x,
389
- conditionalFormatting: y
390
- }) : null
391
- }) })
392
- ]
386
+ })]
387
+ }), /* @__PURE__ */ (0, D.jsx)(l, { children: /* @__PURE__ */ (0, D.jsx)("div", {
388
+ "aria-live": "assertive",
389
+ "aria-label": x ? `Dragging ${x.title}` : void 0,
390
+ children: x ? /* @__PURE__ */ (0, D.jsx)(j, {
391
+ card: x,
392
+ conditionalFormatting: y
393
+ }) : null
394
+ }) })]
393
395
  });
394
396
  }
395
397
  //#endregion
396
- export { P as default };
398
+ export { F as default };
package/dist/index.js CHANGED
Binary file
@@ -1,13 +1,13 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`react`),require(`@object-ui/core`),require(`@object-ui/react`),require(`@object-ui/components`),require(`react-dom`)):typeof define==`function`&&define.amd?define([`exports`,`react`,`@object-ui/core`,`@object-ui/react`,`@object-ui/components`,`react-dom`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.ObjectUIPluginKanban={},e.React,e.ObjectUICore,e.ObjectUIReact,e.ObjectUIComponents,e.ReactDOM))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=Object.create,s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,f=(e,t)=>()=>(e&&(t=e(e=0)),t),p=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),m=(e,t)=>{let n={};for(var r in e)s(n,r,{get:e[r],enumerable:!0});return t||s(n,Symbol.toStringTag,{value:`Module`}),n},h=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=l(t),a=0,o=i.length,u;a<o;a++)u=i[a],!d.call(e,u)&&u!==n&&s(e,u,{get:(e=>t[e]).bind(null,u),enumerable:!(r=c(t,u))||r.enumerable});return e},g=(e,t,n)=>(n=e==null?{}:o(u(e)),h(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e));let _=g(t,1);t=g(t);var v=p((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),y=p((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===D?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case _:return`Fragment`;case y:return`Profiler`;case v:return`StrictMode`;case C:return`Suspense`;case w:return`SuspenseList`;case ee:return`Activity`}if(typeof e==`object`)switch(typeof e.tag==`number`&&console.error(`Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.`),e.$$typeof){case g:return`Portal`;case x:return e.displayName||`Context`;case b:return(e._context.displayName||`Context`)+`.Consumer`;case S:var n=e.render;return e=e.displayName,e||=(e=n.displayName||n.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case T:return n=e.displayName||null,n===null?t(e.type)||`Memo`:n;case E:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function n(e){return``+e}function r(e){try{n(e);var t=!1}catch{t=!0}if(t){t=console;var r=t.error,i=typeof Symbol==`function`&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||`Object`;return r.call(t,`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,i),n(e)}}function i(e){if(e===_)return`<>`;if(typeof e==`object`&&e&&e.$$typeof===E)return`<...>`;try{var n=t(e);return n?`<`+n+`>`:`<...>`}catch{return`<...>`}}function a(){var e=O.A;return e===null?null:e.getOwner()}function o(){return Error(`react-stack-top-frame`)}function s(e){if(te.call(e,`key`)){var t=Object.getOwnPropertyDescriptor(e,`key`).get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function c(e,t){function n(){re||(re=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}n.isReactWarning=!0,Object.defineProperty(e,`key`,{get:n,configurable:!0})}function l(){var e=t(this.type);return A[e]||(A[e]=!0,console.error(`Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.`)),e=this.props.ref,e===void 0?null:e}function u(e,t,n,r,i,a){var o=n.ref;return e={$$typeof:h,type:e,key:t,props:n,_owner:r},(o===void 0?null:o)===null?Object.defineProperty(e,`ref`,{enumerable:!1,value:null}):Object.defineProperty(e,`ref`,{enumerable:!1,get:l}),e._store={},Object.defineProperty(e._store,`validated`,{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,`_debugInfo`,{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,`_debugStack`,{configurable:!1,enumerable:!1,writable:!0,value:i}),Object.defineProperty(e,`_debugTask`,{configurable:!1,enumerable:!1,writable:!0,value:a}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function d(e,n,i,o,l,d){var p=n.children;if(p!==void 0)if(o)if(k(p)){for(o=0;o<p.length;o++)f(p[o]);Object.freeze&&Object.freeze(p)}else console.error(`React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.`);else f(p);if(te.call(n,`key`)){p=t(e);var m=Object.keys(n).filter(function(e){return e!==`key`});o=0<m.length?`{key: someKey, `+m.join(`: ..., `)+`: ...}`:`{key: someKey}`,ae[p+o]||(m=0<m.length?`{`+m.join(`: ..., `)+`: ...}`:`{}`,console.error(`A props object containing a "key" prop is being spread into JSX:
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`react`),require(`@object-ui/core`),require(`@object-ui/react`),require(`@object-ui/components`),require(`react-dom`)):typeof define==`function`&&define.amd?define([`exports`,`react`,`@object-ui/core`,`@object-ui/react`,`@object-ui/components`,`react-dom`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.ObjectUIPluginKanban={},e.React,e.ObjectUICore,e.ObjectUIReact,e.ObjectUIComponents,e.ReactDOM))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=Object.create,s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,f=(e,t)=>()=>(e&&(t=e(e=0)),t),p=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),m=(e,t)=>{let n={};for(var r in e)s(n,r,{get:e[r],enumerable:!0});return t||s(n,Symbol.toStringTag,{value:`Module`}),n},h=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=l(t),a=0,o=i.length,u;a<o;a++)u=i[a],!d.call(e,u)&&u!==n&&s(e,u,{get:(e=>t[e]).bind(null,u),enumerable:!(r=c(t,u))||r.enumerable});return e},g=(e,t,n)=>(n=e==null?{}:o(u(e)),h(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e));let _=g(t,1);t=g(t);var v=p((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),y=p((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===D?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case _:return`Fragment`;case y:return`Profiler`;case v:return`StrictMode`;case C:return`Suspense`;case w:return`SuspenseList`;case ee:return`Activity`}if(typeof e==`object`)switch(typeof e.tag==`number`&&console.error(`Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.`),e.$$typeof){case g:return`Portal`;case x:return e.displayName||`Context`;case b:return(e._context.displayName||`Context`)+`.Consumer`;case S:var n=e.render;return e=e.displayName,e||=(e=n.displayName||n.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case T:return n=e.displayName||null,n===null?t(e.type)||`Memo`:n;case E:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function n(e){return``+e}function r(e){try{n(e);var t=!1}catch{t=!0}if(t){t=console;var r=t.error,i=typeof Symbol==`function`&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||`Object`;return r.call(t,`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,i),n(e)}}function i(e){if(e===_)return`<>`;if(typeof e==`object`&&e&&e.$$typeof===E)return`<...>`;try{var n=t(e);return n?`<`+n+`>`:`<...>`}catch{return`<...>`}}function a(){var e=O.A;return e===null?null:e.getOwner()}function o(){return Error(`react-stack-top-frame`)}function s(e){if(k.call(e,`key`)){var t=Object.getOwnPropertyDescriptor(e,`key`).get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function c(e,t){function n(){ne||(ne=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}n.isReactWarning=!0,Object.defineProperty(e,`key`,{get:n,configurable:!0})}function l(){var e=t(this.type);return j[e]||(j[e]=!0,console.error(`Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.`)),e=this.props.ref,e===void 0?null:e}function u(e,t,n,r,i,a){var o=n.ref;return e={$$typeof:h,type:e,key:t,props:n,_owner:r},(o===void 0?null:o)===null?Object.defineProperty(e,`ref`,{enumerable:!1,value:null}):Object.defineProperty(e,`ref`,{enumerable:!1,get:l}),e._store={},Object.defineProperty(e._store,`validated`,{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,`_debugInfo`,{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,`_debugStack`,{configurable:!1,enumerable:!1,writable:!0,value:i}),Object.defineProperty(e,`_debugTask`,{configurable:!1,enumerable:!1,writable:!0,value:a}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function d(e,n,i,o,l,d){var p=n.children;if(p!==void 0)if(o)if(A(p)){for(o=0;o<p.length;o++)f(p[o]);Object.freeze&&Object.freeze(p)}else console.error(`React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.`);else f(p);if(k.call(n,`key`)){p=t(e);var m=Object.keys(n).filter(function(e){return e!==`key`});o=0<m.length?`{key: someKey, `+m.join(`: ..., `)+`: ...}`:`{key: someKey}`,ie[p+o]||(m=0<m.length?`{`+m.join(`: ..., `)+`: ...}`:`{}`,console.error(`A props object containing a "key" prop is being spread into JSX:
2
2
  let props = %s;
3
3
  <%s {...props} />
4
4
  React keys must be passed directly to JSX without using spread:
5
5
  let props = %s;
6
- <%s key={someKey} {...props} />`,o,p,m,p),ae[p+o]=!0)}if(p=null,i!==void 0&&(r(i),p=``+i),s(n)&&(r(n.key),p=``+n.key),`key`in n)for(var h in i={},n)h!==`key`&&(i[h]=n[h]);else i=n;return p&&c(i,typeof e==`function`?e.displayName||e.name||`Unknown`:e),u(e,p,i,a(),l,d)}function f(e){p(e)?e._store&&(e._store.validated=1):typeof e==`object`&&e&&e.$$typeof===E&&(e._payload.status===`fulfilled`?p(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function p(e){return typeof e==`object`&&!!e&&e.$$typeof===h}var m=require(`react`),h=Symbol.for(`react.transitional.element`),g=Symbol.for(`react.portal`),_=Symbol.for(`react.fragment`),v=Symbol.for(`react.strict_mode`),y=Symbol.for(`react.profiler`),b=Symbol.for(`react.consumer`),x=Symbol.for(`react.context`),S=Symbol.for(`react.forward_ref`),C=Symbol.for(`react.suspense`),w=Symbol.for(`react.suspense_list`),T=Symbol.for(`react.memo`),E=Symbol.for(`react.lazy`),ee=Symbol.for(`react.activity`),D=Symbol.for(`react.client.reference`),O=m.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,te=Object.prototype.hasOwnProperty,k=Array.isArray,ne=console.createTask?console.createTask:function(){return null};m={react_stack_bottom_frame:function(e){return e()}};var re,A={},j=m.react_stack_bottom_frame.bind(m,o)(),ie=ne(i(o)),ae={};e.Fragment=_,e.jsx=function(e,t,n){var r=1e4>O.recentlyCreatedOwnerStacks++;return d(e,t,n,!1,r?Error(`react-stack-top-frame`):j,r?ne(i(e)):ie)},e.jsxs=function(e,t,n){var r=1e4>O.recentlyCreatedOwnerStacks++;return d(e,t,n,!0,r?Error(`react-stack-top-frame`):j,r?ne(i(e)):ie)}})()})),b=p(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=v():t.exports=y()})),x=b(),S=({schema:e,dataSource:t,className:a,data:o,loading:s,onRowClick:c,onCardClick:l,...u})=>{let d=Array.isArray(o),[f,p]=(0,_.useState)([]),[m,h]=(0,_.useState)(null),[g,v]=(0,_.useState)(d?s??!1:!1),[y,b]=(0,_.useState)(null),[S,C]=(0,_.useState)(0),w=(0,r.useDataScope)(e.bind);(0,_.useEffect)(()=>{if(!d&&!(!t?.onMutation||!e.objectName))return t.onMutation(t=>{t.resource===e.objectName&&C(e=>e+1)})},[t,e.objectName,d]),(0,_.useEffect)(()=>{d&&s!==void 0&&v(s)},[s,d]),(0,_.useEffect)(()=>{let n=!0;return(async()=>{if(!(!t||!e.objectName))try{let r=await t.getObjectSchema(e.objectName);n&&h(r)}catch(e){console.warn(`Failed to fetch object def`,e)}})(),()=>{n=!1}},[e.objectName,t]),(0,_.useEffect)(()=>{if(d)return;let r=!0;return e.objectName&&!w&&!e.data&&(async()=>{if(!(!t||typeof t.find!=`function`||!e.objectName)){r&&v(!0);try{let i=(0,n.buildExpandFields)(m?.fields),a=(0,n.extractRecords)(await t.find(e.objectName,{options:{$top:100},$filter:e.filter,...i.length>0?{$expand:i}:{}}));r&&p(a)}catch(e){console.error(`[ObjectKanban] Fetch error:`,e),r&&b(e)}finally{r&&v(!1)}}})(),()=>{r=!1}},[e.objectName,t,w,e.data,e.filter,d,m,S]);let T=(d?o:void 0)||w||e.data||f,E=(0,_.useMemo)(()=>{if(!Array.isArray(T))return[];let t=e.cardTitle||e.titleField;if(!t&&m){if(m.titleFormat){let e=/\{(.+?)\}/.exec(m.titleFormat);e&&(t=e[1])}!t&&m.NAME_FIELD_KEY&&(t=m.NAME_FIELD_KEY)}let n=[`name`,`title`,`subject`,`label`,`display_name`];return T.map(e=>{let r=t?e[t]:void 0;if(!r){for(let t of n)if(e[t]){r=e[t];break}}return{...e,id:e.id||e._id,title:r||`Untitled`}})},[T,e,m]),ee=(0,_.useMemo)(()=>{if(e.columns&&e.columns.length>0)if(typeof e.columns[0]==`string`){if(!e.groupBy)return e.columns.map(e=>({id:e,title:e}))}else return e.columns;if(e.groupBy&&m?.fields?.[e.groupBy]?.options)return m.fields[e.groupBy].options.map(e=>({id:e.value,title:e.label}));if(e.groupBy&&E.length>0){let t=new Set(E.map(t=>t[e.groupBy]));return Array.from(t).map(e=>({id:String(e),title:String(e)}))}return[]},[e.columns,e.groupBy,E,m]),D=e.swimlaneField||e.grouping?.fields?.[0]?.field,O={...e,data:E,columns:ee,className:a||e.className,...D?{swimlaneField:D}:{}},te=(0,r.useNavigationOverlay)({navigation:e.navigation,objectName:e.objectName,onRowClick:c??l});if(y)return(0,x.jsxs)(`div`,{className:`p-4 border border-destructive/50 rounded bg-destructive/10 text-destructive`,children:[`Error loading kanban data: `,y.message]});let k=e.objectName?`${e.objectName.charAt(0).toUpperCase()+e.objectName.slice(1).replace(/_/g,` `)} Detail`:`Card Details`;return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(Ji,{schema:{...O,onCardClick:e=>{te.handleClick(e),l?.(e)}}}),te.isOverlay&&(0,x.jsx)(i.NavigationOverlay,{...te,title:k,children:e=>(0,x.jsx)(`div`,{className:`space-y-3`,children:Object.entries(e).map(([e,t])=>(0,x.jsxs)(`div`,{className:`flex flex-col`,children:[(0,x.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wide`,children:e.replace(/_/g,` `)}),(0,x.jsx)(`span`,{className:`text-sm`,children:String(t??`—`)})]},e))})})]})},C,w=f((()=>{C=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim()})),T,E=f((()=>{T=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase()})),ee,D=f((()=>{ee=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase())})),O,te=f((()=>{D(),O=e=>{let t=ee(e);return t.charAt(0).toUpperCase()+t.slice(1)}})),k,ne=f((()=>{k={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`}})),re,A=f((()=>{re=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1}})),j,ie,ae=f((()=>{j=(0,t.createContext)({}),ie=()=>(0,t.useContext)(j)})),M,N=f((()=>{ne(),A(),w(),ae(),M=(0,t.forwardRef)(({color:e,size:n,strokeWidth:r,absoluteStrokeWidth:i,className:a=``,children:o,iconNode:s,...c},l)=>{let{size:u=24,strokeWidth:d=2,absoluteStrokeWidth:f=!1,color:p=`currentColor`,className:m=``}=ie()??{},h=i??f?Number(r??d)*24/Number(n??u):r??d;return(0,t.createElement)(`svg`,{ref:l,...k,width:n??u??k.width,height:n??u??k.height,stroke:e??p,strokeWidth:h,className:C(`lucide`,m,a),...!o&&!re(c)&&{"aria-hidden":`true`},...c},[...s.map(([e,n])=>(0,t.createElement)(e,n)),...Array.isArray(o)?o:[o]])})})),P,F=f((()=>{w(),E(),te(),N(),P=(e,n)=>{let r=(0,t.forwardRef)(({className:r,...i},a)=>(0,t.createElement)(M,{ref:a,iconNode:n,className:C(`lucide-${T(O(e))}`,`lucide-${e}`,r),...i}));return r.displayName=O(e),r}})),I,L,R=f((()=>{F(),I=[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]],L=P(`check`,I)})),z,B,oe=f((()=>{F(),z=[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]],B=P(`chevron-down`,z)})),V,se,ce=f((()=>{F(),V=[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]],se=P(`chevron-right`,V)})),le,H,ue=f((()=>{F(),le=[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]],H=P(`file-text`,le)})),de,fe,pe=f((()=>{F(),de=[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]],fe=P(`plus`,de)})),me,he,ge=f((()=>{F(),me=[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],he=P(`triangle-alert`,me)})),_e,ve,ye=f((()=>{F(),_e=[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]],ve=P(`x`,_e)})),U=f((()=>{F(),ge(),R(),oe(),ce(),ue(),pe(),ye(),ae(),N()}));U();var be=(...e)=>e.filter(Boolean).join(` `),xe=({columnId:e,fields:t,onSubmit:n,onCancel:r,defaultValues:a})=>{let[o,s]=_.useState(()=>{let e={};for(let n of t)e[n.name]=a?.[n.name]??n.defaultValue??``;return e}),c=_.useRef(null);_.useEffect(()=>{let e=setTimeout(()=>c.current?.focus(),0);return()=>clearTimeout(e)},[]);let l=_.useCallback((e,t)=>{s(n=>({...n,[e]:t}))},[]),u=_.useCallback(()=>{Object.values(o).some(e=>typeof e==`string`?e.trim().length>0:e!=null)&&n(e,o)},[e,o,n]);return(0,x.jsxs)(`div`,{className:`mt-2 rounded-lg border border-primary/30 bg-card p-3 space-y-2 shadow-sm`,onKeyDown:_.useCallback(e=>{e.key===`Enter`?(e.preventDefault(),u()):e.key===`Escape`&&(e.preventDefault(),r())},[u,r]),role:`form`,"aria-label":`Quick add card`,children:[t.map((t,n)=>(0,x.jsxs)(`div`,{className:`space-y-1`,children:[(0,x.jsx)(`label`,{htmlFor:`qa-${e}-${t.name}`,className:`text-xs font-mono text-muted-foreground`,children:t.label??t.name}),Se(t,o[t.name],l,n===0?c:void 0,`qa-${e}-${t.name}`)]},t.name)),(0,x.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,x.jsxs)(i.Button,{type:`button`,size:`sm`,className:`h-7 text-xs gap-1`,onClick:u,children:[(0,x.jsx)(L,{className:`h-3 w-3`}),`Save`]}),(0,x.jsxs)(i.Button,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 text-xs gap-1`,onClick:r,children:[(0,x.jsx)(ve,{className:`h-3 w-3`}),`Cancel`]})]})]})};function Se(e,t,n,r,a){let o=`text-sm h-8`;switch(e.type){case`select`:return(0,x.jsxs)(`select`,{ref:r,id:a,value:t??``,onChange:t=>n(e.name,t.target.value),className:be(o,`w-full rounded-md border border-input bg-background px-2 py-1 text-sm ring-offset-background`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`),children:[(0,x.jsx)(`option`,{value:``,children:e.placeholder??`Select ${e.label??e.name}...`}),(e.options??[]).map(e=>(0,x.jsx)(`option`,{value:e.value,children:e.label},e.value))]});case`number`:return(0,x.jsx)(i.Input,{ref:r,id:a,type:`number`,value:t??``,onChange:t=>n(e.name,t.target.value===``?``:Number(t.target.value)),placeholder:e.placeholder??`Enter ${e.label??e.name}...`,className:o});default:return(0,x.jsx)(i.Input,{ref:r,id:a,type:`text`,value:t??``,onChange:t=>n(e.name,t.target.value),placeholder:e.placeholder??`Enter ${e.label??e.name}...`,className:o})}}U();var Ce=(...e)=>e.filter(Boolean).join(` `),we=({templates:e,onSelect:t,columnId:n})=>{let[r,a]=_.useState(!1),o=_.useRef(null);return _.useEffect(()=>{if(!r)return;let e=e=>{o.current&&!o.current.contains(e.target)&&a(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[r]),(0,x.jsxs)(`div`,{ref:o,className:`relative`,onKeyDown:_.useCallback(e=>{e.key===`Escape`&&a(!1)},[]),children:[(0,x.jsxs)(i.Button,{variant:`ghost`,size:`sm`,className:`w-full mt-2 text-muted-foreground hover:text-foreground gap-1`,onClick:()=>a(e=>!e),"aria-haspopup":`listbox`,"aria-expanded":r,"aria-label":`Add card to ${n}`,children:[(0,x.jsx)(fe,{className:`h-4 w-4`}),`Add Card`,(0,x.jsx)(B,{className:Ce(`h-3 w-3 transition-transform`,r?`rotate-180`:``)})]}),r&&(0,x.jsxs)(`div`,{className:`absolute z-50 mt-1 w-full rounded-md border border-border bg-popover p-1 shadow-md`,role:`listbox`,"aria-label":`Card templates`,children:[(0,x.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent hover:text-accent-foreground transition-colors`,role:`option`,"aria-selected":!1,onClick:()=>{t(null),a(!1)},children:[(0,x.jsx)(fe,{className:`h-4 w-4 text-muted-foreground`}),(0,x.jsx)(`span`,{className:`font-mono text-xs`,children:`Custom`})]}),e.length>0&&(0,x.jsx)(`div`,{className:`my-1 h-px bg-border`,role:`separator`}),e.map(e=>(0,x.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent hover:text-accent-foreground transition-colors`,role:`option`,"aria-selected":!1,onClick:()=>{t(e),a(!1)},children:[(0,x.jsx)(H,{className:`h-4 w-4 text-muted-foreground`}),(0,x.jsx)(`span`,{className:`font-mono text-xs truncate`,children:e.name})]},e.id))]})]})},Te=`objectui:kanban-column-widths`;function Ee(e){try{let t=localStorage.getItem(e);if(t){let e=JSON.parse(t);if(e&&typeof e==`object`&&!Array.isArray(e))return e}}catch{}return{}}function De(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function Oe({columns:e,defaultWidth:t=320,minWidth:n=200,maxWidth:r=600,storageKey:i}){let a=i?`${Te}:${i}`:Te,[o,s]=(0,_.useState)(()=>Ee(a)),c=(0,_.useCallback)(e=>Math.max(n,Math.min(r,e)),[n,r]);return{getColumnWidth:(0,_.useCallback)(e=>{let n=o[e];return n==null?t:c(n)},[o,t,c]),setColumnWidth:(0,_.useCallback)((e,t)=>{let n=c(t);s(t=>{let r={...t,[e]:n};return De(a,r),r})},[c,a]),resetWidths:(0,_.useCallback)(()=>{s({});try{localStorage.removeItem(a)}catch{}},[a]),config:(0,_.useMemo)(()=>({defaultWidth:t,minWidth:n,maxWidth:r,overrides:{...o}}),[t,n,r,o])}}function ke({swimlanes:e,onCardMove:t}){let[n,r]=(0,_.useState)(null),i=(0,_.useMemo)(()=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},[e]),a=(0,_.useCallback)((e,t)=>{if(e===t)return!0;let n=i.get(t);return n?n.acceptFrom?n.acceptFrom.includes(e):!0:!1},[i]),o=(0,_.useCallback)((e,n,i,o)=>a(n,i)?(t?.({cardId:e,fromSwimlane:n,toSwimlane:i,columnId:o}),r(null),!0):!1,[a,t]),s=(0,_.useCallback)(e=>{r(e)},[]),c=(0,_.useCallback)(()=>{r(null)},[]);return{handleCrossSwimlaneMove:o,isDraggingAcrossSwimlanes:n!==null,startCrossSwimlaneDrag:s,endCrossSwimlaneDrag:c,canMoveTo:a}}function Ae({cards:e,onReorderComplete:t}){let[n,r]=(0,_.useState)(e),[i,a]=(0,_.useState)(!1);!je(n,e)&&!i&&r(e);let o=(0,_.useCallback)(()=>{r(e),a(!1)},[e]);return{reorderedCards:n,onReorder:(0,_.useCallback)((e,t)=>{r(n=>{if(e<0||t<0||e>=n.length||t>=n.length)return n;let r=[...n],[i]=r.splice(e,1);return r.splice(t,0,i),r})},[]),isDragging:i,startDrag:(0,_.useCallback)(()=>{a(!0)},[]),endDrag:(0,_.useCallback)(()=>{a(!1),r(e=>(t?.(e),e))},[t]),reset:o}}function je(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n].id!==t[n].id)return!1;return!0}function Me(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return(0,t.useMemo)(()=>e=>{n.forEach(t=>t(e))},n)}function Ne(e){let t=Object.prototype.toString.call(e);return t===`[object Window]`||t===`[object global]`}function Pe(e){return`nodeType`in e}function W(e){return e?Ne(e)?e:Pe(e)?e.ownerDocument?.defaultView??window:window:window}function Fe(e){let{Document:t}=W(e);return e instanceof t}function Ie(e){return Ne(e)?!1:e instanceof W(e).HTMLElement}function Le(e){return e instanceof W(e).SVGElement}function Re(e){return e?Ne(e)?e.document:Pe(e)?Fe(e)?e:Ie(e)||Le(e)?e.ownerDocument:document:document:document}function ze(e){let n=(0,t.useRef)(e);return G(()=>{n.current=e}),(0,t.useCallback)(function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.current==null?void 0:n.current(...t)},[])}function Be(){let e=(0,t.useRef)(null);return[(0,t.useCallback)((t,n)=>{e.current=setInterval(t,n)},[]),(0,t.useCallback)(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[])]}function Ve(e,n){n===void 0&&(n=[e]);let r=(0,t.useRef)(e);return G(()=>{r.current!==e&&(r.current=e)},n),r}function He(e,n){let r=(0,t.useRef)();return(0,t.useMemo)(()=>{let t=e(r.current);return r.current=t,t},[...n])}function Ue(e){let n=ze(e),r=(0,t.useRef)(null);return[r,(0,t.useCallback)(e=>{e!==r.current&&n?.(e,r.current),r.current=e},[])]}function We(e){let n=(0,t.useRef)();return(0,t.useEffect)(()=>{n.current=e},[e]),n.current}function Ge(e,n){return(0,t.useMemo)(()=>{if(n)return n;let t=$e[e]==null?0:$e[e]+1;return $e[e]=t,e+`-`+t},[e,n])}function Ke(e){return function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return r.reduce((t,n)=>{let r=Object.entries(n);for(let[n,i]of r){let r=t[n];r!=null&&(t[n]=r+e*i)}return t},{...t})}}function qe(e){return`clientX`in e&&`clientY`in e}function Je(e){if(!e)return!1;let{KeyboardEvent:t}=W(e.target);return t&&e instanceof t}function Ye(e){if(!e)return!1;let{TouchEvent:t}=W(e.target);return t&&e instanceof t}function Xe(e){if(Ye(e)){if(e.touches&&e.touches.length){let{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){let{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return qe(e)?{x:e.clientX,y:e.clientY}:null}function Ze(e){return e.matches(nt)?e:e.querySelector(nt)}var Qe,G,$e,et,tt,K,nt,rt=f((()=>{Qe=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,G=Qe?t.useLayoutEffect:t.useEffect,$e={},et=Ke(1),tt=Ke(-1),K=Object.freeze({Translate:{toString(e){if(!e)return;let{x:t,y:n}=e;return`translate3d(`+(t?Math.round(t):0)+`px, `+(n?Math.round(n):0)+`px, 0)`}},Scale:{toString(e){if(!e)return;let{scaleX:t,scaleY:n}=e;return`scaleX(`+t+`) scaleY(`+n+`)`}},Transform:{toString(e){if(e)return[K.Translate.toString(e),K.Scale.toString(e)].join(` `)}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+` `+n+`ms `+r}}}),nt=`a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]`}));function it(e){let{id:n,value:r}=e;return t.default.createElement(`div`,{id:n,style:st},r)}function at(e){let{id:n,announcement:r,ariaLiveType:i=`assertive`}=e;return t.default.createElement(`div`,{id:n,style:{position:`fixed`,top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0 0 0 0)`,clipPath:`inset(100%)`,whiteSpace:`nowrap`},role:`status`,"aria-live":i,"aria-atomic":!0},r)}function ot(){let[e,n]=(0,t.useState)(``);return{announce:(0,t.useCallback)(e=>{e!=null&&n(e)},[]),announcement:e}}var st,ct=f((()=>{st={display:`none`}}));function lt(e){let n=(0,t.useContext)(Pn);(0,t.useEffect)(()=>{if(!n)throw Error(`useDndMonitor must be used within a children of <DndContext>`);return n(e)},[e,n])}function ut(){let[e]=(0,t.useState)(()=>new Set),n=(0,t.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,t.useCallback)(t=>{let{type:n,event:r}=t;e.forEach(e=>e[n]?.call(e,r))},[e]),n]}function dt(e){let{announcements:n=In,container:r,hiddenTextDescribedById:i,screenReaderInstructions:o=Fn}=e,{announce:s,announcement:c}=ot(),l=Ge(`DndLiveRegion`),[u,d]=(0,t.useState)(!1);if((0,t.useEffect)(()=>{d(!0)},[]),lt((0,t.useMemo)(()=>({onDragStart(e){let{active:t}=e;s(n.onDragStart({active:t}))},onDragMove(e){let{active:t,over:r}=e;n.onDragMove&&s(n.onDragMove({active:t,over:r}))},onDragOver(e){let{active:t,over:r}=e;s(n.onDragOver({active:t,over:r}))},onDragEnd(e){let{active:t,over:r}=e;s(n.onDragEnd({active:t,over:r}))},onDragCancel(e){let{active:t,over:r}=e;s(n.onDragCancel({active:t,over:r}))}}),[s,n])),!u)return null;let f=t.default.createElement(t.default.Fragment,null,t.default.createElement(it,{id:i,value:o.draggable}),t.default.createElement(at,{id:l,announcement:c}));return r?(0,a.createPortal)(f,r):f}function ft(){}function pt(e,n){return(0,t.useMemo)(()=>({sensor:e,options:n??{}}),[e,n])}function mt(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return(0,t.useMemo)(()=>[...n].filter(e=>e!=null),[...n])}function ht(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function gt(e,t){let n=Xe(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 _t(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function vt(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function yt(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 bt(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}function xt(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}function St(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function Ct(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:J}function wt(e){return function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return r.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})}}function Tt(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]}}else 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 Et(e,t,n){let r=Tt(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}}function Dt(e,t){t===void 0&&(t=Bn);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=W(e).getComputedStyle(e);t&&(n=Et(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 Ot(e){return Dt(e,{ignoreTransform:!0})}function kt(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function At(e,t){return t===void 0&&(t=W(e).getComputedStyle(e)),t.position===`fixed`}function jt(e,t){t===void 0&&(t=W(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`?n.test(r):!1})}function Mt(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(Fe(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!Ie(i)||Le(i)||n.includes(i))return n;let a=W(e).getComputedStyle(i);return i!==e&&jt(i,a)&&n.push(i),At(i,a)?n:r(i.parentNode)}return e?r(e):n}function Nt(e){let[t]=Mt(e,1);return t??null}function Pt(e){return!Qe||!e?null:Ne(e)?e:Pe(e)?Fe(e)||e===Re(e).scrollingElement?window:Ie(e)?e:null:null}function Ft(e){return Ne(e)?e.scrollX:e.scrollLeft}function It(e){return Ne(e)?e.scrollY:e.scrollTop}function Lt(e){return{x:Ft(e),y:It(e)}}function Rt(e){return!Qe||!e?!1:e===document.scrollingElement}function zt(e){let t={x:0,y:0},n=Rt(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}}function Bt(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=Vn);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=zt(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=Y.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=Y.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=Y.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=Y.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function Vt(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 Ht(e){return e.reduce((e,t)=>et(e,Lt(t)),J)}function Ut(e){return e.reduce((e,t)=>e+Ft(t),0)}function Wt(e){return e.reduce((e,t)=>e+It(t),0)}function Gt(e,t){if(t===void 0&&(t=Dt),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);Nt(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}function Kt(e){let{EventTarget:t}=W(e);return e instanceof t?e:Re(e)}function qt(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:!1}function Jt(e){e.preventDefault()}function Yt(e){e.stopPropagation()}function Xt(e){return!!(e&&`distance`in e)}function Zt(e){return!!(e&&`delay`in e)}function Qt(e){let{acceleration:n,activator:r=nr.Pointer,canScroll:i,draggingRect:a,enabled:o,interval:s=5,order:c=rr.TreeOrder,pointerCoordinates:l,scrollableAncestors:u,scrollableAncestorRects:d,delta:f,threshold:p}=e,m=$t({delta:f,disabled:!o}),[h,g]=Be(),_=(0,t.useRef)({x:0,y:0}),v=(0,t.useRef)({x:0,y:0}),y=(0,t.useMemo)(()=>{switch(r){case nr.Pointer:return l?{top:l.y,bottom:l.y,left:l.x,right:l.x}:null;case nr.DraggableRect:return a}},[r,a,l]),b=(0,t.useRef)(null),x=(0,t.useCallback)(()=>{let e=b.current;if(!e)return;let t=_.current.x*v.current.x,n=_.current.y*v.current.y;e.scrollBy(t,n)},[]),S=(0,t.useMemo)(()=>c===rr.TreeOrder?[...u].reverse():u,[c,u]);(0,t.useEffect)(()=>{if(!o||!u.length||!y){g();return}for(let e of S){if(i?.(e)===!1)continue;let t=d[u.indexOf(e)];if(!t)continue;let{direction:r,speed:a}=Bt(e,t,y,n,p);for(let e of[`x`,`y`])m[e][r[e]]||(a[e]=0,r[e]=0);if(a.x>0||a.y>0){g(),b.current=e,h(x,s),_.current=a,v.current=r;return}}_.current={x:0,y:0},v.current={x:0,y:0},g()},[n,x,i,g,o,s,JSON.stringify(y),JSON.stringify(m),h,u,S,d,JSON.stringify(p)])}function $t(e){let{delta:t,disabled:n}=e,r=We(t);return He(e=>{if(n||!r||!e)return ir;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[Y.Backward]:e.x[Y.Backward]||i.x===-1,[Y.Forward]:e.x[Y.Forward]||i.x===1},y:{[Y.Backward]:e.y[Y.Backward]||i.y===-1,[Y.Forward]:e.y[Y.Forward]||i.y===1}}},[n,t,r])}function en(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return He(e=>t==null?null:r??e??null,[r,t])}function tn(e,n){return(0,t.useMemo)(()=>e.reduce((e,t)=>{let{sensor:r}=t,i=r.activators.map(e=>({eventName:e.eventName,handler:n(e.handler,t)}));return[...e,...i]},[]),[e,n])}function nn(e,n){let{dragging:r,dependencies:i,config:a}=n,[o,s]=(0,t.useState)(null),{frequency:c,measure:l,strategy:u}=a,d=(0,t.useRef)(e),f=_(),p=Ve(f),m=(0,t.useCallback)(function(e){e===void 0&&(e=[]),!p.current&&s(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[p]),h=(0,t.useRef)(null),g=He(t=>{if(f&&!r)return sr;if(!t||t===sr||d.current!==e||o!=null){let t=new Map;for(let n of e){if(!n)continue;if(o&&o.length>0&&!o.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new Un(l(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,o,r,f,l]);return(0,t.useEffect)(()=>{d.current=e},[e]),(0,t.useEffect)(()=>{f||m()},[r,f]),(0,t.useEffect)(()=>{o&&o.length>0&&s(null)},[JSON.stringify(o)]),(0,t.useEffect)(()=>{f||typeof c!=`number`||h.current!==null||(h.current=setTimeout(()=>{m(),h.current=null},c))},[c,f,m,...i]),{droppableRects:g,measureDroppableContainers:m,measuringScheduled:o!=null};function _(){switch(u){case ar.Always:return!1;case ar.BeforeDragging:return r;default:return!r}}}function rn(e,t){return He(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function an(e,t){return rn(e,t)}function on(e){let{callback:n,disabled:r}=e,i=ze(n),a=(0,t.useMemo)(()=>{if(r||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(i)},[i,r]);return(0,t.useEffect)(()=>()=>a?.disconnect(),[a]),a}function sn(e){let{callback:n,disabled:r}=e,i=ze(n),a=(0,t.useMemo)(()=>{if(r||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(i)},[r]);return(0,t.useEffect)(()=>()=>a?.disconnect(),[a]),a}function cn(e){return new Un(Dt(e),e)}function ln(e,n,r){n===void 0&&(n=cn);let[i,a]=(0,t.useState)(null);function o(){a(t=>{if(!e)return null;if(e.isConnected===!1)return t??r??null;let i=n(e);return JSON.stringify(t)===JSON.stringify(i)?t:i})}let s=on({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){o();break}}}}),c=sn({callback:o});return G(()=>{o(),e?(c?.observe(e),s?.observe(document.body,{childList:!0,subtree:!0})):(c?.disconnect(),s?.disconnect())},[e]),i}function un(e){return Ct(e,rn(e))}function dn(e){let n=(0,t.useRef)(e),r=He(t=>e?t&&t!==cr&&e&&n.current&&e.parentNode===n.current.parentNode?t:Mt(e):cr,[e]);return(0,t.useEffect)(()=>{n.current=e},[e]),r}function fn(e){let[n,r]=(0,t.useState)(null),i=(0,t.useRef)(e),a=(0,t.useCallback)(e=>{let t=Pt(e.target);t&&r(e=>e?(e.set(t,Lt(t)),new Map(e)):null)},[]);return(0,t.useEffect)(()=>{let t=i.current;if(e!==t){n(t);let o=e.map(e=>{let t=Pt(e);return t?(t.addEventListener(`scroll`,a,{passive:!0}),[t,Lt(t)]):null}).filter(e=>e!=null);r(o.length?new Map(o):null),i.current=e}return()=>{n(e),n(t)};function n(e){e.forEach(e=>{Pt(e)?.removeEventListener(`scroll`,a)})}},[a,e]),(0,t.useMemo)(()=>e.length?n?Array.from(n.values()).reduce((e,t)=>et(e,t),J):Ht(e):J,[e,n])}function pn(e,n){n===void 0&&(n=[]);let r=(0,t.useRef)(null);return(0,t.useEffect)(()=>{r.current=null},n),(0,t.useEffect)(()=>{let t=e!==J;t&&!r.current&&(r.current=e),!t&&r.current&&(r.current=null)},[e]),r.current?tt(e,r.current):J}function mn(e){(0,t.useEffect)(()=>{if(!Qe)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 hn(e,n){return(0,t.useMemo)(()=>e.reduce((e,t)=>{let{eventName:r,handler:i}=t;return e[r]=e=>{i(e,n)},e},{}),[e,n])}function gn(e){return(0,t.useMemo)(()=>e?kt(e):null,[e])}function _n(e,n){n===void 0&&(n=Dt);let[r]=e,i=gn(r?W(r):null),[a,o]=(0,t.useState)(lr);function s(){o(()=>e.length?e.map(e=>Rt(e)?i:new Un(n(e),e)):lr)}let c=sn({callback:s});return G(()=>{c?.disconnect(),s(),e.forEach(e=>c?.observe(e))},[e]),a}function vn(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return Ie(t)?t:e}function yn(e){let{measure:n}=e,[r,i]=(0,t.useState)(null),a=sn({callback:(0,t.useCallback)(e=>{for(let{target:t}of e)if(Ie(t)){i(e=>{let r=n(t);return e?{...e,width:r.width,height:r.height}:r});break}},[n])}),[o,s]=Ue((0,t.useCallback)(e=>{let t=vn(e);a?.disconnect(),t&&a?.observe(t),i(t?n(t):null)},[n,a]));return(0,t.useMemo)(()=>({nodeRef:o,rect:r,setRef:s}),[r,o,s])}function bn(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new pr}}}function xn(e,t){switch(t.type){case q.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case q.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 q.DragEnd:case q.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case q.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new pr(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case q.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 pr(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case q.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new pr(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function Sn(e){let{disabled:n}=e,{active:r,activatorEvent:i,draggableNodes:a}=(0,t.useContext)(gr),o=We(i),s=We(r?.id);return(0,t.useEffect)(()=>{if(!n&&!i&&o&&s!=null){if(!Je(o)||document.activeElement===o.target)return;let e=a.get(s);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=Ze(e);if(t){t.focus();break}}})}},[i,n,a,s,o]),null}function Cn(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function wn(e){return(0,t.useMemo)(()=>({draggable:{...fr.draggable,...e?.draggable},droppable:{...fr.droppable,...e?.droppable},dragOverlay:{...fr.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function Tn(e){let{activeNode:n,measure:r,initialRect:i,config:a=!0}=e,o=(0,t.useRef)(!1),{x:s,y:c}=typeof a==`boolean`?{x:a,y:a}:a;G(()=>{if(!s&&!c||!n){o.current=!1;return}if(o.current||!i)return;let e=n?.node.current;if(!e||e.isConnected===!1)return;let t=Ct(r(e),i);if(s||(t.x=0),c||(t.y=0),o.current=!0,Math.abs(t.x)>0||Math.abs(t.y)>0){let n=Nt(e);n&&n.scrollBy({top:t.y,left:t.x})}},[n,s,c,i,r])}function En(e){let{id:n,data:r,disabled:i=!1,attributes:a}=e,o=Ge(Cr),{activators:s,activatorEvent:c,active:l,activeNodeRect:u,ariaDescribedById:d,draggableNodes:f,over:p}=(0,t.useContext)(gr),{role:m=Sr,roleDescription:h=`draggable`,tabIndex:g=0}=a??{},_=l?.id===n,v=(0,t.useContext)(_?vr:xr),[y,b]=Ue(),[x,S]=Ue(),C=hn(s,n),w=Ve(r);return G(()=>(f.set(n,{id:n,key:o,node:y,activatorNode:x,data:w}),()=>{let e=f.get(n);e&&e.key===o&&f.delete(n)}),[f,n]),{active:l,activatorEvent:c,activeNodeRect:u,attributes:(0,t.useMemo)(()=>({role:m,tabIndex:g,"aria-disabled":i,"aria-pressed":_&&m===Sr?!0:void 0,"aria-roledescription":h,"aria-describedby":d.draggable}),[i,m,g,_,h,d.draggable]),isDragging:_,listeners:i?void 0:C,node:y,over:p,setNodeRef:b,setActivatorNodeRef:S,transform:v}}function Dn(){return(0,t.useContext)(_r)}function On(e){let{data:n,disabled:r=!1,id:i,resizeObserverConfig:a}=e,o=Ge(wr),{active:s,dispatch:c,over:l,measureDroppableContainers:u}=(0,t.useContext)(gr),d=(0,t.useRef)({disabled:r}),f=(0,t.useRef)(!1),p=(0,t.useRef)(null),m=(0,t.useRef)(null),{disabled:h,updateMeasurementsFor:g,timeout:_}={...Tr,...a},v=Ve(g??i),y=sn({callback:(0,t.useCallback)(()=>{if(!f.current){f.current=!0;return}m.current!=null&&clearTimeout(m.current),m.current=setTimeout(()=>{u(Array.isArray(v.current)?v.current:[v.current]),m.current=null},_)},[_]),disabled:h||!s}),[b,x]=Ue((0,t.useCallback)((e,t)=>{y&&(t&&(y.unobserve(t),f.current=!1),e&&y.observe(e))},[y])),S=Ve(n);return(0,t.useEffect)(()=>{!y||!b.current||(y.disconnect(),f.current=!1,y.observe(b.current))},[b,y]),(0,t.useEffect)(()=>(c({type:q.RegisterDroppable,element:{id:i,key:o,disabled:r,node:b,rect:p,data:S}}),()=>c({type:q.UnregisterDroppable,key:o,id:i})),[i]),(0,t.useEffect)(()=>{r!==d.current.disabled&&(c({type:q.SetDroppableDisabled,id:i,key:o,disabled:r}),d.current.disabled=r)},[i,o,r,c]),{active:s,rect:p,isOver:l?.id===i,node:b,over:l,setNodeRef:x}}function kn(e){let{animation:n,children:r}=e,[i,a]=(0,t.useState)(null),[o,s]=(0,t.useState)(null),c=We(r);return!r&&!i&&c&&a(c),G(()=>{if(!o)return;let e=i?.key,t=i?.props.id;if(e==null||t==null){a(null);return}Promise.resolve(n(t,o)).then(()=>{a(null)})},[n,i,o]),t.default.createElement(t.default.Fragment,null,r,i?(0,t.cloneElement)(i,{ref:s}):null)}function An(e){let{children:n}=e;return t.default.createElement(gr.Provider,{value:hr},t.default.createElement(vr.Provider,{value:Er},n))}function jn(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:i}=e;return ze((e,a)=>{if(t===null)return;let o=n.get(e);if(!o)return;let s=o.node.current;if(!s)return;let c=vn(a);if(!c)return;let{transform:l}=W(a).getComputedStyle(a),u=Tt(l);if(!u)return;let d=typeof t==`function`?t:Mn(t);return Gt(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 Mn(e){let{duration:t,easing:n,sideEffects:r,keyframes:i}={...Mr,...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()}})}}function Nn(e){return(0,t.useMemo)(()=>{if(e!=null)return Nr++,Nr},[e])}var Pn,Fn,In,q,J,Ln,Rn,zn,Bn,Y,Vn,Hn,Un,Wn,X,Z,Gn,Kn,qn,Jn,Yn,Xn,Zn,Qn,$n,er,tr,nr,rr,ir,ar,or,sr,cr,lr,ur,dr,fr,pr,mr,hr,gr,_r,vr,yr,br,xr,Sr,Cr,wr,Tr,Er,Dr,Or,kr,Ar,jr,Mr,Nr,Pr,Fr=f((()=>{rt(),ct(),Pn=(0,t.createContext)(null),Fn={draggable:`
6
+ <%s key={someKey} {...props} />`,o,p,m,p),ie[p+o]=!0)}if(p=null,i!==void 0&&(r(i),p=``+i),s(n)&&(r(n.key),p=``+n.key),`key`in n)for(var h in i={},n)h!==`key`&&(i[h]=n[h]);else i=n;return p&&c(i,typeof e==`function`?e.displayName||e.name||`Unknown`:e),u(e,p,i,a(),l,d)}function f(e){p(e)?e._store&&(e._store.validated=1):typeof e==`object`&&e&&e.$$typeof===E&&(e._payload.status===`fulfilled`?p(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function p(e){return typeof e==`object`&&!!e&&e.$$typeof===h}var m=require(`react`),h=Symbol.for(`react.transitional.element`),g=Symbol.for(`react.portal`),_=Symbol.for(`react.fragment`),v=Symbol.for(`react.strict_mode`),y=Symbol.for(`react.profiler`),b=Symbol.for(`react.consumer`),x=Symbol.for(`react.context`),S=Symbol.for(`react.forward_ref`),C=Symbol.for(`react.suspense`),w=Symbol.for(`react.suspense_list`),T=Symbol.for(`react.memo`),E=Symbol.for(`react.lazy`),ee=Symbol.for(`react.activity`),D=Symbol.for(`react.client.reference`),O=m.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,k=Object.prototype.hasOwnProperty,A=Array.isArray,te=console.createTask?console.createTask:function(){return null};m={react_stack_bottom_frame:function(e){return e()}};var ne,j={},M=m.react_stack_bottom_frame.bind(m,o)(),re=te(i(o)),ie={};e.Fragment=_,e.jsx=function(e,t,n){var r=1e4>O.recentlyCreatedOwnerStacks++;return d(e,t,n,!1,r?Error(`react-stack-top-frame`):M,r?te(i(e)):re)},e.jsxs=function(e,t,n){var r=1e4>O.recentlyCreatedOwnerStacks++;return d(e,t,n,!0,r?Error(`react-stack-top-frame`):M,r?te(i(e)):re)}})()})),b=p(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=v():t.exports=y()})),x=b(),S=({schema:e,dataSource:t,className:a,data:o,loading:s,onRowClick:c,onCardClick:l,...u})=>{let d=Array.isArray(o),[f,p]=(0,_.useState)([]),[m,h]=(0,_.useState)(null),[g,v]=(0,_.useState)(d?s??!1:!1),[y,b]=(0,_.useState)(null),[S,C]=(0,_.useState)(0),w=(0,r.useDataScope)(e.bind);(0,_.useEffect)(()=>{if(!d&&!(!t?.onMutation||!e.objectName))return t.onMutation(t=>{t.resource===e.objectName&&C(e=>e+1)})},[t,e.objectName,d]),(0,_.useEffect)(()=>{d&&s!==void 0&&v(s)},[s,d]),(0,_.useEffect)(()=>{let n=!0;return(async()=>{if(!(!t||!e.objectName))try{let r=await t.getObjectSchema(e.objectName);n&&h(r)}catch(e){console.warn(`Failed to fetch object def`,e)}})(),()=>{n=!1}},[e.objectName,t]),(0,_.useEffect)(()=>{if(d)return;let r=!0;return e.objectName&&!w&&!e.data&&(async()=>{if(!(!t||typeof t.find!=`function`||!e.objectName)){r&&v(!0);try{let i=(0,n.buildExpandFields)(m?.fields),a=(0,n.extractRecords)(await t.find(e.objectName,{options:{$top:100},$filter:e.filter,...i.length>0?{$expand:i}:{}}));r&&p(a)}catch(e){console.error(`[ObjectKanban] Fetch error:`,e),r&&b(e)}finally{r&&v(!1)}}})(),()=>{r=!1}},[e.objectName,t,w,e.data,e.filter,d,m,S]);let T=(d?o:void 0)||w||e.data||f,E=(0,_.useMemo)(()=>{if(!Array.isArray(T))return[];let t=e.cardTitle||e.titleField,n=[`name`,`full_name`,`fullName`,`title`,`subject`,`label`,`display_name`,`displayName`],r=m?.titleFormat,i=m?.NAME_FIELD_KEY,a=(e,t)=>{let n=`[-\\u2013\\u2014|/·,:]`,r=!1,i=e.replace(/\{([^{}]+)\}/g,(e,n)=>{let i=t[n.trim()];return i!=null&&i!==``?(r=!0,String(i)):`\0`});return r?i.replace(RegExp(`\\s*${n}\\s*`,`g`),``).replace(RegExp(`\\s*${n}\\s*`,`g`),``).replace(RegExp(`\0`,`g`),``).replace(/\s+/g,` `).trim():``};return T.map(e=>{let o;if(t&&(o=e[t],typeof o==`string`&&(o=o.trim())),!o&&r){let t=a(r,e);t&&(o=t)}if(!o&&i){let t=e[i];typeof t==`string`?o=t.trim():t&&(o=t)}if(!o)for(let t of n){let n=e[t],r=typeof n==`string`?n.trim():n;if(r){o=r;break}}let s=e=>e>=1e6?`$${(e/1e6).toFixed(1).replace(/\.0$/,``)}M`:e>=1e3?`$${Math.round(e/1e3)}K`:`$${e}`,c=[],l=[`amount`,`value`,`deal_value`,`expected_value`,`opportunity_value`].find(t=>typeof e[t]==`number`);l&&c.push(s(e[l]));let u=[`company`,`company_name`,`account`,`account_name`,`organization`].find(t=>typeof e[t]==`string`&&e[t]);u&&(!o||!String(o).includes(e[u]))&&c.push(e[u]);let d=[`owner`,`owner_name`,`assignee`,`assignee_name`].find(t=>typeof e[t]==`string`&&e[t]);d&&c.push(`@${e[d]}`);let f=[`priority`,`severity`,`industry`,`rating`],p=[];for(let t of f){let n=e[t];if(n!=null&&n!==``&&(p.push({label:String(n),variant:`secondary`}),p.length>=2))break}return{...e,id:e.id||e._id,title:o||`Untitled`,...e.description==null&&c.length>0?{description:c.join(` · `)}:{},...!Array.isArray(e.badges)&&p.length>0?{badges:p}:{}}})},[T,e,m]),ee=(0,_.useMemo)(()=>{if(e.columns&&e.columns.length>0)if(typeof e.columns[0]==`string`){if(!e.groupBy)return e.columns.map(e=>({id:e,title:e}))}else return e.columns;if(e.groupBy&&m?.fields?.[e.groupBy]?.options)return m.fields[e.groupBy].options.map(e=>({id:e.value,title:e.label}));if(e.groupBy&&E.length>0){let t=new Set(E.map(t=>t[e.groupBy]));return Array.from(t).map(e=>({id:String(e),title:String(e)}))}return[]},[e.columns,e.groupBy,E,m]),D=e.swimlaneField||e.grouping?.fields?.[0]?.field,O={...e,data:E,columns:ee,className:a||e.className,...D?{swimlaneField:D}:{}},k=(0,r.useNavigationOverlay)({navigation:e.navigation,objectName:e.objectName,onRowClick:c??l});if(y)return(0,x.jsxs)(`div`,{className:`p-4 border border-destructive/50 rounded bg-destructive/10 text-destructive`,children:[`Error loading kanban data: `,y.message]});let A=e.objectName?`${e.objectName.charAt(0).toUpperCase()+e.objectName.slice(1).replace(/_/g,` `)} Detail`:`Card Details`;return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(Ji,{schema:{...O,onCardClick:e=>{k.handleClick(e),l?.(e)}}}),k.isOverlay&&(0,x.jsx)(i.NavigationOverlay,{...k,title:A,children:e=>(0,x.jsx)(`div`,{className:`space-y-3`,children:Object.entries(e).map(([e,t])=>(0,x.jsxs)(`div`,{className:`flex flex-col`,children:[(0,x.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wide`,children:e.replace(/_/g,` `)}),(0,x.jsx)(`span`,{className:`text-sm`,children:String(t??`—`)})]},e))})})]})},C,w=f((()=>{C=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim()})),T,E=f((()=>{T=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase()})),ee,D=f((()=>{ee=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase())})),O,k=f((()=>{D(),O=e=>{let t=ee(e);return t.charAt(0).toUpperCase()+t.slice(1)}})),A,te=f((()=>{A={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`}})),ne,j=f((()=>{ne=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1}})),M,re,ie=f((()=>{M=(0,_.createContext)({}),re=()=>(0,_.useContext)(M)})),N,P=f((()=>{te(),j(),w(),ie(),N=(0,_.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>{let{size:l=24,strokeWidth:u=2,absoluteStrokeWidth:d=!1,color:f=`currentColor`,className:p=``}=re()??{},m=r??d?Number(n??u)*24/Number(t??l):n??u;return(0,_.createElement)(`svg`,{ref:c,...A,width:t??l??A.width,height:t??l??A.height,stroke:e??f,strokeWidth:m,className:C(`lucide`,p,i),...!a&&!ne(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,_.createElement)(e,t)),...Array.isArray(a)?a:[a]])})})),F,I=f((()=>{w(),E(),k(),P(),F=(e,t)=>{let n=(0,_.forwardRef)(({className:n,...r},i)=>(0,_.createElement)(N,{ref:i,iconNode:t,className:C(`lucide-${T(O(e))}`,`lucide-${e}`,n),...r}));return n.displayName=O(e),n}})),L,R,z=f((()=>{I(),L=[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]],R=F(`check`,L)})),B,V,ae=f((()=>{I(),B=[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]],V=F(`chevron-down`,B)})),oe,se,ce=f((()=>{I(),oe=[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]],se=F(`chevron-right`,oe)})),le,H,ue=f((()=>{I(),le=[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]],H=F(`file-text`,le)})),de,fe,pe=f((()=>{I(),de=[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]],fe=F(`plus`,de)})),me,he,ge=f((()=>{I(),me=[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],he=F(`triangle-alert`,me)})),_e,ve,ye=f((()=>{I(),_e=[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]],ve=F(`x`,_e)})),U=f((()=>{I(),ge(),z(),ae(),ce(),ue(),pe(),ye(),ie(),P()}));U();var be=(...e)=>e.filter(Boolean).join(` `),xe=({columnId:e,fields:t,onSubmit:n,onCancel:r,defaultValues:a})=>{let[o,s]=_.useState(()=>{let e={};for(let n of t)e[n.name]=a?.[n.name]??n.defaultValue??``;return e}),c=_.useRef(null);_.useEffect(()=>{let e=setTimeout(()=>c.current?.focus(),0);return()=>clearTimeout(e)},[]);let l=_.useCallback((e,t)=>{s(n=>({...n,[e]:t}))},[]),u=_.useCallback(()=>{Object.values(o).some(e=>typeof e==`string`?e.trim().length>0:e!=null)&&n(e,o)},[e,o,n]);return(0,x.jsxs)(`div`,{className:`mt-2 rounded-lg border border-primary/30 bg-card p-3 space-y-2 shadow-sm`,onKeyDown:_.useCallback(e=>{e.key===`Enter`?(e.preventDefault(),u()):e.key===`Escape`&&(e.preventDefault(),r())},[u,r]),role:`form`,"aria-label":`Quick add card`,children:[t.map((t,n)=>(0,x.jsxs)(`div`,{className:`space-y-1`,children:[(0,x.jsx)(`label`,{htmlFor:`qa-${e}-${t.name}`,className:`text-xs text-muted-foreground`,children:t.label??t.name}),Se(t,o[t.name],l,n===0?c:void 0,`qa-${e}-${t.name}`)]},t.name)),(0,x.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,x.jsxs)(i.Button,{type:`button`,size:`sm`,className:`h-7 text-xs gap-1`,onClick:u,children:[(0,x.jsx)(R,{className:`h-3 w-3`}),`Save`]}),(0,x.jsxs)(i.Button,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 text-xs gap-1`,onClick:r,children:[(0,x.jsx)(ve,{className:`h-3 w-3`}),`Cancel`]})]})]})};function Se(e,t,n,r,a){let o=`text-sm h-8`;switch(e.type){case`select`:return(0,x.jsxs)(`select`,{ref:r,id:a,value:t??``,onChange:t=>n(e.name,t.target.value),className:be(o,`w-full rounded-md border border-input bg-background px-2 py-1 text-sm ring-offset-background`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`),children:[(0,x.jsx)(`option`,{value:``,children:e.placeholder??`Select ${e.label??e.name}...`}),(e.options??[]).map(e=>(0,x.jsx)(`option`,{value:e.value,children:e.label},e.value))]});case`number`:return(0,x.jsx)(i.Input,{ref:r,id:a,type:`number`,value:t??``,onChange:t=>n(e.name,t.target.value===``?``:Number(t.target.value)),placeholder:e.placeholder??`Enter ${e.label??e.name}...`,className:o});default:return(0,x.jsx)(i.Input,{ref:r,id:a,type:`text`,value:t??``,onChange:t=>n(e.name,t.target.value),placeholder:e.placeholder??`Enter ${e.label??e.name}...`,className:o})}}U();var Ce=(...e)=>e.filter(Boolean).join(` `),we=({templates:e,onSelect:t,columnId:n})=>{let[r,a]=_.useState(!1),o=_.useRef(null);return _.useEffect(()=>{if(!r)return;let e=e=>{o.current&&!o.current.contains(e.target)&&a(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[r]),(0,x.jsxs)(`div`,{ref:o,className:`relative`,onKeyDown:_.useCallback(e=>{e.key===`Escape`&&a(!1)},[]),children:[(0,x.jsxs)(i.Button,{variant:`ghost`,size:`sm`,className:`w-full mt-2 text-muted-foreground hover:text-foreground gap-1`,onClick:()=>a(e=>!e),"aria-haspopup":`listbox`,"aria-expanded":r,"aria-label":`Add card to ${n}`,children:[(0,x.jsx)(fe,{className:`h-4 w-4`}),`Add Card`,(0,x.jsx)(V,{className:Ce(`h-3 w-3 transition-transform`,r?`rotate-180`:``)})]}),r&&(0,x.jsxs)(`div`,{className:`absolute z-50 mt-1 w-full rounded-md border border-border bg-popover p-1 shadow-md`,role:`listbox`,"aria-label":`Card templates`,children:[(0,x.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent hover:text-accent-foreground transition-colors`,role:`option`,"aria-selected":!1,onClick:()=>{t(null),a(!1)},children:[(0,x.jsx)(fe,{className:`h-4 w-4 text-muted-foreground`}),(0,x.jsx)(`span`,{className:`font-mono text-xs`,children:`Custom`})]}),e.length>0&&(0,x.jsx)(`div`,{className:`my-1 h-px bg-border`,role:`separator`}),e.map(e=>(0,x.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent hover:text-accent-foreground transition-colors`,role:`option`,"aria-selected":!1,onClick:()=>{t(e),a(!1)},children:[(0,x.jsx)(H,{className:`h-4 w-4 text-muted-foreground`}),(0,x.jsx)(`span`,{className:`font-mono text-xs truncate`,children:e.name})]},e.id))]})]})},Te=`objectui:kanban-column-widths`;function Ee(e){try{let t=localStorage.getItem(e);if(t){let e=JSON.parse(t);if(e&&typeof e==`object`&&!Array.isArray(e))return e}}catch{}return{}}function De(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function Oe({columns:e,defaultWidth:t=320,minWidth:n=200,maxWidth:r=600,storageKey:i}){let a=i?`${Te}:${i}`:Te,[o,s]=(0,_.useState)(()=>Ee(a)),c=(0,_.useCallback)(e=>Math.max(n,Math.min(r,e)),[n,r]);return{getColumnWidth:(0,_.useCallback)(e=>{let n=o[e];return n==null?t:c(n)},[o,t,c]),setColumnWidth:(0,_.useCallback)((e,t)=>{let n=c(t);s(t=>{let r={...t,[e]:n};return De(a,r),r})},[c,a]),resetWidths:(0,_.useCallback)(()=>{s({});try{localStorage.removeItem(a)}catch{}},[a]),config:(0,_.useMemo)(()=>({defaultWidth:t,minWidth:n,maxWidth:r,overrides:{...o}}),[t,n,r,o])}}function ke({swimlanes:e,onCardMove:t}){let[n,r]=(0,_.useState)(null),i=(0,_.useMemo)(()=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},[e]),a=(0,_.useCallback)((e,t)=>{if(e===t)return!0;let n=i.get(t);return n?n.acceptFrom?n.acceptFrom.includes(e):!0:!1},[i]),o=(0,_.useCallback)((e,n,i,o)=>a(n,i)?(t?.({cardId:e,fromSwimlane:n,toSwimlane:i,columnId:o}),r(null),!0):!1,[a,t]),s=(0,_.useCallback)(e=>{r(e)},[]),c=(0,_.useCallback)(()=>{r(null)},[]);return{handleCrossSwimlaneMove:o,isDraggingAcrossSwimlanes:n!==null,startCrossSwimlaneDrag:s,endCrossSwimlaneDrag:c,canMoveTo:a}}function Ae({cards:e,onReorderComplete:t}){let[n,r]=(0,_.useState)(e),[i,a]=(0,_.useState)(!1);!je(n,e)&&!i&&r(e);let o=(0,_.useCallback)(()=>{r(e),a(!1)},[e]);return{reorderedCards:n,onReorder:(0,_.useCallback)((e,t)=>{r(n=>{if(e<0||t<0||e>=n.length||t>=n.length)return n;let r=[...n],[i]=r.splice(e,1);return r.splice(t,0,i),r})},[]),isDragging:i,startDrag:(0,_.useCallback)(()=>{a(!0)},[]),endDrag:(0,_.useCallback)(()=>{a(!1),r(e=>(t?.(e),e))},[t]),reset:o}}function je(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n].id!==t[n].id)return!1;return!0}function Me(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return(0,t.useMemo)(()=>e=>{n.forEach(t=>t(e))},n)}function Ne(e){let t=Object.prototype.toString.call(e);return t===`[object Window]`||t===`[object global]`}function Pe(e){return`nodeType`in e}function W(e){return e?Ne(e)?e:Pe(e)?e.ownerDocument?.defaultView??window:window:window}function Fe(e){let{Document:t}=W(e);return e instanceof t}function Ie(e){return Ne(e)?!1:e instanceof W(e).HTMLElement}function Le(e){return e instanceof W(e).SVGElement}function Re(e){return e?Ne(e)?e.document:Pe(e)?Fe(e)?e:Ie(e)||Le(e)?e.ownerDocument:document:document:document}function ze(e){let n=(0,t.useRef)(e);return G(()=>{n.current=e}),(0,t.useCallback)(function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.current==null?void 0:n.current(...t)},[])}function Be(){let e=(0,t.useRef)(null);return[(0,t.useCallback)((t,n)=>{e.current=setInterval(t,n)},[]),(0,t.useCallback)(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[])]}function Ve(e,n){n===void 0&&(n=[e]);let r=(0,t.useRef)(e);return G(()=>{r.current!==e&&(r.current=e)},n),r}function He(e,n){let r=(0,t.useRef)();return(0,t.useMemo)(()=>{let t=e(r.current);return r.current=t,t},[...n])}function Ue(e){let n=ze(e),r=(0,t.useRef)(null);return[r,(0,t.useCallback)(e=>{e!==r.current&&n?.(e,r.current),r.current=e},[])]}function We(e){let n=(0,t.useRef)();return(0,t.useEffect)(()=>{n.current=e},[e]),n.current}function Ge(e,n){return(0,t.useMemo)(()=>{if(n)return n;let t=$e[e]==null?0:$e[e]+1;return $e[e]=t,e+`-`+t},[e,n])}function Ke(e){return function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return r.reduce((t,n)=>{let r=Object.entries(n);for(let[n,i]of r){let r=t[n];r!=null&&(t[n]=r+e*i)}return t},{...t})}}function qe(e){return`clientX`in e&&`clientY`in e}function Je(e){if(!e)return!1;let{KeyboardEvent:t}=W(e.target);return t&&e instanceof t}function Ye(e){if(!e)return!1;let{TouchEvent:t}=W(e.target);return t&&e instanceof t}function Xe(e){if(Ye(e)){if(e.touches&&e.touches.length){let{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){let{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return qe(e)?{x:e.clientX,y:e.clientY}:null}function Ze(e){return e.matches(nt)?e:e.querySelector(nt)}var Qe,G,$e,et,tt,K,nt,rt=f((()=>{Qe=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,G=Qe?t.useLayoutEffect:t.useEffect,$e={},et=Ke(1),tt=Ke(-1),K=Object.freeze({Translate:{toString(e){if(!e)return;let{x:t,y:n}=e;return`translate3d(`+(t?Math.round(t):0)+`px, `+(n?Math.round(n):0)+`px, 0)`}},Scale:{toString(e){if(!e)return;let{scaleX:t,scaleY:n}=e;return`scaleX(`+t+`) scaleY(`+n+`)`}},Transform:{toString(e){if(e)return[K.Translate.toString(e),K.Scale.toString(e)].join(` `)}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+` `+n+`ms `+r}}}),nt=`a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]`}));function it(e){let{id:n,value:r}=e;return t.default.createElement(`div`,{id:n,style:st},r)}function at(e){let{id:n,announcement:r,ariaLiveType:i=`assertive`}=e;return t.default.createElement(`div`,{id:n,style:{position:`fixed`,top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0 0 0 0)`,clipPath:`inset(100%)`,whiteSpace:`nowrap`},role:`status`,"aria-live":i,"aria-atomic":!0},r)}function ot(){let[e,n]=(0,t.useState)(``);return{announce:(0,t.useCallback)(e=>{e!=null&&n(e)},[]),announcement:e}}var st,ct=f((()=>{st={display:`none`}}));function lt(e){let n=(0,t.useContext)(Pn);(0,t.useEffect)(()=>{if(!n)throw Error(`useDndMonitor must be used within a children of <DndContext>`);return n(e)},[e,n])}function ut(){let[e]=(0,t.useState)(()=>new Set),n=(0,t.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,t.useCallback)(t=>{let{type:n,event:r}=t;e.forEach(e=>e[n]?.call(e,r))},[e]),n]}function dt(e){let{announcements:n=In,container:r,hiddenTextDescribedById:i,screenReaderInstructions:o=Fn}=e,{announce:s,announcement:c}=ot(),l=Ge(`DndLiveRegion`),[u,d]=(0,t.useState)(!1);if((0,t.useEffect)(()=>{d(!0)},[]),lt((0,t.useMemo)(()=>({onDragStart(e){let{active:t}=e;s(n.onDragStart({active:t}))},onDragMove(e){let{active:t,over:r}=e;n.onDragMove&&s(n.onDragMove({active:t,over:r}))},onDragOver(e){let{active:t,over:r}=e;s(n.onDragOver({active:t,over:r}))},onDragEnd(e){let{active:t,over:r}=e;s(n.onDragEnd({active:t,over:r}))},onDragCancel(e){let{active:t,over:r}=e;s(n.onDragCancel({active:t,over:r}))}}),[s,n])),!u)return null;let f=t.default.createElement(t.default.Fragment,null,t.default.createElement(it,{id:i,value:o.draggable}),t.default.createElement(at,{id:l,announcement:c}));return r?(0,a.createPortal)(f,r):f}function ft(){}function pt(e,n){return(0,t.useMemo)(()=>({sensor:e,options:n??{}}),[e,n])}function mt(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return(0,t.useMemo)(()=>[...n].filter(e=>e!=null),[...n])}function ht(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function gt(e,t){let n=Xe(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 _t(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function vt(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function yt(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 bt(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}function xt(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}function St(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function Ct(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:J}function wt(e){return function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return r.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})}}function Tt(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]}}else 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 Et(e,t,n){let r=Tt(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}}function Dt(e,t){t===void 0&&(t=Bn);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=W(e).getComputedStyle(e);t&&(n=Et(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 Ot(e){return Dt(e,{ignoreTransform:!0})}function kt(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function At(e,t){return t===void 0&&(t=W(e).getComputedStyle(e)),t.position===`fixed`}function jt(e,t){t===void 0&&(t=W(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`?n.test(r):!1})}function Mt(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(Fe(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!Ie(i)||Le(i)||n.includes(i))return n;let a=W(e).getComputedStyle(i);return i!==e&&jt(i,a)&&n.push(i),At(i,a)?n:r(i.parentNode)}return e?r(e):n}function Nt(e){let[t]=Mt(e,1);return t??null}function Pt(e){return!Qe||!e?null:Ne(e)?e:Pe(e)?Fe(e)||e===Re(e).scrollingElement?window:Ie(e)?e:null:null}function Ft(e){return Ne(e)?e.scrollX:e.scrollLeft}function It(e){return Ne(e)?e.scrollY:e.scrollTop}function Lt(e){return{x:Ft(e),y:It(e)}}function Rt(e){return!Qe||!e?!1:e===document.scrollingElement}function zt(e){let t={x:0,y:0},n=Rt(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}}function Bt(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=Vn);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=zt(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=Y.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=Y.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=Y.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=Y.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function Vt(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 Ht(e){return e.reduce((e,t)=>et(e,Lt(t)),J)}function Ut(e){return e.reduce((e,t)=>e+Ft(t),0)}function Wt(e){return e.reduce((e,t)=>e+It(t),0)}function Gt(e,t){if(t===void 0&&(t=Dt),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);Nt(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}function Kt(e){let{EventTarget:t}=W(e);return e instanceof t?e:Re(e)}function qt(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:!1}function Jt(e){e.preventDefault()}function Yt(e){e.stopPropagation()}function Xt(e){return!!(e&&`distance`in e)}function Zt(e){return!!(e&&`delay`in e)}function Qt(e){let{acceleration:n,activator:r=nr.Pointer,canScroll:i,draggingRect:a,enabled:o,interval:s=5,order:c=rr.TreeOrder,pointerCoordinates:l,scrollableAncestors:u,scrollableAncestorRects:d,delta:f,threshold:p}=e,m=$t({delta:f,disabled:!o}),[h,g]=Be(),_=(0,t.useRef)({x:0,y:0}),v=(0,t.useRef)({x:0,y:0}),y=(0,t.useMemo)(()=>{switch(r){case nr.Pointer:return l?{top:l.y,bottom:l.y,left:l.x,right:l.x}:null;case nr.DraggableRect:return a}},[r,a,l]),b=(0,t.useRef)(null),x=(0,t.useCallback)(()=>{let e=b.current;if(!e)return;let t=_.current.x*v.current.x,n=_.current.y*v.current.y;e.scrollBy(t,n)},[]),S=(0,t.useMemo)(()=>c===rr.TreeOrder?[...u].reverse():u,[c,u]);(0,t.useEffect)(()=>{if(!o||!u.length||!y){g();return}for(let e of S){if(i?.(e)===!1)continue;let t=d[u.indexOf(e)];if(!t)continue;let{direction:r,speed:a}=Bt(e,t,y,n,p);for(let e of[`x`,`y`])m[e][r[e]]||(a[e]=0,r[e]=0);if(a.x>0||a.y>0){g(),b.current=e,h(x,s),_.current=a,v.current=r;return}}_.current={x:0,y:0},v.current={x:0,y:0},g()},[n,x,i,g,o,s,JSON.stringify(y),JSON.stringify(m),h,u,S,d,JSON.stringify(p)])}function $t(e){let{delta:t,disabled:n}=e,r=We(t);return He(e=>{if(n||!r||!e)return ir;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[Y.Backward]:e.x[Y.Backward]||i.x===-1,[Y.Forward]:e.x[Y.Forward]||i.x===1},y:{[Y.Backward]:e.y[Y.Backward]||i.y===-1,[Y.Forward]:e.y[Y.Forward]||i.y===1}}},[n,t,r])}function en(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return He(e=>t==null?null:r??e??null,[r,t])}function tn(e,n){return(0,t.useMemo)(()=>e.reduce((e,t)=>{let{sensor:r}=t,i=r.activators.map(e=>({eventName:e.eventName,handler:n(e.handler,t)}));return[...e,...i]},[]),[e,n])}function nn(e,n){let{dragging:r,dependencies:i,config:a}=n,[o,s]=(0,t.useState)(null),{frequency:c,measure:l,strategy:u}=a,d=(0,t.useRef)(e),f=_(),p=Ve(f),m=(0,t.useCallback)(function(e){e===void 0&&(e=[]),!p.current&&s(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[p]),h=(0,t.useRef)(null),g=He(t=>{if(f&&!r)return sr;if(!t||t===sr||d.current!==e||o!=null){let t=new Map;for(let n of e){if(!n)continue;if(o&&o.length>0&&!o.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new Un(l(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,o,r,f,l]);return(0,t.useEffect)(()=>{d.current=e},[e]),(0,t.useEffect)(()=>{f||m()},[r,f]),(0,t.useEffect)(()=>{o&&o.length>0&&s(null)},[JSON.stringify(o)]),(0,t.useEffect)(()=>{f||typeof c!=`number`||h.current!==null||(h.current=setTimeout(()=>{m(),h.current=null},c))},[c,f,m,...i]),{droppableRects:g,measureDroppableContainers:m,measuringScheduled:o!=null};function _(){switch(u){case ar.Always:return!1;case ar.BeforeDragging:return r;default:return!r}}}function rn(e,t){return He(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function an(e,t){return rn(e,t)}function on(e){let{callback:n,disabled:r}=e,i=ze(n),a=(0,t.useMemo)(()=>{if(r||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(i)},[i,r]);return(0,t.useEffect)(()=>()=>a?.disconnect(),[a]),a}function sn(e){let{callback:n,disabled:r}=e,i=ze(n),a=(0,t.useMemo)(()=>{if(r||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(i)},[r]);return(0,t.useEffect)(()=>()=>a?.disconnect(),[a]),a}function cn(e){return new Un(Dt(e),e)}function ln(e,n,r){n===void 0&&(n=cn);let[i,a]=(0,t.useState)(null);function o(){a(t=>{if(!e)return null;if(e.isConnected===!1)return t??r??null;let i=n(e);return JSON.stringify(t)===JSON.stringify(i)?t:i})}let s=on({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){o();break}}}}),c=sn({callback:o});return G(()=>{o(),e?(c?.observe(e),s?.observe(document.body,{childList:!0,subtree:!0})):(c?.disconnect(),s?.disconnect())},[e]),i}function un(e){return Ct(e,rn(e))}function dn(e){let n=(0,t.useRef)(e),r=He(t=>e?t&&t!==cr&&e&&n.current&&e.parentNode===n.current.parentNode?t:Mt(e):cr,[e]);return(0,t.useEffect)(()=>{n.current=e},[e]),r}function fn(e){let[n,r]=(0,t.useState)(null),i=(0,t.useRef)(e),a=(0,t.useCallback)(e=>{let t=Pt(e.target);t&&r(e=>e?(e.set(t,Lt(t)),new Map(e)):null)},[]);return(0,t.useEffect)(()=>{let t=i.current;if(e!==t){n(t);let o=e.map(e=>{let t=Pt(e);return t?(t.addEventListener(`scroll`,a,{passive:!0}),[t,Lt(t)]):null}).filter(e=>e!=null);r(o.length?new Map(o):null),i.current=e}return()=>{n(e),n(t)};function n(e){e.forEach(e=>{Pt(e)?.removeEventListener(`scroll`,a)})}},[a,e]),(0,t.useMemo)(()=>e.length?n?Array.from(n.values()).reduce((e,t)=>et(e,t),J):Ht(e):J,[e,n])}function pn(e,n){n===void 0&&(n=[]);let r=(0,t.useRef)(null);return(0,t.useEffect)(()=>{r.current=null},n),(0,t.useEffect)(()=>{let t=e!==J;t&&!r.current&&(r.current=e),!t&&r.current&&(r.current=null)},[e]),r.current?tt(e,r.current):J}function mn(e){(0,t.useEffect)(()=>{if(!Qe)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 hn(e,n){return(0,t.useMemo)(()=>e.reduce((e,t)=>{let{eventName:r,handler:i}=t;return e[r]=e=>{i(e,n)},e},{}),[e,n])}function gn(e){return(0,t.useMemo)(()=>e?kt(e):null,[e])}function _n(e,n){n===void 0&&(n=Dt);let[r]=e,i=gn(r?W(r):null),[a,o]=(0,t.useState)(lr);function s(){o(()=>e.length?e.map(e=>Rt(e)?i:new Un(n(e),e)):lr)}let c=sn({callback:s});return G(()=>{c?.disconnect(),s(),e.forEach(e=>c?.observe(e))},[e]),a}function vn(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return Ie(t)?t:e}function yn(e){let{measure:n}=e,[r,i]=(0,t.useState)(null),a=sn({callback:(0,t.useCallback)(e=>{for(let{target:t}of e)if(Ie(t)){i(e=>{let r=n(t);return e?{...e,width:r.width,height:r.height}:r});break}},[n])}),[o,s]=Ue((0,t.useCallback)(e=>{let t=vn(e);a?.disconnect(),t&&a?.observe(t),i(t?n(t):null)},[n,a]));return(0,t.useMemo)(()=>({nodeRef:o,rect:r,setRef:s}),[r,o,s])}function bn(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new pr}}}function xn(e,t){switch(t.type){case q.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case q.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 q.DragEnd:case q.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case q.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new pr(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case q.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 pr(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case q.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new pr(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function Sn(e){let{disabled:n}=e,{active:r,activatorEvent:i,draggableNodes:a}=(0,t.useContext)(gr),o=We(i),s=We(r?.id);return(0,t.useEffect)(()=>{if(!n&&!i&&o&&s!=null){if(!Je(o)||document.activeElement===o.target)return;let e=a.get(s);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=Ze(e);if(t){t.focus();break}}})}},[i,n,a,s,o]),null}function Cn(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function wn(e){return(0,t.useMemo)(()=>({draggable:{...fr.draggable,...e?.draggable},droppable:{...fr.droppable,...e?.droppable},dragOverlay:{...fr.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function Tn(e){let{activeNode:n,measure:r,initialRect:i,config:a=!0}=e,o=(0,t.useRef)(!1),{x:s,y:c}=typeof a==`boolean`?{x:a,y:a}:a;G(()=>{if(!s&&!c||!n){o.current=!1;return}if(o.current||!i)return;let e=n?.node.current;if(!e||e.isConnected===!1)return;let t=Ct(r(e),i);if(s||(t.x=0),c||(t.y=0),o.current=!0,Math.abs(t.x)>0||Math.abs(t.y)>0){let n=Nt(e);n&&n.scrollBy({top:t.y,left:t.x})}},[n,s,c,i,r])}function En(e){let{id:n,data:r,disabled:i=!1,attributes:a}=e,o=Ge(Cr),{activators:s,activatorEvent:c,active:l,activeNodeRect:u,ariaDescribedById:d,draggableNodes:f,over:p}=(0,t.useContext)(gr),{role:m=Sr,roleDescription:h=`draggable`,tabIndex:g=0}=a??{},_=l?.id===n,v=(0,t.useContext)(_?vr:xr),[y,b]=Ue(),[x,S]=Ue(),C=hn(s,n),w=Ve(r);return G(()=>(f.set(n,{id:n,key:o,node:y,activatorNode:x,data:w}),()=>{let e=f.get(n);e&&e.key===o&&f.delete(n)}),[f,n]),{active:l,activatorEvent:c,activeNodeRect:u,attributes:(0,t.useMemo)(()=>({role:m,tabIndex:g,"aria-disabled":i,"aria-pressed":_&&m===Sr?!0:void 0,"aria-roledescription":h,"aria-describedby":d.draggable}),[i,m,g,_,h,d.draggable]),isDragging:_,listeners:i?void 0:C,node:y,over:p,setNodeRef:b,setActivatorNodeRef:S,transform:v}}function Dn(){return(0,t.useContext)(_r)}function On(e){let{data:n,disabled:r=!1,id:i,resizeObserverConfig:a}=e,o=Ge(wr),{active:s,dispatch:c,over:l,measureDroppableContainers:u}=(0,t.useContext)(gr),d=(0,t.useRef)({disabled:r}),f=(0,t.useRef)(!1),p=(0,t.useRef)(null),m=(0,t.useRef)(null),{disabled:h,updateMeasurementsFor:g,timeout:_}={...Tr,...a},v=Ve(g??i),y=sn({callback:(0,t.useCallback)(()=>{if(!f.current){f.current=!0;return}m.current!=null&&clearTimeout(m.current),m.current=setTimeout(()=>{u(Array.isArray(v.current)?v.current:[v.current]),m.current=null},_)},[_]),disabled:h||!s}),[b,x]=Ue((0,t.useCallback)((e,t)=>{y&&(t&&(y.unobserve(t),f.current=!1),e&&y.observe(e))},[y])),S=Ve(n);return(0,t.useEffect)(()=>{!y||!b.current||(y.disconnect(),f.current=!1,y.observe(b.current))},[b,y]),(0,t.useEffect)(()=>(c({type:q.RegisterDroppable,element:{id:i,key:o,disabled:r,node:b,rect:p,data:S}}),()=>c({type:q.UnregisterDroppable,key:o,id:i})),[i]),(0,t.useEffect)(()=>{r!==d.current.disabled&&(c({type:q.SetDroppableDisabled,id:i,key:o,disabled:r}),d.current.disabled=r)},[i,o,r,c]),{active:s,rect:p,isOver:l?.id===i,node:b,over:l,setNodeRef:x}}function kn(e){let{animation:n,children:r}=e,[i,a]=(0,t.useState)(null),[o,s]=(0,t.useState)(null),c=We(r);return!r&&!i&&c&&a(c),G(()=>{if(!o)return;let e=i?.key,t=i?.props.id;if(e==null||t==null){a(null);return}Promise.resolve(n(t,o)).then(()=>{a(null)})},[n,i,o]),t.default.createElement(t.default.Fragment,null,r,i?(0,t.cloneElement)(i,{ref:s}):null)}function An(e){let{children:n}=e;return t.default.createElement(gr.Provider,{value:hr},t.default.createElement(vr.Provider,{value:Er},n))}function jn(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:i}=e;return ze((e,a)=>{if(t===null)return;let o=n.get(e);if(!o)return;let s=o.node.current;if(!s)return;let c=vn(a);if(!c)return;let{transform:l}=W(a).getComputedStyle(a),u=Tt(l);if(!u)return;let d=typeof t==`function`?t:Mn(t);return Gt(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 Mn(e){let{duration:t,easing:n,sideEffects:r,keyframes:i}={...Mr,...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()}})}}function Nn(e){return(0,t.useMemo)(()=>{if(e!=null)return Nr++,Nr},[e])}var Pn,Fn,In,q,J,Ln,Rn,zn,Bn,Y,Vn,Hn,Un,Wn,X,Z,Gn,Kn,qn,Jn,Yn,Xn,Zn,Qn,$n,er,tr,nr,rr,ir,ar,or,sr,cr,lr,ur,dr,fr,pr,mr,hr,gr,_r,vr,yr,br,xr,Sr,Cr,wr,Tr,Er,Dr,Or,kr,Ar,jr,Mr,Nr,Pr,Fr=f((()=>{rt(),ct(),Pn=(0,t.createContext)(null),Fn={draggable:`
7
7
  To pick up a draggable item, press the space bar.
8
8
  While dragging, use the arrow keys to move the item.
9
9
  Press space again to drop the item in its new position, or press escape to cancel.
10
- `},In={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(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`})(q||={}),J=Object.freeze({x:0,y:0}),Ln=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=yt(t),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=yt(r),o=i.reduce((e,t,r)=>e+ht(n[r],t),0),s=Number((o/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:s}})}}return a.sort(_t)},Rn=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=xt(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(vt)},zn=wt(1),Bn={ignoreTransform:!1},(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(Y||={}),Vn={x:.2,y:.2},Hn=[[`x`,[`left`,`right`],Ut],[`y`,[`top`,`bottom`],Wt]],Un=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=Mt(t),r=Ht(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of Hn)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})}},Wn=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(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(X||={}),(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})(Z||={}),Gn={start:[Z.Space,Z.Enter],cancel:[Z.Esc],end:[Z.Space,Z.Enter,Z.Tab]},Kn=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case Z.Right:return{...n,x:n.x+25};case Z.Left:return{...n,x:n.x-25};case Z.Down:return{...n,y:n.y+25};case Z.Up:return{...n,y:n.y-25}}},qn=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 Wn(Re(t)),this.windowListeners=new Wn(W(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(X.Resize,this.handleCancel),this.windowListeners.add(X.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(X.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&Gt(n),t(J)}handleKeyDown(e){if(Je(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=Gn,coordinateGetter:a=Kn,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}:J;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=tt(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}=zt(n),p=Vt(n),m={x:Math.min(i===Z.Right?p.right-p.width/2:p.right,Math.max(i===Z.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===Z.Down?p.bottom-p.height/2:p.bottom,Math.max(i===Z.Down?p.top:p.top+p.height/2,u.y))},h=i===Z.Right&&!s||i===Z.Left&&!c,g=i===Z.Down&&!l||i===Z.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===Z.Right&&e<=d.x||i===Z.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}a?r.x=n.scrollLeft-e:r.x=i===Z.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}else if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===Z.Down&&e<=d.y||i===Z.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}a?r.y=n.scrollTop-e:r.y=i===Z.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,et(tt(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()}},qn.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=Gn,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}}],Jn=class{constructor(e,t,n){n===void 0&&(n=Kt(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=Re(i),this.documentListeners=new Wn(this.document),this.listeners=new Wn(n),this.windowListeners=new Wn(W(i)),this.initialCoordinates=Xe(r)??J,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(X.Resize,this.handleCancel),this.windowListeners.add(X.DragStart,Jt),this.windowListeners.add(X.VisibilityChange,this.handleCancel),this.windowListeners.add(X.ContextMenu,Jt),this.documentListeners.add(X.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Zt(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(Xt(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(X.Click,Yt,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(X.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=Xe(e)??J,s=tt(n,o);if(!t&&a){if(Xt(a)){if(a.tolerance!=null&&qt(s,a.tolerance))return this.handleCancel();if(qt(s,a.distance))return this.handleStart()}if(Zt(a)&&qt(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===Z.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},Yn={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},Xn=class extends Jn{constructor(e){let{event:t}=e,n=Re(t.target);super(e,Yn,n)}},Xn.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}],Zn={move:{name:`mousemove`},end:{name:`mouseup`}},(function(e){e[e.RightClick=2]=`RightClick`})(Qn||={}),$n=class extends Jn{constructor(e){super(e,Zn,Re(e.event.target))}},$n.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===Qn.RightClick?!1:(r?.({event:n}),!0)}}],er={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},tr=class extends Jn{constructor(e){super(e,er)}static setup(){return window.addEventListener(er.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(er.move.name,e)};function e(){}}},tr.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)}}],(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(nr||={}),(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})(rr||={}),ir={x:{[Y.Backward]:!1,[Y.Forward]:!1},y:{[Y.Backward]:!1,[Y.Forward]:!1}},(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(ar||={}),(function(e){e.Optimized=`optimized`})(or||={}),sr=new Map,cr=[],lr=[],ur=[{sensor:Xn,options:{}},{sensor:qn,options:{}}],dr={current:{}},fr={draggable:{measure:Ot},droppable:{measure:Ot,strategy:ar.WhileDragging,frequency:or.Optimized},dragOverlay:{measure:Dt}},pr=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}},mr={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new pr,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:ft},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:fr,measureDroppableContainers:ft,windowRect:null,measuringScheduled:!1},hr={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:ft,draggableNodes:new Map,over:null,measureDroppableContainers:ft},gr=(0,t.createContext)(hr),_r=(0,t.createContext)(mr),vr=(0,t.createContext)({...J,scaleX:1,scaleY:1}),(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(yr||={}),br=(0,t.memo)(function(e){let{id:n,accessibility:r,autoScroll:i=!0,children:o,sensors:s=ur,collisionDetection:c=Rn,measuring:l,modifiers:u,...d}=e,[f,p]=(0,t.useReducer)(xn,void 0,bn),[m,h]=ut(),[g,_]=(0,t.useState)(yr.Uninitialized),v=g===yr.Initialized,{draggable:{active:y,nodes:b,translate:x},droppable:{containers:S}}=f,C=y==null?null:b.get(y),w=(0,t.useRef)({initial:null,translated:null}),T=(0,t.useMemo)(()=>y==null?null:{id:y,data:C?.data??dr,rect:w},[y,C]),E=(0,t.useRef)(null),[ee,D]=(0,t.useState)(null),[O,te]=(0,t.useState)(null),k=Ve(d,Object.values(d)),ne=Ge(`DndDescribedBy`,n),re=(0,t.useMemo)(()=>S.getEnabled(),[S]),A=wn(l),{droppableRects:j,measureDroppableContainers:ie,measuringScheduled:ae}=nn(re,{dragging:v,dependencies:[x.x,x.y],config:A.droppable}),M=en(b,y),N=(0,t.useMemo)(()=>O?Xe(O):null,[O]),P=De(),F=an(M,A.draggable.measure);Tn({activeNode:y==null?null:b.get(y),config:P.layoutShiftCompensation,initialRect:F,measure:A.draggable.measure});let I=ln(M,A.draggable.measure,F),L=ln(M?M.parentElement:null),R=(0,t.useRef)({activatorEvent:null,active:null,activeNode:M,collisionRect:null,collisions:null,droppableRects:j,draggableNodes:b,draggingNode:null,draggingNodeRect:null,droppableContainers:S,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),z=S.getNodeFor(R.current.over?.id),B=yn({measure:A.dragOverlay.measure}),oe=B.nodeRef.current??M,V=v?B.rect??I:null,se=!!(B.nodeRef.current&&B.rect),ce=un(se?null:I),le=gn(oe?W(oe):null),H=dn(v?z??M:null),ue=_n(H),de=Cn(u,{transform:{x:x.x-ce.x,y:x.y-ce.y,scaleX:1,scaleY:1},activatorEvent:O,active:T,activeNodeRect:I,containerNodeRect:L,draggingNodeRect:V,over:R.current.over,overlayNodeRect:B.rect,scrollableAncestors:H,scrollableAncestorRects:ue,windowRect:le}),fe=N?et(N,x):null,pe=fn(H),me=pn(pe),he=pn(pe,[I]),ge=et(de,me),_e=V?zn(V,de):null,ve=T&&_e?c({active:T,collisionRect:_e,droppableRects:j,droppableContainers:re,pointerCoordinates:fe}):null,ye=bt(ve,`id`),[U,be]=(0,t.useState)(null),xe=St(se?de:et(de,he),U?.rect??null,I),Se=(0,t.useRef)(null),Ce=(0,t.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(E.current==null)return;let i=b.get(E.current);if(!i)return;let o=e.nativeEvent;Se.current=new n({active:E.current,activeNode:i,event:o,options:r,context:R,onAbort(e){if(!b.get(e))return;let{onDragAbort:t}=k.current,n={id:e};t?.(n),m({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!b.get(e))return;let{onDragPending:i}=k.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),m({type:`onDragPending`,event:a})},onStart(e){let t=E.current;if(t==null)return;let n=b.get(t);if(!n)return;let{onDragStart:r}=k.current,i={activatorEvent:o,active:{id:t,data:n.data,rect:w}};(0,a.unstable_batchedUpdates)(()=>{r?.(i),_(yr.Initializing),p({type:q.DragStart,initialCoordinates:e,active:t}),m({type:`onDragStart`,event:i}),D(Se.current),te(o)})},onMove(e){p({type:q.DragMove,coordinates:e})},onEnd:s(q.DragEnd),onCancel:s(q.DragCancel)});function s(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:i}=R.current,s=null;if(t&&i){let{cancelDrop:a}=k.current;s={activatorEvent:o,active:t,collisions:n,delta:i,over:r},e===q.DragEnd&&typeof a==`function`&&await Promise.resolve(a(s))&&(e=q.DragCancel)}E.current=null,(0,a.unstable_batchedUpdates)(()=>{p({type:e}),_(yr.Uninitialized),be(null),D(null),te(null),Se.current=null;let t=e===q.DragEnd?`onDragEnd`:`onDragCancel`;if(s){let e=k.current[t];e?.(s),m({type:t,event:s})}})}}},[b]),we=tn(s,(0,t.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=b.get(r);if(E.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},E.current=r,Ce(n,t))},[b,Ce]));mn(s),G(()=>{I&&g===yr.Initializing&&_(yr.Initialized)},[I,g]),(0,t.useEffect)(()=>{let{onDragMove:e}=k.current,{active:t,activatorEvent:n,collisions:r,over:i}=R.current;if(!t||!n)return;let o={active:t,activatorEvent:n,collisions:r,delta:{x:ge.x,y:ge.y},over:i};(0,a.unstable_batchedUpdates)(()=>{e?.(o),m({type:`onDragMove`,event:o})})},[ge.x,ge.y]),(0,t.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:i}=R.current;if(!e||E.current==null||!t||!i)return;let{onDragOver:o}=k.current,s=r.get(ye),c=s&&s.rect.current?{id:s.id,rect:s.rect.current,data:s.data,disabled:s.disabled}:null,l={active:e,activatorEvent:t,collisions:n,delta:{x:i.x,y:i.y},over:c};(0,a.unstable_batchedUpdates)(()=>{be(c),o?.(l),m({type:`onDragOver`,event:l})})},[ye]),G(()=>{R.current={activatorEvent:O,active:T,activeNode:M,collisionRect:_e,collisions:ve,droppableRects:j,draggableNodes:b,draggingNode:oe,draggingNodeRect:V,droppableContainers:S,over:U,scrollableAncestors:H,scrollAdjustedTranslate:ge},w.current={initial:V,translated:_e}},[T,M,ve,_e,b,oe,V,j,S,U,H,ge]),Qt({...P,delta:x,draggingRect:_e,pointerCoordinates:fe,scrollableAncestors:H,scrollableAncestorRects:ue});let Te=(0,t.useMemo)(()=>({active:T,activeNode:M,activeNodeRect:I,activatorEvent:O,collisions:ve,containerNodeRect:L,dragOverlay:B,draggableNodes:b,droppableContainers:S,droppableRects:j,over:U,measureDroppableContainers:ie,scrollableAncestors:H,scrollableAncestorRects:ue,measuringConfiguration:A,measuringScheduled:ae,windowRect:le}),[T,M,I,O,ve,L,B,b,S,j,U,ie,H,ue,A,ae,le]),Ee=(0,t.useMemo)(()=>({activatorEvent:O,activators:we,active:T,activeNodeRect:I,ariaDescribedById:{draggable:ne},dispatch:p,draggableNodes:b,over:U,measureDroppableContainers:ie}),[O,we,T,I,p,ne,b,U,ie]);return t.default.createElement(Pn.Provider,{value:h},t.default.createElement(gr.Provider,{value:Ee},t.default.createElement(_r.Provider,{value:Te},t.default.createElement(vr.Provider,{value:xe},o)),t.default.createElement(Sn,{disabled:r?.restoreFocus===!1})),t.default.createElement(dt,{...r,hiddenTextDescribedById:ne}));function De(){let e=ee?.autoScrollEnabled===!1,t=typeof i==`object`?i.enabled===!1:i===!1,n=v&&!e&&!t;return typeof i==`object`?{...i,enabled:n}:{enabled:n}}}),xr=(0,t.createContext)(null),Sr=`button`,Cr=`Draggable`,wr=`Droppable`,Tr={timeout:25},Er={x:0,y:0,scaleX:1,scaleY:1},Dr={position:`fixed`,touchAction:`none`},Or=e=>Je(e)?`transform 250ms ease`:void 0,kr=(0,t.forwardRef)((e,n)=>{let{as:r,activatorEvent:i,adjustScale:a,children:o,className:s,rect:c,style:l,transform:u,transition:d=Or}=e;if(!c)return null;let f=a?u:{...u,scaleX:1,scaleY:1},p={...Dr,width:c.width,height:c.height,top:c.top,left:c.left,transform:K.Transform.toString(f),transformOrigin:a&&i?gt(i,c):void 0,transition:typeof d==`function`?d(i):d,...l};return t.default.createElement(r,{className:s,style:p,ref:n},o)}),Ar=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)}},jr=e=>{let{transform:{initial:t,final:n}}=e;return[{transform:K.Transform.toString(t)},{transform:K.Transform.toString(n)}]},Mr={duration:250,easing:`ease`,keyframes:jr,sideEffects:Ar({styles:{active:{opacity:`0`}}})},Nr=0,Pr=t.default.memo(e=>{let{adjustScale:n=!1,children:r,dropAnimation:i,style:a,transition:o,modifiers:s,wrapperElement:c=`div`,className:l,zIndex:u=999}=e,{activatorEvent:d,active:f,activeNodeRect:p,containerNodeRect:m,draggableNodes:h,droppableContainers:g,dragOverlay:_,over:v,measuringConfiguration:y,scrollableAncestors:b,scrollableAncestorRects:x,windowRect:S}=Dn(),C=(0,t.useContext)(vr),w=Nn(f?.id),T=Cn(s,{activatorEvent:d,active:f,activeNodeRect:p,containerNodeRect:m,draggingNodeRect:_.rect,over:v,overlayNodeRect:_.rect,scrollableAncestors:b,scrollableAncestorRects:x,transform:C,windowRect:S}),E=rn(p),ee=jn({config:i,draggableNodes:h,droppableContainers:g,measuringConfiguration:y}),D=E?_.setRef:void 0;return t.default.createElement(An,null,t.default.createElement(kn,{animation:ee},f&&w?t.default.createElement(kr,{key:w,id:f.id,ref:D,as:c,activatorEvent:d,adjustScale:n,className:l,transition:o,rect:E,style:{zIndex:u,...a},transform:T},r):null))})}));function Ir(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function Lr(e,t){return e.reduce((e,n,r)=>{let i=t.get(n);return i&&(e[r]=i),e},Array(e.length))}function Rr(e){return e!==null&&e>=0}function zr(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 Br(e){return typeof e==`boolean`?{draggable:e,droppable:e}:e}function Vr(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}function Hr(e){let{children:n,id:r,items:i,strategy:a=Kr,disabled:o=!1}=e,{active:s,dragOverlay:c,droppableRects:l,over:u,measureDroppableContainers:d}=Dn(),f=Ge(Yr,r),p=c.rect!==null,m=(0,t.useMemo)(()=>i.map(e=>typeof e==`object`&&`id`in e?e.id:e),[i]),h=s!=null,g=s?m.indexOf(s.id):-1,_=u?m.indexOf(u.id):-1,v=(0,t.useRef)(m),y=!zr(m,v.current),b=_!==-1&&g===-1||y,x=Br(o);G(()=>{y&&h&&d(m)},[y,m,h,d]),(0,t.useEffect)(()=>{v.current=m},[m]);let S=(0,t.useMemo)(()=>({activeIndex:g,containerId:f,disabled:x,disableTransforms:b,items:m,overIndex:_,useDragOverlay:p,sortedRects:Lr(m,l),strategy:a}),[g,f,x.draggable,x.droppable,b,m,_,l,p,a]);return t.default.createElement(Xr.Provider,{value:S},n)}function Ur(e){let{disabled:n,index:r,node:i,rect:a}=e,[o,s]=(0,t.useState)(null),c=(0,t.useRef)(r);return G(()=>{if(!n&&r!==c.current&&i.current){let e=a.current;if(e){let t=Dt(i.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)&&s(n)}}r!==c.current&&(c.current=r)},[n,r,i,a]),(0,t.useEffect)(()=>{o&&s(null)},[o]),o}function Wr(e){let{animateLayoutChanges:n=Qr,attributes:r,disabled:i,data:a,getNewIndex:o=Zr,id:s,strategy:c,resizeObserverConfig:l,transition:u=$r}=e,{items:d,containerId:f,activeIndex:p,disabled:m,disableTransforms:h,sortedRects:g,overIndex:_,useDragOverlay:v,strategy:y}=(0,t.useContext)(Xr),b=Gr(i,m),x=d.indexOf(s),S=(0,t.useMemo)(()=>({sortable:{containerId:f,index:x,items:d},...a}),[f,a,x,d]),C=(0,t.useMemo)(()=>d.slice(d.indexOf(s)),[d,s]),{rect:w,node:T,isOver:E,setNodeRef:ee}=On({id:s,data:S,disabled:b.droppable,resizeObserverConfig:{updateMeasurementsFor:C,...l}}),{active:D,activatorEvent:O,activeNodeRect:te,attributes:k,setNodeRef:ne,listeners:re,isDragging:A,over:j,setActivatorNodeRef:ie,transform:ae}=En({id:s,data:S,attributes:{...ni,...r},disabled:b.draggable}),M=Me(ee,ne),N=!!D,P=N&&!h&&Rr(p)&&Rr(_),F=!v&&A,I=P?(F&&P?ae:null)??(c??y)({rects:g,activeNodeRect:te,activeIndex:p,overIndex:_,index:x}):null,L=Rr(p)&&Rr(_)?o({id:s,items:d,activeIndex:p,overIndex:_}):x,R=D?.id,z=(0,t.useRef)({activeId:R,items:d,newIndex:L,containerId:f}),B=d!==z.current.items,oe=n({active:D,containerId:f,isDragging:A,isSorting:N,id:s,index:x,items:d,newIndex:z.current.newIndex,previousItems:z.current.items,previousContainerId:z.current.containerId,transition:u,wasDragging:z.current.activeId!=null}),V=Ur({disabled:!oe,index:x,node:T,rect:w});return(0,t.useEffect)(()=>{N&&z.current.newIndex!==L&&(z.current.newIndex=L),f!==z.current.containerId&&(z.current.containerId=f),d!==z.current.items&&(z.current.items=d)},[N,L,f,d]),(0,t.useEffect)(()=>{if(R===z.current.activeId)return;if(R!=null&&z.current.activeId==null){z.current.activeId=R;return}let e=setTimeout(()=>{z.current.activeId=R},50);return()=>clearTimeout(e)},[R]),{active:D,activeIndex:p,attributes:k,data:S,rect:w,index:x,newIndex:L,items:d,isOver:E,isSorting:N,isDragging:A,listeners:re,node:T,overIndex:_,over:j,setNodeRef:M,setActivatorNodeRef:ie,setDroppableNodeRef:ee,setDraggableNodeRef:ne,transform:V??I,transition:se()};function se(){if(V||B&&z.current.newIndex===x)return ti;if(!(F&&!Je(O)||!u)&&(N||oe))return K.Transition.toString({...u,property:ei})}}function Gr(e,t){return typeof e==`boolean`?{draggable:e,droppable:!1}:{draggable:e?.draggable??t.draggable,droppable:e?.droppable??t.droppable}}var Kr,qr,Jr,Yr,Xr,Zr,Qr,$r,ei,ti,ni,ri=f((()=>{Fr(),rt(),Kr=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e,a=Ir(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}},qr={scaleX:1,scaleY:1},Jr=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,...qr}:null}let s=Vr(i,r,t);return r>t&&r<=a?{x:0,y:-o.height-s,...qr}:r<t&&r>=a?{x:0,y:o.height+s,...qr}:{x:0,y:0,...qr}},Yr=`Sortable`,Xr=t.default.createContext({activeIndex:-1,containerId:Yr,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:Kr,disabled:{draggable:!1,droppable:!1}}),Zr=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return Ir(n,r,i).indexOf(t)},Qr=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},$r={duration:200,easing:`ease`},ei=`transform`,ti=K.Transition.toString({property:ei,duration:0,easing:`linear`}),ni={roleDescription:`sortable`},Z.Down,Z.Right,Z.Up,Z.Left})),ii=m({default:()=>ui});function ai(e,t){if(!t||t.length===0)return{};for(let n of t){let t=e[n.field];if(t==null)continue;let r=!1,i=String(t);switch(n.operator){case`equals`:r=i===String(n.value);break;case`not_equals`:r=i!==String(n.value);break;case`contains`:r=i.toLowerCase().includes(String(n.value).toLowerCase());break;case`in`:r=Array.isArray(n.value)&&n.value.includes(i);break}if(r)return{...n.backgroundColor?{backgroundColor:n.backgroundColor}:{},...n.borderColor?{borderColor:n.borderColor}:{}}}return{}}function oi({card:e,onCardClick:t,conditionalFormatting:n}){let{attributes:r,listeners:a,setNodeRef:o,transform:s,transition:c,isDragging:l}=Wr({id:e.id}),u={transform:K.Transform.toString(s),transition:c,opacity:l?.5:void 0},d=ai(e,n);return(0,Q.jsx)(`div`,{ref:o,style:u,...r,...a,role:`listitem`,"aria-label":e.title,onClick:()=>t?.(e),children:(0,Q.jsxs)(i.Card,{className:`mb-2 cursor-grab active:cursor-grabbing border-border border-l-4 border-l-primary/40 bg-card/60 hover:border-primary/40 hover:shadow-lg hover:shadow-primary/10 transition-all duration-300 group touch-manipulation`,style:d,children:[e.coverImage&&(0,Q.jsx)(`div`,{className:`w-full h-32 overflow-hidden rounded-t-lg`,children:(0,Q.jsx)(`img`,{src:e.coverImage,alt:``,className:`w-full h-full object-cover`,loading:`lazy`})}),(0,Q.jsxs)(i.CardHeader,{className:`p-2 sm:p-4`,children:[(0,Q.jsx)(i.CardTitle,{className:`text-xs sm:text-sm font-medium font-mono tracking-tight text-foreground group-hover:text-primary transition-colors`,children:e.title}),e.description&&(0,Q.jsx)(i.CardDescription,{className:`text-xs text-muted-foreground font-mono line-clamp-2 sm:line-clamp-none`,children:e.description})]}),e.badges&&e.badges.length>0&&(0,Q.jsx)(i.CardContent,{className:`p-2 sm:p-4 pt-0`,children:(0,Q.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.badges.map((e,t)=>(0,Q.jsx)(i.Badge,{variant:e.variant||`default`,className:`text-xs`,children:e.label},t))})})]})})}function si({columnId:e,onAdd:t}){let[n,r]=_.useState(!1),[a,o]=_.useState(``),s=_.useRef(null),c=()=>{let n=a.trim();n&&(t(e,n),o(``)),r(!1)};return n?(0,Q.jsx)(`div`,{className:`mt-2 space-y-2`,children:(0,Q.jsx)(i.Input,{ref:s,value:a,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),c()):e.key===`Escape`&&(o(``),r(!1))},onBlur:c,placeholder:`Enter card title...`,className:`text-sm`,autoFocus:!0})}):(0,Q.jsxs)(i.Button,{variant:`ghost`,size:`sm`,className:`w-full mt-2 text-muted-foreground hover:text-foreground`,onClick:()=>{r(!0),setTimeout(()=>s.current?.focus(),0)},children:[(0,Q.jsx)(fe,{className:`h-4 w-4 mr-1`}),`Add Card`]})}function ci({column:e,cards:t,onCardClick:n,quickAdd:r,onQuickAdd:a,conditionalFormatting:o}){let s=t||[],{setNodeRef:c}=Wr({id:e.id,data:{type:`column`}}),l=e.limit&&s.length>=e.limit;return(0,Q.jsxs)(`div`,{ref:c,role:`group`,"aria-label":e.title,className:fi(`flex flex-col w-[85vw] sm:w-80 flex-shrink-0 rounded-lg border border-border bg-card/20 backdrop-blur-sm shadow-xl snap-start`,e.className),children:[(0,Q.jsx)(`div`,{className:`p-3 sm:p-4 border-b border-border/50 bg-muted/30 rounded-t-lg`,children:(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsx)(`h3`,{id:`kanban-col-${e.id}`,className:`font-mono text-xs sm:text-sm font-semibold tracking-wider text-primary/90 uppercase truncate`,children:e.title}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(i.Badge,{variant:`secondary`,className:`text-xs font-mono tabular-nums`,children:[s.length,e.limit&&` / ${e.limit}`]}),l&&(0,Q.jsx)(i.Badge,{variant:`destructive`,className:`text-xs`,children:`Full`})]})]})}),(0,Q.jsxs)(i.ScrollArea,{className:`flex-1 p-4`,children:[(0,Q.jsx)(Hr,{items:s.map(e=>e.id),strategy:Jr,children:(0,Q.jsxs)(`div`,{className:`space-y-2`,role:`list`,"aria-label":`${e.title} cards`,children:[s.length===0&&(0,Q.jsx)(`div`,{className:`flex flex-col items-center justify-center py-8 text-muted-foreground/50`,children:(0,Q.jsx)(`span`,{className:`text-xs font-mono`,children:`No cards`})}),s.map(e=>(0,Q.jsx)(oi,{card:e,onCardClick:n,conditionalFormatting:o},e.id))]})}),r&&a&&(0,Q.jsx)(si,{columnId:e.id,onAdd:a})]})]})}function li({children:e}){return(0,Q.jsx)(Q.Fragment,{children:e((0,r.useDnd)())})}function ui({columns:e,onCardMove:t,onCardClick:n,className:i,quickAdd:a,onQuickAdd:o,coverImageField:s,conditionalFormatting:c,swimlaneField:l}){return(0,r.useHasDndProvider)()?(0,Q.jsx)(li,{children:r=>(0,Q.jsx)(di,{columns:e,onCardMove:t,onCardClick:n,className:i,dnd:r,quickAdd:a,onQuickAdd:o,coverImageField:s,conditionalFormatting:c,swimlaneField:l})}):(0,Q.jsx)(di,{columns:e,onCardMove:t,onCardClick:n,className:i,dnd:null,quickAdd:a,onQuickAdd:o,coverImageField:s,conditionalFormatting:c,swimlaneField:l})}function di({columns:e,onCardMove:t,onCardClick:n,className:r,dnd:i,quickAdd:a,onQuickAdd:o,coverImageField:s,conditionalFormatting:c,swimlaneField:l}){let[u,d]=_.useState(null),f=l?`objectui:kanban-collapsed:${l}`:null,[p,m]=_.useState(()=>{if(!f)return new Set;try{let e=localStorage.getItem(f);if(e){let t=JSON.parse(e);if(Array.isArray(t))return new Set(t.filter(e=>typeof e==`string`))}}catch{}return new Set}),h=_.useMemo(()=>(e||[]).map(e=>({...e,cards:e.cards||[]})),[e]),[g,v]=_.useState(h);_.useEffect(()=>{v(h)},[h]);let y=_.useMemo(()=>{if(!l)return null;let e=g.flatMap(e=>e.cards),t=new Set;return e.forEach(e=>{let n=e[l];t.add(n==null?pi:String(n))}),Array.from(t).sort()},[g,l]),b=_.useCallback(e=>{m(t=>{let n=new Set(t);if(n.has(e)?n.delete(e):n.add(e),f)try{localStorage.setItem(f,JSON.stringify([...n]))}catch{}return n})},[f]),x=mt(pt(Xn,{activationConstraint:{distance:5}}),pt(tr,{activationConstraint:{delay:200,tolerance:5}})),S=e=>{let{active:t}=e,n=w(t.id);if(d(n),i&&n){let e=T(n.id);e&&i.startDrag({id:n.id,type:`kanban-card`,data:n,sourceId:e.id})}},C=e=>{let{active:n,over:r}=e;if(d(null),!r){i&&i.endDrag();return}let a=n.id,o=r.id;if(a===o){i&&i.endDrag();return}let s=T(a),c=T(o)||E(o);if(!s||!c){i&&i.endDrag();return}if(s.id===c.id){let e=[...s.cards],t=Ir(e,e.findIndex(e=>e.id===a),e.findIndex(e=>e.id===o));v(e=>e.map(e=>e.id===s.id?{...e,cards:t}:e))}else{let e=[...s.cards],n=[...c.cards],r=e.findIndex(e=>e.id===a),i=o===c.id?n.length:n.findIndex(e=>e.id===o),[l]=e.splice(r,1);n.splice(i,0,l),v(t=>t.map(t=>t.id===s.id?{...t,cards:e}:t.id===c.id?{...t,cards:n}:t)),t&&t(a,s.id,c.id,i)}i&&i.endDrag(c.id)},w=_.useCallback(e=>{for(let t of g){let n=t.cards.find(t=>t.id===e);if(n)return n}return null},[g]),T=_.useCallback(e=>g.find(t=>t.cards.some(t=>t.id===e))||null,[g]),E=_.useCallback(e=>g.find(t=>t.id===e)||null,[g]);return(0,Q.jsxs)(br,{sensors:x,collisionDetection:Ln,onDragStart:S,onDragEnd:C,children:[(0,Q.jsxs)(`div`,{className:`flex sm:hidden items-center justify-between px-3 pb-2 text-xs text-muted-foreground`,children:[(0,Q.jsxs)(`span`,{children:[g.length,` columns`]}),(0,Q.jsx)(`span`,{children:`← Swipe to navigate →`})]}),y?(0,Q.jsxs)(`div`,{className:fi(`flex flex-col gap-1 p-2 sm:p-4 min-w-0 overflow-hidden`,r),role:`region`,"aria-label":`Kanban board with swimlanes`,children:[(0,Q.jsx)(`div`,{className:`flex gap-3 sm:gap-4 pl-36 sm:pl-44 overflow-x-auto`,children:g.map(e=>(0,Q.jsxs)(`div`,{className:`w-[85vw] sm:w-80 flex-shrink-0 text-center`,children:[(0,Q.jsx)(`span`,{className:`font-mono text-xs sm:text-sm font-semibold tracking-wider text-primary/90 uppercase`,children:e.title}),(0,Q.jsxs)(`span`,{className:`ml-2 font-mono text-xs text-muted-foreground`,children:[`(`,e.cards.length,`)`]})]},e.id))}),y.map(e=>{let t=p.has(e),r=g.reduce((t,n)=>t+n.cards.filter(t=>(t[l]==null?pi:String(t[l]))===e).length,0);return(0,Q.jsxs)(`div`,{className:`border rounded-lg bg-muted/10`,children:[(0,Q.jsxs)(`button`,{className:`w-full flex items-center gap-2 px-3 py-2 text-left hover:bg-muted/30 transition-colors`,onClick:()=>b(e),"aria-expanded":!t,children:[(0,Q.jsx)(`span`,{className:fi(`transition-transform text-xs`,t?``:`rotate-90`),children:`▶`}),(0,Q.jsx)(`span`,{className:`font-mono text-xs font-semibold text-muted-foreground uppercase tracking-wider`,children:e}),(0,Q.jsxs)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:[`(`,r,`)`]})]}),!t&&(0,Q.jsx)(`div`,{className:`flex gap-3 sm:gap-4 overflow-x-auto px-2 pb-3 pl-36 sm:pl-44`,children:g.map(t=>{let r=t.cards.filter(t=>(t[l]==null?pi:String(t[l]))===e);return(0,Q.jsx)(`div`,{className:`w-[85vw] sm:w-80 flex-shrink-0 min-h-[60px] rounded-md bg-card/20 p-2`,children:(0,Q.jsx)(Hr,{items:r.map(e=>e.id),strategy:Jr,children:(0,Q.jsx)(`div`,{className:`space-y-2`,role:`list`,"aria-label":`${t.title} - ${e} cards`,children:r.map(e=>(0,Q.jsx)(oi,{card:e,onCardClick:n,conditionalFormatting:c},e.id))})})},t.id)})})]},e)})]}):(0,Q.jsx)(`div`,{className:fi(`flex gap-3 sm:gap-4 overflow-x-auto snap-x snap-mandatory p-2 sm:p-4 bg-muted/10 rounded-lg [-webkit-overflow-scrolling:touch] min-w-0`,r),role:`region`,"aria-label":`Kanban board`,children:g.map(e=>(0,Q.jsx)(ci,{column:e,cards:e.cards,onCardClick:n,quickAdd:a,onQuickAdd:o,conditionalFormatting:c},e.id))}),(0,Q.jsx)(Pr,{children:(0,Q.jsx)(`div`,{"aria-live":`assertive`,"aria-label":u?`Dragging ${u.title}`:void 0,children:u?(0,Q.jsx)(oi,{card:u,conditionalFormatting:c}):null})})]})}var Q,fi,pi,mi=f((()=>{Fr(),ri(),rt(),U(),Q=b(),fi=(...e)=>e.filter(Boolean).join(` `),pi=`Uncategorized`}));function hi(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o;n.key&&n.debug?.call(n)&&(o=Date.now());let s=e();if(!(s.length!==r.length||s.some((e,t)=>r[t]!==e)))return i;r=s;let c;if(n.key&&n.debug?.call(n)&&(c=Date.now()),i=t(...s),n.key&&n.debug?.call(n)){let e=Math.round((Date.now()-o)*100)/100,t=Math.round((Date.now()-c)*100)/100,r=t/16,i=(e,t)=>{for(e=String(e);e.length<t;)e=` `+e;return e};console.info(`%c⏱ ${i(t,5)} /${i(e,5)} ms`,`
10
+ `},In={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(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`})(q||={}),J=Object.freeze({x:0,y:0}),Ln=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=yt(t),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=yt(r),o=i.reduce((e,t,r)=>e+ht(n[r],t),0),s=Number((o/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:s}})}}return a.sort(_t)},Rn=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=xt(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(vt)},zn=wt(1),Bn={ignoreTransform:!1},(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(Y||={}),Vn={x:.2,y:.2},Hn=[[`x`,[`left`,`right`],Ut],[`y`,[`top`,`bottom`],Wt]],Un=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=Mt(t),r=Ht(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of Hn)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})}},Wn=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(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(X||={}),(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})(Z||={}),Gn={start:[Z.Space,Z.Enter],cancel:[Z.Esc],end:[Z.Space,Z.Enter,Z.Tab]},Kn=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case Z.Right:return{...n,x:n.x+25};case Z.Left:return{...n,x:n.x-25};case Z.Down:return{...n,y:n.y+25};case Z.Up:return{...n,y:n.y-25}}},qn=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 Wn(Re(t)),this.windowListeners=new Wn(W(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(X.Resize,this.handleCancel),this.windowListeners.add(X.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(X.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&Gt(n),t(J)}handleKeyDown(e){if(Je(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=Gn,coordinateGetter:a=Kn,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}:J;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=tt(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}=zt(n),p=Vt(n),m={x:Math.min(i===Z.Right?p.right-p.width/2:p.right,Math.max(i===Z.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===Z.Down?p.bottom-p.height/2:p.bottom,Math.max(i===Z.Down?p.top:p.top+p.height/2,u.y))},h=i===Z.Right&&!s||i===Z.Left&&!c,g=i===Z.Down&&!l||i===Z.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===Z.Right&&e<=d.x||i===Z.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}a?r.x=n.scrollLeft-e:r.x=i===Z.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}else if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===Z.Down&&e<=d.y||i===Z.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}a?r.y=n.scrollTop-e:r.y=i===Z.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,et(tt(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()}},qn.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=Gn,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}}],Jn=class{constructor(e,t,n){n===void 0&&(n=Kt(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=Re(i),this.documentListeners=new Wn(this.document),this.listeners=new Wn(n),this.windowListeners=new Wn(W(i)),this.initialCoordinates=Xe(r)??J,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(X.Resize,this.handleCancel),this.windowListeners.add(X.DragStart,Jt),this.windowListeners.add(X.VisibilityChange,this.handleCancel),this.windowListeners.add(X.ContextMenu,Jt),this.documentListeners.add(X.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Zt(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(Xt(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(X.Click,Yt,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(X.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=Xe(e)??J,s=tt(n,o);if(!t&&a){if(Xt(a)){if(a.tolerance!=null&&qt(s,a.tolerance))return this.handleCancel();if(qt(s,a.distance))return this.handleStart()}if(Zt(a)&&qt(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===Z.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},Yn={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},Xn=class extends Jn{constructor(e){let{event:t}=e,n=Re(t.target);super(e,Yn,n)}},Xn.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}],Zn={move:{name:`mousemove`},end:{name:`mouseup`}},(function(e){e[e.RightClick=2]=`RightClick`})(Qn||={}),$n=class extends Jn{constructor(e){super(e,Zn,Re(e.event.target))}},$n.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===Qn.RightClick?!1:(r?.({event:n}),!0)}}],er={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},tr=class extends Jn{constructor(e){super(e,er)}static setup(){return window.addEventListener(er.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(er.move.name,e)};function e(){}}},tr.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)}}],(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(nr||={}),(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})(rr||={}),ir={x:{[Y.Backward]:!1,[Y.Forward]:!1},y:{[Y.Backward]:!1,[Y.Forward]:!1}},(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(ar||={}),(function(e){e.Optimized=`optimized`})(or||={}),sr=new Map,cr=[],lr=[],ur=[{sensor:Xn,options:{}},{sensor:qn,options:{}}],dr={current:{}},fr={draggable:{measure:Ot},droppable:{measure:Ot,strategy:ar.WhileDragging,frequency:or.Optimized},dragOverlay:{measure:Dt}},pr=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}},mr={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new pr,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:ft},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:fr,measureDroppableContainers:ft,windowRect:null,measuringScheduled:!1},hr={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:ft,draggableNodes:new Map,over:null,measureDroppableContainers:ft},gr=(0,t.createContext)(hr),_r=(0,t.createContext)(mr),vr=(0,t.createContext)({...J,scaleX:1,scaleY:1}),(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(yr||={}),br=(0,t.memo)(function(e){let{id:n,accessibility:r,autoScroll:i=!0,children:o,sensors:s=ur,collisionDetection:c=Rn,measuring:l,modifiers:u,...d}=e,[f,p]=(0,t.useReducer)(xn,void 0,bn),[m,h]=ut(),[g,_]=(0,t.useState)(yr.Uninitialized),v=g===yr.Initialized,{draggable:{active:y,nodes:b,translate:x},droppable:{containers:S}}=f,C=y==null?null:b.get(y),w=(0,t.useRef)({initial:null,translated:null}),T=(0,t.useMemo)(()=>y==null?null:{id:y,data:C?.data??dr,rect:w},[y,C]),E=(0,t.useRef)(null),[ee,D]=(0,t.useState)(null),[O,k]=(0,t.useState)(null),A=Ve(d,Object.values(d)),te=Ge(`DndDescribedBy`,n),ne=(0,t.useMemo)(()=>S.getEnabled(),[S]),j=wn(l),{droppableRects:M,measureDroppableContainers:re,measuringScheduled:ie}=nn(ne,{dragging:v,dependencies:[x.x,x.y],config:j.droppable}),N=en(b,y),P=(0,t.useMemo)(()=>O?Xe(O):null,[O]),F=De(),I=an(N,j.draggable.measure);Tn({activeNode:y==null?null:b.get(y),config:F.layoutShiftCompensation,initialRect:I,measure:j.draggable.measure});let L=ln(N,j.draggable.measure,I),R=ln(N?N.parentElement:null),z=(0,t.useRef)({activatorEvent:null,active:null,activeNode:N,collisionRect:null,collisions:null,droppableRects:M,draggableNodes:b,draggingNode:null,draggingNodeRect:null,droppableContainers:S,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),B=S.getNodeFor(z.current.over?.id),V=yn({measure:j.dragOverlay.measure}),ae=V.nodeRef.current??N,oe=v?V.rect??L:null,se=!!(V.nodeRef.current&&V.rect),ce=un(se?null:L),le=gn(ae?W(ae):null),H=dn(v?B??N:null),ue=_n(H),de=Cn(u,{transform:{x:x.x-ce.x,y:x.y-ce.y,scaleX:1,scaleY:1},activatorEvent:O,active:T,activeNodeRect:L,containerNodeRect:R,draggingNodeRect:oe,over:z.current.over,overlayNodeRect:V.rect,scrollableAncestors:H,scrollableAncestorRects:ue,windowRect:le}),fe=P?et(P,x):null,pe=fn(H),me=pn(pe),he=pn(pe,[L]),ge=et(de,me),_e=oe?zn(oe,de):null,ve=T&&_e?c({active:T,collisionRect:_e,droppableRects:M,droppableContainers:ne,pointerCoordinates:fe}):null,ye=bt(ve,`id`),[U,be]=(0,t.useState)(null),xe=St(se?de:et(de,he),U?.rect??null,L),Se=(0,t.useRef)(null),Ce=(0,t.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(E.current==null)return;let i=b.get(E.current);if(!i)return;let o=e.nativeEvent;Se.current=new n({active:E.current,activeNode:i,event:o,options:r,context:z,onAbort(e){if(!b.get(e))return;let{onDragAbort:t}=A.current,n={id:e};t?.(n),m({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!b.get(e))return;let{onDragPending:i}=A.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),m({type:`onDragPending`,event:a})},onStart(e){let t=E.current;if(t==null)return;let n=b.get(t);if(!n)return;let{onDragStart:r}=A.current,i={activatorEvent:o,active:{id:t,data:n.data,rect:w}};(0,a.unstable_batchedUpdates)(()=>{r?.(i),_(yr.Initializing),p({type:q.DragStart,initialCoordinates:e,active:t}),m({type:`onDragStart`,event:i}),D(Se.current),k(o)})},onMove(e){p({type:q.DragMove,coordinates:e})},onEnd:s(q.DragEnd),onCancel:s(q.DragCancel)});function s(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:i}=z.current,s=null;if(t&&i){let{cancelDrop:a}=A.current;s={activatorEvent:o,active:t,collisions:n,delta:i,over:r},e===q.DragEnd&&typeof a==`function`&&await Promise.resolve(a(s))&&(e=q.DragCancel)}E.current=null,(0,a.unstable_batchedUpdates)(()=>{p({type:e}),_(yr.Uninitialized),be(null),D(null),k(null),Se.current=null;let t=e===q.DragEnd?`onDragEnd`:`onDragCancel`;if(s){let e=A.current[t];e?.(s),m({type:t,event:s})}})}}},[b]),we=tn(s,(0,t.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=b.get(r);if(E.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},E.current=r,Ce(n,t))},[b,Ce]));mn(s),G(()=>{L&&g===yr.Initializing&&_(yr.Initialized)},[L,g]),(0,t.useEffect)(()=>{let{onDragMove:e}=A.current,{active:t,activatorEvent:n,collisions:r,over:i}=z.current;if(!t||!n)return;let o={active:t,activatorEvent:n,collisions:r,delta:{x:ge.x,y:ge.y},over:i};(0,a.unstable_batchedUpdates)(()=>{e?.(o),m({type:`onDragMove`,event:o})})},[ge.x,ge.y]),(0,t.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:i}=z.current;if(!e||E.current==null||!t||!i)return;let{onDragOver:o}=A.current,s=r.get(ye),c=s&&s.rect.current?{id:s.id,rect:s.rect.current,data:s.data,disabled:s.disabled}:null,l={active:e,activatorEvent:t,collisions:n,delta:{x:i.x,y:i.y},over:c};(0,a.unstable_batchedUpdates)(()=>{be(c),o?.(l),m({type:`onDragOver`,event:l})})},[ye]),G(()=>{z.current={activatorEvent:O,active:T,activeNode:N,collisionRect:_e,collisions:ve,droppableRects:M,draggableNodes:b,draggingNode:ae,draggingNodeRect:oe,droppableContainers:S,over:U,scrollableAncestors:H,scrollAdjustedTranslate:ge},w.current={initial:oe,translated:_e}},[T,N,ve,_e,b,ae,oe,M,S,U,H,ge]),Qt({...F,delta:x,draggingRect:_e,pointerCoordinates:fe,scrollableAncestors:H,scrollableAncestorRects:ue});let Te=(0,t.useMemo)(()=>({active:T,activeNode:N,activeNodeRect:L,activatorEvent:O,collisions:ve,containerNodeRect:R,dragOverlay:V,draggableNodes:b,droppableContainers:S,droppableRects:M,over:U,measureDroppableContainers:re,scrollableAncestors:H,scrollableAncestorRects:ue,measuringConfiguration:j,measuringScheduled:ie,windowRect:le}),[T,N,L,O,ve,R,V,b,S,M,U,re,H,ue,j,ie,le]),Ee=(0,t.useMemo)(()=>({activatorEvent:O,activators:we,active:T,activeNodeRect:L,ariaDescribedById:{draggable:te},dispatch:p,draggableNodes:b,over:U,measureDroppableContainers:re}),[O,we,T,L,p,te,b,U,re]);return t.default.createElement(Pn.Provider,{value:h},t.default.createElement(gr.Provider,{value:Ee},t.default.createElement(_r.Provider,{value:Te},t.default.createElement(vr.Provider,{value:xe},o)),t.default.createElement(Sn,{disabled:r?.restoreFocus===!1})),t.default.createElement(dt,{...r,hiddenTextDescribedById:te}));function De(){let e=ee?.autoScrollEnabled===!1,t=typeof i==`object`?i.enabled===!1:i===!1,n=v&&!e&&!t;return typeof i==`object`?{...i,enabled:n}:{enabled:n}}}),xr=(0,t.createContext)(null),Sr=`button`,Cr=`Draggable`,wr=`Droppable`,Tr={timeout:25},Er={x:0,y:0,scaleX:1,scaleY:1},Dr={position:`fixed`,touchAction:`none`},Or=e=>Je(e)?`transform 250ms ease`:void 0,kr=(0,t.forwardRef)((e,n)=>{let{as:r,activatorEvent:i,adjustScale:a,children:o,className:s,rect:c,style:l,transform:u,transition:d=Or}=e;if(!c)return null;let f=a?u:{...u,scaleX:1,scaleY:1},p={...Dr,width:c.width,height:c.height,top:c.top,left:c.left,transform:K.Transform.toString(f),transformOrigin:a&&i?gt(i,c):void 0,transition:typeof d==`function`?d(i):d,...l};return t.default.createElement(r,{className:s,style:p,ref:n},o)}),Ar=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)}},jr=e=>{let{transform:{initial:t,final:n}}=e;return[{transform:K.Transform.toString(t)},{transform:K.Transform.toString(n)}]},Mr={duration:250,easing:`ease`,keyframes:jr,sideEffects:Ar({styles:{active:{opacity:`0`}}})},Nr=0,Pr=t.default.memo(e=>{let{adjustScale:n=!1,children:r,dropAnimation:i,style:a,transition:o,modifiers:s,wrapperElement:c=`div`,className:l,zIndex:u=999}=e,{activatorEvent:d,active:f,activeNodeRect:p,containerNodeRect:m,draggableNodes:h,droppableContainers:g,dragOverlay:_,over:v,measuringConfiguration:y,scrollableAncestors:b,scrollableAncestorRects:x,windowRect:S}=Dn(),C=(0,t.useContext)(vr),w=Nn(f?.id),T=Cn(s,{activatorEvent:d,active:f,activeNodeRect:p,containerNodeRect:m,draggingNodeRect:_.rect,over:v,overlayNodeRect:_.rect,scrollableAncestors:b,scrollableAncestorRects:x,transform:C,windowRect:S}),E=rn(p),ee=jn({config:i,draggableNodes:h,droppableContainers:g,measuringConfiguration:y}),D=E?_.setRef:void 0;return t.default.createElement(An,null,t.default.createElement(kn,{animation:ee},f&&w?t.default.createElement(kr,{key:w,id:f.id,ref:D,as:c,activatorEvent:d,adjustScale:n,className:l,transition:o,rect:E,style:{zIndex:u,...a},transform:T},r):null))})}));function Ir(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function Lr(e,t){return e.reduce((e,n,r)=>{let i=t.get(n);return i&&(e[r]=i),e},Array(e.length))}function Rr(e){return e!==null&&e>=0}function zr(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 Br(e){return typeof e==`boolean`?{draggable:e,droppable:e}:e}function Vr(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}function Hr(e){let{children:n,id:r,items:i,strategy:a=Kr,disabled:o=!1}=e,{active:s,dragOverlay:c,droppableRects:l,over:u,measureDroppableContainers:d}=Dn(),f=Ge(Yr,r),p=c.rect!==null,m=(0,t.useMemo)(()=>i.map(e=>typeof e==`object`&&`id`in e?e.id:e),[i]),h=s!=null,g=s?m.indexOf(s.id):-1,_=u?m.indexOf(u.id):-1,v=(0,t.useRef)(m),y=!zr(m,v.current),b=_!==-1&&g===-1||y,x=Br(o);G(()=>{y&&h&&d(m)},[y,m,h,d]),(0,t.useEffect)(()=>{v.current=m},[m]);let S=(0,t.useMemo)(()=>({activeIndex:g,containerId:f,disabled:x,disableTransforms:b,items:m,overIndex:_,useDragOverlay:p,sortedRects:Lr(m,l),strategy:a}),[g,f,x.draggable,x.droppable,b,m,_,l,p,a]);return t.default.createElement(Xr.Provider,{value:S},n)}function Ur(e){let{disabled:n,index:r,node:i,rect:a}=e,[o,s]=(0,t.useState)(null),c=(0,t.useRef)(r);return G(()=>{if(!n&&r!==c.current&&i.current){let e=a.current;if(e){let t=Dt(i.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)&&s(n)}}r!==c.current&&(c.current=r)},[n,r,i,a]),(0,t.useEffect)(()=>{o&&s(null)},[o]),o}function Wr(e){let{animateLayoutChanges:n=Qr,attributes:r,disabled:i,data:a,getNewIndex:o=Zr,id:s,strategy:c,resizeObserverConfig:l,transition:u=$r}=e,{items:d,containerId:f,activeIndex:p,disabled:m,disableTransforms:h,sortedRects:g,overIndex:_,useDragOverlay:v,strategy:y}=(0,t.useContext)(Xr),b=Gr(i,m),x=d.indexOf(s),S=(0,t.useMemo)(()=>({sortable:{containerId:f,index:x,items:d},...a}),[f,a,x,d]),C=(0,t.useMemo)(()=>d.slice(d.indexOf(s)),[d,s]),{rect:w,node:T,isOver:E,setNodeRef:ee}=On({id:s,data:S,disabled:b.droppable,resizeObserverConfig:{updateMeasurementsFor:C,...l}}),{active:D,activatorEvent:O,activeNodeRect:k,attributes:A,setNodeRef:te,listeners:ne,isDragging:j,over:M,setActivatorNodeRef:re,transform:ie}=En({id:s,data:S,attributes:{...ni,...r},disabled:b.draggable}),N=Me(ee,te),P=!!D,F=P&&!h&&Rr(p)&&Rr(_),I=!v&&j,L=F?(I&&F?ie:null)??(c??y)({rects:g,activeNodeRect:k,activeIndex:p,overIndex:_,index:x}):null,R=Rr(p)&&Rr(_)?o({id:s,items:d,activeIndex:p,overIndex:_}):x,z=D?.id,B=(0,t.useRef)({activeId:z,items:d,newIndex:R,containerId:f}),V=d!==B.current.items,ae=n({active:D,containerId:f,isDragging:j,isSorting:P,id:s,index:x,items:d,newIndex:B.current.newIndex,previousItems:B.current.items,previousContainerId:B.current.containerId,transition:u,wasDragging:B.current.activeId!=null}),oe=Ur({disabled:!ae,index:x,node:T,rect:w});return(0,t.useEffect)(()=>{P&&B.current.newIndex!==R&&(B.current.newIndex=R),f!==B.current.containerId&&(B.current.containerId=f),d!==B.current.items&&(B.current.items=d)},[P,R,f,d]),(0,t.useEffect)(()=>{if(z===B.current.activeId)return;if(z!=null&&B.current.activeId==null){B.current.activeId=z;return}let e=setTimeout(()=>{B.current.activeId=z},50);return()=>clearTimeout(e)},[z]),{active:D,activeIndex:p,attributes:A,data:S,rect:w,index:x,newIndex:R,items:d,isOver:E,isSorting:P,isDragging:j,listeners:ne,node:T,overIndex:_,over:M,setNodeRef:N,setActivatorNodeRef:re,setDroppableNodeRef:ee,setDraggableNodeRef:te,transform:oe??L,transition:se()};function se(){if(oe||V&&B.current.newIndex===x)return ti;if(!(I&&!Je(O)||!u)&&(P||ae))return K.Transition.toString({...u,property:ei})}}function Gr(e,t){return typeof e==`boolean`?{draggable:e,droppable:!1}:{draggable:e?.draggable??t.draggable,droppable:e?.droppable??t.droppable}}var Kr,qr,Jr,Yr,Xr,Zr,Qr,$r,ei,ti,ni,ri=f((()=>{Fr(),rt(),Kr=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e,a=Ir(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}},qr={scaleX:1,scaleY:1},Jr=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,...qr}:null}let s=Vr(i,r,t);return r>t&&r<=a?{x:0,y:-o.height-s,...qr}:r<t&&r>=a?{x:0,y:o.height+s,...qr}:{x:0,y:0,...qr}},Yr=`Sortable`,Xr=t.default.createContext({activeIndex:-1,containerId:Yr,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:Kr,disabled:{draggable:!1,droppable:!1}}),Zr=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return Ir(n,r,i).indexOf(t)},Qr=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},$r={duration:200,easing:`ease`},ei=`transform`,ti=K.Transition.toString({property:ei,duration:0,easing:`linear`}),ni={roleDescription:`sortable`},Z.Down,Z.Right,Z.Up,Z.Left})),ii=m({default:()=>ui});function ai(e,t){if(!t||t.length===0)return{};for(let n of t){let t=e[n.field];if(t==null)continue;let r=!1,i=String(t);switch(n.operator){case`equals`:r=i===String(n.value);break;case`not_equals`:r=i!==String(n.value);break;case`contains`:r=i.toLowerCase().includes(String(n.value).toLowerCase());break;case`in`:r=Array.isArray(n.value)&&n.value.includes(i);break}if(r)return{...n.backgroundColor?{backgroundColor:n.backgroundColor}:{},...n.borderColor?{borderColor:n.borderColor}:{}}}return{}}function oi({card:e,onCardClick:t,conditionalFormatting:n}){let{attributes:r,listeners:a,setNodeRef:o,transform:s,transition:c,isDragging:l}=Wr({id:e.id}),u={transform:K.Transform.toString(s),transition:c,opacity:l?.5:void 0},d=ai(e,n);return(0,Q.jsx)(`div`,{ref:o,style:u,...r,...a,role:`listitem`,"aria-label":e.title,onClick:()=>t?.(e),children:(0,Q.jsxs)(i.Card,{className:`mb-2 cursor-grab active:cursor-grabbing border-border border-l-4 border-l-primary/40 bg-card/60 hover:border-primary/40 hover:shadow-lg hover:shadow-primary/10 transition-all duration-300 group touch-manipulation`,style:d,children:[e.coverImage&&(0,Q.jsx)(`div`,{className:`w-full h-32 overflow-hidden rounded-t-lg`,children:(0,Q.jsx)(`img`,{src:e.coverImage,alt:``,className:`w-full h-full object-cover`,loading:`lazy`})}),(0,Q.jsxs)(i.CardHeader,{className:`p-2 sm:p-4`,children:[(0,Q.jsx)(i.CardTitle,{className:`text-xs sm:text-sm font-medium tracking-tight text-foreground group-hover:text-primary transition-colors`,children:e.title}),e.description&&(0,Q.jsx)(i.CardDescription,{className:`text-xs text-muted-foreground line-clamp-2 sm:line-clamp-none`,children:e.description})]}),e.badges&&e.badges.length>0&&(0,Q.jsx)(i.CardContent,{className:`p-2 sm:p-4 pt-0`,children:(0,Q.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.badges.map((e,t)=>(0,Q.jsx)(i.Badge,{variant:e.variant||`default`,className:`text-xs`,children:e.label},t))})})]})})}function si({columnId:e,onAdd:t}){let[n,r]=_.useState(!1),[a,o]=_.useState(``),s=_.useRef(null),c=()=>{let n=a.trim();n&&(t(e,n),o(``)),r(!1)};return n?(0,Q.jsx)(`div`,{className:`mt-2 space-y-2`,children:(0,Q.jsx)(i.Input,{ref:s,value:a,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),c()):e.key===`Escape`&&(o(``),r(!1))},onBlur:c,placeholder:`Enter card title...`,className:`text-sm`,autoFocus:!0})}):(0,Q.jsxs)(i.Button,{variant:`ghost`,size:`sm`,className:`w-full mt-2 text-muted-foreground hover:text-foreground`,onClick:()=>{r(!0),setTimeout(()=>s.current?.focus(),0)},children:[(0,Q.jsx)(fe,{className:`h-4 w-4 mr-1`}),`Add Card`]})}function ci({column:e,cards:t,onCardClick:n,quickAdd:r,onQuickAdd:a,conditionalFormatting:o,columnStyle:s}){let c=t||[],{setNodeRef:l}=Wr({id:e.id,data:{type:`column`}}),u=e.limit&&c.length>=e.limit,d=s&&s.width!=null?`flex-shrink-0`:`w-[85vw] sm:w-80 flex-shrink-0`;return(0,Q.jsxs)(`div`,{ref:l,role:`group`,"aria-label":e.title,style:s,className:fi(`flex flex-col rounded-lg border border-border bg-card/20 backdrop-blur-sm shadow-xl snap-start max-h-full min-h-0`,d,e.className),children:[(0,Q.jsx)(`div`,{className:`p-3 sm:p-4 border-b border-border/50 bg-muted/30 rounded-t-lg`,children:(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsx)(`h3`,{id:`kanban-col-${e.id}`,className:` text-xs sm:text-sm font-semibold tracking-wider text-primary/90 uppercase truncate`,children:e.title}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(i.Badge,{variant:`secondary`,className:`text-xs tabular-nums`,children:[c.length,e.limit&&` / ${e.limit}`]}),u&&(0,Q.jsx)(i.Badge,{variant:`destructive`,className:`text-xs`,children:`Full`})]})]})}),(0,Q.jsxs)(i.ScrollArea,{className:`flex-1 p-4`,children:[(0,Q.jsx)(Hr,{items:c.map(e=>e.id),strategy:Jr,children:(0,Q.jsxs)(`div`,{className:`space-y-2`,role:`list`,"aria-label":`${e.title} cards`,children:[c.length===0&&(0,Q.jsx)(`div`,{className:`flex flex-col items-center justify-center py-8 text-muted-foreground/50`,children:(0,Q.jsx)(`span`,{className:`text-xs`,children:`No cards`})}),c.map(e=>(0,Q.jsx)(oi,{card:e,onCardClick:n,conditionalFormatting:o},e.id))]})}),r&&a&&(0,Q.jsx)(si,{columnId:e.id,onAdd:a})]})]})}function li({children:e}){return(0,Q.jsx)(Q.Fragment,{children:e((0,r.useDnd)())})}function ui({columns:e,onCardMove:t,onCardClick:n,className:i,quickAdd:a,onQuickAdd:o,coverImageField:s,conditionalFormatting:c,swimlaneField:l}){return(0,r.useHasDndProvider)()?(0,Q.jsx)(li,{children:r=>(0,Q.jsx)(di,{columns:e,onCardMove:t,onCardClick:n,className:i,dnd:r,quickAdd:a,onQuickAdd:o,coverImageField:s,conditionalFormatting:c,swimlaneField:l})}):(0,Q.jsx)(di,{columns:e,onCardMove:t,onCardClick:n,className:i,dnd:null,quickAdd:a,onQuickAdd:o,coverImageField:s,conditionalFormatting:c,swimlaneField:l})}function di({columns:e,onCardMove:t,onCardClick:n,className:r,dnd:a,quickAdd:o,onQuickAdd:s,coverImageField:c,conditionalFormatting:l,swimlaneField:u}){let[d,f]=_.useState(null),p=_.useRef(null),{width:m}=(0,i.useResizeObserver)(p),h=_.useMemo(()=>m?m<480?{width:Math.max(m-32,220)}:m<720?{width:280}:{width:320}:{},[m]),g=u?`objectui:kanban-collapsed:${u}`:null,[v,y]=_.useState(()=>{if(!g)return new Set;try{let e=localStorage.getItem(g);if(e){let t=JSON.parse(e);if(Array.isArray(t))return new Set(t.filter(e=>typeof e==`string`))}}catch{}return new Set}),b=_.useMemo(()=>(e||[]).map(e=>({...e,cards:e.cards||[]})),[e]),[x,S]=_.useState(b);_.useEffect(()=>{S(b)},[b]);let C=_.useMemo(()=>{if(!u)return null;let e=x.flatMap(e=>e.cards),t=new Set;return e.forEach(e=>{let n=e[u];t.add(n==null?pi:String(n))}),Array.from(t).sort()},[x,u]),w=_.useCallback(e=>{y(t=>{let n=new Set(t);if(n.has(e)?n.delete(e):n.add(e),g)try{localStorage.setItem(g,JSON.stringify([...n]))}catch{}return n})},[g]),T=mt(pt(Xn,{activationConstraint:{distance:5}}),pt(tr,{activationConstraint:{delay:200,tolerance:5}})),E=e=>{let{active:t}=e,n=D(t.id);if(f(n),a&&n){let e=O(n.id);e&&a.startDrag({id:n.id,type:`kanban-card`,data:n,sourceId:e.id})}},ee=e=>{let{active:n,over:r}=e;if(f(null),!r){a&&a.endDrag();return}let i=n.id,o=r.id;if(i===o){a&&a.endDrag();return}let s=O(i),c=O(o)||k(o);if(!s||!c){a&&a.endDrag();return}if(s.id===c.id){let e=[...s.cards],t=Ir(e,e.findIndex(e=>e.id===i),e.findIndex(e=>e.id===o));S(e=>e.map(e=>e.id===s.id?{...e,cards:t}:e))}else{let e=[...s.cards],n=[...c.cards],r=e.findIndex(e=>e.id===i),a=o===c.id?n.length:n.findIndex(e=>e.id===o),[l]=e.splice(r,1);n.splice(a,0,l),S(t=>t.map(t=>t.id===s.id?{...t,cards:e}:t.id===c.id?{...t,cards:n}:t)),t&&t(i,s.id,c.id,a)}a&&a.endDrag(c.id)},D=_.useCallback(e=>{for(let t of x){let n=t.cards.find(t=>t.id===e);if(n)return n}return null},[x]),O=_.useCallback(e=>x.find(t=>t.cards.some(t=>t.id===e))||null,[x]),k=_.useCallback(e=>x.find(t=>t.id===e)||null,[x]);return(0,Q.jsxs)(br,{sensors:T,collisionDetection:Ln,onDragStart:E,onDragEnd:ee,children:[(0,Q.jsxs)(`div`,{ref:p,className:`flex flex-col min-w-0 min-h-0 h-full`,children:[(0,Q.jsxs)(`div`,{className:`flex sm:hidden items-center justify-between px-3 pb-2 text-xs text-muted-foreground`,children:[(0,Q.jsxs)(`span`,{children:[x.length,` columns`]}),(0,Q.jsx)(`span`,{children:`← Swipe to navigate →`})]}),C?(0,Q.jsxs)(`div`,{className:fi(`flex flex-col gap-1 p-2 sm:p-4 min-w-0 overflow-hidden`,r),role:`region`,"aria-label":`Kanban board with swimlanes`,children:[(0,Q.jsx)(`div`,{className:`flex gap-3 sm:gap-4 pl-36 sm:pl-44 overflow-x-auto`,children:x.map(e=>(0,Q.jsxs)(`div`,{className:`w-[85vw] sm:w-80 flex-shrink-0 text-center`,children:[(0,Q.jsx)(`span`,{className:` text-xs sm:text-sm font-semibold tracking-wider text-primary/90 uppercase`,children:e.title}),(0,Q.jsxs)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:[`(`,e.cards.length,`)`]})]},e.id))}),C.map(e=>{let t=v.has(e),r=x.reduce((t,n)=>t+n.cards.filter(t=>(t[u]==null?pi:String(t[u]))===e).length,0);return(0,Q.jsxs)(`div`,{className:`border rounded-lg bg-muted/10`,children:[(0,Q.jsxs)(`button`,{className:`w-full flex items-center gap-2 px-3 py-2 text-left hover:bg-muted/30 transition-colors`,onClick:()=>w(e),"aria-expanded":!t,children:[(0,Q.jsx)(`span`,{className:fi(`transition-transform text-xs`,t?``:`rotate-90`),children:`▶`}),(0,Q.jsx)(`span`,{className:` text-xs font-semibold text-muted-foreground uppercase tracking-wider`,children:e}),(0,Q.jsxs)(`span`,{className:` text-xs text-muted-foreground`,children:[`(`,r,`)`]})]}),!t&&(0,Q.jsx)(`div`,{className:`flex gap-3 sm:gap-4 overflow-x-auto px-2 pb-3 pl-36 sm:pl-44`,children:x.map(t=>{let r=t.cards.filter(t=>(t[u]==null?pi:String(t[u]))===e);return(0,Q.jsx)(`div`,{className:`w-[85vw] sm:w-80 flex-shrink-0 min-h-[60px] rounded-md bg-card/20 p-2`,children:(0,Q.jsx)(Hr,{items:r.map(e=>e.id),strategy:Jr,children:(0,Q.jsx)(`div`,{className:`space-y-2`,role:`list`,"aria-label":`${t.title} - ${e} cards`,children:r.map(e=>(0,Q.jsx)(oi,{card:e,onCardClick:n,conditionalFormatting:l},e.id))})})},t.id)})})]},e)})]}):(0,Q.jsx)(`div`,{className:fi(`flex gap-3 sm:gap-4 overflow-x-auto snap-x snap-mandatory p-2 sm:p-4 bg-muted/10 rounded-lg [-webkit-overflow-scrolling:touch] min-w-0 min-h-0 h-full`,r),role:`region`,"aria-label":`Kanban board`,children:x.map(e=>(0,Q.jsx)(ci,{column:e,cards:e.cards,onCardClick:n,quickAdd:o,onQuickAdd:s,conditionalFormatting:l,columnStyle:h},e.id))})]}),(0,Q.jsx)(Pr,{children:(0,Q.jsx)(`div`,{"aria-live":`assertive`,"aria-label":d?`Dragging ${d.title}`:void 0,children:d?(0,Q.jsx)(oi,{card:d,conditionalFormatting:l}):null})})]})}var Q,fi,pi,mi=f((()=>{Fr(),ri(),rt(),U(),Q=b(),fi=(...e)=>e.filter(Boolean).join(` `),pi=`Uncategorized`}));function hi(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o;n.key&&n.debug?.call(n)&&(o=Date.now());let s=e();if(!(s.length!==r.length||s.some((e,t)=>r[t]!==e)))return i;r=s;let c;if(n.key&&n.debug?.call(n)&&(c=Date.now()),i=t(...s),n.key&&n.debug?.call(n)){let e=Math.round((Date.now()-o)*100)/100,t=Math.round((Date.now()-c)*100)/100,r=t/16,i=(e,t)=>{for(e=String(e);e.length<t;)e=` `+e;return e};console.info(`%c⏱ ${i(t,5)} /${i(e,5)} ms`,`
11
11
  font-size: .6rem;
12
12
  font-weight: bold;
13
- color: hsl(${Math.max(0,Math.min(120-120*r,120))}deg 100% 31%);`,n?.key)}return n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i}return o.updateDeps=e=>{r=e},o}function gi(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var _i,vi,yi=f((()=>{_i=(e,t)=>Math.abs(e-t)<1.01,vi=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}}}));function bi({measurements:e,outerSize:t,scrollOffset:n,lanes:r}){let i=e.length-1,a=t=>e[t].start;if(e.length<=r)return{startIndex:0,endIndex:i};let o=ji(0,i,a,n),s=o;if(r===1)for(;s<i&&e[s].end<n+t;)s++;else if(r>1){let a=Array(r).fill(0);for(;s<i&&a.some(e=>e<n+t);){let t=e[s];a[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(i,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var xi,Si,Ci,wi,Ti,Ei,Di,Oi,ki,Ai,ji,Mi=f((()=>{yi(),xi=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},Si=e=>e,Ci=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1),r=[];for(let e=t;e<=n;e++)r.push(e);return r},wi=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(xi(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(xi(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},Ti={passive:!0},Ei=typeof window>`u`?!0:`onscrollend`in window,Di=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=0,a=e.options.useScrollendEvent&&Ei?()=>void 0:vi(r,()=>{t(i,!1)},e.options.isScrollingResetDelay),o=r=>()=>{let{horizontal:o,isRtl:s}=e.options;i=o?n.scrollLeft*(s&&-1||1):n.scrollTop,a(),t(i,r)},s=o(!0),c=o(!1);n.addEventListener(`scroll`,s,Ti);let l=e.options.useScrollendEvent&&Ei;return l&&n.addEventListener(`scrollend`,c,Ti),()=>{n.removeEventListener(`scroll`,s),l&&n.removeEventListener(`scrollend`,c)}},Oi=(e,t,n)=>{if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},ki=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;let o=e+t;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:o,behavior:n})},Ai=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{Object.entries(e).forEach(([t,n])=>{n===void 0&&delete e[t]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Si,rangeExtractor:Ci,onChange:()=>{},measureElement:Oi,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,...e}},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=hi(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:process.env.NODE_ENV!==`production`&&`maybeNotify`,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&`ownerDocument`in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{this.scrollAdjustments=0,this.scrollDirection=t?this.getScrollOffset()<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{let n=new Map,r=new Map;for(let i=t-1;i>=0;i--){let t=e[i];if(n.has(t.lane))continue;let a=r.get(t.lane);if(a==null||t.end>a.end?r.set(t.lane,t):t.end<a.end&&n.set(t.lane,!0),n.size===this.options.lanes)break}return r.size===this.options.lanes?Array.from(r.values()).sort((e,t)=>e.end===t.end?e.index-t.index:e.end-t.end)[0]:void 0},this.getMeasurementOptions=hi(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(e,t,n,r,i,a,o)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o}),{key:!1}),this.getMeasurements=hi(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o},s)=>{if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let c=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1);let l=this.measurementsCache.slice(0,c),u=Array(a).fill(void 0);for(let e=0;e<c;e++){let t=l[e];t&&(u[t.lane]=e)}for(let i=c;i<e;i++){let e=r(i),a=this.laneAssignments.get(i),c,d,f=o===`estimate`||s.has(e);if(a!==void 0&&this.options.lanes>1){c=a;let e=u[c],r=e===void 0?void 0:l[e];d=r?r.end+this.options.gap:t+n}else{let e=this.options.lanes===1?l[i-1]:this.getFurthestMeasurement(l,i);d=e?e.end+this.options.gap:t+n,c=e?e.lane:i%this.options.lanes,this.options.lanes>1&&f&&this.laneAssignments.set(i,c)}let p=s.get(e),m=typeof p==`number`?p:this.options.estimateSize(i),h=d+m;l[i]={index:i,start:d,size:m,end:h,key:e,lane:c},u[c]=i}return this.measurementsCache=l,l},{key:process.env.NODE_ENV!==`production`&&`getMeasurements`,debug:()=>this.options.debug}),this.calculateRange=hi(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>this.range=e.length>0&&t>0?bi({measurements:e,outerSize:t,scrollOffset:n,lanes:r}):null,{key:process.env.NODE_ENV!==`production`&&`calculateRange`,debug:()=>this.options.debug}),this.getVirtualIndexes=hi(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:process.env.NODE_ENV!==`production`&&`getVirtualIndexes`,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{let n=this.measurementsCache[e];if(!n)return;let r=t-(this.itemSizeCache.get(n.key)??n.size);r!==0&&(this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?n.start<this.getScrollOffset()+this.scrollAdjustments:this.shouldAdjustScrollPositionOnItemSizeChange(n,r,this))&&(process.env.NODE_ENV!==`production`&&this.options.debug&&console.info(`correction`,r),this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=r,behavior:void 0})),this.pendingMeasuredCacheIndexes.push(n.index),this.itemSizeCache=new Map(this.itemSizeCache.set(n.key,t)),this.notify(!1))},this.getVirtualItems=hi(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:process.env.NODE_ENV!==`production`&&`getVirtualItems`,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length!==0)return gi(t[ji(0,t.length-1,e=>gi(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`)if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t];if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1)t=e[e.length-1]?.end??0;else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(e)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&_i(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.scrollState=null;return}}else this.scrollState.stableFrames=0,n&&(this.scrollState.lastTargetOffset=t,this.scrollState.behavior=`auto`,this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}));this.scheduleScrollReconcile()}},ji=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0}}));function Ni({useFlushSync:e=!0,...t}){let n=_.useReducer(()=>({}),{})[1],r={...t,onChange:(r,i)=>{var o;e&&i?(0,a.flushSync)(n):n(),(o=t.onChange)==null||o.call(t,r,i)}},[i]=_.useState(()=>new Ai(r));return i.setOptions(r),Fi(()=>i._didMount(),[]),Fi(()=>i._willUpdate()),i}function Pi(e){return Ni({observeElementRect:wi,observeElementOffset:Di,scrollToFn:ki,...e})}var Fi,Ii=f((()=>{Mi(),Mi(),Fi=typeof document<`u`?_.useLayoutEffect:_.useEffect})),Li=m({KanbanEnhanced:()=>Ui,default:()=>Ui});function Ri(e,t){if(!t||t.length===0)return{};for(let n of t){let t=e[n.field];if(t==null)continue;let r=!1,i=String(t);switch(n.operator){case`equals`:r=i===String(n.value);break;case`not_equals`:r=i!==String(n.value);break;case`contains`:r=i.toLowerCase().includes(String(n.value).toLowerCase());break;case`in`:r=Array.isArray(n.value)&&n.value.includes(i);break}if(r)return{...n.backgroundColor?{backgroundColor:n.backgroundColor}:{},...n.borderColor?{borderColor:n.borderColor}:{}}}return{}}function zi({card:e,conditionalFormatting:t}){let{attributes:n,listeners:r,setNodeRef:a,transform:o,transition:s,isDragging:c}=Wr({id:e.id}),l={transform:K.Transform.toString(o),transition:s,opacity:c?.5:void 0},u=Ri(e,t);return(0,$.jsx)(`div`,{ref:a,style:l,...n,...r,children:(0,$.jsxs)(i.Card,{className:`mb-2 cursor-grab active:cursor-grabbing border-border bg-card/60 hover:border-primary/40 hover:shadow-lg hover:shadow-primary/10 transition-all duration-300 group`,style:u,children:[e.coverImage&&(0,$.jsx)(`div`,{className:`w-full h-32 overflow-hidden rounded-t-lg`,children:(0,$.jsx)(`img`,{src:e.coverImage,alt:``,className:`w-full h-full object-cover`,loading:`lazy`})}),(0,$.jsxs)(i.CardHeader,{className:`p-4`,children:[(0,$.jsx)(i.CardTitle,{className:`text-sm font-medium font-mono tracking-tight text-foreground group-hover:text-primary transition-colors`,children:e.title}),e.description&&(0,$.jsx)(i.CardDescription,{className:`text-xs text-muted-foreground font-mono`,children:e.description})]}),e.badges&&e.badges.length>0&&(0,$.jsx)(i.CardContent,{className:`p-4 pt-0`,children:(0,$.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.badges.map((e,t)=>(0,$.jsx)(i.Badge,{variant:e.variant||`default`,className:`text-xs`,children:e.label},t))})})]})})}function Bi({cards:e,parentRef:t,conditionalFormatting:n}){let r=Pi({count:e.length,getScrollElement:()=>t.current,estimateSize:()=>120,overscan:5});return(0,$.jsx)(`div`,{style:{height:`${r.getTotalSize()}px`,width:`100%`,position:`relative`},children:r.getVirtualItems().map(t=>{let r=e[t.index];return(0,$.jsx)(`div`,{style:{position:`absolute`,top:0,left:0,width:`100%`,transform:`translateY(${t.start}px)`},children:(0,$.jsx)(zi,{card:r,conditionalFormatting:n})},r.id)})})}function Vi({columnId:e,onAdd:t}){let[n,r]=_.useState(!1),[a,o]=_.useState(``),s=_.useRef(null),c=()=>{let n=a.trim();n&&(t(e,n),o(``)),r(!1)};return n?(0,$.jsx)(`div`,{className:`mt-2 space-y-2`,children:(0,$.jsx)(i.Input,{ref:s,value:a,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),c()):e.key===`Escape`&&(o(``),r(!1))},onBlur:c,placeholder:`Enter card title...`,className:`text-sm`,autoFocus:!0})}):(0,$.jsxs)(i.Button,{variant:`ghost`,size:`sm`,className:`w-full mt-2 text-muted-foreground hover:text-foreground`,onClick:()=>{r(!0),setTimeout(()=>s.current?.focus(),0)},children:[(0,$.jsx)(fe,{className:`h-4 w-4 mr-1`}),`Add Card`]})}function Hi({column:e,cards:t,onToggle:n,enableVirtual:r,quickAdd:a,onQuickAdd:o,conditionalFormatting:s}){let c=t||[],l=_.useRef(null),{setNodeRef:u}=Wr({id:e.id,data:{type:`column`}}),d=e.limit&&c.length>=e.limit,f=e.limit&&c.length>=e.limit*.8;return(0,$.jsxs)(`div`,{ref:u,className:Wi(`flex flex-col flex-shrink-0 rounded-lg border border-border bg-card/20 backdrop-blur-sm shadow-xl transition-all`,e.collapsed?`w-16`:`w-80`,e.className),children:[(0,$.jsxs)(`div`,{className:`p-4 border-b border-border/50 bg-muted/20 flex items-center justify-between`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0`,children:[(0,$.jsx)(i.Button,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0`,onClick:()=>n(!e.collapsed),children:e.collapsed?(0,$.jsx)(se,{className:`h-4 w-4`}):(0,$.jsx)(B,{className:`h-4 w-4`})}),!e.collapsed&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`h3`,{className:`font-mono text-sm font-semibold tracking-wider text-primary/90 uppercase truncate`,children:e.title}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`span`,{className:Wi(`font-mono text-xs`,d?`text-destructive`:f?`text-yellow-500`:`text-muted-foreground`),children:[c.length,e.limit&&` / ${e.limit}`]}),d&&(0,$.jsx)(i.Badge,{variant:`destructive`,className:`text-xs`,children:`Full`}),f&&!d&&(0,$.jsx)(he,{className:`h-3 w-3 text-yellow-500`})]})]})]}),e.collapsed&&(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,$.jsx)(`span`,{className:`font-mono text-xs font-bold text-primary/90 [writing-mode:vertical-rl] rotate-180`,children:e.title}),(0,$.jsx)(i.Badge,{variant:`secondary`,className:`text-xs`,children:c.length})]})]}),!e.collapsed&&(0,$.jsxs)(`div`,{ref:l,className:`flex-1 p-4 overflow-y-auto`,style:{maxHeight:`600px`},children:[(0,$.jsx)(Hr,{items:c.map(e=>e.id),strategy:Jr,children:r?(0,$.jsx)(Bi,{cards:c,parentRef:l,conditionalFormatting:s}):(0,$.jsx)(`div`,{className:`space-y-2`,children:c.map(e=>(0,$.jsx)(zi,{card:e,conditionalFormatting:s},e.id))})}),a&&o&&(0,$.jsx)(Vi,{columnId:e.id,onAdd:o})]})]})}function Ui({columns:e,onCardMove:t,onColumnToggle:n,enableVirtualScrolling:r=!1,virtualScrollThreshold:i=50,className:a,quickAdd:o,onQuickAdd:s,conditionalFormatting:c}){let[l,u]=_.useState(null),d=_.useMemo(()=>(e||[]).map(e=>({...e,cards:e.cards||[]})),[e]),[f,p]=_.useState(d);_.useEffect(()=>{p(d)},[d]);let m=mt(pt(Xn,{activationConstraint:{distance:8}})),h=e=>{let{active:t}=e;u(v(t.id))},g=e=>{let{active:n,over:r}=e;if(u(null),!r)return;let i=n.id,a=r.id;if(i===a)return;let o=y(i),s=y(a)||b(a);if(!(!o||!s))if(o.id===s.id){let e=[...o.cards],t=Ir(e,e.findIndex(e=>e.id===i),e.findIndex(e=>e.id===a));p(e=>e.map(e=>e.id===o.id?{...e,cards:t}:e))}else{let e=[...o.cards],n=[...s.cards],r=e.findIndex(e=>e.id===i),c=a===s.id?n.length:n.findIndex(e=>e.id===a),[l]=e.splice(r,1);n.splice(c,0,l),p(t=>t.map(t=>t.id===o.id?{...t,cards:e}:t.id===s.id?{...t,cards:n}:t)),t&&t(i,o.id,s.id,c)}},v=_.useCallback(e=>{for(let t of f){let n=t.cards.find(t=>t.id===e);if(n)return n}return null},[f]),y=_.useCallback(e=>f.find(t=>t.cards.some(t=>t.id===e))||null,[f]),b=_.useCallback(e=>f.find(t=>t.id===e)||null,[f]),x=_.useCallback((e,t)=>{p(n=>n.map(n=>n.id===e?{...n,collapsed:t}:n)),n?.(e,t)},[n]);return(0,$.jsxs)(br,{sensors:m,collisionDetection:Ln,onDragStart:h,onDragEnd:g,children:[(0,$.jsx)(`div`,{className:Wi(`flex gap-4 overflow-x-auto p-4`,a),children:f.map(e=>{let t=r&&e.cards.length>i;return(0,$.jsx)(Hi,{column:e,cards:e.cards,onToggle:t=>x(e.id,t),enableVirtual:t,quickAdd:o,onQuickAdd:s,conditionalFormatting:c},e.id)})}),(0,$.jsx)(Pr,{children:l?(0,$.jsx)(zi,{card:l,conditionalFormatting:c}):null})]})}var $,Wi,Gi=f((()=>{Ii(),Fr(),ri(),rt(),U(),$=b(),Wi=(...e)=>e.filter(Boolean).join(` `)})),Ki=_.default.lazy(()=>Promise.resolve().then(()=>(mi(),ii))),qi=_.default.lazy(()=>Promise.resolve().then(()=>(Gi(),Li))),Ji=({schema:e})=>{let t=_.default.useMemo(()=>{let{columns:t=[],data:n,groupBy:r,coverImageField:i}=e,a=e=>{if(!i)return e;let t=e[i];if(!t)return e;let n=typeof t==`string`?t:t?.url;return n?{...e,coverImage:n}:e};if(n&&r&&Array.isArray(n)){let e={};t.forEach(t=>{t.id&&(e[String(t.id).toLowerCase()]=t.id),t.title&&(e[String(t.title).toLowerCase()]=t.id)});let i=n.reduce((t,n)=>{let i=String(n[r]??``),o=e[i.toLowerCase()]??i;return t[o]||(t[o]=[]),t[o].push(a(n)),t},{});return t.map(e=>({...e,cards:[...(e.cards||[]).map(a),...i[e.id]||[]]}))}return t.map(e=>({...e,cards:(e.cards||[]).map(a)}))},[e]);return(0,x.jsx)(_.Suspense,{fallback:(0,x.jsx)(i.Skeleton,{className:`w-full h-[600px]`}),children:(0,x.jsx)(Ki,{columns:t,onCardMove:e.onCardMove,onCardClick:e.onCardClick,className:e.className,quickAdd:e.quickAdd,onQuickAdd:e.onQuickAdd,coverImageField:e.coverImageField,conditionalFormatting:e.conditionalFormatting,swimlaneField:e.swimlaneField})})};n.ComponentRegistry.register(`kanban-ui`,Ji,{namespace:`plugin-kanban`,label:`Kanban Board`,icon:`LayoutDashboard`,category:`plugin`,inputs:[{name:`columns`,type:`array`,label:`Columns`,description:`Array of { id, title, cards, limit, className }`,required:!0},{name:`onCardMove`,type:`code`,label:`On Card Move`,description:`Callback when a card is moved`,advanced:!0},{name:`className`,type:`string`,label:`CSS Class`}],defaultProps:{columns:[{id:`todo`,title:`To Do`,cards:[{id:`card-1`,title:`Task 1`,description:`This is the first task`,badges:[{label:`High Priority`,variant:`destructive`},{label:`Feature`,variant:`default`}]},{id:`card-2`,title:`Task 2`,description:`This is the second task`,badges:[{label:`Bug`,variant:`destructive`}]}]},{id:`in-progress`,title:`In Progress`,limit:3,cards:[{id:`card-3`,title:`Task 3`,description:`Currently working on this`,badges:[{label:`In Progress`,variant:`default`}]}]},{id:`done`,title:`Done`,cards:[{id:`card-4`,title:`Task 4`,description:`This task is completed`,badges:[{label:`Completed`,variant:`outline`}]},{id:`card-5`,title:`Task 5`,description:`Another completed task`,badges:[{label:`Completed`,variant:`outline`}]}]}],className:`w-full`}});var Yi={kanban:Ji,"kanban-enhanced":qi,"object-kanban":S};n.ComponentRegistry.register(`kanban-enhanced`,({schema:e})=>{let t=_.default.useMemo(()=>{let{columns:t=[],data:n,groupBy:r}=e;if(n&&r&&Array.isArray(n)){let e=n.reduce((e,t)=>{let n=t[r];return e[n]||(e[n]=[]),e[n].push(t),e},{});return t.map(t=>({...t,cards:[...t.cards||[],...e[t.id]||[]]}))}return t},[e]);return(0,x.jsx)(_.Suspense,{fallback:(0,x.jsx)(i.Skeleton,{className:`w-full h-[600px]`}),children:(0,x.jsx)(qi,{columns:t,onCardMove:e.onCardMove,onColumnToggle:e.onColumnToggle,enableVirtualScrolling:e.enableVirtualScrolling,virtualScrollThreshold:e.virtualScrollThreshold,className:e.className,quickAdd:e.quickAdd,onQuickAdd:e.onQuickAdd,conditionalFormatting:e.conditionalFormatting})})},{namespace:`plugin-kanban`,label:`Kanban Board (Enhanced)`,icon:`LayoutGrid`,category:`plugin`,inputs:[{name:`columns`,type:`array`,label:`Columns`,required:!0},{name:`enableVirtualScrolling`,type:`boolean`,label:`Virtual Scrolling`,defaultValue:!1},{name:`virtualScrollThreshold`,type:`number`,label:`Virtual Scroll Threshold`,defaultValue:50},{name:`onCardMove`,type:`code`,label:`On Card Move`,advanced:!0},{name:`onColumnToggle`,type:`code`,label:`On Column Toggle`,advanced:!0},{name:`className`,type:`string`,label:`CSS Class`}],defaultProps:{columns:[],enableVirtualScrolling:!1,virtualScrollThreshold:50,className:`w-full`}});var Xi=({schema:e,...t})=>{let{dataSource:n}=(0,r.useSchemaContext)()||{};return(0,x.jsx)(S,{schema:e,dataSource:n,...t})};n.ComponentRegistry.register(`object-kanban`,Xi,{namespace:`plugin-kanban`,label:`Object Kanban`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`columns`,type:`array`,label:`Columns`}]}),n.ComponentRegistry.register(`kanban`,Xi,{namespace:`view`,label:`Kanban Board`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`columns`,type:`array`,label:`Columns`}]}),e.CardTemplates=we,e.InlineQuickAdd=xe,e.KanbanRenderer=Ji,e.ObjectKanban=S,e.ObjectKanbanRenderer=Xi,e.kanbanComponents=Yi,e.useColumnWidths=Oe,e.useCrossSwimlaneMove=ke,e.useQuickAddReorder=Ae});
13
+ color: hsl(${Math.max(0,Math.min(120-120*r,120))}deg 100% 31%);`,n?.key)}return n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i}return o.updateDeps=e=>{r=e},o}function gi(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var _i,vi,yi=f((()=>{_i=(e,t)=>Math.abs(e-t)<1.01,vi=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}}}));function bi({measurements:e,outerSize:t,scrollOffset:n,lanes:r}){let i=e.length-1,a=t=>e[t].start;if(e.length<=r)return{startIndex:0,endIndex:i};let o=ji(0,i,a,n),s=o;if(r===1)for(;s<i&&e[s].end<n+t;)s++;else if(r>1){let a=Array(r).fill(0);for(;s<i&&a.some(e=>e<n+t);){let t=e[s];a[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(i,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var xi,Si,Ci,wi,Ti,Ei,Di,Oi,ki,Ai,ji,Mi=f((()=>{yi(),xi=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},Si=e=>e,Ci=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1),r=[];for(let e=t;e<=n;e++)r.push(e);return r},wi=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(xi(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(xi(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},Ti={passive:!0},Ei=typeof window>`u`?!0:`onscrollend`in window,Di=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=0,a=e.options.useScrollendEvent&&Ei?()=>void 0:vi(r,()=>{t(i,!1)},e.options.isScrollingResetDelay),o=r=>()=>{let{horizontal:o,isRtl:s}=e.options;i=o?n.scrollLeft*(s&&-1||1):n.scrollTop,a(),t(i,r)},s=o(!0),c=o(!1);n.addEventListener(`scroll`,s,Ti);let l=e.options.useScrollendEvent&&Ei;return l&&n.addEventListener(`scrollend`,c,Ti),()=>{n.removeEventListener(`scroll`,s),l&&n.removeEventListener(`scrollend`,c)}},Oi=(e,t,n)=>{if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},ki=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;let o=e+t;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:o,behavior:n})},Ai=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{Object.entries(e).forEach(([t,n])=>{n===void 0&&delete e[t]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Si,rangeExtractor:Ci,onChange:()=>{},measureElement:Oi,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,...e}},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=hi(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:process.env.NODE_ENV!==`production`&&`maybeNotify`,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&`ownerDocument`in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{this.scrollAdjustments=0,this.scrollDirection=t?this.getScrollOffset()<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{let n=new Map,r=new Map;for(let i=t-1;i>=0;i--){let t=e[i];if(n.has(t.lane))continue;let a=r.get(t.lane);if(a==null||t.end>a.end?r.set(t.lane,t):t.end<a.end&&n.set(t.lane,!0),n.size===this.options.lanes)break}return r.size===this.options.lanes?Array.from(r.values()).sort((e,t)=>e.end===t.end?e.index-t.index:e.end-t.end)[0]:void 0},this.getMeasurementOptions=hi(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(e,t,n,r,i,a,o)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o}),{key:!1}),this.getMeasurements=hi(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o},s)=>{if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let c=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1);let l=this.measurementsCache.slice(0,c),u=Array(a).fill(void 0);for(let e=0;e<c;e++){let t=l[e];t&&(u[t.lane]=e)}for(let i=c;i<e;i++){let e=r(i),a=this.laneAssignments.get(i),c,d,f=o===`estimate`||s.has(e);if(a!==void 0&&this.options.lanes>1){c=a;let e=u[c],r=e===void 0?void 0:l[e];d=r?r.end+this.options.gap:t+n}else{let e=this.options.lanes===1?l[i-1]:this.getFurthestMeasurement(l,i);d=e?e.end+this.options.gap:t+n,c=e?e.lane:i%this.options.lanes,this.options.lanes>1&&f&&this.laneAssignments.set(i,c)}let p=s.get(e),m=typeof p==`number`?p:this.options.estimateSize(i),h=d+m;l[i]={index:i,start:d,size:m,end:h,key:e,lane:c},u[c]=i}return this.measurementsCache=l,l},{key:process.env.NODE_ENV!==`production`&&`getMeasurements`,debug:()=>this.options.debug}),this.calculateRange=hi(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>this.range=e.length>0&&t>0?bi({measurements:e,outerSize:t,scrollOffset:n,lanes:r}):null,{key:process.env.NODE_ENV!==`production`&&`calculateRange`,debug:()=>this.options.debug}),this.getVirtualIndexes=hi(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:process.env.NODE_ENV!==`production`&&`getVirtualIndexes`,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{let n=this.measurementsCache[e];if(!n)return;let r=t-(this.itemSizeCache.get(n.key)??n.size);r!==0&&(this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?n.start<this.getScrollOffset()+this.scrollAdjustments:this.shouldAdjustScrollPositionOnItemSizeChange(n,r,this))&&(process.env.NODE_ENV!==`production`&&this.options.debug&&console.info(`correction`,r),this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=r,behavior:void 0})),this.pendingMeasuredCacheIndexes.push(n.index),this.itemSizeCache=new Map(this.itemSizeCache.set(n.key,t)),this.notify(!1))},this.getVirtualItems=hi(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:process.env.NODE_ENV!==`production`&&`getVirtualItems`,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length!==0)return gi(t[ji(0,t.length-1,e=>gi(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`)if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t];if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1)t=e[e.length-1]?.end??0;else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(e)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&_i(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.scrollState=null;return}}else this.scrollState.stableFrames=0,n&&(this.scrollState.lastTargetOffset=t,this.scrollState.behavior=`auto`,this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}));this.scheduleScrollReconcile()}},ji=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0}}));function Ni({useFlushSync:e=!0,...t}){let n=_.useReducer(()=>({}),{})[1],r={...t,onChange:(r,i)=>{var o;e&&i?(0,a.flushSync)(n):n(),(o=t.onChange)==null||o.call(t,r,i)}},[i]=_.useState(()=>new Ai(r));return i.setOptions(r),Fi(()=>i._didMount(),[]),Fi(()=>i._willUpdate()),i}function Pi(e){return Ni({observeElementRect:wi,observeElementOffset:Di,scrollToFn:ki,...e})}var Fi,Ii=f((()=>{Mi(),Mi(),Fi=typeof document<`u`?_.useLayoutEffect:_.useEffect})),Li=m({KanbanEnhanced:()=>Ui,default:()=>Ui});function Ri(e,t){if(!t||t.length===0)return{};for(let n of t){let t=e[n.field];if(t==null)continue;let r=!1,i=String(t);switch(n.operator){case`equals`:r=i===String(n.value);break;case`not_equals`:r=i!==String(n.value);break;case`contains`:r=i.toLowerCase().includes(String(n.value).toLowerCase());break;case`in`:r=Array.isArray(n.value)&&n.value.includes(i);break}if(r)return{...n.backgroundColor?{backgroundColor:n.backgroundColor}:{},...n.borderColor?{borderColor:n.borderColor}:{}}}return{}}function zi({card:e,conditionalFormatting:t}){let{attributes:n,listeners:r,setNodeRef:a,transform:o,transition:s,isDragging:c}=Wr({id:e.id}),l={transform:K.Transform.toString(o),transition:s,opacity:c?.5:void 0},u=Ri(e,t);return(0,$.jsx)(`div`,{ref:a,style:l,...n,...r,children:(0,$.jsxs)(i.Card,{className:`mb-2 cursor-grab active:cursor-grabbing border-border bg-card/60 hover:border-primary/40 hover:shadow-lg hover:shadow-primary/10 transition-all duration-300 group`,style:u,children:[e.coverImage&&(0,$.jsx)(`div`,{className:`w-full h-32 overflow-hidden rounded-t-lg`,children:(0,$.jsx)(`img`,{src:e.coverImage,alt:``,className:`w-full h-full object-cover`,loading:`lazy`})}),(0,$.jsxs)(i.CardHeader,{className:`p-4`,children:[(0,$.jsx)(i.CardTitle,{className:`text-sm font-medium tracking-tight text-foreground group-hover:text-primary transition-colors`,children:e.title}),e.description&&(0,$.jsx)(i.CardDescription,{className:`text-xs text-muted-foreground`,children:e.description})]}),e.badges&&e.badges.length>0&&(0,$.jsx)(i.CardContent,{className:`p-4 pt-0`,children:(0,$.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.badges.map((e,t)=>(0,$.jsx)(i.Badge,{variant:e.variant||`default`,className:`text-xs`,children:e.label},t))})})]})})}function Bi({cards:e,parentRef:t,conditionalFormatting:n}){let r=Pi({count:e.length,getScrollElement:()=>t.current,estimateSize:()=>120,overscan:5});return(0,$.jsx)(`div`,{style:{height:`${r.getTotalSize()}px`,width:`100%`,position:`relative`},children:r.getVirtualItems().map(t=>{let r=e[t.index];return(0,$.jsx)(`div`,{style:{position:`absolute`,top:0,left:0,width:`100%`,transform:`translateY(${t.start}px)`},children:(0,$.jsx)(zi,{card:r,conditionalFormatting:n})},r.id)})})}function Vi({columnId:e,onAdd:t}){let[n,r]=_.useState(!1),[a,o]=_.useState(``),s=_.useRef(null),c=()=>{let n=a.trim();n&&(t(e,n),o(``)),r(!1)};return n?(0,$.jsx)(`div`,{className:`mt-2 space-y-2`,children:(0,$.jsx)(i.Input,{ref:s,value:a,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),c()):e.key===`Escape`&&(o(``),r(!1))},onBlur:c,placeholder:`Enter card title...`,className:`text-sm`,autoFocus:!0})}):(0,$.jsxs)(i.Button,{variant:`ghost`,size:`sm`,className:`w-full mt-2 text-muted-foreground hover:text-foreground`,onClick:()=>{r(!0),setTimeout(()=>s.current?.focus(),0)},children:[(0,$.jsx)(fe,{className:`h-4 w-4 mr-1`}),`Add Card`]})}function Hi({column:e,cards:t,onToggle:n,enableVirtual:r,quickAdd:a,onQuickAdd:o,conditionalFormatting:s}){let c=t||[],l=_.useRef(null),{setNodeRef:u}=Wr({id:e.id,data:{type:`column`}}),d=e.limit&&c.length>=e.limit,f=e.limit&&c.length>=e.limit*.8;return(0,$.jsxs)(`div`,{ref:u,className:Wi(`flex flex-col flex-shrink-0 rounded-lg border border-border bg-card/20 backdrop-blur-sm shadow-xl transition-all`,e.collapsed?`w-16`:`w-80`,e.className),children:[(0,$.jsxs)(`div`,{className:`p-4 border-b border-border/50 bg-muted/20 flex items-center justify-between`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0`,children:[(0,$.jsx)(i.Button,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0`,onClick:()=>n(!e.collapsed),children:e.collapsed?(0,$.jsx)(se,{className:`h-4 w-4`}):(0,$.jsx)(V,{className:`h-4 w-4`})}),!e.collapsed&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`h3`,{className:` text-sm font-semibold tracking-wider text-primary/90 uppercase truncate`,children:e.title}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`span`,{className:Wi(` text-xs`,d?`text-destructive`:f?`text-yellow-500`:`text-muted-foreground`),children:[c.length,e.limit&&` / ${e.limit}`]}),d&&(0,$.jsx)(i.Badge,{variant:`destructive`,className:`text-xs`,children:`Full`}),f&&!d&&(0,$.jsx)(he,{className:`h-3 w-3 text-yellow-500`})]})]})]}),e.collapsed&&(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,$.jsx)(`span`,{className:` text-xs font-bold text-primary/90 [writing-mode:vertical-rl] rotate-180`,children:e.title}),(0,$.jsx)(i.Badge,{variant:`secondary`,className:`text-xs`,children:c.length})]})]}),!e.collapsed&&(0,$.jsxs)(`div`,{ref:l,className:`flex-1 p-4 overflow-y-auto`,style:{maxHeight:`600px`},children:[(0,$.jsx)(Hr,{items:c.map(e=>e.id),strategy:Jr,children:r?(0,$.jsx)(Bi,{cards:c,parentRef:l,conditionalFormatting:s}):(0,$.jsx)(`div`,{className:`space-y-2`,children:c.map(e=>(0,$.jsx)(zi,{card:e,conditionalFormatting:s},e.id))})}),a&&o&&(0,$.jsx)(Vi,{columnId:e.id,onAdd:o})]})]})}function Ui({columns:e,onCardMove:t,onColumnToggle:n,enableVirtualScrolling:r=!1,virtualScrollThreshold:i=50,className:a,quickAdd:o,onQuickAdd:s,conditionalFormatting:c}){let[l,u]=_.useState(null),d=_.useMemo(()=>(e||[]).map(e=>({...e,cards:e.cards||[]})),[e]),[f,p]=_.useState(d);_.useEffect(()=>{p(d)},[d]);let m=mt(pt(Xn,{activationConstraint:{distance:8}})),h=e=>{let{active:t}=e;u(v(t.id))},g=e=>{let{active:n,over:r}=e;if(u(null),!r)return;let i=n.id,a=r.id;if(i===a)return;let o=y(i),s=y(a)||b(a);if(!(!o||!s))if(o.id===s.id){let e=[...o.cards],t=Ir(e,e.findIndex(e=>e.id===i),e.findIndex(e=>e.id===a));p(e=>e.map(e=>e.id===o.id?{...e,cards:t}:e))}else{let e=[...o.cards],n=[...s.cards],r=e.findIndex(e=>e.id===i),c=a===s.id?n.length:n.findIndex(e=>e.id===a),[l]=e.splice(r,1);n.splice(c,0,l),p(t=>t.map(t=>t.id===o.id?{...t,cards:e}:t.id===s.id?{...t,cards:n}:t)),t&&t(i,o.id,s.id,c)}},v=_.useCallback(e=>{for(let t of f){let n=t.cards.find(t=>t.id===e);if(n)return n}return null},[f]),y=_.useCallback(e=>f.find(t=>t.cards.some(t=>t.id===e))||null,[f]),b=_.useCallback(e=>f.find(t=>t.id===e)||null,[f]),x=_.useCallback((e,t)=>{p(n=>n.map(n=>n.id===e?{...n,collapsed:t}:n)),n?.(e,t)},[n]);return(0,$.jsxs)(br,{sensors:m,collisionDetection:Ln,onDragStart:h,onDragEnd:g,children:[(0,$.jsx)(`div`,{className:Wi(`flex gap-4 overflow-x-auto p-4`,a),children:f.map(e=>{let t=r&&e.cards.length>i;return(0,$.jsx)(Hi,{column:e,cards:e.cards,onToggle:t=>x(e.id,t),enableVirtual:t,quickAdd:o,onQuickAdd:s,conditionalFormatting:c},e.id)})}),(0,$.jsx)(Pr,{children:l?(0,$.jsx)(zi,{card:l,conditionalFormatting:c}):null})]})}var $,Wi,Gi=f((()=>{Ii(),Fr(),ri(),rt(),U(),$=b(),Wi=(...e)=>e.filter(Boolean).join(` `)})),Ki=_.default.lazy(()=>Promise.resolve().then(()=>(mi(),ii))),qi=_.default.lazy(()=>Promise.resolve().then(()=>(Gi(),Li))),Ji=({schema:e})=>{let t=_.default.useMemo(()=>{let{columns:t=[],data:n,groupBy:r,coverImageField:i}=e,a=e=>{if(!i)return e;let t=e[i];if(!t)return e;let n=typeof t==`string`?t:t?.url;return n?{...e,coverImage:n}:e};if(n&&r&&Array.isArray(n)){let e={};t.forEach(t=>{t.id&&(e[String(t.id).toLowerCase()]=t.id),t.title&&(e[String(t.title).toLowerCase()]=t.id)});let i=n.reduce((t,n)=>{let i=String(n[r]??``),o=e[i.toLowerCase()]??i;return t[o]||(t[o]=[]),t[o].push(a(n)),t},{});return t.map(e=>({...e,cards:[...(e.cards||[]).map(a),...i[e.id]||[]]}))}return t.map(e=>({...e,cards:(e.cards||[]).map(a)}))},[e]);return(0,x.jsx)(_.Suspense,{fallback:(0,x.jsx)(i.Skeleton,{className:`w-full h-[600px]`}),children:(0,x.jsx)(Ki,{columns:t,onCardMove:e.onCardMove,onCardClick:e.onCardClick,className:e.className,quickAdd:e.quickAdd,onQuickAdd:e.onQuickAdd,coverImageField:e.coverImageField,conditionalFormatting:e.conditionalFormatting,swimlaneField:e.swimlaneField})})};n.ComponentRegistry.register(`kanban-ui`,Ji,{namespace:`plugin-kanban`,label:`Kanban Board`,icon:`LayoutDashboard`,category:`plugin`,inputs:[{name:`columns`,type:`array`,label:`Columns`,description:`Array of { id, title, cards, limit, className }`,required:!0},{name:`onCardMove`,type:`code`,label:`On Card Move`,description:`Callback when a card is moved`,advanced:!0},{name:`className`,type:`string`,label:`CSS Class`}],defaultProps:{columns:[{id:`todo`,title:`To Do`,cards:[{id:`card-1`,title:`Task 1`,description:`This is the first task`,badges:[{label:`High Priority`,variant:`destructive`},{label:`Feature`,variant:`default`}]},{id:`card-2`,title:`Task 2`,description:`This is the second task`,badges:[{label:`Bug`,variant:`destructive`}]}]},{id:`in-progress`,title:`In Progress`,limit:3,cards:[{id:`card-3`,title:`Task 3`,description:`Currently working on this`,badges:[{label:`In Progress`,variant:`default`}]}]},{id:`done`,title:`Done`,cards:[{id:`card-4`,title:`Task 4`,description:`This task is completed`,badges:[{label:`Completed`,variant:`outline`}]},{id:`card-5`,title:`Task 5`,description:`Another completed task`,badges:[{label:`Completed`,variant:`outline`}]}]}],className:`w-full`}});var Yi={kanban:Ji,"kanban-enhanced":qi,"object-kanban":S};n.ComponentRegistry.register(`kanban-enhanced`,({schema:e})=>{let t=_.default.useMemo(()=>{let{columns:t=[],data:n,groupBy:r}=e;if(n&&r&&Array.isArray(n)){let e=n.reduce((e,t)=>{let n=t[r];return e[n]||(e[n]=[]),e[n].push(t),e},{});return t.map(t=>({...t,cards:[...t.cards||[],...e[t.id]||[]]}))}return t},[e]);return(0,x.jsx)(_.Suspense,{fallback:(0,x.jsx)(i.Skeleton,{className:`w-full h-[600px]`}),children:(0,x.jsx)(qi,{columns:t,onCardMove:e.onCardMove,onColumnToggle:e.onColumnToggle,enableVirtualScrolling:e.enableVirtualScrolling,virtualScrollThreshold:e.virtualScrollThreshold,className:e.className,quickAdd:e.quickAdd,onQuickAdd:e.onQuickAdd,conditionalFormatting:e.conditionalFormatting})})},{namespace:`plugin-kanban`,label:`Kanban Board (Enhanced)`,icon:`LayoutGrid`,category:`plugin`,inputs:[{name:`columns`,type:`array`,label:`Columns`,required:!0},{name:`enableVirtualScrolling`,type:`boolean`,label:`Virtual Scrolling`,defaultValue:!1},{name:`virtualScrollThreshold`,type:`number`,label:`Virtual Scroll Threshold`,defaultValue:50},{name:`onCardMove`,type:`code`,label:`On Card Move`,advanced:!0},{name:`onColumnToggle`,type:`code`,label:`On Column Toggle`,advanced:!0},{name:`className`,type:`string`,label:`CSS Class`}],defaultProps:{columns:[],enableVirtualScrolling:!1,virtualScrollThreshold:50,className:`w-full`}});var Xi=({schema:e,...t})=>{let{dataSource:n}=(0,r.useSchemaContext)()||{};return(0,x.jsx)(S,{schema:e,dataSource:n,...t})};n.ComponentRegistry.register(`object-kanban`,Xi,{namespace:`plugin-kanban`,label:`Object Kanban`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`columns`,type:`array`,label:`Columns`}]}),n.ComponentRegistry.register(`kanban`,Xi,{namespace:`view`,label:`Kanban Board`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`columns`,type:`array`,label:`Columns`}]}),e.CardTemplates=we,e.InlineQuickAdd=xe,e.KanbanRenderer=Ji,e.ObjectKanban=S,e.ObjectKanbanRenderer=Xi,e.kanbanComponents=Yi,e.useColumnWidths=Oe,e.useCrossSwimlaneMove=ke,e.useQuickAddReorder=Ae});
@@ -1 +1 @@
1
- {"version":3,"file":"KanbanImpl.d.ts","sourceRoot":"","sources":["../../../../src/KanbanImpl.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA8BH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAA;KAAE,CAAC,CAAA;IAChG,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,IAAI,CAAA;IACrD,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACjG,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IACxC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,qBAAqB,CAAC,EAAE,yBAAyB,EAAE,CAAA;IACnD,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AA4OD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,qBAAqB,EAAE,aAAa,EAAE,EAAE,gBAAgB,2CAYjL"}
1
+ {"version":3,"file":"KanbanImpl.d.ts","sourceRoot":"","sources":["../../../../src/KanbanImpl.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA8BH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAA;KAAE,CAAC,CAAA;IAChG,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,IAAI,CAAA;IACrD,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACjG,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IACxC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,qBAAqB,CAAC,EAAE,yBAAyB,EAAE,CAAA;IACnD,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAuPD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,qBAAqB,EAAE,aAAa,EAAE,EAAE,gBAAgB,2CAYjL"}
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectKanban.d.ts","sourceRoot":"","sources":["../../../../src/ObjectKanban.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2GAA2G;IAC3G,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,2FAA2F;IAC3F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuPpD,CAAA"}
1
+ {"version":3,"file":"ObjectKanban.d.ts","sourceRoot":"","sources":["../../../../src/ObjectKanban.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2GAA2G;IAC3G,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,2FAA2F;IAC3F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAoVpD,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/plugin-kanban",
3
- "version": "3.3.2",
3
+ "version": "4.0.1",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Kanban board plugin for Object UI, powered by dnd-kit",
@@ -28,11 +28,11 @@
28
28
  "@dnd-kit/sortable": "^10.0.0",
29
29
  "@dnd-kit/utilities": "^3.2.2",
30
30
  "@tanstack/react-virtual": "^3.13.24",
31
- "lucide-react": "^1.8.0",
32
- "@object-ui/components": "3.3.2",
33
- "@object-ui/core": "3.3.2",
34
- "@object-ui/react": "3.3.2",
35
- "@object-ui/types": "3.3.2"
31
+ "lucide-react": "^1.14.0",
32
+ "@object-ui/components": "4.0.1",
33
+ "@object-ui/core": "4.0.1",
34
+ "@object-ui/react": "4.0.1",
35
+ "@object-ui/types": "4.0.1"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "react": "^18.0.0 || ^19.0.0",
@@ -44,8 +44,8 @@
44
44
  "@vitejs/plugin-react": "^6.0.1",
45
45
  "typescript": "^6.0.3",
46
46
  "vite": "^8.0.10",
47
- "vite-plugin-dts": "^4.5.4",
48
- "@object-ui/data-objectstack": "3.3.2"
47
+ "vite-plugin-dts": "^5.0.0",
48
+ "@object-ui/data-objectstack": "4.0.1"
49
49
  },
50
50
  "keywords": [
51
51
  "objectui",