@membank/dashboard 0.9.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/bin.mjs +109 -1
  2. package/dist/client/assets/AppLink-CcI58QNL.js +3 -0
  3. package/dist/client/assets/WorkspaceMemoryDetail-CKp3CCbn.js +1 -0
  4. package/dist/client/assets/_projectId-Eeq3OhFZ.js +4 -0
  5. package/dist/client/assets/_projectId._memoryId-BFlrz98g.js +1 -0
  6. package/dist/client/assets/{collections-Bj4kWtiN.js → collections-gO05Tpa7.js} +7 -7
  7. package/dist/client/assets/index--CCYAGMc.js +48 -0
  8. package/dist/client/assets/index-BudjKWgr.css +2 -0
  9. package/dist/client/assets/popupStateMapping-CKjEg8lE.js +1 -0
  10. package/dist/client/assets/preload-helper-DEuj8E0K.js +1 -0
  11. package/dist/client/assets/review-CnySMKKH.js +1 -0
  12. package/dist/client/assets/routes-LNNp11yc.js +1 -0
  13. package/dist/client/assets/spinner-B9RlP5lt.js +1 -0
  14. package/dist/client/assets/textarea-BLDQQzbc.js +1 -0
  15. package/dist/client/index.html +5 -4
  16. package/dist/index.cjs +108 -0
  17. package/dist/index.mjs +109 -1
  18. package/package.json +2 -2
  19. package/dist/client/assets/WorkspaceMemoryDetail-BFpMjQWu.js +0 -1
  20. package/dist/client/assets/_projectId-Cs170Emi.js +0 -40
  21. package/dist/client/assets/_projectId-p99W0TrB.js +0 -4
  22. package/dist/client/assets/_projectId._memoryId-B8g4zsrH.js +0 -1
  23. package/dist/client/assets/index-DwfCB-hG.js +0 -10
  24. package/dist/client/assets/index-JriiD5q1.css +0 -2
  25. package/dist/client/assets/routes-uvB1fUgz.js +0 -1
  26. package/dist/client/assets/typeColors-C2x_OYRB.js +0 -1
  27. /package/dist/client/assets/{_projectId.index-jEbJri1I.js → _projectId.index-8YNIf2cB.js} +0 -0
package/dist/index.cjs CHANGED
@@ -114,6 +114,78 @@ function createApiApp(repo, projectRepo, embedder, queryEngine, synthRepo, activ
114
114
  }
115
115
  return c.json(memories);
116
116
  });
117
+ app.get("/api/memories/flagged-clusters", (c) => {
118
+ const projectIdParam = c.req.query("projectId");
119
+ const project = projectIdParam ? projectRepo.list().find((p) => p.id === projectIdParam) : void 0;
120
+ const clusters = (0, _membank_core.clusterFlagged)(repo.listReviewEdges(project?.scopeHash));
121
+ const inActiveCluster = new Set(clusters.flatMap((cl) => cl.memoryIds));
122
+ const activeResults = clusters.map((cl) => {
123
+ const memories = repo.findManyById(cl.memoryIds);
124
+ const maxSimilarity = memories.reduce((max, m) => {
125
+ const sim = m.reviewEvents.reduce((ms, e) => Math.max(ms, e.similarity), 0);
126
+ return Math.max(max, sim);
127
+ }, 0);
128
+ return {
129
+ clusterId: cl.clusterId,
130
+ memories,
131
+ maxSimilarity,
132
+ isStale: false
133
+ };
134
+ });
135
+ const staleResults = repo.list({
136
+ needsReview: true,
137
+ ...project && { projectId: project.id }
138
+ }).filter((m) => !inActiveCluster.has(m.id)).map((m) => ({
139
+ clusterId: m.id,
140
+ memories: [m],
141
+ maxSimilarity: 0,
142
+ isStale: true
143
+ }));
144
+ return c.json([...activeResults, ...staleResults].sort((a, b) => b.maxSimilarity - a.maxSimilarity));
145
+ });
146
+ app.post("/api/memories/merge", async (c) => {
147
+ const body = await c.req.json();
148
+ if (typeof body.keepId !== "string" || !Array.isArray(body.dropIds) || typeof body.mergedContent !== "string") return c.json({ error: "keepId, dropIds, and mergedContent are required" }, 400);
149
+ try {
150
+ const { kept } = await (0, _membank_core.mergeMemories)({
151
+ keepId: body.keepId,
152
+ dropIds: body.dropIds,
153
+ mergedContent: body.mergedContent
154
+ }, {
155
+ repo,
156
+ embedder,
157
+ activityLogger
158
+ });
159
+ return c.json(kept);
160
+ } catch (err) {
161
+ return c.json({ error: err instanceof Error ? err.message : String(err) }, 400);
162
+ }
163
+ });
164
+ app.post("/api/memories/merge-suggest", async (c) => {
165
+ if (!(0, _membank_core.isSynthesisEnabled)()) return c.json({ error: "Synthesis is disabled" }, 503);
166
+ const body = await c.req.json();
167
+ if (!Array.isArray(body.ids)) return c.json({ error: "ids array is required" }, 400);
168
+ const memories = body.ids.map((id) => repo.findById(id)).filter((m) => m !== void 0);
169
+ if (memories.length === 0) return c.json({ error: "No memories found for given ids" }, 404);
170
+ try {
171
+ const content = await (0, _membank_core.suggestMerge)(memories.map((m) => m.content));
172
+ return c.json({ content });
173
+ } catch (err) {
174
+ return c.json({ error: err instanceof Error ? err.message : String(err) }, 500);
175
+ }
176
+ });
177
+ app.post("/api/memories/delete-many", async (c) => {
178
+ const body = await c.req.json();
179
+ if (!Array.isArray(body.ids)) return c.json({ error: "ids array is required" }, 400);
180
+ const results = await (0, _membank_core.deleteManyMemories)(body.ids, repo, activityLogger);
181
+ return c.json(results);
182
+ });
183
+ app.post("/api/memories/resolve-many", async (c) => {
184
+ const body = await c.req.json();
185
+ if (!Array.isArray(body.ids)) return c.json({ error: "ids array is required" }, 400);
186
+ const results = (0, _membank_core.resolveReviewMany)(body.ids, repo);
187
+ return c.json(results);
188
+ });
117
189
  app.get("/api/memories/:id", (c) => {
118
190
  const memory = repo.findById(c.req.param("id"));
119
191
  if (!memory) return c.json({ error: "Not found" }, 404);
@@ -140,6 +212,24 @@ function createApiApp(repo, projectRepo, embedder, queryEngine, synthRepo, activ
140
212
  await (0, _membank_core.deleteMemory)(c.req.param("id"), repo, activityLogger);
141
213
  return c.json({ ok: true });
142
214
  });
215
+ app.get("/api/memories/:id/history", (c) => {
216
+ return c.json(repo.listVersions(c.req.param("id")));
217
+ });
218
+ app.post("/api/memories/:id/revert", async (c) => {
219
+ const id = c.req.param("id");
220
+ const body = await c.req.json();
221
+ try {
222
+ const updated = await (0, _membank_core.revertMemory)(id, body.version, {
223
+ repo,
224
+ embedder,
225
+ activityLogger
226
+ });
227
+ return c.json(updated);
228
+ } catch (err) {
229
+ const message = err instanceof Error ? err.message : String(err);
230
+ return c.json({ error: message }, 404);
231
+ }
232
+ });
143
233
  app.post("/api/memories/:id/projects", async (c) => {
144
234
  const body = await c.req.json();
145
235
  projectRepo.addAssociation(c.req.param("id"), body.projectId);
@@ -193,6 +283,24 @@ function createApiApp(repo, projectRepo, embedder, queryEngine, synthRepo, activ
193
283
  synthRepo.clearInFlight(project.scopeHash);
194
284
  return c.json({ ok: true });
195
285
  });
286
+ app.get("/api/projects/:id/synthesis/history", (c) => {
287
+ const project = projectRepo.list().find((p) => p.id === c.req.param("id"));
288
+ if (!project) return c.json({ error: "Not found" }, 404);
289
+ return c.json(synthRepo.listVersions(project.scopeHash));
290
+ });
291
+ app.post("/api/projects/:id/synthesis/revert", async (c) => {
292
+ const project = projectRepo.list().find((p) => p.id === c.req.param("id"));
293
+ if (!project) return c.json({ error: "Not found" }, 404);
294
+ const body = await c.req.json();
295
+ const version = typeof body.version === "number" ? body.version : NaN;
296
+ if (Number.isNaN(version)) return c.json({ error: "version must be a number" }, 400);
297
+ try {
298
+ (0, _membank_core.revertSynthesis)(project.scopeHash, version, synthRepo);
299
+ } catch {
300
+ return c.json({ error: "Version not found" }, 404);
301
+ }
302
+ return c.json({ ok: true });
303
+ });
196
304
  app.get("/api/projects/:id/stats", (c) => {
197
305
  const project = projectRepo.list().find((p) => p.id === c.req.param("id"));
198
306
  if (!project) return c.json({ error: "Not found" }, 404);
package/dist/index.mjs CHANGED
@@ -3,7 +3,7 @@ import { createServer } from "node:net";
3
3
  import { dirname, extname, join } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
5
  import { serve } from "@hono/node-server";
6
- import { ActivityEventTypeSchema, DatabaseManager, EmbeddingService, QueryEngine, createActivityLogger, createActivityRepository, createMemoryRepository, createProjectRepository, createSynthesisAgentRunner, createSynthesisRepository, deleteMemory, isSynthesisEnabled, listEvents, runSynthesis, updateMemory } from "@membank/core";
6
+ import { ActivityEventTypeSchema, DatabaseManager, EmbeddingService, QueryEngine, clusterFlagged, createActivityLogger, createActivityRepository, createMemoryRepository, createProjectRepository, createSynthesisAgentRunner, createSynthesisRepository, deleteManyMemories, deleteMemory, isSynthesisEnabled, listEvents, mergeMemories, resolveReviewMany, revertMemory, revertSynthesis, runSynthesis, suggestMerge, updateMemory } from "@membank/core";
7
7
  import { Hono } from "hono";
8
8
  import open from "open";
9
9
  //#region src/server/index.ts
@@ -90,6 +90,78 @@ function createApiApp(repo, projectRepo, embedder, queryEngine, synthRepo, activ
90
90
  }
91
91
  return c.json(memories);
92
92
  });
93
+ app.get("/api/memories/flagged-clusters", (c) => {
94
+ const projectIdParam = c.req.query("projectId");
95
+ const project = projectIdParam ? projectRepo.list().find((p) => p.id === projectIdParam) : void 0;
96
+ const clusters = clusterFlagged(repo.listReviewEdges(project?.scopeHash));
97
+ const inActiveCluster = new Set(clusters.flatMap((cl) => cl.memoryIds));
98
+ const activeResults = clusters.map((cl) => {
99
+ const memories = repo.findManyById(cl.memoryIds);
100
+ const maxSimilarity = memories.reduce((max, m) => {
101
+ const sim = m.reviewEvents.reduce((ms, e) => Math.max(ms, e.similarity), 0);
102
+ return Math.max(max, sim);
103
+ }, 0);
104
+ return {
105
+ clusterId: cl.clusterId,
106
+ memories,
107
+ maxSimilarity,
108
+ isStale: false
109
+ };
110
+ });
111
+ const staleResults = repo.list({
112
+ needsReview: true,
113
+ ...project && { projectId: project.id }
114
+ }).filter((m) => !inActiveCluster.has(m.id)).map((m) => ({
115
+ clusterId: m.id,
116
+ memories: [m],
117
+ maxSimilarity: 0,
118
+ isStale: true
119
+ }));
120
+ return c.json([...activeResults, ...staleResults].sort((a, b) => b.maxSimilarity - a.maxSimilarity));
121
+ });
122
+ app.post("/api/memories/merge", async (c) => {
123
+ const body = await c.req.json();
124
+ if (typeof body.keepId !== "string" || !Array.isArray(body.dropIds) || typeof body.mergedContent !== "string") return c.json({ error: "keepId, dropIds, and mergedContent are required" }, 400);
125
+ try {
126
+ const { kept } = await mergeMemories({
127
+ keepId: body.keepId,
128
+ dropIds: body.dropIds,
129
+ mergedContent: body.mergedContent
130
+ }, {
131
+ repo,
132
+ embedder,
133
+ activityLogger
134
+ });
135
+ return c.json(kept);
136
+ } catch (err) {
137
+ return c.json({ error: err instanceof Error ? err.message : String(err) }, 400);
138
+ }
139
+ });
140
+ app.post("/api/memories/merge-suggest", async (c) => {
141
+ if (!isSynthesisEnabled()) return c.json({ error: "Synthesis is disabled" }, 503);
142
+ const body = await c.req.json();
143
+ if (!Array.isArray(body.ids)) return c.json({ error: "ids array is required" }, 400);
144
+ const memories = body.ids.map((id) => repo.findById(id)).filter((m) => m !== void 0);
145
+ if (memories.length === 0) return c.json({ error: "No memories found for given ids" }, 404);
146
+ try {
147
+ const content = await suggestMerge(memories.map((m) => m.content));
148
+ return c.json({ content });
149
+ } catch (err) {
150
+ return c.json({ error: err instanceof Error ? err.message : String(err) }, 500);
151
+ }
152
+ });
153
+ app.post("/api/memories/delete-many", async (c) => {
154
+ const body = await c.req.json();
155
+ if (!Array.isArray(body.ids)) return c.json({ error: "ids array is required" }, 400);
156
+ const results = await deleteManyMemories(body.ids, repo, activityLogger);
157
+ return c.json(results);
158
+ });
159
+ app.post("/api/memories/resolve-many", async (c) => {
160
+ const body = await c.req.json();
161
+ if (!Array.isArray(body.ids)) return c.json({ error: "ids array is required" }, 400);
162
+ const results = resolveReviewMany(body.ids, repo);
163
+ return c.json(results);
164
+ });
93
165
  app.get("/api/memories/:id", (c) => {
94
166
  const memory = repo.findById(c.req.param("id"));
95
167
  if (!memory) return c.json({ error: "Not found" }, 404);
@@ -116,6 +188,24 @@ function createApiApp(repo, projectRepo, embedder, queryEngine, synthRepo, activ
116
188
  await deleteMemory(c.req.param("id"), repo, activityLogger);
117
189
  return c.json({ ok: true });
118
190
  });
191
+ app.get("/api/memories/:id/history", (c) => {
192
+ return c.json(repo.listVersions(c.req.param("id")));
193
+ });
194
+ app.post("/api/memories/:id/revert", async (c) => {
195
+ const id = c.req.param("id");
196
+ const body = await c.req.json();
197
+ try {
198
+ const updated = await revertMemory(id, body.version, {
199
+ repo,
200
+ embedder,
201
+ activityLogger
202
+ });
203
+ return c.json(updated);
204
+ } catch (err) {
205
+ const message = err instanceof Error ? err.message : String(err);
206
+ return c.json({ error: message }, 404);
207
+ }
208
+ });
119
209
  app.post("/api/memories/:id/projects", async (c) => {
120
210
  const body = await c.req.json();
121
211
  projectRepo.addAssociation(c.req.param("id"), body.projectId);
@@ -169,6 +259,24 @@ function createApiApp(repo, projectRepo, embedder, queryEngine, synthRepo, activ
169
259
  synthRepo.clearInFlight(project.scopeHash);
170
260
  return c.json({ ok: true });
171
261
  });
262
+ app.get("/api/projects/:id/synthesis/history", (c) => {
263
+ const project = projectRepo.list().find((p) => p.id === c.req.param("id"));
264
+ if (!project) return c.json({ error: "Not found" }, 404);
265
+ return c.json(synthRepo.listVersions(project.scopeHash));
266
+ });
267
+ app.post("/api/projects/:id/synthesis/revert", async (c) => {
268
+ const project = projectRepo.list().find((p) => p.id === c.req.param("id"));
269
+ if (!project) return c.json({ error: "Not found" }, 404);
270
+ const body = await c.req.json();
271
+ const version = typeof body.version === "number" ? body.version : NaN;
272
+ if (Number.isNaN(version)) return c.json({ error: "version must be a number" }, 400);
273
+ try {
274
+ revertSynthesis(project.scopeHash, version, synthRepo);
275
+ } catch {
276
+ return c.json({ error: "Version not found" }, 404);
277
+ }
278
+ return c.json({ ok: true });
279
+ });
172
280
  app.get("/api/projects/:id/stats", (c) => {
173
281
  const project = projectRepo.list().find((p) => p.id === c.req.param("id"));
174
282
  if (!project) return c.json({ error: "Not found" }, 404);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@membank/dashboard",
3
- "version": "0.9.1",
3
+ "version": "0.11.0",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -56,7 +56,7 @@
56
56
  "tailwind-merge": "^3.0.0",
57
57
  "tw-animate-css": "^1.0.0",
58
58
  "zod": "^4.3.6",
59
- "@membank/core": "0.13.0"
59
+ "@membank/core": "0.14.0"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@rolldown/plugin-babel": "^0.2.3",
@@ -1 +0,0 @@
1
- import{B as e,C as t,Ct as n,D as r,Dt as i,E as a,I as o,L as s,N as c,O as l,Ot as u,Q as d,R as f,S as p,St as m,T as h,V as g,_,_t as v,a as y,b,bt as x,d as S,dn as C,dt as w,fn as T,h as E,ht as D,m as O,mn as k,n as A,r as j,st as M,t as N,u as P,v as F,vt as I,w as ee,xt as L,y as te,yt as ne,z as R}from"./collections-Bj4kWtiN.js";import{S as z,a as B,b as V,f as H,h as re,i as ie,m as ae,o as oe,p as se,r as ce,s as le,t as ue,u as de,x as U,y as W}from"./_projectId-Cs170Emi.js";var fe=class{constructor(e){this.atom=U(e)}setState(e){this.atom.set(e)}get state(){return this.atom.get()}get(){return this.state}subscribe(e){return this.atom.subscribe(z(e))}},pe=class{constructor(e){this.atom=U(e)}get state(){return this.atom.get()}get(){return this.state}subscribe(e){return this.atom.subscribe(z(e))}};function G(e){return typeof e==`function`?new pe(e):new fe(e)}var K=k(T(),1);function q(e,t){if(e===void 0)return{shouldBlockFn:()=>!0,withResolver:!1};if(`shouldBlockFn`in e)return e;if(typeof e==`function`){let n=!!(t??!0);return{shouldBlockFn:async()=>n?await e():!1,enableBeforeUnload:n,withResolver:!1}}let n=!!(e.condition??!0),r=e.blockerFn;return{shouldBlockFn:async()=>n&&r!==void 0?await r():n,enableBeforeUnload:n,withResolver:r===void 0}}function me(e,t){let{shouldBlockFn:n,enableBeforeUnload:r=!0,disabled:i=!1,withResolver:a=!1}=q(e,t),o=u(),{history:s}=o,[c,l]=K.useState({status:`idle`,current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0});return K.useEffect(()=>i?void 0:s.block({blockerFn:async e=>{function t(e){let t=o.parseLocation(e),n=o.getMatchedRoutes(t.pathname);return n.foundRoute===void 0?{routeId:`__notFound__`,fullPath:t.pathname,pathname:t.pathname,params:n.routeParams,search:o.options.parseSearch(e.search)}:{routeId:n.foundRoute.id,fullPath:n.foundRoute.fullPath,pathname:t.pathname,params:n.routeParams,search:o.options.parseSearch(e.search)}}let r=t(e.currentLocation),i=t(e.nextLocation);if(r.routeId===`__notFound__`&&i.routeId!==`__notFound__`)return!1;let s=await n({action:e.action,current:r,next:i});if(!a)return s;if(!s)return!1;let c=await new Promise(t=>{l({status:`blocked`,current:r,next:i,action:e.action,proceed:()=>t(!1),reset:()=>t(!0)})});return l({status:`idle`,current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0}),c},enableBeforeUnload:r}),[n,r,i,a,s,o]),c}var he=new Map([[`bold`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M216.49,104.49l-80,80a12,12,0,0,1-17,0l-80-80a12,12,0,0,1,17-17L128,159l71.51-71.52a12,12,0,0,1,17,17Z`}))],[`duotone`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M208,96l-80,80L48,96Z`,opacity:`0.2`}),K.createElement(`path`,{d:`M215.39,92.94A8,8,0,0,0,208,88H48a8,8,0,0,0-5.66,13.66l80,80a8,8,0,0,0,11.32,0l80-80A8,8,0,0,0,215.39,92.94ZM128,164.69,67.31,104H188.69Z`}))],[`fill`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,48,88H208a8,8,0,0,1,5.66,13.66Z`}))],[`light`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M212.24,100.24l-80,80a6,6,0,0,1-8.48,0l-80-80a6,6,0,0,1,8.48-8.48L128,167.51l75.76-75.75a6,6,0,0,1,8.48,8.48Z`}))],[`regular`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z`}))],[`thin`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M210.83,98.83l-80,80a4,4,0,0,1-5.66,0l-80-80a4,4,0,0,1,5.66-5.66L128,170.34l77.17-77.17a4,4,0,1,1,5.66,5.66Z`}))]]),ge=K.forwardRef((e,t)=>K.createElement(re,{ref:t,...e,weights:he}));ge.displayName=`CaretDownIcon`;var _e=ge,ve=class{constructor(e,t){this.fn=e,this.options=t,this.lastExecutionTime=0,this.isPending=!1,this.maybeExecute=(...e)=>{let t=Date.now()-this.lastExecutionTime;if(this.options.leading&&t>=this.options.wait)this.execute(...e);else if(this.lastArgs=e,!this.timeoutId&&this.options.trailing){let e=this.options.wait-t;this.isPending=!0,this.timeoutId=setTimeout(()=>{this.lastArgs!==void 0&&this.execute(...this.lastArgs)},e)}},this.execute=(...e)=>{this.fn(...e),this.options.onExecute?.(e,this),this.lastExecutionTime=Date.now(),this.clearTimeout(),this.lastArgs=void 0,this.isPending=!1},this.flush=()=>{this.isPending&&this.lastArgs&&this.execute(...this.lastArgs)},this.cancel=()=>{this.clearTimeout(),this.lastArgs=void 0,this.isPending=!1},this.clearTimeout=()=>{this.timeoutId&&=(clearTimeout(this.timeoutId),void 0)},this.options.leading===void 0&&this.options.trailing===void 0&&(this.options.leading=!0,this.options.trailing=!0)}};function ye(e,t){return new ve(e,t).maybeExecute}var be=class{#e=!0;#t;#n;#r;#i;#a;#o;#s;#c=0;#l=5;#u=!1;#d=!1;#f=null;#p=()=>{this.debugLog(`Connected to event bus`),this.#a=!0,this.#u=!1,this.debugLog(`Emitting queued events`,this.#i),this.#i.forEach(e=>this.emitEventToBus(e)),this.#i=[],this.stopConnectLoop(),this.#n().removeEventListener(`tanstack-connect-success`,this.#p)};#m=()=>{if(this.#c<this.#l){this.#c++,this.dispatchCustomEvent(`tanstack-connect`,{});return}this.#n().removeEventListener(`tanstack-connect`,this.#m),this.#d=!0,this.debugLog(`Max retries reached, giving up on connection`),this.stopConnectLoop()};#h=()=>{this.#u||(this.#u=!0,this.#n().addEventListener(`tanstack-connect-success`,this.#p),this.#m())};constructor({pluginId:e,debug:t=!1,enabled:n=!0,reconnectEveryMs:r=300}){this.#t=e,this.#e=n,this.#n=this.getGlobalTarget,this.#r=t,this.debugLog(` Initializing event subscription for plugin`,this.#t),this.#i=[],this.#a=!1,this.#d=!1,this.#o=null,this.#s=r}startConnectLoop(){this.#o!==null||this.#a||(this.debugLog(`Starting connect loop (every ${this.#s}ms)`),this.#o=setInterval(this.#m,this.#s))}stopConnectLoop(){this.#u=!1,this.#o!==null&&(clearInterval(this.#o),this.#o=null,this.#i=[],this.debugLog(`Stopped connect loop`))}debugLog(...e){this.#r&&console.log(`🌴 [tanstack-devtools:${this.#t}-plugin]`,...e)}getGlobalTarget(){if(typeof globalThis<`u`&&globalThis.__TANSTACK_EVENT_TARGET__)return this.debugLog(`Using global event target`),globalThis.__TANSTACK_EVENT_TARGET__;if(typeof window<`u`&&window.addEventListener!==void 0)return this.debugLog(`Using window as event target`),window;let e=typeof EventTarget<`u`?new EventTarget:void 0;return e===void 0||e.addEventListener===void 0?(this.debugLog(`No event mechanism available, running in non-web environment`),{addEventListener:()=>{},removeEventListener:()=>{},dispatchEvent:()=>!1}):(this.debugLog(`Using new EventTarget as fallback`),e)}getPluginId(){return this.#t}dispatchCustomEventShim(e,t){try{let n=new Event(e,{detail:t});this.#n().dispatchEvent(n)}catch{this.debugLog(`Failed to dispatch shim event`)}}dispatchCustomEvent(e,t){try{this.#n().dispatchEvent(new CustomEvent(e,{detail:t}))}catch{this.dispatchCustomEventShim(e,t)}}emitEventToBus(e){this.debugLog(`Emitting event to client bus`,e),this.dispatchCustomEvent(`tanstack-dispatch-event`,e)}createEventPayload(e,t){return{type:`${this.#t}:${e}`,payload:t,pluginId:this.#t}}emit(e,t){if(!this.#e){this.debugLog(`Event bus client is disabled, not emitting event`,e,t);return}if(this.#f&&(this.debugLog(`Emitting event to internal event target`,e,t),this.#f.dispatchEvent(new CustomEvent(`${this.#t}:${e}`,{detail:this.createEventPayload(e,t)}))),this.#d){this.debugLog(`Previously failed to connect, not emitting to bus`);return}if(!this.#a){this.debugLog(`Bus not available, will be pushed as soon as connected`),this.#i.push(this.createEventPayload(e,t)),typeof CustomEvent<`u`&&!this.#u&&(this.#h(),this.startConnectLoop());return}return this.emitEventToBus(this.createEventPayload(e,t))}on(e,t,n){let r=n?.withEventTarget??!1,i=`${this.#t}:${e}`;if(r&&(this.#f||=new EventTarget,this.#f.addEventListener(i,e=>{t(e.detail)})),!this.#e)return this.debugLog(`Event bus client is disabled, not registering event`,i),()=>{};let a=e=>{this.debugLog(`Received event from bus`,e.detail),t(e.detail)};return this.#n().addEventListener(i,a),this.debugLog(`Registered event to bus`,i),()=>{r&&this.#f?.removeEventListener(i,a),this.#n().removeEventListener(i,a)}}onAll(e){if(!this.#e)return this.debugLog(`Event bus client is disabled, not registering event`),()=>{};let t=t=>{let n=t.detail;e(n)};return this.#n().addEventListener(`tanstack-devtools-global`,t),()=>this.#n().removeEventListener(`tanstack-devtools-global`,t)}onAllPluginEvents(e){if(!this.#e)return this.debugLog(`Event bus client is disabled, not registering event`),()=>{};let t=t=>{let n=t.detail;this.#t&&n.pluginId!==this.#t||e(n)};return this.#n().addEventListener(`tanstack-devtools-global`,t),()=>this.#n().removeEventListener(`tanstack-devtools-global`,t)}},J=new class extends be{constructor(){super({pluginId:`form-devtools`,reconnectEveryMs:1e3})}};function xe(e,t){return typeof e==`function`?e(t):e}function Se(e,t){return Me(t).reduce((e,t)=>{if(e===null)return null;if(e!==void 0)return e[t]},e)}function Ce(e,t,n){let r=Me(t);function i(e){if(!r.length)return xe(n,e);let t=r.shift();if(typeof t==`string`||typeof t==`number`&&!Array.isArray(e))return typeof e==`object`?(e===null&&(e={}),{...e,[t]:i(e[t])}):{[t]:i()};if(Array.isArray(e)&&typeof t==`number`){let n=e.slice(0,t);return[...n.length?n:Array(t),i(e[t]),...e.slice(t+1)]}return[...Array(t),i()]}return i(e)}function we(e,t){let n=Me(t);function r(e){if(!e)return;if(n.length===1){let t=n[0];if(Array.isArray(e)&&typeof t==`number`)return e.filter((e,n)=>n!==t);let{[t]:r,...i}=e;return i}let t=n.shift();if((typeof t==`string`||typeof t==`number`&&!Array.isArray(e))&&typeof e==`object`)return{...e,[t]:r(e[t])};if(typeof t==`number`&&Array.isArray(e)){if(t>=e.length)return e;let n=e.slice(0,t);return[...n.length?n:Array(t),r(e[t]),...e.slice(t+1)]}throw Error(`It seems we have created an infinite loop in deleteBy. `)}return r(e)}var Te=/^(\d+)$/gm,Ee=/\.(\d+)(?=\.)/gm,De=/^(\d+)\./gm,Oe=/\.(\d+$)/gm,ke=/\.{2,}/gm,Ae=`__int__`,je=`${Ae}$1`;function Me(e){if(Array.isArray(e))return[...e];if(typeof e!=`string`)throw Error(`Path must be a string.`);return e.replace(/(^\[)|]/gm,``).replace(/\[/g,`.`).replace(Te,je).replace(Ee,`.${je}.`).replace(De,`${je}.`).replace(Oe,`.${je}`).replace(ke,`.`).split(`.`).map(e=>{if(e.startsWith(Ae)){let t=e.substring(7),n=parseInt(t,10);return String(n)===t?n:t}return e})}function Ne(e){return!(Array.isArray(e)&&e.length===0)}function Pe(e,t){return t.validationLogic({form:t.form,validators:t.validators,event:{type:e,fieldName:t.fieldName,async:!1},runValidation:e=>e.validators.filter(Boolean).map(e=>({cause:e.cause,validate:e.fn}))})}function Fe(e,t){let{asyncDebounceMs:n}=t,{onBlurAsyncDebounceMs:r,onChangeAsyncDebounceMs:i,onDynamicAsyncDebounceMs:a}=t.validators||{},o=n??0;return t.validationLogic({form:t.form,validators:t.validators,event:{type:e,fieldName:t.fieldName,async:!0},runValidation:t=>t.validators.filter(Boolean).map(t=>{let n=t?.cause||e,s=o;switch(n){case`change`:s=i??o;break;case`blur`:s=r??o;break;case`dynamic`:s=a??o;break;case`submit`:s=0;break}return e===`submit`&&(s=0),{cause:n,validate:t.fn,debounceMs:s}})})}var Ie=e=>!!e&&typeof e==`object`&&`fields`in e;function Y(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let i of n)if(!r.includes(i)||!Y(e[i],t[i]))return!1;return!0}var Le=({newFormValidatorError:e,isPreviousErrorFromFormValidator:t,previousErrorValue:n})=>e?{newErrorValue:e,newSource:`form`}:t?{newErrorValue:void 0,newSource:void 0}:n?{newErrorValue:n,newSource:`field`}:{newErrorValue:void 0,newSource:void 0},Re=({formLevelError:e,fieldLevelError:t})=>t?{newErrorValue:t,newSource:`field`}:e?{newErrorValue:e,newSource:`form`}:{newErrorValue:void 0,newSource:void 0};function X(e,t){return e==null?t:{...e,...t}}for(var ze=256,Be=[],Ve;ze--;)Be[ze]=(ze+256).toString(16).substring(1);function He(){let e=0,t,n=``;if(!Ve||ze+16>256){for(Ve=Array(256),e=256;e--;)Ve[e]=256*Math.random()|0;e=0,ze=0}for(;e<16;e++)t=Ve[ze+e],e===6?n+=Be[t&15|64]:e===8?n+=Be[t&63|128]:n+=Be[t],e&1&&e>1&&e<11&&(n+=`-`);return ze++,n}var Ue=ye(e=>J.emit(`form-state`,{id:e.formId,state:e.store.state}),{wait:300});function We(e){if(typeof e!=`object`||!e)return e;if(e instanceof Date)return new Date(e.getTime());if(Array.isArray(e)){let t=[];for(let n=0;n<e.length;n++)t[n]=We(e[n]);return t}if(e instanceof Map){let t=new Map;return e.forEach((e,n)=>{t.set(n,We(e))}),t}if(e instanceof Set){let t=new Set;return e.forEach(e=>{t.add(We(e))}),t}let t={};for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=We(e[n]));return t}var Ge=e=>{if(!e.validators)return e.runValidation({validators:[],form:e.form});let t=e.event.async,n=t?void 0:{fn:e.validators.onMount,cause:`mount`},r={fn:t?e.validators.onChangeAsync:e.validators.onChange,cause:`change`},i={fn:t?e.validators.onBlurAsync:e.validators.onBlur,cause:`blur`},a={fn:t?e.validators.onSubmitAsync:e.validators.onSubmit,cause:`submit`},o=t?void 0:{fn:()=>void 0,cause:`server`};switch(e.event.type){case`mount`:return e.runValidation({validators:[n],form:e.form});case`submit`:return e.runValidation({validators:[r,i,a,o],form:e.form});case`server`:return e.runValidation({validators:[],form:e.form});case`blur`:return e.runValidation({validators:[i,o],form:e.form});case`change`:return e.runValidation({validators:[r,o],form:e.form});default:throw Error(`Unknown validation event type: ${e.event.type}`)}};function Ke(e,t){let n=new Map;for(let r of e){let e=r.path??[],i=t,a=``;for(let t=0;t<e.length;t++){let n=e[t];if(n===void 0)continue;let r=typeof n==`object`?n.key:n,o=Number(r);Array.isArray(i)&&!Number.isNaN(o)?a+=`[${o}]`:a+=(t>0?`.`:``)+String(r),i=typeof i==`object`&&i?i[r]:void 0}n.set(a,(n.get(a)??[]).concat(r))}return Object.fromEntries(n)}var qe=(e,t)=>{let n=Ke(e,t);return{form:n,fields:n}},Je={validate({value:e,validationSource:t},n){let r=n[`~standard`].validate(e);if(r instanceof Promise)throw Error(`async function passed to sync validator`);if(r.issues)return t===`field`?r.issues:qe(r.issues,e)},async validateAsync({value:e,validationSource:t},n){let r=await n[`~standard`].validate(e);if(r.issues)return t===`field`?r.issues:qe(r.issues,e)}},Ye=e=>!!e&&`~standard`in e,Z={isValidating:!1,isTouched:!1,isBlurred:!1,isDirty:!1,isPristine:!0,isValid:!0,isDefaultValue:!0,errors:[],errorMap:{},errorSourceMap:{}};function Xe(e){function t(t,n,r){let i=o(t,n,`move`,r),s=Math.min(n,r),l=Math.max(n,r);for(let e=s;e<=l;e++)i.push(a(t,e));let u=Object.keys(e.fieldInfo).reduce((r,i)=>(i.startsWith(a(t,n))&&r.set(i,e.getFieldMeta(i)),r),new Map);c(i,n<r?`up`:`down`),Object.keys(e.fieldInfo).filter(e=>e.startsWith(a(t,r))).forEach(i=>{let o=i.replace(a(t,r),a(t,n)),s=u.get(o);s&&e.setFieldMeta(i,s)})}function n(e,t){c(o(e,t,`remove`),`up`)}function r(t,n,r){o(t,n,`swap`,r).forEach(i=>{if(!i.toString().startsWith(a(t,n)))return;let o=i.toString().replace(a(t,n),a(t,r)),[s,c]=[e.getFieldMeta(i),e.getFieldMeta(o)];s&&e.setFieldMeta(o,s),c&&e.setFieldMeta(i,c)})}function i(t,n){let r=o(t,n,`insert`);c(r,`down`),r.forEach(r=>{r.toString().startsWith(a(t,n))&&e.setFieldMeta(r,l())})}function a(e,t){return`${e}[${t}]`}function o(t,n,r,i){let o=[a(t,n)];switch(r){case`swap`:o.push(a(t,i));break;case`move`:{let[e,r]=[Math.min(n,i),Math.max(n,i)];for(let n=e;n<=r;n++)o.push(a(t,n));break}default:{let r=e.getFieldValue(t),i=Array.isArray(r)?r.length:0;for(let e=n+1;e<i;e++)o.push(a(t,e));break}}return Object.keys(e.fieldInfo).filter(e=>o.some(t=>e.startsWith(t)))}function s(e,t){return e.replace(/\[(\d+)\]/,(e,n)=>{let r=parseInt(n,10);return`[${t===`up`?r+1:Math.max(0,r-1)}]`})}function c(t,n){(n===`up`?t:[...t].reverse()).forEach(t=>{let r=s(t.toString(),n),i=e.getFieldMeta(r);i?e.setFieldMeta(t,i):e.setFieldMeta(t,l())})}let l=()=>Z;return{handleArrayMove:t,handleArrayRemove:n,handleArraySwap:r,handleArrayInsert:i}}function Ze(e){return{values:e.values??{},errorMap:e.errorMap??{},fieldMetaBase:e.fieldMetaBase??{},isSubmitted:e.isSubmitted??!1,isSubmitting:e.isSubmitting??!1,isValidating:e.isValidating??!1,submissionAttempts:e.submissionAttempts??0,isSubmitSuccessful:e.isSubmitSuccessful??!1,validationMetaMap:e.validationMetaMap??{onChange:void 0,onBlur:void 0,onSubmit:void 0,onMount:void 0,onServer:void 0,onDynamic:void 0}}}var Qe=class{constructor(e){this.options={},this.fieldInfo={},this.mount=()=>{let e=this.store.subscribe(()=>{Ue(this)}),t=J.on(`request-form-state`,e=>{e.payload.id===this._formId&&J.emit(`form-api`,{id:this._formId,state:this.store.state,options:this.options})}),n=J.on(`request-form-reset`,e=>{e.payload.id===this._formId&&this.reset()}),r=J.on(`request-form-force-submit`,e=>{e.payload.id===this._formId&&(this._devtoolsSubmissionOverride=!0,this.handleSubmit(),this._devtoolsSubmissionOverride=!1)}),i=()=>{r(),n(),t(),e.unsubscribe(),J.emit(`form-unmounted`,{id:this._formId})};this.options.listeners?.onMount?.({formApi:this});let{onMount:a}=this.options.validators||{};return J.emit(`form-api`,{id:this._formId,state:this.store.state,options:this.options}),a&&this.validateSync(`mount`),i},this.update=e=>{if(!e)return;let t=this.options;this.options=e;let n=e.defaultValues&&!Y(e.defaultValues,t.defaultValues)&&!this.state.isTouched,r=!Y(e.defaultState,t.defaultState)&&!this.state.isTouched;!n&&!r||(V(()=>{this.baseStore.setState(()=>Ze(Object.assign({},this.state,r?e.defaultState:{},n?{values:e.defaultValues}:{})))}),J.emit(`form-api`,{id:this._formId,state:this.store.state,options:this.options}))},this.reset=(e,t)=>{let{fieldMeta:n}=this.state,r=this.resetFieldMeta(n);e&&!t?.keepDefaultValues&&(this.options={...this.options,defaultValues:e}),this.baseStore.setState(()=>Ze({...this.options.defaultState,values:e??this.options.defaultValues??this.options.defaultState?.values,fieldMetaBase:r}))},this.validateAllFields=async e=>{let t=[];return V(()=>{Object.values(this.fieldInfo).forEach(n=>{if(!n.instance)return;let r=n.instance;t.push(Promise.resolve().then(()=>r.validate(e,{skipFormValidation:!0}))),n.instance.state.meta.isTouched||n.instance.setMeta(e=>({...e,isTouched:!0}))})}),(await Promise.all(t)).flat()},this.validateArrayFieldsStartingFrom=async(e,t,n)=>{let r=this.getFieldValue(e),i=Array.isArray(r)?Math.max(r.length-1,0):null,a=[`${e}[${t}]`];for(let n=t+1;n<=(i??0);n++)a.push(`${e}[${n}]`);let o=Object.keys(this.fieldInfo).filter(e=>a.some(t=>e.startsWith(t))),s=[];return V(()=>{o.forEach(e=>{s.push(Promise.resolve().then(()=>this.validateField(e,n)))})}),(await Promise.all(s)).flat()},this.validateField=(e,t)=>{let n=this.fieldInfo[e]?.instance;if(!n){let{hasErrored:n}=this.validateSync(t);return n&&!this.options.asyncAlways?this.getFieldMeta(e)?.errors??[]:this.validateAsync(t).then(()=>this.getFieldMeta(e)?.errors??[])}return n.state.meta.isTouched||n.setMeta(e=>({...e,isTouched:!0})),n.validate(t)},this.validateSync=e=>{let t=Pe(e,{...this.options,form:this,validationLogic:this.options.validationLogic||Ge}),n=!1,r={};return V(()=>{for(let e of t){if(!e.validate)continue;let{formError:t,fieldErrors:i}=$e(this.runValidator({validate:e.validate,value:{value:this.state.values,formApi:this,validationSource:`form`},type:`validate`})),a=et(e.cause),o=new Set([...Object.keys(this.state.fieldMeta),...Object.keys(i||{})]);for(let e of o){if(this.baseStore.state.fieldMetaBase[e]===void 0&&!i?.[e])continue;let{errorMap:t,errorSourceMap:n}=this.getFieldMeta(e)??Z,o=i?.[e],{newErrorValue:s,newSource:c}=Le({newFormValidatorError:o,isPreviousErrorFromFormValidator:n?.[a]===`form`,previousErrorValue:t?.[a]});c===`form`&&(r[e]={...r[e],[a]:o}),t?.[a]!==s&&this.setFieldMeta(e,(e=Z)=>({...e,errorMap:{...e.errorMap,[a]:s},errorSourceMap:{...e.errorSourceMap,[a]:c}}))}this.state.errorMap?.[a]!==t&&this.baseStore.setState(e=>({...e,errorMap:{...e.errorMap,[a]:t}})),(t||i)&&(n=!0)}let i=et(`submit`);this.state.errorMap?.[i]&&e!==`submit`&&!n&&this.baseStore.setState(e=>({...e,errorMap:{...e.errorMap,[i]:void 0}}));let a=et(`server`);this.state.errorMap?.[a]&&e!==`server`&&!n&&this.baseStore.setState(e=>({...e,errorMap:{...e.errorMap,[a]:void 0}}))}),{hasErrored:n,fieldsErrorMap:r}},this.validateAsync=async e=>{let t=Fe(e,{...this.options,form:this,validationLogic:this.options.validationLogic||Ge});this.state.isFormValidating||this.baseStore.setState(e=>({...e,isFormValidating:!0}));let n=[],r;for(let e of t){if(!e.validate)continue;let t=et(e.cause);this.state.validationMetaMap[t]?.lastAbortController.abort();let i=new AbortController;this.state.validationMetaMap[t]={lastAbortController:i},n.push(new Promise(async t=>{let n;try{n=await new Promise((t,n)=>{setTimeout(async()=>{if(i.signal.aborted)return t(void 0);try{t(await this.runValidator({validate:e.validate,value:{value:this.state.values,formApi:this,validationSource:`form`,signal:i.signal},type:`validateAsync`}))}catch(e){n(e)}},e.debounceMs)})}catch(e){n=e}let{formError:a,fieldErrors:o}=$e(n);o&&(r=r?{...r,...o}:o);let s=et(e.cause);for(let e of Object.keys(this.state.fieldMeta)){if(this.baseStore.state.fieldMetaBase[e]===void 0)continue;let t=this.getFieldMeta(e);if(!t)continue;let{errorMap:n,errorSourceMap:i}=t,a=r?.[e],{newErrorValue:o,newSource:c}=Le({newFormValidatorError:a,isPreviousErrorFromFormValidator:i?.[s]===`form`,previousErrorValue:n?.[s]});n?.[s]!==o&&this.setFieldMeta(e,e=>({...e,errorMap:{...e.errorMap,[s]:o},errorSourceMap:{...e.errorSourceMap,[s]:c}}))}this.baseStore.setState(e=>({...e,errorMap:{...e.errorMap,[s]:a}})),t(r?{fieldErrors:r,errorMapKey:s}:void 0)}))}let i=[],a={};if(n.length){i=await Promise.all(n);for(let e of i)if(e?.fieldErrors){let{errorMapKey:t}=e;for(let[n,r]of Object.entries(e.fieldErrors))a[n]={...a[n]||{},[t]:r}}}return this.baseStore.setState(e=>({...e,isFormValidating:!1})),a},this.validate=e=>{let{hasErrored:t,fieldsErrorMap:n}=this.validateSync(e);return t&&!this.options.asyncAlways?n:this.validateAsync(e)},this._handleSubmit=async e=>{this.baseStore.setState(e=>({...e,isSubmitted:!1,submissionAttempts:e.submissionAttempts+1,isSubmitSuccessful:!1})),V(()=>{Object.values(this.fieldInfo).forEach(e=>{e.instance&&(e.instance.state.meta.isTouched||e.instance.setMeta(e=>({...e,isTouched:!0})))})});let t=e??this.options.onSubmitMeta;if(!this.state.canSubmit&&!this._devtoolsSubmissionOverride){this.options.onSubmitInvalid?.({value:this.state.values,formApi:this,meta:t});return}this.baseStore.setState(e=>({...e,isSubmitting:!0}));let n=()=>{this.baseStore.setState(e=>({...e,isSubmitting:!1}))};if(await this.validateAllFields(`submit`),!this.state.isFieldsValid){n(),this.options.onSubmitInvalid?.({value:this.state.values,formApi:this,meta:t}),J.emit(`form-submission`,{id:this._formId,submissionAttempt:this.state.submissionAttempts,successful:!1,stage:`validateAllFields`,errors:Object.values(this.state.fieldMeta).map(e=>e.errors).flat()});return}if(await this.validate(`submit`),!this.state.isValid){n(),this.options.onSubmitInvalid?.({value:this.state.values,formApi:this,meta:t}),J.emit(`form-submission`,{id:this._formId,submissionAttempt:this.state.submissionAttempts,successful:!1,stage:`validate`,errors:this.state.errors});return}V(()=>{Object.values(this.fieldInfo).forEach(e=>{e.instance?.options.listeners?.onSubmit?.({value:e.instance.state.value,fieldApi:e.instance})})}),this.options.listeners?.onSubmit?.({formApi:this,meta:t});try{await this.options.onSubmit?.({value:this.state.values,formApi:this,meta:t}),V(()=>{this.baseStore.setState(e=>({...e,isSubmitted:!0,isSubmitSuccessful:!0})),J.emit(`form-submission`,{id:this._formId,submissionAttempt:this.state.submissionAttempts,successful:!0}),n()})}catch(e){throw this.baseStore.setState(e=>({...e,isSubmitSuccessful:!1})),J.emit(`form-submission`,{id:this._formId,submissionAttempt:this.state.submissionAttempts,successful:!1,stage:`inflight`,onError:e}),n(),e}},this.getFieldValue=e=>Se(this.state.values,e),this.getFieldMeta=e=>this.state.fieldMeta[e],this.getFieldInfo=e=>this.fieldInfo[e]||={instance:null,validationMetaMap:{onChange:void 0,onBlur:void 0,onSubmit:void 0,onMount:void 0,onServer:void 0,onDynamic:void 0}},this.setFieldMeta=(e,t)=>{this.baseStore.setState(n=>({...n,fieldMetaBase:{...n.fieldMetaBase,[e]:xe(t,n.fieldMetaBase[e])}}))},this.resetFieldMeta=e=>Object.keys(e).reduce((e,t)=>{let n=t;return e[n]=Z,e},{}),this.setFieldValue=(e,t,n)=>{let r=n?.dontUpdateMeta??!1,i=n?.dontRunListeners??!1,a=n?.dontValidate??!1;V(()=>{r||this.setFieldMeta(e,e=>({...e,isTouched:!0,isDirty:!0,errorMap:{...e?.errorMap,onMount:void 0}})),this.baseStore.setState(n=>({...n,values:Ce(n.values,e,t)}))}),i||this.getFieldInfo(e).instance?.triggerOnChangeListener(),a||this.validateField(e,`change`)},this.deleteField=e=>{let t=[...Object.keys(this.fieldInfo).filter(t=>{let n=e.toString();return t!==n&&t.startsWith(n)}),e];this.baseStore.setState(e=>{let n={...e};return t.forEach(e=>{n.values=we(n.values,e),delete this.fieldInfo[e],delete n.fieldMetaBase[e]}),n})},this.pushFieldValue=(e,t,n)=>{this.setFieldValue(e,e=>[...Array.isArray(e)?e:[],t],n)},this.insertFieldValue=async(e,t,n,r)=>{this.setFieldValue(e,e=>[...e.slice(0,t),n,...e.slice(t)],X(r,{dontValidate:!0}));let i=r?.dontValidate??!1;i||await this.validateField(e,`change`),Xe(this).handleArrayInsert(e,t),i||await this.validateArrayFieldsStartingFrom(e,t,`change`)},this.replaceFieldValue=async(e,t,n,r)=>{this.setFieldValue(e,e=>e.map((e,r)=>r===t?n:e),X(r,{dontValidate:!0})),(r?.dontValidate??!1)||(await this.validateField(e,`change`),await this.validateArrayFieldsStartingFrom(e,t,`change`))},this.removeFieldValue=async(e,t,n)=>{let r=this.getFieldValue(e),i=Array.isArray(r)?Math.max(r.length-1,0):null;if(this.setFieldValue(e,e=>e.filter((e,n)=>n!==t),X(n,{dontValidate:!0})),Xe(this).handleArrayRemove(e,t),i!==null){let t=`${e}[${i}]`;this.deleteField(t)}(n?.dontValidate??!1)||(await this.validateField(e,`change`),await this.validateArrayFieldsStartingFrom(e,t,`change`))},this.swapFieldValues=(e,t,n,r)=>{this.setFieldValue(e,e=>{let r=e[t],i=e[n];return Ce(Ce(e,`${t}`,i),`${n}`,r)},X(r,{dontValidate:!0})),Xe(this).handleArraySwap(e,t,n),(r?.dontValidate??!1)||(this.validateField(e,`change`),this.validateField(`${e}[${t}]`,`change`),this.validateField(`${e}[${n}]`,`change`))},this.moveFieldValues=(e,t,n,r)=>{this.setFieldValue(e,e=>{let r=[...e];return r.splice(n,0,r.splice(t,1)[0]),r},X(r,{dontValidate:!0})),Xe(this).handleArrayMove(e,t,n),(r?.dontValidate??!1)||(this.validateField(e,`change`),this.validateField(`${e}[${t}]`,`change`),this.validateField(`${e}[${n}]`,`change`))},this.clearFieldValues=(e,t)=>{let n=this.getFieldValue(e),r=Array.isArray(n)?Math.max(n.length-1,0):null;if(this.setFieldValue(e,[],X(t,{dontValidate:!0})),r!==null)for(let t=0;t<=r;t++){let n=`${e}[${t}]`;this.deleteField(n)}(t?.dontValidate??!1)||this.validateField(e,`change`)},this.resetField=e=>{this.baseStore.setState(t=>({...t,fieldMetaBase:{...t.fieldMetaBase,[e]:Z},values:this.options.defaultValues?Ce(t.values,e,Se(this.options.defaultValues,e)):t.values}))},this.setErrorMap=e=>{V(()=>{Object.entries(e).forEach(([e,t])=>{let n=e;if(Ie(t)){let{formError:e,fieldErrors:r}=$e(t);for(let e of Object.keys(this.fieldInfo))this.getFieldMeta(e)&&this.setFieldMeta(e,t=>({...t,errorMap:{...t.errorMap,[n]:r?.[e]},errorSourceMap:{...t.errorSourceMap,[n]:`form`}}));this.baseStore.setState(t=>({...t,errorMap:{...t.errorMap,[n]:e}}))}else this.baseStore.setState(e=>({...e,errorMap:{...e.errorMap,[n]:t}}))})})},this.getAllErrors=()=>({form:{errors:this.state.errors,errorMap:this.state.errorMap},fields:Object.entries(this.state.fieldMeta).reduce((e,[t,n])=>(Object.keys(n).length&&n.errors.length&&(e[t]={errors:n.errors,errorMap:n.errorMap}),e),{})}),this.parseValuesWithSchema=e=>Je.validate({value:this.state.values,validationSource:`form`},e),this.parseValuesWithSchemaAsync=e=>Je.validateAsync({value:this.state.values,validationSource:`form`},e),this.timeoutIds={validations:{},listeners:{},formListeners:{}},this._formId=e?.formId??He(),this._devtoolsSubmissionOverride=!1;let t=Ze({...e?.defaultState,values:e?.defaultValues??e?.defaultState?.values});if(e?.transform){t=e.transform({state:t}).state;for(let e of Object.keys(t.errorMap)){let n=t.errorMap[e];if(!(n===void 0||!Ie(n)))for(let r of Object.keys(n.fields)){let i=n.fields[r];if(i===void 0)continue;let a=t.fieldMetaBase[r];t.fieldMetaBase[r]={isTouched:!1,isValidating:!1,isBlurred:!1,isDirty:!1,...a??{},errorSourceMap:{...a?.errorSourceMap??{},onChange:`form`},errorMap:{...a?.errorMap??{},[e]:i}}}}}this.baseStore=G(t);let n;this.fieldMetaDerived=G(e=>{let t=this.baseStore.get(),r=0,i={};for(let a of Object.keys(t.fieldMetaBase)){let o=t.fieldMetaBase[a],s=n?.fieldMetaBase[a],c=e?.[a],l=Se(t.values,a),u=c?.errors;if(!s||o.errorMap!==s.errorMap){u=Object.values(o.errorMap??{}).filter(e=>e!==void 0);let e=this.getFieldInfo(a)?.instance;(!e||!e.options.disableErrorFlat)&&(u=u.flat(1))}let d=!Ne(u),f=!o.isDirty,p=Y(l,Se(this.options.defaultValues,a))||Y(l,this.getFieldInfo(a)?.instance?.options.defaultValue);if(c&&c.isPristine===f&&c.isValid===d&&c.isDefaultValue===p&&c.errors===u&&o===s){i[a]=c,r++;continue}i[a]={...o,errors:u??[],isPristine:f,isValid:d,isDefaultValue:p}}return Object.keys(t.fieldMetaBase).length?e&&r===Object.keys(t.fieldMetaBase).length?e:(n=this.baseStore.get(),i):i});let r;this.store=G(e=>{let t=this.baseStore.get(),n=this.fieldMetaDerived.get(),i=Object.values(n).filter(Boolean),a=i.some(e=>e.isValidating),o=i.every(e=>e.isValid),s=i.some(e=>e.isTouched),c=i.some(e=>e.isBlurred),l=i.every(e=>e.isDefaultValue),u=s&&t.errorMap?.onMount,d=i.some(e=>e.isDirty),f=!d,p=!!(t.errorMap?.onMount||i.some(e=>e?.errorMap?.onMount)),m=!!a,h=e?.errors??[];(!r||t.errorMap!==r.errorMap)&&(h=Object.values(t.errorMap).reduce((e,t)=>t===void 0?e:t&&Ie(t)?(e.push(t.form),e):(e.push(t),e),[]));let g=h.length===0,_=o&&g,v=this.options.canSubmitWhenInvalid??!1,y=t.submissionAttempts===0&&!s&&!p||!m&&!t.isSubmitting&&_||v,b=t.errorMap;if(u&&(h=h.filter(e=>e!==t.errorMap.onMount),b=Object.assign(b,{onMount:void 0})),e&&r&&e.errorMap===b&&e.fieldMeta===this.fieldMetaDerived.state&&e.errors===h&&e.isFieldsValidating===a&&e.isFieldsValid===o&&e.isFormValid===g&&e.isValid===_&&e.canSubmit===y&&e.isTouched===s&&e.isBlurred===c&&e.isPristine===f&&e.isDefaultValue===l&&e.isDirty===d&&Y(r,t))return e;let x={...t,errorMap:b,fieldMeta:this.fieldMetaDerived.state,errors:h,isFieldsValidating:a,isFieldsValid:o,isFormValid:g,isValid:_,canSubmit:y,isTouched:s,isBlurred:c,isPristine:f,isDefaultValue:l,isDirty:d};return r=this.baseStore.get(),x}),this.handleSubmit=this.handleSubmit.bind(this),this.update(e||{})}get state(){return this.store.state}get formId(){return this._formId}runValidator(e){return Ye(e.validate)?Je[e.type](e.value,e.validate):e.validate(e.value)}handleSubmit(e){return this._handleSubmit(e)}};function $e(e){return e?Ie(e)?{formError:$e(e.form).formError,fieldErrors:e.fields}:{formError:e}:{formError:void 0}}function et(e){switch(e){case`submit`:return`onSubmit`;case`blur`:return`onBlur`;case`mount`:return`onMount`;case`server`:return`onServer`;case`dynamic`:return`onDynamic`;default:return`onChange`}}var tt=class{constructor(e){this.options={},this.mount=()=>{this.options.defaultValue!==void 0&&!this.getMeta().isTouched&&this.form.setFieldValue(this.name,this.options.defaultValue,{dontUpdateMeta:!0});let e=this.getInfo();e.instance=this,this.update(this.options);let{onMount:t}=this.options.validators||{};if(t){let e=this.runValidator({validate:t,value:{value:this.state.value,fieldApi:this,validationSource:`field`},type:`validate`});e&&this.setMeta(t=>({...t,errorMap:{...t?.errorMap,onMount:e},errorSourceMap:{...t?.errorSourceMap,onMount:`field`}}))}return this.options.listeners?.onMount?.({value:this.state.value,fieldApi:this}),()=>{for(let[e,t]of Object.entries(this.timeoutIds.validations))t&&(clearTimeout(t),this.timeoutIds.validations[e]=null);for(let[e,t]of Object.entries(this.timeoutIds.listeners))t&&(clearTimeout(t),this.timeoutIds.listeners[e]=null);for(let[e,t]of Object.entries(this.timeoutIds.formListeners))t&&(clearTimeout(t),this.timeoutIds.formListeners[e]=null);let e=this.form.fieldInfo[this.name];if(e&&e.instance===this){for(let[t,n]of Object.entries(e.validationMetaMap))n?.lastAbortController.abort(),e.validationMetaMap[t]=void 0;this.form.baseStore.setState(e=>({...e,fieldMetaBase:{...e.fieldMetaBase,[this.name]:{...Z,isTouched:e.fieldMetaBase[this.name]?.isTouched??Z.isTouched,isBlurred:e.fieldMetaBase[this.name]?.isBlurred??Z.isBlurred,isDirty:e.fieldMetaBase[this.name]?.isDirty??Z.isDirty}}})),e.instance=null,this.options.listeners?.onUnmount?.({value:this.state.value,fieldApi:this}),this.form.options.listeners?.onFieldUnmount?.({formApi:this.form,fieldApi:this})}}},this.update=e=>{this.options=e,this.name=e.name,!this.state.meta.isTouched&&this.options.defaultValue!==void 0&&(Y(this.form.getFieldValue(this.name),e.defaultValue)||this.form.setFieldValue(this.name,e.defaultValue,{dontUpdateMeta:!0,dontValidate:!0,dontRunListeners:!0})),this.form.getFieldMeta(this.name)||this.form.setFieldMeta(this.name,this.state.meta)},this.getValue=()=>this.form.getFieldValue(this.name),this.setValue=(e,t)=>{this.form.setFieldValue(this.name,e,X(t,{dontRunListeners:!0,dontValidate:!0})),t?.dontRunListeners||this.triggerOnChangeListener(),t?.dontValidate||this.validate(`change`)},this.getMeta=()=>this.store.state.meta,this.setMeta=e=>this.form.setFieldMeta(this.name,e),this.getInfo=()=>this.form.getFieldInfo(this.name),this.pushValue=(e,t)=>{this.form.pushFieldValue(this.name,e,X(t,{dontRunListeners:!0})),t?.dontRunListeners||this.triggerOnChangeListener()},this.insertValue=(e,t,n)=>{this.form.insertFieldValue(this.name,e,t,X(n,{dontRunListeners:!0})),n?.dontRunListeners||this.triggerOnChangeListener()},this.replaceValue=(e,t,n)=>{this.form.replaceFieldValue(this.name,e,t,X(n,{dontRunListeners:!0})),n?.dontRunListeners||this.triggerOnChangeListener()},this.removeValue=(e,t)=>{this.form.removeFieldValue(this.name,e,X(t,{dontRunListeners:!0})),t?.dontRunListeners||this.triggerOnChangeListener()},this.swapValues=(e,t,n)=>{this.form.swapFieldValues(this.name,e,t,X(n,{dontRunListeners:!0})),n?.dontRunListeners||this.triggerOnChangeListener()},this.moveValue=(e,t,n)=>{this.form.moveFieldValues(this.name,e,t,X(n,{dontRunListeners:!0})),n?.dontRunListeners||this.triggerOnChangeListener()},this.clearValues=e=>{this.form.clearFieldValues(this.name,X(e,{dontRunListeners:!0})),e?.dontRunListeners||this.triggerOnChangeListener()},this.getLinkedFields=e=>{let t=Object.values(this.form.fieldInfo),n=[];for(let r of t){if(!r.instance)continue;let{onChangeListenTo:t,onBlurListenTo:i}=r.instance.options.validators||{};e===`change`&&t?.includes(this.name)&&n.push(r.instance),e===`blur`&&i?.includes(this.name)&&n.push(r.instance)}return n},this.validateSync=(e,t)=>{let n=Pe(e,{...this.options,form:this.form,fieldName:this.name,validationLogic:this.form.options.validationLogic||Ge}),r=this.getLinkedFields(e).reduce((t,n)=>{let r=Pe(e,{...n.options,form:n.form,fieldName:n.name,validationLogic:n.form.options.validationLogic||Ge});return r.forEach(e=>{e.field=n}),t.concat(r)},[]),i=!1;V(()=>{let e=(e,n)=>{let r=rt(n.cause),a=n.validate?nt(e.runValidator({validate:n.validate,value:{value:e.store.state.value,validationSource:`field`,fieldApi:e},type:`validate`})):void 0,o=t[r],{newErrorValue:s,newSource:c}=Re({formLevelError:o,fieldLevelError:a});e.state.meta.errorMap?.[r]!==s&&e.setMeta(e=>({...e,errorMap:{...e.errorMap,[r]:s},errorSourceMap:{...e.errorSourceMap,[r]:c}})),s&&(i=!0)};for(let t of n)e(this,t);for(let t of r)t.validate&&e(t.field,t)});let a=rt(`submit`);return this.state.meta.errorMap?.[a]&&e!==`submit`&&!i&&this.setMeta(e=>({...e,errorMap:{...e.errorMap,[a]:void 0},errorSourceMap:{...e.errorSourceMap,[a]:void 0}})),{hasErrored:i}},this.validateAsync=async(e,t)=>{let n=Fe(e,{...this.options,form:this.form,fieldName:this.name,validationLogic:this.form.options.validationLogic||Ge}),r=await t,i=this.getLinkedFields(e),a=i.reduce((t,n)=>{let r=Fe(e,{...n.options,form:n.form,fieldName:n.name,validationLogic:n.form.options.validationLogic||Ge});return r.forEach(e=>{e.field=n}),t.concat(r)},[]),o=[],s=[],c=n.some(e=>e.validate)||a.some(e=>e.validate);if(c){this.state.meta.isValidating||this.setMeta(e=>({...e,isValidating:!0}));for(let e of i)e.setMeta(e=>({...e,isValidating:!0}))}let l=(e,t,n)=>{let i=rt(t.cause),a=e.getInfo();a.validationMetaMap[i]?.lastAbortController.abort();let o=new AbortController;a.validationMetaMap[i]={lastAbortController:o},n.push(new Promise(async n=>{let a;try{a=await new Promise((n,r)=>{e.timeoutIds.validations[t.cause]&&clearTimeout(e.timeoutIds.validations[t.cause]),e.timeoutIds.validations[t.cause]=setTimeout(async()=>{if(o.signal.aborted)return n(void 0);try{n(await this.runValidator({validate:t.validate,value:{value:e.store.state.value,fieldApi:e,signal:o.signal,validationSource:`field`},type:`validateAsync`}))}catch(e){r(e)}},t.debounceMs)})}catch(e){a=e}if(o.signal.aborted)return n(void 0);let s=nt(a),c=r[e.name]?.[i],{newErrorValue:l,newSource:u}=Re({formLevelError:c,fieldLevelError:s});if(e.getInfo().instance!==e)return n(void 0);e.setMeta(e=>({...e,errorMap:{...e?.errorMap,[i]:l},errorSourceMap:{...e.errorSourceMap,[i]:u}})),n(l)}))};for(let e of n)e.validate&&l(this,e,o);for(let e of a)e.validate&&l(e.field,e,s);let u=[];if((o.length||s.length)&&(u=await Promise.all(o),await Promise.all(s)),c){this.setMeta(e=>({...e,isValidating:!1}));for(let e of i)e.setMeta(e=>({...e,isValidating:!1}))}return u.filter(Boolean)},this.validate=(e,t)=>{if(!this.state.meta.isTouched)return[];let{fieldsErrorMap:n}=t?.skipFormValidation?{fieldsErrorMap:{}}:this.form.validateSync(e),{hasErrored:r}=this.validateSync(e,n[this.name]??{});if(r&&!this.options.asyncAlways)return this.getInfo().validationMetaMap[rt(e)]?.lastAbortController.abort(),this.state.meta.errors;let i=t?.skipFormValidation?Promise.resolve({}):this.form.validateAsync(e);return this.validateAsync(e,i)},this.handleChange=e=>{this.setValue(e)},this.handleBlur=()=>{this.state.meta.isTouched||this.setMeta(e=>({...e,isTouched:!0})),this.state.meta.isBlurred||this.setMeta(e=>({...e,isBlurred:!0})),this.validate(`blur`),this.triggerOnBlurListener()},this.setErrorMap=e=>{this.setMeta(t=>({...t,errorMap:{...t.errorMap,...e}}))},this.parseValueWithSchema=e=>Je.validate({value:this.state.value,validationSource:`field`},e),this.parseValueWithSchemaAsync=e=>Je.validateAsync({value:this.state.value,validationSource:`field`},e),this.triggerOnChangeListener=()=>{let e=this.form.options.listeners?.onChangeDebounceMs;e&&e>0?(this.timeoutIds.formListeners.change&&clearTimeout(this.timeoutIds.formListeners.change),this.timeoutIds.formListeners.change=setTimeout(()=>{this.form.options.listeners?.onChange?.({formApi:this.form,fieldApi:this})},e)):this.form.options.listeners?.onChange?.({formApi:this.form,fieldApi:this});let t=this.options.listeners?.onChangeDebounceMs;t&&t>0?(this.timeoutIds.listeners.change&&clearTimeout(this.timeoutIds.listeners.change),this.timeoutIds.listeners.change=setTimeout(()=>{this.options.listeners?.onChange?.({value:this.state.value,fieldApi:this})},t)):this.options.listeners?.onChange?.({value:this.state.value,fieldApi:this})},this.form=e.form,this.name=e.name,this.options=e,this.timeoutIds={validations:{},listeners:{},formListeners:{}},this.store=G(t=>{this.form.store.get();let n=this.form.getFieldMeta(this.name)??{...Z,...e.defaultMeta},r=this.form.getFieldValue(this.name);return!n.isTouched&&r===void 0&&this.options.defaultValue!==void 0&&!Y(r,this.options.defaultValue)&&(r=this.options.defaultValue),t&&t.value===r&&t.meta===n?t:{value:r,meta:n}})}get state(){return this.store.state}runValidator(e){return Ye(e.validate)?Je[e.type](e.value,e.validate):e.validate(e.value)}triggerOnBlurListener(){let e=this.form.options.listeners?.onBlurDebounceMs;e&&e>0?(this.timeoutIds.formListeners.blur&&clearTimeout(this.timeoutIds.formListeners.blur),this.timeoutIds.formListeners.blur=setTimeout(()=>{this.form.options.listeners?.onBlur?.({formApi:this.form,fieldApi:this})},e)):this.form.options.listeners?.onBlur?.({formApi:this.form,fieldApi:this});let t=this.options.listeners?.onBlurDebounceMs;t&&t>0?(this.timeoutIds.listeners.blur&&clearTimeout(this.timeoutIds.listeners.blur),this.timeoutIds.listeners.blur=setTimeout(()=>{this.options.listeners?.onBlur?.({value:this.state.value,fieldApi:this})},t)):this.options.listeners?.onBlur?.({value:this.state.value,fieldApi:this})}};function nt(e){if(e)return e}function rt(e){switch(e){case`submit`:return`onSubmit`;case`blur`:return`onBlur`;case`mount`:return`onMount`;case`server`:return`onServer`;case`dynamic`:return`onDynamic`;default:return`onChange`}}function it(e,t){if(!t)return;let n=Object.assign({},e,{state:We(e.state)});t(n),n.fieldInfo!==e.fieldInfo&&(e.fieldInfo=n.fieldInfo),n.options!==e.options&&(e.options=n.options);let r=Object.keys({values:null,validationMetaMap:null,fieldMetaBase:null,isSubmitting:null,isSubmitted:null,isValidating:null,submissionAttempts:null,isSubmitSuccessful:null,_force_re_eval:null}).reduce((t,r)=>(e.state[r]!==n.state[r]&&(t[r]=n.state[r]),t),{});return V(()=>{Object.keys(r).length&&e.baseStore.setState(e=>({...e,...r})),n.state.errorMap!==e.state.errorMap&&e.setErrorMap(n.state.errorMap)}),n}var Q=C(),at=typeof window<`u`?K.useLayoutEffect:K.useEffect;function ot(e){let[t,n]=(0,K.useState)(()=>({form:e.form,name:e.name})),[r,a]=(0,K.useState)(()=>new tt({...e}));(t.form!==e.form||t.name!==e.name)&&(a(new tt({...e})),n({form:e.form,name:e.name}));let o=i(r.store,e.mode===`array`?e=>Object.keys(e.value??[]).length:e=>e.value),s=i(r.store,e=>e.meta.isTouched),c=i(r.store,e=>e.meta.isBlurred),l=i(r.store,e=>e.meta.isDirty),u=i(r.store,e=>e.meta.errorMap),d=i(r.store,e=>e.meta.errorSourceMap),f=i(r.store,e=>e.meta.isValidating),p=(0,K.useMemo)(()=>{let t={...r,get state(){return{value:e.mode===`array`?r.state.value:o,get meta(){return{...r.state.meta,isTouched:s,isBlurred:c,isDirty:l,errorMap:u,errorSourceMap:d,isValidating:f}}}}};return t.Field=st,t},[r,e.mode,o,s,c,l,u,d,f]);return at(r.mount,[r]),at(()=>{r.update(e)}),p}var st=(({children:e,...t})=>{let n=ot(t);return(0,Q.jsx)(Q.Fragment,{children:(0,K.useMemo)(()=>xe(e,n),[e,n])})});function ct(){return(0,K.useState)(()=>He())[0]}var lt=K,ut=`19.2.5`.split(`.`)[0]===`17`?ct:lt.useId;function dt({form:e,selector:t=e=>e,children:n}){return(0,Q.jsx)(Q.Fragment,{children:xe(n,i(e.store,t))})}function ft(e){let t=ut(),[n,r]=(0,K.useState)(e?.formId),[i,a]=(0,K.useState)(()=>new Qe({...e,formId:e?.formId??t}));if(n!==e?.formId){let n=e?.formId??t;a(new Qe({...e,formId:n})),r(n)}let o=(0,K.useMemo)(()=>{let e={...i,handleSubmit:((...e)=>i._handleSubmit(...e)),get formId(){return i._formId},get state(){return i.store.state}};return e.Field=function(e){return(0,Q.jsx)(st,{...e,form:i})},e.Subscribe=function(e){return(0,Q.jsx)(dt,{form:i,selector:e.selector,children:e.children})},e},[i]);at(i.mount,[]),at(()=>{i.update(e)});let s=(0,K.useRef)(!1);return at(()=>{s.current&&e?.transform&&it(i,e.transform)},[i,e?.transform]),at(()=>{s.current=!0}),o}function pt({controlled:e,default:t,name:n,state:r=`value`}){let{current:i}=K.useRef(e!==void 0),[a,o]=K.useState(t);return[i?e:a,K.useCallback(e=>{i||o(e)},[])]}function mt(e){let{open:t,defaultOpen:n,onOpenChange:i,disabled:a}=e,o=t!==void 0,[s,c]=pt({controlled:t,default:n,name:`Collapsible`,state:`open`}),{mounted:l,setMounted:u,transitionStatus:d}=r(s,!0,!0),[f,m]=K.useState(s),[{height:h,width:g},_]=K.useState({height:void 0,width:void 0}),v=p(),[y,b]=K.useState(),x=y??v,[S,C]=K.useState(!1),[w,T]=K.useState(!1),E=K.useRef(null),O=K.useRef(null),k=K.useRef(null),A=K.useRef(null),j=ee(A,!1),N=R(e=>{let t=!s,n=M(D,e.nativeEvent);if(i(t,n),n.isCanceled)return;let r=A.current;O.current===`css-animation`&&r!=null&&r.style.removeProperty(`animation-name`),!S&&!w&&(O.current!=null&&O.current!==`css-animation`&&!l&&t&&u(!0),O.current===`css-animation`&&(!f&&t&&m(!0),!l&&t&&u(!0))),c(t),O.current===`none`&&l&&!t&&u(!1)});return L(()=>{o&&O.current===`none`&&!s&&u(!1)},[o,s,t,u]),K.useMemo(()=>({abortControllerRef:E,animationTypeRef:O,disabled:a,handleTrigger:N,height:h,mounted:l,open:s,panelId:x,panelRef:A,runOnceAnimationsFinish:j,setDimensions:_,setHiddenUntilFound:C,setKeepMounted:T,setMounted:u,setOpen:c,setPanelIdState:b,setVisible:m,transitionDimensionRef:k,transitionStatus:d,visible:f,width:g}),[E,O,a,N,h,l,s,x,A,j,_,C,T,u,c,m,k,d,f,g])}var ht=K.createContext(void 0);function gt(){let e=K.useContext(ht);if(e===void 0)throw Error(x(15));return e}var _t=function(e){return e.open=`data-open`,e.closed=`data-closed`,e[e.startingStyle=h.startingStyle]=`startingStyle`,e[e.endingStyle=h.endingStyle]=`endingStyle`,e}({}),vt=function(e){return e.panelOpen=`data-panel-open`,e}({}),yt={[_t.open]:``},bt={[_t.closed]:``},xt={open(e){return e?{[vt.panelOpen]:``}:null}},St={open(e){return e?yt:bt},...a},Ct=K.forwardRef(function(e,t){let{render:n,className:r,defaultOpen:i=!1,disabled:a=!1,onOpenChange:o,open:s,style:c,...u}=e,d=R(o),f=mt({open:s,defaultOpen:i,onOpenChange:d,disabled:a}),p=K.useMemo(()=>({open:f.open,disabled:f.disabled,transitionStatus:f.transitionStatus}),[f.open,f.disabled,f.transitionStatus]),m=K.useMemo(()=>({...f,onOpenChange:d,state:p}),[f,d,p]),h=l(`div`,e,{state:p,ref:t,props:u,stateAttributesMapping:St});return(0,Q.jsx)(ht.Provider,{value:m,children:h})}),wt={...xt,...a},Tt=K.forwardRef(function(e,t){let{panelId:n,open:r,handleTrigger:i,state:a,disabled:o}=gt(),{className:s,disabled:c=o,id:u,render:d,nativeButton:f=!0,style:p,...m}=e,{getButtonProps:h,buttonRef:g}=le({disabled:c,focusableWhenDisabled:!0,native:f}),_=K.useMemo(()=>({"aria-controls":r?n:void 0,"aria-expanded":r,onClick:i}),[n,r,i]);return l(`button`,e,{state:a,ref:[t,g],props:[_,m,h],stateAttributesMapping:wt})}),Et=function(e){return e.disabled=`data-disabled`,e.orientation=`data-orientation`,e}({});function Dt(t){let{abortControllerRef:n,animationTypeRef:r,externalRef:i,height:a,hiddenUntilFound:o,keepMounted:c,id:l,mounted:u,onOpenChange:d,open:p,panelRef:m,runOnceAnimationsFinish:h,setDimensions:_,setMounted:v,setOpen:y,setVisible:b,transitionDimensionRef:x,visible:S,width:C}=t,T=K.useRef(!1),E=K.useRef(null),D=K.useRef(p),O=K.useRef(p),k=f(),A=K.useMemo(()=>r.current===`css-animation`?!S:!p&&!u,[p,u,S,r]),j=e(i,m,R(e=>{if(!e)return;if(r.current==null||x.current==null){let t=getComputedStyle(e),n=t.animationName!==`none`&&t.animationName!==``,i=t.transitionDuration!==`0s`&&t.transitionDuration!==``;n&&i||(t.animationName===`none`&&t.transitionDuration!==`0s`?r.current=`css-transition`:t.animationName!==`none`&&t.transitionDuration===`0s`?r.current=`css-animation`:r.current=`none`),e.getAttribute(Et.orientation)===`horizontal`||t.transitionProperty.indexOf(`width`)>-1?x.current=`width`:x.current=`height`}if(r.current!==`css-transition`)return;(a===void 0||C===void 0)&&(_({height:e.scrollHeight,width:e.scrollWidth}),O.current&&e.style.setProperty(`transition-duration`,`0s`));let t=-1,n=-1;return t=s.request(()=>{O.current=!1,n=s.request(()=>{setTimeout(()=>{e.style.removeProperty(`transition-duration`)})})}),()=>{s.cancel(t),s.cancel(n)}}));return L(()=>{if(r.current!==`css-transition`)return;let e=m.current;if(!e)return;let t=-1;if(n.current!=null&&(n.current.abort(),n.current=null),p){let n={"justify-content":e.style.justifyContent,"align-items":e.style.alignItems,"align-content":e.style.alignContent,"justify-items":e.style.justifyItems};Object.keys(n).forEach(t=>{e.style.setProperty(t,`initial`,`important`)}),!O.current&&!c&&e.setAttribute(_t.startingStyle,``),_({height:e.scrollHeight,width:e.scrollWidth}),t=s.request(()=>{Object.entries(n).forEach(([t,n])=>{n===``?e.style.removeProperty(t):e.style.setProperty(t,n)})})}else{if(e.scrollHeight===0&&e.scrollWidth===0)return;_({height:e.scrollHeight,width:e.scrollWidth});let t=new AbortController;n.current=t;let r=t.signal,i=null,a=_t.endingStyle;return i=new MutationObserver(o=>{o.some(e=>e.type===`attributes`&&e.attributeName===a)&&(i?.disconnect(),i=null,h(()=>{_({height:0,width:0}),e.style.removeProperty(`content-visibility`),v(!1),n.current===t&&(n.current=null)},r))}),i.observe(e,{attributes:!0,attributeFilter:[a]}),()=>{i?.disconnect(),k.cancel(),n.current===t&&(t.abort(),n.current=null)}}return()=>{s.cancel(t)}},[n,r,k,o,c,u,p,m,h,_,v]),L(()=>{if(r.current!==`css-animation`)return;let e=m.current;e&&(E.current=e.style.animationName||E.current,e.style.setProperty(`animation-name`,`none`),_({height:e.scrollHeight,width:e.scrollWidth}),!D.current&&!T.current&&e.style.removeProperty(`animation-name`),p?(n.current!=null&&(n.current.abort(),n.current=null),v(!0),b(!0)):(n.current=new AbortController,h(()=>{v(!1),b(!1),n.current=null},n.current.signal)))},[n,r,p,m,h,_,v,b,S]),ne(()=>{let e=s.request(()=>{D.current=!1});return()=>s.cancel(e)}),L(()=>{if(!o)return;let e=m.current;if(!e)return;let t=-1,n=-1;return p&&T.current&&(e.style.transitionDuration=`0s`,_({height:e.scrollHeight,width:e.scrollWidth}),t=s.request(()=>{T.current=!1,n=s.request(()=>{setTimeout(()=>{e.style.removeProperty(`transition-duration`)})})})),()=>{s.cancel(t),s.cancel(n)}},[o,p,m,_]),L(()=>{let e=m.current;e&&o&&A&&(e.setAttribute(`hidden`,`until-found`),r.current===`css-transition`&&e.setAttribute(_t.startingStyle,``))},[o,A,r,m]),K.useEffect(function(){let e=m.current;if(!e)return;function t(e){T.current=!0,y(!0),d(!0,M(w,e))}return g(e,`beforematch`,t)},[d,m,y]),K.useMemo(()=>({props:{hidden:A,id:l,ref:j}}),[A,l,j])}var Ot=function(e){return e.collapsiblePanelHeight=`--collapsible-panel-height`,e.collapsiblePanelWidth=`--collapsible-panel-width`,e}({}),kt=K.forwardRef(function(e,n){let{className:r,hiddenUntilFound:i,keepMounted:a,render:o,id:s,style:c,...u}=e,{abortControllerRef:d,animationTypeRef:f,height:p,mounted:m,onOpenChange:h,open:g,panelId:_,panelRef:v,runOnceAnimationsFinish:y,setDimensions:b,setHiddenUntilFound:x,setKeepMounted:S,setMounted:C,setPanelIdState:w,setOpen:T,setVisible:E,state:D,transitionDimensionRef:O,visible:k,width:A,transitionStatus:j}=gt(),M=i??!1,N=a??!1;L(()=>{if(s)return w(s),()=>{w(void 0)}},[s,w]),L(()=>{x(M)},[x,M]),L(()=>{S(N)},[S,N]);let{props:P}=Dt({abortControllerRef:d,animationTypeRef:f,externalRef:n,height:p,hiddenUntilFound:M,id:_,keepMounted:N,mounted:m,onOpenChange:h,open:g,panelRef:v,runOnceAnimationsFinish:y,setDimensions:b,setMounted:C,setOpen:T,setVisible:E,transitionDimensionRef:O,visible:k,width:A});t({open:g&&j===`idle`,ref:v,onComplete(){g&&b({height:void 0,width:void 0})}});let F=l(`div`,e,{state:K.useMemo(()=>({...D,transitionStatus:j}),[D,j]),ref:[n,v],props:[P,{style:{[Ot.collapsiblePanelHeight]:p===void 0?`auto`:`${p}px`,[Ot.collapsiblePanelWidth]:A===void 0?`auto`:`${A}px`}},u],stateAttributesMapping:St});return N||M||m?F:null}),$=n();function At(e){let t=(0,$.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,Q.jsx)(Ct,{"data-slot":`collapsible`,...n}),t[2]=n,t[3]=r),r}function jt(e){let t=(0,$.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,Q.jsx)(Tt,{"data-slot":`collapsible-trigger`,...n}),t[2]=n,t[3]=r),r}function Mt(e){let t=(0,$.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,Q.jsx)(kt,{"data-slot":`collapsible-content`,...n}),t[2]=n,t[3]=r),r}function Nt(e){let t=(0,$.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=b(`flex items-center gap-2 text-xs/relaxed leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,Q.jsx)(`label`,{"data-slot":`label`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Pt(e){let t=(0,$.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=b(`group/field-group @container/field-group flex w-full flex-col gap-4 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,Q.jsx)(`div`,{"data-slot":`field-group`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}var Ft=F(`group/field flex w-full gap-2 data-[invalid=true]:text-destructive`,{variants:{orientation:{vertical:`flex-col *:w-full [&>.sr-only]:w-auto`,horizontal:`flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px`,responsive:`flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px`}},defaultVariants:{orientation:`vertical`}});function It(e){let t=(0,$.c)(11),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,orientation:i,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a=i===void 0?`vertical`:i,o;t[4]!==n||t[5]!==a?(o=b(Ft({orientation:a}),n),t[4]=n,t[5]=a,t[6]=o):o=t[6];let s;return t[7]!==a||t[8]!==r||t[9]!==o?(s=(0,Q.jsx)(`fieldset`,{"data-slot":`field`,"data-orientation":a,className:o,...r}),t[7]=a,t[8]=r,t[9]=o,t[10]=s):s=t[10],s}function Lt(e){let t=(0,$.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=b(`group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-2 dark:has-data-checked:bg-primary/10`,`has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,Q.jsx)(Nt,{"data-slot":`field-label`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Rt(e){let t=(0,$.c)(15),n,r,i,a;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4]):({className:r,children:n,errors:i,...a}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a);let o;bb0:{if(n){o=n;break bb0}if(!i?.length){o=null;break bb0}let e;t[5]===i?e=t[6]:(e=[...new Map(i.map(Bt)).values()],t[5]=i,t[6]=e);let r=e;if(r?.length===1){o=r[0]?.message;break bb0}let a;t[7]===r?a=t[8]:(a=(0,Q.jsx)(`ul`,{className:`ml-4 flex list-disc flex-col gap-1`,children:r.map(zt)}),t[7]=r,t[8]=a),o=a}let s=o;if(!s)return null;let c;t[9]===r?c=t[10]:(c=b(`text-xs/relaxed font-normal text-destructive`,r),t[9]=r,t[10]=c);let l;return t[11]!==s||t[12]!==a||t[13]!==c?(l=(0,Q.jsx)(`div`,{role:`alert`,"data-slot":`field-error`,className:c,...a,children:s}),t[11]=s,t[12]=a,t[13]=c,t[14]=l):l=t[14],l}function zt(e){return e?.message&&(0,Q.jsx)(`li`,{children:e.message},e.message)}function Bt(e){return[e?.message,e]}var Vt=function(e){return e.disabled=`data-disabled`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({}),Ht={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},Ut={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},Wt={disabled:!1,...Ut},Gt={valid(e){return e===null?null:e?{[Vt.valid]:``}:{[Vt.invalid]:``}}},Kt=K.createContext({invalid:void 0,name:void 0,validityData:{state:Ht,errors:[],error:``,value:``,initialValue:null},setValidityData:I,disabled:void 0,touched:Ut.touched,setTouched:I,dirty:Ut.dirty,setDirty:I,filled:Ut.filled,setFilled:I,focused:Ut.focused,setFocused:I,validate:()=>null,validationMode:`onSubmit`,validationDebounceTime:0,shouldValidateOnChange:()=>!1,state:Wt,markedDirtyRef:{current:!1},registerFieldControl:I,validation:{getValidationProps:(e=v)=>e,getInputValidationProps:(e=v)=>e,inputRef:{current:null},commit:async()=>{}}});function qt(e=!0){let t=K.useContext(Kt);if(t.setValidityData===I&&!e)throw Error(x(28));return t}var Jt=K.createContext({controlId:void 0,registerControlId:I,labelId:void 0,setLabelId:I,messageIds:[],setMessageIds:I,getDescriptionProps:e=>e});function Yt(){return K.useContext(Jt)}function Xt(e={}){let{id:t,implicit:n=!1,controlRef:r}=e,{controlId:i,registerControlId:a}=Yt(),o=p(t),s=n?i:void 0,c=m(()=>Symbol(`labelable-control`)),l=K.useRef(!1),u=K.useRef(t!=null),f=R(()=>{!l.current||a===I||(l.current=!1,a(c.current,void 0))});return L(()=>{if(a===I)return;let e;if(n){let n=r?.current;e=d(n)&&n.closest(`label`)!=null?t??null:s??o}else if(t!=null)u.current=!0,e=t;else if(u.current)e=o;else{f();return}if(e===void 0){f();return}l.current=!0,a(c.current,e)},[t,r,s,a,n,o,c,f]),K.useEffect(()=>f,[f]),i??o}function Zt(e,t){let{enabled:n=!0,getValue:r,id:i,value:a}=t,{registerFieldControl:o}=qt(),s=K.useRef(null);s.current||=Symbol(),L(()=>{let t=s.current;if(!(!t||!n))return o(t,{controlRef:e,getValue:r,id:i,value:a}),()=>{o(t,void 0)}},[e,n,r,i,o,a])}var Qt=K.forwardRef(function(e,t){let{render:n,className:r,id:i,name:a,value:s,disabled:u=!1,onValueChange:d,defaultValue:f,autoFocus:p=!1,style:m,...h}=e,{state:g,name:_,disabled:v,setTouched:y,setDirty:b,validityData:x,setFocused:S,setFilled:C,validationMode:T,validation:E}=qt(),D=v||u,O=_??a,k={...g,disabled:D},{labelId:A}=Yt(),j=Xt({id:i});L(()=>{let e=s!=null;E.inputRef.current?.value||e&&s!==``?C(!0):e&&s===``&&C(!1)},[E.inputRef,C,s]);let N=K.useRef(null);L(()=>{p&&N.current===c(o(N.current))&&S(!0)},[p,S]);let[P]=pt({controlled:s,default:f,name:`FieldControl`,state:`value`}),F=s!==void 0,I=F?P:void 0,ee=R(()=>E.inputRef.current?.value);return Zt(E.inputRef,{id:j,value:I,getValue:ee}),l(`input`,e,{ref:[t,N],state:k,props:[{id:j,disabled:D,name:O,ref:E.inputRef,"aria-labelledby":A,autoFocus:p,...F?{value:I}:{defaultValue:f},onChange(e){let t=e.currentTarget.value;d?.(t,M(w,e.nativeEvent)),b(t!==x.initialValue),C(t!==``)},onFocus(){S(!0)},onBlur(e){y(!0),S(!1),T===`onBlur`&&E.commit(e.currentTarget.value)},onKeyDown(e){e.currentTarget.tagName===`INPUT`&&e.key===`Enter`&&(y(!0),E.commit(e.currentTarget.value))}},E.getInputValidationProps(),h],stateAttributesMapping:Gt})}),$t=K.forwardRef(function(e,t){return(0,Q.jsx)(Qt,{ref:t,...e})});function en(e){let t=(0,$.c)(10),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,type:i,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a;t[4]===n?a=t[5]:(a=b(`h-7 w-full min-w-0 rounded-md border border-input bg-input/20 px-2 py-0.5 text-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-xs/relaxed file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-xs/relaxed dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,n),t[4]=n,t[5]=a);let o;return t[6]!==r||t[7]!==a||t[8]!==i?(o=(0,Q.jsx)($t,{type:i,"data-slot":`input`,className:a,...r}),t[6]=r,t[7]=a,t[8]=i,t[9]=o):o=t[9],o}function tn(e){let t=(0,$.c)(14),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,size:i,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a=i===void 0?`default`:i,o;t[4]===n?o=t[5]:(o=b(`group/native-select relative w-fit has-[select:disabled]:opacity-50`,n),t[4]=n,t[5]=o);let s;t[6]!==r||t[7]!==a?(s=(0,Q.jsx)(`select`,{"data-slot":`native-select`,"data-size":a,className:`h-7 w-full min-w-0 appearance-none rounded-md border border-input bg-input/20 py-0.5 pr-6 pl-2 text-xs/relaxed transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 data-[size=sm]:h-6 data-[size=sm]:text-[0.625rem] dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,...r}),t[6]=r,t[7]=a,t[8]=s):s=t[8];let c;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Q.jsx)(_e,{className:`pointer-events-none absolute top-1/2 right-1.5 size-3.5 -translate-y-1/2 text-muted-foreground select-none group-data-[size=sm]/native-select:size-3`,"aria-hidden":`true`,"data-slot":`native-select-icon`}),t[9]=c):c=t[9];let l;return t[10]!==a||t[11]!==o||t[12]!==s?(l=(0,Q.jsxs)(`div`,{className:o,"data-slot":`native-select-wrapper`,"data-size":a,children:[s,c]}),t[10]=a,t[11]=o,t[12]=s,t[13]=l):l=t[13],l}function nn(e){let t=(0,$.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=b(`bg-[Canvas] text-[CanvasText]`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,Q.jsx)(`option`,{"data-slot":`native-select-option`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function rn(e){let t=(0,$.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=b(`flex field-sizing-content min-h-16 w-full resize-none rounded-md border border-input bg-input/20 px-2 py-2 text-sm transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-xs/relaxed dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,Q.jsx)(`textarea`,{"data-slot":`textarea`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function an(e,t){let n=(0,$.c)(27),r,i;n[0]===e?(r=n[1],i=n[2]):(r=t=>t.from({m:N}).where(t=>{let{m:n}=t;return E(n.id,e)}),i=[e],n[0]=e,n[1]=r,n[2]=i);let{data:a,isLoading:o}=O(r,i),s;n[3]===a?s=n[4]:(s=a===void 0?[]:a,n[3]=a,n[4]=s);let c=s[0]??null,l;n[5]===Symbol.for(`react.memo_cache_sentinel`)?(l=[],n[5]=l):l=n[5];let{data:u}=O(sn,l),d;n[6]===u?d=n[7]:(d=u===void 0?[]:u,n[6]=u,n[7]=d);let f=d,p;n[8]===e?p=n[9]:(p=()=>{P(e,{needsReview:!1}).then(on)},n[8]=e,n[9]=p);let m=p,h;n[10]===e?h=n[11]:(h=async t=>{try{return await y(e,t),await j.invalidateQueries({queryKey:[`memories`]}),!0}catch{return _.error(`Failed to add project — try again`),!1}},n[10]=e,n[11]=h);let g=h,v;n[12]===e?v=n[13]:(v=async t=>{try{await S(e,t),await j.invalidateQueries({queryKey:[`memories`]})}catch{_.error(`Failed to remove project — try again`)}},n[12]=e,n[13]=v);let b=v,x;if(n[14]!==f||n[15]!==c?.projects){let e;n[17]===c?.projects?e=n[18]:(e=e=>!c?.projects.some(t=>t.id===e.id),n[17]=c?.projects,n[18]=e),x=f.filter(e),n[14]=f,n[15]=c?.projects,n[16]=x}else x=n[16];let C=x,w;return n[19]!==C||n[20]!==g||n[21]!==m||n[22]!==b||n[23]!==o||n[24]!==c||n[25]!==t?(w={memory:c,isLoading:o,availableProjects:C,handleApprove:m,handleAddProject:g,handleRemoveProject:b,handleClose:t},n[19]=C,n[20]=g,n[21]=m,n[22]=b,n[23]=o,n[24]=c,n[25]=t,n[26]=w):w=n[26],w}function on(){return j.invalidateQueries({queryKey:[`memories`]})}function sn(e){return e.from({p:A})}var cn=ie({content:B().min(1,`Content is required.`),type:ce(de),tagsInput:B()});function ln(e){let t=(0,$.c)(12),{field:n,label:r,description:i,children:a}=e,o=n.state.meta.isTouched&&!n.state.meta.isValid,s;t[0]!==n.name||t[1]!==r?(s=(0,Q.jsx)(Lt,{htmlFor:n.name,className:`text-[11px] uppercase tracking-wide text-muted-foreground`,children:r}),t[0]=n.name,t[1]=r,t[2]=s):s=t[2];let c;t[3]!==n.state.meta.errors||t[4]!==o?(c=o&&(0,Q.jsx)(Rt,{errors:n.state.meta.errors}),t[3]=n.state.meta.errors,t[4]=o,t[5]=c):c=t[5];let l;return t[6]!==a||t[7]!==i||t[8]!==o||t[9]!==s||t[10]!==c?(l=(0,Q.jsxs)(It,{"data-invalid":o,children:[s,a,i,c]}),t[6]=a,t[7]=i,t[8]=o,t[9]=s,t[10]=c,t[11]=l):l=t[11],l}function un(e){let t=(0,$.c)(113),{memory:n,availableProjects:r,handleApprove:i,handleAddProject:a,handleRemoveProject:o,handleClose:s}=e,[c,l]=(0,K.useState)(!1),[u,d]=(0,K.useState)(``),f,p;t[0]===c?(f=t[1],p=t[2]):(f=()=>{if(!c)return;let e=setTimeout(()=>l(!1),1500);return()=>clearTimeout(e)},p=[c],t[0]=c,t[1]=f,t[2]=p),(0,K.useEffect)(f,p);let m=n.content,h=n.type,g;t[3]===n.tags?g=t[4]:(g=n.tags.join(`, `),t[3]=n.tags,t[4]=g);let _;t[5]!==n.content||t[6]!==n.type||t[7]!==g?(_={content:m,type:h,tagsInput:g},t[5]=n.content,t[6]=n.type,t[7]=g,t[8]=_):_=t[8];let v;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(v={onSubmit:cn},t[9]=v):v=t[9];let y;t[10]!==n.content||t[11]!==n.id||t[12]!==n.tags||t[13]!==n.type?(y=e=>{let{value:t}=e,r=t.tagsInput.split(`,`).map(_n).filter(Boolean);N.update(n.id,e=>{t.content!==n.content&&(e.content=t.content),t.type!==n.type&&(e.type=t.type),JSON.stringify(r)!==JSON.stringify(n.tags)&&(e.tags=r)}),l(!0)},t[10]=n.content,t[11]=n.id,t[12]=n.tags,t[13]=n.type,t[14]=y):y=t[14];let b;t[15]!==_||t[16]!==y?(b={defaultValues:_,validators:v,onSubmit:y},t[15]=_,t[16]=y,t[17]=b):b=t[17];let x=ft(b),S;t[18]===x.state.isDirty?S=t[19]:(S={shouldBlockFn:()=>x.state.isDirty,withResolver:!0},t[18]=x.state.isDirty,t[19]=S);let C=me(S),w;t[20]!==u||t[21]!==a?(w=async()=>{u&&await a(u)&&d(``)},t[20]=u,t[21]=a,t[22]=w):w=t[22];let T=w,E;t[23]===n.type?E=t[24]:(E=(0,Q.jsx)(se,{variant:n.type,children:n.type}),t[23]=n.type,t[24]=E);let D;t[25]===n.reviewEvents.length?D=t[26]:(D=n.reviewEvents.length>0&&(0,Q.jsx)(se,{variant:`destructive`,title:`Flagged for review — possible duplicate or conflict with another memory`,children:`needs review`}),t[25]=n.reviewEvents.length,t[26]=D);let O;t[27]===n.pinned?O=t[28]:(O=n.pinned&&(0,Q.jsx)(se,{variant:`default`,children:`pinned`}),t[27]=n.pinned,t[28]=O);let k;t[29]!==E||t[30]!==D||t[31]!==O?(k=(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[E,D,O]}),t[29]=E,t[30]=D,t[31]=O,t[32]=k):k=t[32];let A;t[33]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,Q.jsx)(ae,{weight:`regular`}),t[33]=A):A=t[33];let j;t[34]===s?j=t[35]:(j=(0,Q.jsx)(oe,{variant:`ghost`,size:`icon-sm`,onClick:s,"aria-label":`Close`,children:A}),t[34]=s,t[35]=j);let M;t[36]!==k||t[37]!==j?(M=(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2.5 border-b border-border shrink-0`,children:[k,j]}),t[36]=k,t[37]=j,t[38]=M):M=t[38];let P;t[39]===x.Field?P=t[40]:(P=(0,Q.jsx)(x.Field,{name:`content`,children:gn}),t[39]=x.Field,t[40]=P);let F;t[41]===x.Field?F=t[42]:(F=(0,Q.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,Q.jsx)(x.Field,{name:`type`,children:mn}),(0,Q.jsx)(x.Field,{name:`tagsInput`,children:pn})]}),t[41]=x.Field,t[42]=F);let I;t[43]!==P||t[44]!==F?(I=(0,Q.jsxs)(Pt,{children:[P,F]}),t[43]=P,t[44]=F,t[45]=I):I=t[45];let ee;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(ee=(0,Q.jsx)(`p`,{className:`text-[11px] uppercase tracking-wide text-muted-foreground font-mono`,children:`Projects`}),t[46]=ee):ee=t[46];let L;t[47]===n.projects.length?L=t[48]:(L=n.projects.length===0&&(0,Q.jsx)(`span`,{className:`text-[11px] font-mono text-muted-foreground`,children:`Global (no project)`}),t[47]=n.projects.length,t[48]=L);let te;if(t[49]!==o||t[50]!==n.projects){let e;t[52]===o?e=t[53]:(e=e=>(0,Q.jsxs)(se,{variant:`secondary`,className:`gap-1 rounded-full text-[11px]`,children:[e.name,(0,Q.jsx)(`button`,{type:`button`,onClick:()=>void o(e.id),className:`hover:text-destructive transition-colors leading-none`,"aria-label":`Remove from ${e.name}`,children:(0,Q.jsx)(ae,{weight:`regular`,className:`size-2.5`})})]},e.id),t[52]=o,t[53]=e),te=n.projects.map(e),t[49]=o,t[50]=n.projects,t[51]=te}else te=t[51];let ne;t[54]!==L||t[55]!==te?(ne=(0,Q.jsxs)(`div`,{className:`flex flex-wrap gap-1`,children:[L,te]}),t[54]=L,t[55]=te,t[56]=ne):ne=t[56];let R;t[57]!==u||t[58]!==r||t[59]!==T?(R=r.length>0&&(0,Q.jsxs)(`div`,{className:`flex gap-1`,children:[(0,Q.jsxs)(tn,{value:u,onChange:e=>d(e.target.value),size:`sm`,className:`flex-1`,children:[(0,Q.jsx)(nn,{value:``,children:`Add to project…`}),r.map(fn)]}),(0,Q.jsx)(oe,{variant:`outline`,size:`sm`,disabled:!u,onClick:()=>void T(),children:`+`})]}),t[57]=u,t[58]=r,t[59]=T,t[60]=R):R=t[60];let z;t[61]!==ne||t[62]!==R?(z=(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[ee,ne,R]}),t[61]=ne,t[62]=R,t[63]=z):z=t[63];let B;t[64]===n.reviewEvents?B=t[65]:(B=n.reviewEvents.length>0&&(0,Q.jsxs)(At,{defaultOpen:!0,className:`group pt-2 border-t border-border`,children:[(0,Q.jsxs)(jt,{className:`flex items-center gap-1 cursor-pointer text-[11px] uppercase tracking-wide text-muted-foreground hover:text-foreground transition-colors select-none w-full`,children:[(0,Q.jsx)(`span`,{className:`transition-transform group-data-[open]:rotate-90`,children:`›`}),`Review reasons`]}),(0,Q.jsx)(Mt,{className:`space-y-2 mt-2`,children:n.reviewEvents.map(dn)})]}),t[64]=n.reviewEvents,t[65]=B);let V;t[66]===Symbol.for(`react.memo_cache_sentinel`)?(V=(0,Q.jsxs)(jt,{className:`flex items-center gap-1 cursor-pointer text-[11px] uppercase tracking-wide text-muted-foreground hover:text-foreground transition-colors select-none w-full`,children:[(0,Q.jsx)(`span`,{className:`transition-transform group-data-[open]:rotate-90`,children:`›`}),`Details`]}),t[66]=V):V=t[66];let H;t[67]===n.sourceHarness?H=t[68]:(H=n.sourceHarness&&(0,Q.jsxs)(`div`,{className:`flex justify-between text-[11px] font-mono text-muted-foreground`,children:[(0,Q.jsx)(`span`,{children:`Source`}),(0,Q.jsx)(`span`,{children:n.sourceHarness})]}),t[67]=n.sourceHarness,t[68]=H);let re;t[69]===Symbol.for(`react.memo_cache_sentinel`)?(re=(0,Q.jsx)(`span`,{children:`Accessed`}),t[69]=re):re=t[69];let ie;t[70]===n.accessCount?ie=t[71]:(ie=(0,Q.jsxs)(`div`,{className:`flex justify-between text-[11px] font-mono text-muted-foreground`,children:[re,(0,Q.jsxs)(`span`,{children:[n.accessCount,`×`]})]}),t[70]=n.accessCount,t[71]=ie);let ce;t[72]===Symbol.for(`react.memo_cache_sentinel`)?(ce=(0,Q.jsx)(`span`,{children:`Updated`}),t[72]=ce):ce=t[72];let le;t[73]===n.updatedAt?le=t[74]:(le=new Date(n.updatedAt).toLocaleString(),t[73]=n.updatedAt,t[74]=le);let ue;t[75]===le?ue=t[76]:(ue=(0,Q.jsxs)(`div`,{className:`flex justify-between text-[11px] font-mono text-muted-foreground`,children:[ce,(0,Q.jsx)(`span`,{children:le})]}),t[75]=le,t[76]=ue);let de;t[77]===Symbol.for(`react.memo_cache_sentinel`)?(de=(0,Q.jsx)(`span`,{children:`Created`}),t[77]=de):de=t[77];let U;t[78]===n.createdAt?U=t[79]:(U=new Date(n.createdAt).toLocaleString(),t[78]=n.createdAt,t[79]=U);let W;t[80]===U?W=t[81]:(W=(0,Q.jsxs)(`div`,{className:`flex justify-between text-[11px] font-mono text-muted-foreground`,children:[de,(0,Q.jsx)(`span`,{children:U})]}),t[80]=U,t[81]=W);let fe;t[82]!==H||t[83]!==ie||t[84]!==ue||t[85]!==W?(fe=(0,Q.jsxs)(At,{className:`group pt-2 border-t border-border`,children:[V,(0,Q.jsxs)(Mt,{className:`space-y-1 mt-2`,children:[H,ie,ue,W]})]}),t[82]=H,t[83]=ie,t[84]=ue,t[85]=W,t[86]=fe):fe=t[86];let pe;t[87]!==I||t[88]!==z||t[89]!==B||t[90]!==fe?(pe=(0,Q.jsxs)(`div`,{className:`flex-1 overflow-y-auto px-4 py-4 space-y-4`,children:[I,z,B,fe]}),t[87]=I,t[88]=z,t[89]=B,t[90]=fe,t[91]=pe):pe=t[91];let G;t[92]===C?G=t[93]:(G=C.status===`blocked`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`text-xs font-mono text-destructive`,children:`Unsaved changes`}),(0,Q.jsx)(oe,{variant:`ghost`,size:`sm`,onClick:()=>C.proceed(),children:`Discard`}),(0,Q.jsx)(oe,{variant:`outline`,size:`sm`,onClick:()=>C.reset(),children:`Keep editing`})]}),t[92]=C,t[93]=G);let q;t[94]!==C.status||t[95]!==i||t[96]!==n.reviewEvents.length?(q=n.reviewEvents.length>0&&C.status!==`blocked`&&(0,Q.jsx)(oe,{variant:`outline`,size:`sm`,onClick:i,title:`Mark as reviewed — this memory was flagged as a possible duplicate or conflict`,children:`Mark reviewed`}),t[94]=C.status,t[95]=i,t[96]=n.reviewEvents.length,t[97]=q):q=t[97];let he;t[98]===Symbol.for(`react.memo_cache_sentinel`)?(he=(0,Q.jsx)(`div`,{className:`flex-1`}),t[98]=he):he=t[98];let ge=!x.state.isDirty,_e;t[99]===x?_e=t[100]:(_e=()=>void x.handleSubmit(),t[99]=x,t[100]=_e);let ve=c?`Saved`:`Save`,ye;t[101]!==ge||t[102]!==_e||t[103]!==ve?(ye=(0,Q.jsx)(oe,{variant:`default`,size:`sm`,disabled:ge,onClick:_e,children:ve}),t[101]=ge,t[102]=_e,t[103]=ve,t[104]=ye):ye=t[104];let be;t[105]!==G||t[106]!==q||t[107]!==ye?(be=(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 px-4 py-3 border-t border-border shrink-0`,children:[G,q,he,ye]}),t[105]=G,t[106]=q,t[107]=ye,t[108]=be):be=t[108];let J;return t[109]!==M||t[110]!==pe||t[111]!==be?(J=(0,Q.jsxs)(`div`,{className:`flex flex-col h-full`,children:[M,pe,be]}),t[109]=M,t[110]=pe,t[111]=be,t[112]=J):J=t[112],J}function dn(e){return(0,Q.jsxs)(`div`,{className:`rounded border border-border p-2 space-y-1 text-[11px]`,children:[(0,Q.jsxs)(`div`,{className:`flex justify-between text-muted-foreground`,children:[(0,Q.jsxs)(`span`,{className:`font-medium text-destructive`,children:[Math.round(e.similarity*100),`% similarity match`]}),(0,Q.jsx)(`span`,{children:new Date(e.createdAt).toLocaleString()})]}),e.conflictingMemoryId?(0,Q.jsxs)(`div`,{className:`text-muted-foreground font-mono`,children:[`Conflicting memory:`,` `,(0,Q.jsx)(`span`,{className:`font-mono text-[10px]`,children:e.conflictingMemoryId})]}):(0,Q.jsx)(`div`,{className:`text-muted-foreground italic`,children:`Conflicting memory deleted`}),e.conflictContentSnapshot&&(0,Q.jsxs)(At,{children:[(0,Q.jsx)(jt,{className:`text-muted-foreground hover:text-foreground transition-colors cursor-pointer`,children:`Show conflicting content ›`}),(0,Q.jsx)(Mt,{children:(0,Q.jsx)(`p`,{className:`mt-1 text-foreground bg-muted rounded px-2 py-1 whitespace-pre-wrap font-mono`,children:e.conflictContentSnapshot})})]})]},e.id)}function fn(e){return(0,Q.jsx)(nn,{value:e.id,children:e.name},e.id)}function pn(e){return(0,Q.jsx)(ln,{field:e,label:`Tags`,children:(0,Q.jsx)(en,{id:e.name,name:e.name,value:e.state.value,onBlur:e.handleBlur,onChange:t=>e.handleChange(t.target.value),placeholder:`tag1, tag2`,"aria-invalid":e.state.meta.isTouched&&!e.state.meta.isValid})})}function mn(e){return(0,Q.jsx)(ln,{field:e,label:`Type`,description:(0,Q.jsx)(`p`,{className:`text-[10px] text-muted-foreground leading-snug`,children:H[e.state.value]}),children:(0,Q.jsx)(tn,{id:e.name,name:e.name,value:e.state.value,onBlur:e.handleBlur,onChange:t=>e.handleChange(t.target.value),className:`w-full`,children:de.map(hn)})})}function hn(e){return(0,Q.jsx)(nn,{value:e,children:te(e)},e)}function gn(e){return(0,Q.jsx)(ln,{field:e,label:`Content`,children:(0,Q.jsx)(rn,{id:e.name,name:e.name,value:e.state.value,onBlur:e.handleBlur,onChange:t=>e.handleChange(t.target.value),rows:8,className:`min-h-32 font-heading text-sm`,"aria-invalid":e.state.meta.isTouched&&!e.state.meta.isValid})})}function _n(e){return e.trim()}function vn(e){let t=(0,$.c)(12),{id:n}=e,{projectId:r}=ue.useParams(),i=W(),a;t[0]!==i||t[1]!==r?(a=()=>void i({to:`/$projectId`,params:{projectId:r},search:yn}),t[0]=i,t[1]=r,t[2]=a):a=t[2];let{memory:o,isLoading:s,availableProjects:c,handleApprove:l,handleAddProject:u,handleRemoveProject:d,handleClose:f}=an(n,a);if(s||!o){let e=s?`Loading…`:`Memory not found`,n;return t[3]===e?n=t[4]:(n=(0,Q.jsx)(`div`,{className:`flex items-center justify-center h-full text-xs font-mono text-muted-foreground`,children:e}),t[3]=e,t[4]=n),n}let p;return t[5]!==c||t[6]!==u||t[7]!==l||t[8]!==f||t[9]!==d||t[10]!==o?(p=(0,Q.jsx)(un,{memory:o,availableProjects:c,handleApprove:l,handleAddProject:u,handleRemoveProject:d,handleClose:f},o.id),t[5]=c,t[6]=u,t[7]=l,t[8]=f,t[9]=d,t[10]=o,t[11]=p):p=t[11],p}function yn(e){return e}export{en as n,pt as r,vn as t};