trybeacon 0.1.24 → 0.1.26

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 (371) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +9 -7
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/routes-manifest.json +12 -0
  6. package/.next/server/app/_global-error/page.js +3 -3
  7. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_global-error.html +1 -1
  9. package/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found/page.js +2 -2
  17. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/_not-found.html +1 -1
  19. package/.next/server/app/_not-found.rsc +2 -2
  20. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  21. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  23. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/.next/server/app/api/board-annotations/[id]/route.js +1 -1
  27. package/.next/server/app/api/board-annotations/[id]/route.js.nft.json +1 -1
  28. package/.next/server/app/api/board-annotations/route.js +1 -1
  29. package/.next/server/app/api/board-annotations/route.js.nft.json +1 -1
  30. package/.next/server/app/api/board-layout/route.js +1 -0
  31. package/.next/server/app/api/board-layout/route.js.nft.json +1 -0
  32. package/.next/server/app/api/board-layout/route_client-reference-manifest.js +1 -0
  33. package/.next/server/app/api/bug-flags/[id]/route.js +1 -1
  34. package/.next/server/app/api/bug-flags/[id]/route.js.nft.json +1 -1
  35. package/.next/server/app/api/bug-flags/route.js +1 -1
  36. package/.next/server/app/api/bug-flags/route.js.nft.json +1 -1
  37. package/.next/server/app/api/code-graph/position/route.js +1 -1
  38. package/.next/server/app/api/code-graph/position/route.js.nft.json +1 -1
  39. package/.next/server/app/api/code-graph/route.js +1 -1
  40. package/.next/server/app/api/code-graph/route.js.nft.json +1 -1
  41. package/.next/server/app/api/context/feature/route.js +1 -1
  42. package/.next/server/app/api/context/feature/route.js.nft.json +1 -1
  43. package/.next/server/app/api/context/file/route.js +1 -1
  44. package/.next/server/app/api/context/file/route.js.nft.json +1 -1
  45. package/.next/server/app/api/context/route.js +2 -2
  46. package/.next/server/app/api/context/route.js.nft.json +1 -1
  47. package/.next/server/app/api/db/arrange/route.js +1 -1
  48. package/.next/server/app/api/db/arrange/route.js.nft.json +1 -1
  49. package/.next/server/app/api/db/backfill-access/route.js +1 -1
  50. package/.next/server/app/api/db/backfill-access/route.js.nft.json +1 -1
  51. package/.next/server/app/api/db/position/route.js +1 -1
  52. package/.next/server/app/api/db/position/route.js.nft.json +1 -1
  53. package/.next/server/app/api/db/prune-planned/route.js +1 -0
  54. package/.next/server/app/api/db/prune-planned/route.js.nft.json +1 -0
  55. package/.next/server/app/api/db/prune-planned/route_client-reference-manifest.js +1 -0
  56. package/.next/server/app/api/db/reconcile-endpoints/route.js +1 -1
  57. package/.next/server/app/api/db/reconcile-endpoints/route.js.nft.json +1 -1
  58. package/.next/server/app/api/db/relations/[id]/route.js +1 -1
  59. package/.next/server/app/api/db/relations/[id]/route.js.nft.json +1 -1
  60. package/.next/server/app/api/db/tables/[id]/route.js +1 -1
  61. package/.next/server/app/api/db/tables/[id]/route.js.nft.json +1 -1
  62. package/.next/server/app/api/draft/approve/route.js +1 -5
  63. package/.next/server/app/api/draft/approve/route.js.nft.json +1 -1
  64. package/.next/server/app/api/draft/route.js +1 -5
  65. package/.next/server/app/api/draft/route.js.nft.json +1 -1
  66. package/.next/server/app/api/draft/status/route.js +1 -1
  67. package/.next/server/app/api/draft/status/route.js.nft.json +1 -1
  68. package/.next/server/app/api/edges/[id]/route.js +1 -1
  69. package/.next/server/app/api/edges/[id]/route.js.nft.json +1 -1
  70. package/.next/server/app/api/edges/route.js +1 -1
  71. package/.next/server/app/api/edges/route.js.nft.json +1 -1
  72. package/.next/server/app/api/endpoints/[id]/route.js +1 -1
  73. package/.next/server/app/api/endpoints/[id]/route.js.nft.json +1 -1
  74. package/.next/server/app/api/entities/route.js +1 -1
  75. package/.next/server/app/api/entities/route.js.nft.json +1 -1
  76. package/.next/server/app/api/feedback/[id]/route.js +1 -1
  77. package/.next/server/app/api/feedback/[id]/route.js.nft.json +1 -1
  78. package/.next/server/app/api/feedback/[id]/vote/route.js +1 -1
  79. package/.next/server/app/api/feedback/[id]/vote/route.js.nft.json +1 -1
  80. package/.next/server/app/api/feedback/route.js +1 -1
  81. package/.next/server/app/api/feedback/route.js.nft.json +1 -1
  82. package/.next/server/app/api/ingest/route.js +2 -2
  83. package/.next/server/app/api/ingest/route.js.nft.json +1 -1
  84. package/.next/server/app/api/init/route.js +2 -2
  85. package/.next/server/app/api/init/route.js.nft.json +1 -1
  86. package/.next/server/app/api/map/describe/route.js +2 -2
  87. package/.next/server/app/api/map/describe/route.js.nft.json +1 -1
  88. package/.next/server/app/api/map/files/route.js +1 -1
  89. package/.next/server/app/api/map/files/route.js.nft.json +1 -1
  90. package/.next/server/app/api/map/finish/route.js +1 -1
  91. package/.next/server/app/api/map/finish/route.js.nft.json +1 -1
  92. package/.next/server/app/api/map/route.js +1 -1
  93. package/.next/server/app/api/map/route.js.nft.json +1 -1
  94. package/.next/server/app/api/map/start/route.js +1 -1
  95. package/.next/server/app/api/map/start/route.js.nft.json +1 -1
  96. package/.next/server/app/api/map/touch-active/route.js +1 -1
  97. package/.next/server/app/api/map/touch-active/route.js.nft.json +1 -1
  98. package/.next/server/app/api/nodes/[id]/position/route.js +1 -1
  99. package/.next/server/app/api/nodes/[id]/position/route.js.nft.json +1 -1
  100. package/.next/server/app/api/nodes/[id]/route.js +1 -1
  101. package/.next/server/app/api/nodes/[id]/route.js.nft.json +1 -1
  102. package/.next/server/app/api/nodes/positions/route.js +1 -1
  103. package/.next/server/app/api/nodes/positions/route.js.nft.json +1 -1
  104. package/.next/server/app/api/nodes/route.js +1 -1
  105. package/.next/server/app/api/nodes/route.js.nft.json +1 -1
  106. package/.next/server/app/api/nodes/subtasks/route.js +1 -1
  107. package/.next/server/app/api/nodes/subtasks/route.js.nft.json +1 -1
  108. package/.next/server/app/api/notes/[id]/route.js +1 -1
  109. package/.next/server/app/api/notes/[id]/route.js.nft.json +1 -1
  110. package/.next/server/app/api/notes/route.js +1 -1
  111. package/.next/server/app/api/notes/route.js.nft.json +1 -1
  112. package/.next/server/app/api/open/route.js +1 -1
  113. package/.next/server/app/api/open/route.js.nft.json +1 -1
  114. package/.next/server/app/api/plan/annotations/route.js +3 -3
  115. package/.next/server/app/api/plan/annotations/route.js.nft.json +1 -1
  116. package/.next/server/app/api/plan/approve/route.js +2 -6
  117. package/.next/server/app/api/plan/approve/route.js.nft.json +1 -1
  118. package/.next/server/app/api/plan/history/route.js +1 -1
  119. package/.next/server/app/api/plan/history/route.js.nft.json +1 -1
  120. package/.next/server/app/api/plan/markdown/route.js +1 -1
  121. package/.next/server/app/api/plan/markdown/route.js.nft.json +1 -1
  122. package/.next/server/app/api/plan/presence/route.js +1 -1
  123. package/.next/server/app/api/plan/presence/route.js.nft.json +1 -1
  124. package/.next/server/app/api/plan/route.js +1 -1
  125. package/.next/server/app/api/plan/route.js.nft.json +1 -1
  126. package/.next/server/app/api/plan/verdict/route.js +1 -5
  127. package/.next/server/app/api/plan/verdict/route.js.nft.json +1 -1
  128. package/.next/server/app/api/preferences/route.js +1 -1
  129. package/.next/server/app/api/reset/route.js +1 -1
  130. package/.next/server/app/api/reset/route.js.nft.json +1 -1
  131. package/.next/server/app/api/stream/route.js +2 -2
  132. package/.next/server/app/api/stream/route.js.nft.json +1 -1
  133. package/.next/server/app/api/version/route.js +1 -1
  134. package/.next/server/app/api/version/route.js.nft.json +1 -1
  135. package/.next/server/app/api/workspace/activate/route.js +1 -1
  136. package/.next/server/app/api/workspace/activate/route.js.nft.json +1 -1
  137. package/.next/server/app/api/workspace/route.js +1 -1
  138. package/.next/server/app/api/workspace/route.js.nft.json +1 -1
  139. package/.next/server/app/apple-icon.png/route.js +1 -1
  140. package/.next/server/app/docs/page.js +2 -2
  141. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  142. package/.next/server/app/docs.html +1 -1
  143. package/.next/server/app/docs.rsc +2 -2
  144. package/.next/server/app/docs.segments/_full.segment.rsc +2 -2
  145. package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  146. package/.next/server/app/docs.segments/_index.segment.rsc +2 -2
  147. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  148. package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
  149. package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  150. package/.next/server/app/feedback/page.js +2 -2
  151. package/.next/server/app/feedback/page_client-reference-manifest.js +1 -1
  152. package/.next/server/app/feedback.html +1 -1
  153. package/.next/server/app/feedback.rsc +2 -2
  154. package/.next/server/app/feedback.segments/_full.segment.rsc +2 -2
  155. package/.next/server/app/feedback.segments/_head.segment.rsc +1 -1
  156. package/.next/server/app/feedback.segments/_index.segment.rsc +2 -2
  157. package/.next/server/app/feedback.segments/_tree.segment.rsc +2 -2
  158. package/.next/server/app/feedback.segments/feedback/__PAGE__.segment.rsc +1 -1
  159. package/.next/server/app/feedback.segments/feedback.segment.rsc +1 -1
  160. package/.next/server/app/help/page.js +2 -2
  161. package/.next/server/app/help/page_client-reference-manifest.js +1 -1
  162. package/.next/server/app/help.html +1 -1
  163. package/.next/server/app/help.rsc +2 -2
  164. package/.next/server/app/help.segments/_full.segment.rsc +2 -2
  165. package/.next/server/app/help.segments/_head.segment.rsc +1 -1
  166. package/.next/server/app/help.segments/_index.segment.rsc +2 -2
  167. package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
  168. package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
  169. package/.next/server/app/help.segments/help.segment.rsc +1 -1
  170. package/.next/server/app/icon.svg/route.js +1 -1
  171. package/.next/server/app/index.html +1 -1
  172. package/.next/server/app/index.rsc +2 -2
  173. package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  174. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  175. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  176. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  177. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  178. package/.next/server/app/map/page.js +2 -2
  179. package/.next/server/app/map/page.js.nft.json +1 -1
  180. package/.next/server/app/map/page_client-reference-manifest.js +1 -1
  181. package/.next/server/app/page.js +2 -2
  182. package/.next/server/app/page_client-reference-manifest.js +1 -1
  183. package/.next/server/app/plan/page.js +2 -2
  184. package/.next/server/app/plan/page.js.nft.json +1 -1
  185. package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
  186. package/.next/server/app/settings/page.js +2 -2
  187. package/.next/server/app/settings/page.js.nft.json +1 -1
  188. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  189. package/.next/server/app-paths-manifest.json +9 -7
  190. package/.next/server/chunks/249.js +1 -1
  191. package/.next/server/chunks/2877.js +7 -0
  192. package/.next/server/chunks/2933.js +2 -15
  193. package/.next/server/chunks/2981.js +1 -1
  194. package/.next/server/chunks/3221.js +5 -0
  195. package/.next/server/chunks/3254.js +1 -1
  196. package/.next/server/chunks/4198.js +1 -0
  197. package/.next/server/chunks/4274.js +1 -1
  198. package/.next/server/chunks/4378.js +1 -0
  199. package/.next/server/chunks/5258.js +1 -1
  200. package/.next/server/chunks/5934.js +1 -0
  201. package/.next/server/chunks/7373.js +1 -0
  202. package/.next/server/chunks/9127.js +1 -1
  203. package/.next/server/chunks/9213.js +1 -0
  204. package/.next/server/chunks/9313.js +14 -0
  205. package/.next/server/chunks/9683.js +1 -1
  206. package/.next/server/chunks/9734.js +1 -1
  207. package/.next/server/instrumentation.js +1 -1
  208. package/.next/server/instrumentation.js.nft.json +1 -1
  209. package/.next/server/middleware-build-manifest.js +1 -1
  210. package/.next/server/middleware.js +2 -2
  211. package/.next/server/pages/404.html +1 -1
  212. package/.next/server/pages/500.html +1 -1
  213. package/.next/server/server-reference-manifest.js +1 -1
  214. package/.next/server/server-reference-manifest.json +1 -1
  215. package/.next/static/chunks/1317-abd6936ef6f7e4d9.js +1 -0
  216. package/.next/static/chunks/1a258343-7b029f38cf13f847.js +2 -0
  217. package/.next/static/chunks/app/_global-error/page-4cdc03c65547f289.js +1 -0
  218. package/.next/static/chunks/app/api/board-annotations/[id]/route-4cdc03c65547f289.js +1 -0
  219. package/.next/static/chunks/app/api/board-annotations/route-4cdc03c65547f289.js +1 -0
  220. package/.next/static/chunks/app/api/board-layout/route-4cdc03c65547f289.js +1 -0
  221. package/.next/static/chunks/app/api/bug-flags/[id]/route-4cdc03c65547f289.js +1 -0
  222. package/.next/static/chunks/app/api/bug-flags/route-4cdc03c65547f289.js +1 -0
  223. package/.next/static/chunks/app/api/code-graph/position/route-4cdc03c65547f289.js +1 -0
  224. package/.next/static/chunks/app/api/code-graph/route-4cdc03c65547f289.js +1 -0
  225. package/.next/static/chunks/app/api/context/feature/route-4cdc03c65547f289.js +1 -0
  226. package/.next/static/chunks/app/api/context/file/route-4cdc03c65547f289.js +1 -0
  227. package/.next/static/chunks/app/api/context/route-4cdc03c65547f289.js +1 -0
  228. package/.next/static/chunks/app/api/db/arrange/route-4cdc03c65547f289.js +1 -0
  229. package/.next/static/chunks/app/api/db/backfill-access/route-4cdc03c65547f289.js +1 -0
  230. package/.next/static/chunks/app/api/db/position/route-4cdc03c65547f289.js +1 -0
  231. package/.next/static/chunks/app/api/db/prune-planned/route-4cdc03c65547f289.js +1 -0
  232. package/.next/static/chunks/app/api/db/reconcile-endpoints/route-4cdc03c65547f289.js +1 -0
  233. package/.next/static/chunks/app/api/db/relations/[id]/route-4cdc03c65547f289.js +1 -0
  234. package/.next/static/chunks/app/api/db/tables/[id]/route-4cdc03c65547f289.js +1 -0
  235. package/.next/static/chunks/app/api/draft/approve/route-4cdc03c65547f289.js +1 -0
  236. package/.next/static/chunks/app/api/draft/route-4cdc03c65547f289.js +1 -0
  237. package/.next/static/chunks/app/api/draft/status/route-4cdc03c65547f289.js +1 -0
  238. package/.next/static/chunks/app/api/edges/[id]/route-4cdc03c65547f289.js +1 -0
  239. package/.next/static/chunks/app/api/edges/route-4cdc03c65547f289.js +1 -0
  240. package/.next/static/chunks/app/api/endpoints/[id]/route-4cdc03c65547f289.js +1 -0
  241. package/.next/static/chunks/app/api/entities/route-4cdc03c65547f289.js +1 -0
  242. package/.next/static/chunks/app/api/feedback/[id]/route-4cdc03c65547f289.js +1 -0
  243. package/.next/static/chunks/app/api/feedback/[id]/vote/route-4cdc03c65547f289.js +1 -0
  244. package/.next/static/chunks/app/api/feedback/route-4cdc03c65547f289.js +1 -0
  245. package/.next/static/chunks/app/api/ingest/route-4cdc03c65547f289.js +1 -0
  246. package/.next/static/chunks/app/api/init/route-4cdc03c65547f289.js +1 -0
  247. package/.next/static/chunks/app/api/map/describe/route-4cdc03c65547f289.js +1 -0
  248. package/.next/static/chunks/app/api/map/files/route-4cdc03c65547f289.js +1 -0
  249. package/.next/static/chunks/app/api/map/finish/route-4cdc03c65547f289.js +1 -0
  250. package/.next/static/chunks/app/api/map/route-4cdc03c65547f289.js +1 -0
  251. package/.next/static/chunks/app/api/map/start/route-4cdc03c65547f289.js +1 -0
  252. package/.next/static/chunks/app/api/map/touch-active/route-4cdc03c65547f289.js +1 -0
  253. package/.next/static/chunks/app/api/nodes/[id]/position/route-4cdc03c65547f289.js +1 -0
  254. package/.next/static/chunks/app/api/nodes/[id]/route-4cdc03c65547f289.js +1 -0
  255. package/.next/static/chunks/app/api/nodes/positions/route-4cdc03c65547f289.js +1 -0
  256. package/.next/static/chunks/app/api/nodes/route-4cdc03c65547f289.js +1 -0
  257. package/.next/static/chunks/app/api/nodes/subtasks/route-4cdc03c65547f289.js +1 -0
  258. package/.next/static/chunks/app/api/notes/[id]/route-4cdc03c65547f289.js +1 -0
  259. package/.next/static/chunks/app/api/notes/route-4cdc03c65547f289.js +1 -0
  260. package/.next/static/chunks/app/api/open/route-4cdc03c65547f289.js +1 -0
  261. package/.next/static/chunks/app/api/plan/annotations/route-4cdc03c65547f289.js +1 -0
  262. package/.next/static/chunks/app/api/plan/approve/route-4cdc03c65547f289.js +1 -0
  263. package/.next/static/chunks/app/api/plan/history/route-4cdc03c65547f289.js +1 -0
  264. package/.next/static/chunks/app/api/plan/markdown/route-4cdc03c65547f289.js +1 -0
  265. package/.next/static/chunks/app/api/plan/presence/route-4cdc03c65547f289.js +1 -0
  266. package/.next/static/chunks/app/api/plan/route-4cdc03c65547f289.js +1 -0
  267. package/.next/static/chunks/app/api/plan/verdict/route-4cdc03c65547f289.js +1 -0
  268. package/.next/static/chunks/app/api/preferences/route-4cdc03c65547f289.js +1 -0
  269. package/.next/static/chunks/app/api/reset/route-4cdc03c65547f289.js +1 -0
  270. package/.next/static/chunks/app/api/stream/route-4cdc03c65547f289.js +1 -0
  271. package/.next/static/chunks/app/api/version/route-4cdc03c65547f289.js +1 -0
  272. package/.next/static/chunks/app/api/workspace/activate/route-4cdc03c65547f289.js +1 -0
  273. package/.next/static/chunks/app/api/workspace/route-4cdc03c65547f289.js +1 -0
  274. package/.next/static/chunks/app/map/{page-b2fdc0df2743d278.js → page-bd17b84e1aebd827.js} +1 -1
  275. package/.next/static/chunks/app/plan/page-f52b1b0bc8037bc0.js +1 -0
  276. package/.next/static/chunks/app/settings/{page-d1b0fe0c79c8a745.js → page-4d4879990a4f14fc.js} +1 -1
  277. package/.next/static/chunks/next/dist/client/components/builtin/app-error-4cdc03c65547f289.js +1 -0
  278. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-4cdc03c65547f289.js +1 -0
  279. package/.next/static/chunks/next/dist/client/components/builtin/not-found-4cdc03c65547f289.js +1 -0
  280. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-4cdc03c65547f289.js +1 -0
  281. package/.next/static/css/cbb14bbfa47152fd.css +1 -0
  282. package/.next/static/nIOWlnJIVXwqjfj2Fpn44/_buildManifest.js +1 -0
  283. package/.next/trace +37 -37
  284. package/.next/trace-build +1 -1
  285. package/.next/types/app/api/board-layout/route.ts +351 -0
  286. package/.next/types/app/api/db/prune-planned/route.ts +351 -0
  287. package/.next/types/app/api/plan/route.ts +351 -0
  288. package/.next/types/routes.d.ts +3 -1
  289. package/.next/types/validator.ts +18 -0
  290. package/dist/bin/beacon.js +3 -3
  291. package/dist/bin/doctor.js +22 -22
  292. package/dist/bin/hook.js +26 -26
  293. package/dist/bin/mcp.js +27 -27
  294. package/dist/bin/plan.js +21 -21
  295. package/dist/bin/remove.js +8 -0
  296. package/dist/bin/uninstall.js +25 -25
  297. package/dist/lib/workspaces.js +1 -1
  298. package/drizzle/0005_graceful_adam_warlock.sql +3 -0
  299. package/drizzle/meta/0005_snapshot.json +1751 -0
  300. package/drizzle/meta/_journal.json +7 -0
  301. package/package.json +1 -1
  302. package/.next/server/chunks/1130.js +0 -1
  303. package/.next/server/chunks/1193.js +0 -1
  304. package/.next/server/chunks/3349.js +0 -1
  305. package/.next/server/chunks/873.js +0 -1
  306. package/.next/server/chunks/8815.js +0 -5
  307. package/.next/static/B4If6Zrc9d_A-Vd9UPyiQ/_buildManifest.js +0 -1
  308. package/.next/static/chunks/1412-94916474aa89a70b.js +0 -1
  309. package/.next/static/chunks/1a258343-248e24606fc4ca54.js +0 -2
  310. package/.next/static/chunks/app/_global-error/page-0fdd2f2bb2631a50.js +0 -1
  311. package/.next/static/chunks/app/api/board-annotations/[id]/route-0fdd2f2bb2631a50.js +0 -1
  312. package/.next/static/chunks/app/api/board-annotations/route-0fdd2f2bb2631a50.js +0 -1
  313. package/.next/static/chunks/app/api/bug-flags/[id]/route-0fdd2f2bb2631a50.js +0 -1
  314. package/.next/static/chunks/app/api/bug-flags/route-0fdd2f2bb2631a50.js +0 -1
  315. package/.next/static/chunks/app/api/code-graph/position/route-0fdd2f2bb2631a50.js +0 -1
  316. package/.next/static/chunks/app/api/code-graph/route-0fdd2f2bb2631a50.js +0 -1
  317. package/.next/static/chunks/app/api/context/feature/route-0fdd2f2bb2631a50.js +0 -1
  318. package/.next/static/chunks/app/api/context/file/route-0fdd2f2bb2631a50.js +0 -1
  319. package/.next/static/chunks/app/api/context/route-0fdd2f2bb2631a50.js +0 -1
  320. package/.next/static/chunks/app/api/db/arrange/route-0fdd2f2bb2631a50.js +0 -1
  321. package/.next/static/chunks/app/api/db/backfill-access/route-0fdd2f2bb2631a50.js +0 -1
  322. package/.next/static/chunks/app/api/db/position/route-0fdd2f2bb2631a50.js +0 -1
  323. package/.next/static/chunks/app/api/db/reconcile-endpoints/route-0fdd2f2bb2631a50.js +0 -1
  324. package/.next/static/chunks/app/api/db/relations/[id]/route-0fdd2f2bb2631a50.js +0 -1
  325. package/.next/static/chunks/app/api/db/tables/[id]/route-0fdd2f2bb2631a50.js +0 -1
  326. package/.next/static/chunks/app/api/draft/approve/route-0fdd2f2bb2631a50.js +0 -1
  327. package/.next/static/chunks/app/api/draft/route-0fdd2f2bb2631a50.js +0 -1
  328. package/.next/static/chunks/app/api/draft/status/route-0fdd2f2bb2631a50.js +0 -1
  329. package/.next/static/chunks/app/api/edges/[id]/route-0fdd2f2bb2631a50.js +0 -1
  330. package/.next/static/chunks/app/api/edges/route-0fdd2f2bb2631a50.js +0 -1
  331. package/.next/static/chunks/app/api/endpoints/[id]/route-0fdd2f2bb2631a50.js +0 -1
  332. package/.next/static/chunks/app/api/entities/route-0fdd2f2bb2631a50.js +0 -1
  333. package/.next/static/chunks/app/api/feedback/[id]/route-0fdd2f2bb2631a50.js +0 -1
  334. package/.next/static/chunks/app/api/feedback/[id]/vote/route-0fdd2f2bb2631a50.js +0 -1
  335. package/.next/static/chunks/app/api/feedback/route-0fdd2f2bb2631a50.js +0 -1
  336. package/.next/static/chunks/app/api/ingest/route-0fdd2f2bb2631a50.js +0 -1
  337. package/.next/static/chunks/app/api/init/route-0fdd2f2bb2631a50.js +0 -1
  338. package/.next/static/chunks/app/api/map/describe/route-0fdd2f2bb2631a50.js +0 -1
  339. package/.next/static/chunks/app/api/map/files/route-0fdd2f2bb2631a50.js +0 -1
  340. package/.next/static/chunks/app/api/map/finish/route-0fdd2f2bb2631a50.js +0 -1
  341. package/.next/static/chunks/app/api/map/route-0fdd2f2bb2631a50.js +0 -1
  342. package/.next/static/chunks/app/api/map/start/route-0fdd2f2bb2631a50.js +0 -1
  343. package/.next/static/chunks/app/api/map/touch-active/route-0fdd2f2bb2631a50.js +0 -1
  344. package/.next/static/chunks/app/api/nodes/[id]/position/route-0fdd2f2bb2631a50.js +0 -1
  345. package/.next/static/chunks/app/api/nodes/[id]/route-0fdd2f2bb2631a50.js +0 -1
  346. package/.next/static/chunks/app/api/nodes/positions/route-0fdd2f2bb2631a50.js +0 -1
  347. package/.next/static/chunks/app/api/nodes/route-0fdd2f2bb2631a50.js +0 -1
  348. package/.next/static/chunks/app/api/nodes/subtasks/route-0fdd2f2bb2631a50.js +0 -1
  349. package/.next/static/chunks/app/api/notes/[id]/route-0fdd2f2bb2631a50.js +0 -1
  350. package/.next/static/chunks/app/api/notes/route-0fdd2f2bb2631a50.js +0 -1
  351. package/.next/static/chunks/app/api/open/route-0fdd2f2bb2631a50.js +0 -1
  352. package/.next/static/chunks/app/api/plan/annotations/route-0fdd2f2bb2631a50.js +0 -1
  353. package/.next/static/chunks/app/api/plan/approve/route-0fdd2f2bb2631a50.js +0 -1
  354. package/.next/static/chunks/app/api/plan/history/route-0fdd2f2bb2631a50.js +0 -1
  355. package/.next/static/chunks/app/api/plan/markdown/route-0fdd2f2bb2631a50.js +0 -1
  356. package/.next/static/chunks/app/api/plan/presence/route-0fdd2f2bb2631a50.js +0 -1
  357. package/.next/static/chunks/app/api/plan/route-0fdd2f2bb2631a50.js +0 -1
  358. package/.next/static/chunks/app/api/plan/verdict/route-0fdd2f2bb2631a50.js +0 -1
  359. package/.next/static/chunks/app/api/preferences/route-0fdd2f2bb2631a50.js +0 -1
  360. package/.next/static/chunks/app/api/reset/route-0fdd2f2bb2631a50.js +0 -1
  361. package/.next/static/chunks/app/api/stream/route-0fdd2f2bb2631a50.js +0 -1
  362. package/.next/static/chunks/app/api/version/route-0fdd2f2bb2631a50.js +0 -1
  363. package/.next/static/chunks/app/api/workspace/activate/route-0fdd2f2bb2631a50.js +0 -1
  364. package/.next/static/chunks/app/api/workspace/route-0fdd2f2bb2631a50.js +0 -1
  365. package/.next/static/chunks/app/plan/page-611d499986560198.js +0 -1
  366. package/.next/static/chunks/next/dist/client/components/builtin/app-error-0fdd2f2bb2631a50.js +0 -1
  367. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-0fdd2f2bb2631a50.js +0 -1
  368. package/.next/static/chunks/next/dist/client/components/builtin/not-found-0fdd2f2bb2631a50.js +0 -1
  369. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-0fdd2f2bb2631a50.js +0 -1
  370. package/.next/static/css/75d4c21b97e04260.css +0 -1
  371. /package/.next/static/{B4If6Zrc9d_A-Vd9UPyiQ → nIOWlnJIVXwqjfj2Fpn44}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1317],{4474:(e,t,n)=>{n.d(t,{$:()=>l});var a=n(95155),s=n(6539),r=n(18460),o=n(91337);let i=(0,r.F)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function l({className:e,variant:t="default",size:n="default",...r}){return(0,a.jsx)(s.Button,{"data-slot":"button",className:(0,o.cn)(i({variant:t,size:n,className:e})),...r})}},5712:(e,t,n)=>{n.d(t,{MapClient:()=>eS});var a=n(95155),s=n(12115),r=n(98112),o=n(6266),i=n(81750);n(53255);var l=n(17356),d=n(85618),c=n(2125),u=n(68319),m=n(15480),p=n(65377),x=n(17494),h=n(80846),f=n(45486),g=n(73321),b=n(95635),y=n(17918),v=n(9339);let j=(0,v.createServerReference)("408bd8562d7b580c5d981ac51418d42678ab93fd3c",v.callServer,void 0,v.findSourceMapURL,"acceptSuggestionAction");var w=n(32133),N=n(65408),k=n(8962),C=n(84824),E=n(5736),S=n(86272),A=n(64577),I=n(9005),T=n(65738),z=n(40638),M=n(26518);let D=["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED"],R=["KEEP","REBUILD","REPLACE","DROP"],$=["IN_PROGRESS","PENDING","BLOCKED","DONE","DEPRIORITIZED","CANCELLED"],P={DONE:{label:"Done",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-300"},IN_PROGRESS:{label:"In progress",className:"border-sky-500/30 bg-sky-500/15 text-sky-300"},PENDING:{label:"Pending",className:"border-amber-500/30 bg-amber-500/10 text-amber-200"},BLOCKED:{label:"Blocked",className:"border-orange-500/30 bg-orange-500/15 text-orange-300"},CANCELLED:{label:"Cancelled",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-400 line-through"},DEPRIORITIZED:{label:"Deprioritized",className:"border-zinc-600/40 bg-zinc-600/10 text-zinc-400"},KEEP:{label:"Keep",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-300"},REBUILD:{label:"Rebuild",className:"border-violet-500/30 bg-violet-500/15 text-violet-300"},REPLACE:{label:"Replace",className:"border-rose-500/30 bg-rose-500/15 text-rose-300"},DROP:{label:"Drop",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-400 line-through"}};var O=n(12410);let F=(0,s.createContext)(null);var L=n(89657),_=n(60874),B=n(91337);let H=[{v:0,l:"P0 \xb7 critical"},{v:1,l:"P1 \xb7 high"},{v:2,l:"P2 \xb7 medium"},{v:3,l:"P3 \xb7 low"}],U="nodrag nopan";function K({nodeId:e}){let t=(0,g.useRouter)(),[n,r]=(0,s.useState)(!1),[o,i]=(0,s.useState)(""),[l,d]=(0,s.useState)(!1),c=()=>{r(!1),i("")},m=async()=>{let n=o.trim();if(n&&!l){d(!0);try{(await fetch("/api/bug-flags",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:e,by:"user",note:n})})).ok&&(c(),t.refresh())}finally{d(!1)}}};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("button",{type:"button",title:"Flag a bug on this component",onClick:e=>{e.stopPropagation(),r(e=>!e)},className:(0,B.cn)(U,"absolute -right-3 top-[calc(50%-28px)] z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground shadow-md transition-all hover:border-rose-400/50 hover:text-rose-300",n?"border-rose-400/50 text-rose-300 opacity-100":"opacity-0 group-hover/nc:opacity-100"),children:(0,a.jsx)(u.A,{className:"size-3"})}),n&&(0,a.jsxs)("div",{onClick:e=>e.stopPropagation(),className:(0,B.cn)(U,"absolute -right-2 top-[calc(50%-28px)] z-20 w-60 translate-x-full rounded-xl border border-rose-400/25 bg-[#1c1c1f] p-2 shadow-xl"),children:[(0,a.jsxs)("div",{className:"mb-1.5 flex items-center justify-between",children:[(0,a.jsxs)("span",{className:"flex items-center gap-1 text-[10px] font-semibold uppercase tracking-wide text-rose-300",children:[(0,a.jsx)(u.A,{className:"size-3"})," Flag a bug"]}),(0,a.jsx)("button",{type:"button",title:"Cancel",onClick:c,className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,a.jsx)("span",{className:"block px-1 text-[11px] leading-none",children:"✕"})})]}),(0,a.jsx)("textarea",{autoFocus:!0,rows:2,value:o,placeholder:"What did you find?",onChange:e=>i(e.target.value),onKeyDown:e=>{e.stopPropagation(),"Escape"===e.key&&c(),"Enter"!==e.key||e.shiftKey||(e.preventDefault(),m())},className:"field-sizing-content max-h-40 min-h-12 w-full resize-none rounded-md bg-white/[0.04] px-1.5 py-1 text-xs outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.07]"}),(0,a.jsx)("button",{type:"button",disabled:l||!o.trim(),onClick:()=>void m(),className:"mt-1.5 w-full rounded-md bg-rose-500/15 py-1 text-[11px] font-semibold text-rose-300 transition-colors hover:bg-rose-500/25 disabled:opacity-50",children:l?"Flagging…":"Flag bug"})]})]})}let G=["border-[#ff3860]/60 shadow-[0_0_0_1px_rgba(255,56,96,0.15)]","border-[#ff7a45]/50","border-amber-400/35","border-border"];function X({id:e,data:t,selected:n}){let{categories:r,statuses:o,patch:i,isExpanded:l,toggleExpand:d,openDetailed:c,removeNode:m,editingTitleId:p,onAskAgent:x}=function(){let e=(0,s.useContext)(F);if(!e)throw Error("useNodeEdit must be used inside NodeEditContext");return e}(),h=l(e),[g,v]=(0,s.useState)(!1),[D,R]=(0,s.useState)(!1),[$,W]=(0,s.useState)(t.title),[Z,J]=(0,s.useState)(t.cluster??""),[Y,q]=(0,s.useState)(t.plain??""),V="BUG"===t.kind&&"ROADMAP"===t.view,Q="ARCHITECTURE"===t.view,ee=Q?"border-border":G[t.priority]??"border-border",et=t.openBugs??0,en="CANCELLED"===t.status||"DROP"===t.status,ea="DEPRIORITIZED"===t.status,es="DRAFT"===t.source,er="IN_PROGRESS"===t.status,eo="INIT"===t.source&&"ROADMAP"===t.view,ei=e=>e.stopPropagation(),[el,ed]=(0,s.useTransition)(),ec=(0,L.k)();return"full"!==ec?(0,a.jsxs)("div",{className:(0,B.cn)("relative rounded-lg border bg-card px-3 py-2.5 text-card-foreground shadow-sm","w-fit max-w-[296px]",t.isChild?"min-w-56":"min-w-64",V?"border-rose-400/50 bg-rose-500/[0.05]":ee,er&&"border-sky-400/60",n&&"ring-2 ring-[var(--accent,#f5b942)]",en&&"opacity-60","far"===ec&&"!opacity-0"),children:[(0,a.jsx)(b.x,{}),(0,a.jsx)("div",{className:"break-words text-[15px] font-semibold leading-snug",children:t.title})]}):(0,a.jsxs)("div",{className:(0,B.cn)("group/nc relative rounded-lg border bg-card px-2.5 py-2 text-card-foreground shadow-sm transition","w-fit max-w-96",h?"min-w-80":"min-w-64",es?"border-dashed border-sky-400/50 bg-sky-500/[0.06]":eo?"border-dashed border-violet-400/60 bg-violet-500/[0.07] shadow-[0_0_0_1px_rgba(167,139,250,0.18)]":ee,V&&!es&&"border-rose-400/50 bg-rose-500/[0.05]",er&&"border-sky-400/60 shadow-[0_0_0_1px_rgba(56,160,255,0.25)]",t.isNext&&"border-emerald-400/70 shadow-[0_0_0_2px_rgba(52,211,153,0.35)]",n&&"ring-2 ring-[var(--accent,#f5b942)]",en&&"opacity-60",ea&&"opacity-70 border-dashed"),children:[(0,a.jsx)(b.x,{}),Q&&(0,a.jsx)(K,{nodeId:e}),(t.pins?.length??0)>0?(0,a.jsx)(y.e0,{pins:t.pins,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)("button",{type:"button",title:`Annotate ${t.title}`,onClick:e=>{ei(e),t.onComment?.(t.title)},className:(0,B.cn)(U,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover/nc:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,a.jsx)(w.A,{className:"size-3"})}),t.isNext&&(0,a.jsx)("div",{className:"mb-1 inline-flex items-center gap-1 rounded bg-emerald-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-emerald-300",children:"work on next"}),(0,a.jsxs)("div",{className:"flex w-0 min-w-full items-start gap-1.5",children:[er&&(0,a.jsx)("span",{title:"em andamento",className:"mt-1.5 inline-block size-2 shrink-0 animate-pulse rounded-full bg-sky-400"}),t.isCriterion&&!er&&(0,a.jsx)("span",{title:"Success criterion",className:"mt-1.5 inline-block size-1.5 shrink-0 rounded-full bg-[var(--accent,#f5b942)]"}),(0,a.jsx)("textarea",{rows:1,value:$,autoFocus:p===e,placeholder:"Title…",onFocus:t=>{p===e&&t.currentTarget.select()},onChange:e=>W(e.target.value),onBlur:()=>{let n=$.trim();n&&n!==t.title&&i(e,{title:n},!0)},onKeyDown:e=>{ei(e),"Enter"!==e.key||e.shiftKey||(e.preventDefault(),e.currentTarget.blur())},className:(0,B.cn)(U,"field-sizing-content w-full resize-none bg-transparent text-sm font-medium leading-snug outline-none placeholder:text-muted-foreground/60",en&&"line-through")}),(0,a.jsx)("button",{type:"button",onClick:t=>{ei(t),d(e)},title:h?"Collapse":"Expand",className:(0,B.cn)(U,"mt-0.5 shrink-0 text-muted-foreground hover:text-foreground"),children:h?(0,a.jsx)(N.A,{className:"size-3.5"}):(0,a.jsx)(k.A,{className:"size-3.5"})})]}),((t.signals?.untested??0)>0||t.signals?.auth||et>0)&&(0,a.jsxs)("div",{className:"mt-1 flex w-0 min-w-full flex-wrap items-center gap-1",children:[et>0&&(0,a.jsxs)("span",{title:`${et} open bug flag(s) — raised by you or an agent examining this code`,className:"flex items-center gap-1 rounded bg-rose-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:[(0,a.jsx)(u.A,{className:"size-2.5"}),et," ",1===et?"bug":"bugs"]}),(t.signals?.untested??0)>0&&(0,a.jsxs)("span",{title:`${t.signals.untested} of ${t.signals.total} attached file(s) have no test importing them`,className:"flex items-center gap-1 rounded bg-amber-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-amber-300",children:[(0,a.jsx)(C.A,{className:"size-2.5"}),t.signals.untested," untested"]}),t.signals?.auth&&(0,a.jsxs)("span",{title:"touches auth-sensitive files",className:"flex items-center gap-1 rounded bg-red-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-red-300",children:[(0,a.jsx)(E.A,{className:"size-2.5"})," auth"]})]}),t.role&&(0,a.jsx)("div",{className:(0,B.cn)("mt-0.5 w-0 min-w-full text-[10px] leading-snug text-muted-foreground",!h&&"line-clamp-1"),children:t.role}),(0,a.jsxs)("div",{className:"mt-2 flex items-center gap-1.5",children:["ROADMAP"===t.view?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("span",{title:V?"Bug — something to fix":t.isChild?"Sub-task of a feature":"Feature — top-level roadmap item",className:(0,B.cn)("flex shrink-0 items-center gap-1 rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide",V?"bg-rose-500/15 text-rose-300":t.isChild?"bg-zinc-500/15 text-zinc-300":"bg-sky-500/15 text-sky-300"),children:[V&&(0,a.jsx)(u.A,{className:"size-2.5"}),V?"bug":t.isChild?"sub-task":"feature"]}),eo&&(0,a.jsxs)("span",{className:(0,B.cn)("flex items-center gap-1 rounded bg-violet-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-violet-300",el&&"opacity-50"),children:[(0,a.jsx)(S.A,{className:"size-2.5"})," IA",(0,a.jsx)("button",{type:"button",title:"Accept suggestion — turn it into your own feature",disabled:el,onClick:t=>{ei(t),ed(async()=>j(e))},className:(0,B.cn)(U,"-my-0.5 rounded p-0.5 hover:bg-emerald-500/20 hover:text-emerald-300"),children:(0,a.jsx)(A.A,{className:"size-2.5"})}),(0,a.jsx)("button",{type:"button",title:"Dismiss suggestion (deletes the card)",disabled:el,onClick:t=>{ei(t),m(e)},className:(0,B.cn)(U,"-my-0.5 -ml-0.5 rounded p-0.5 hover:bg-red-500/20 hover:text-red-300"),children:(0,a.jsx)(I.A,{className:"size-2.5"})})]}),(0,a.jsx)("input",{list:`cats-${e}`,value:Z,placeholder:"category",onChange:e=>J(e.target.value),onBlur:()=>{let n=Z.trim()||null;n!==(t.cluster??null)&&i(e,{cluster:n},!0)},onKeyDown:e=>{ei(e),"Enter"===e.key&&e.currentTarget.blur()},className:(0,B.cn)(U,"field-sizing-content min-w-12 max-w-[65%] rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide outline-none focus:brightness-125 [&::-webkit-calendar-picker-indicator]:hidden",(0,O.a)(Z))})]}):(0,a.jsxs)(a.Fragment,{children:[t.isChild&&(0,a.jsx)("span",{title:"Sub-component",className:"shrink-0 rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub"}),(0,a.jsx)("input",{list:`cats-${e}`,value:Z,placeholder:"domain",title:"Architecture domain — the lane this component lives in",onChange:e=>J(e.target.value),onBlur:()=>{let n=Z.trim()||null;n!==(t.cluster??null)&&i(e,{cluster:n},!0)},onKeyDown:e=>{ei(e),"Enter"===e.key&&e.currentTarget.blur()},className:(0,B.cn)(U,"field-sizing-content min-w-12 max-w-[65%] rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide outline-none focus:brightness-125 [&::-webkit-calendar-picker-indicator]:hidden",(0,O.a)(Z))})]}),(0,a.jsx)("datalist",{id:`cats-${e}`,children:r.map(e=>(0,a.jsx)("option",{value:e},e))}),(0,a.jsxs)(M.l6,{value:t.status,onValueChange:t=>i(e,{status:t},!0),children:[(0,a.jsx)(M.bq,{className:(0,B.cn)(U,"ml-auto h-6 shrink-0 gap-1 rounded border px-1.5 py-0 text-[10px] font-medium",P[t.status]?.className??"border-white/10"),children:(0,a.jsx)(M.yv,{children:e=>P[e]?.label??e})}),(0,a.jsx)(M.gC,{alignItemWithTrigger:!1,children:o.map(e=>(0,a.jsx)(M.eb,{value:e,children:P[e]?.label??e},e))})]})]}),h&&(0,a.jsxs)("div",{className:"mt-2 w-0 min-w-full space-y-2 border-t border-white/10 pt-2",children:[D||!Y.trim()?(0,a.jsx)("textarea",{autoFocus:D,value:Y,placeholder:"Description (markdown)…",onChange:e=>q(e.target.value),onBlur:()=>{R(!1);let n=Y.trim()||null;n!==(t.plain??null)&&i(e,{plain:n},!0)},onKeyDown:ei,rows:3,className:(0,B.cn)(U,"field-sizing-content max-h-[24rem] min-h-[4.5rem] w-full resize-y rounded bg-white/[0.04] px-1.5 py-1 text-xs outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.08]")}):(0,a.jsx)("div",{onClick:e=>{ei(e),R(!0)},title:"Click to edit",className:"cursor-text rounded bg-white/[0.02] px-1.5 py-1 text-xs hover:bg-white/[0.05]",children:(0,a.jsx)(_.pO,{markdown:Y,variant:"compact",className:"text-[12px]"})}),(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)(M.l6,{value:String(t.priority),onValueChange:t=>i(e,{priority:Number(t)},!0),children:[(0,a.jsx)(M.bq,{className:(0,B.cn)(U,"h-6 gap-1 rounded border-white/10 px-1.5 py-0 text-[10px]"),children:(0,a.jsx)(M.yv,{children:e=>H.find(t=>String(t.v)===e)?.l??e})}),(0,a.jsx)(M.gC,{alignItemWithTrigger:!1,children:H.map(e=>(0,a.jsx)(M.eb,{value:String(e.v),children:e.l},e.v))})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsxs)("button",{type:"button",onClick:t=>{ei(t),g?m(e):v(!0)},onBlur:()=>v(!1),title:"Delete node",className:(0,B.cn)(U,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] transition-colors",g?"bg-red-500/20 text-red-300":"text-muted-foreground hover:bg-white/5 hover:text-red-300"),children:[(0,a.jsx)(T.A,{className:"size-3"}),g&&"Delete?"]}),x&&(0,a.jsxs)("button",{type:"button",onClick:e=>{ei(e),x(`feature: ${t.title}`)},title:"Ask the agent a question about this feature (answered in its next round)",className:(0,B.cn)(U,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] text-sky-300/90 hover:bg-sky-500/15 hover:text-sky-300"),children:[(0,a.jsx)(z.A,{className:"size-3"})," Ask"]}),(0,a.jsxs)("button",{type:"button",onClick:t=>{ei(t),c(e)},className:(0,B.cn)(U,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] text-muted-foreground hover:bg-white/5 hover:text-foreground"),children:[(0,a.jsx)(f.A,{className:"size-3"})," Details"]})]})]})]})]})}var W=n(54698),Z=n(57144),J=n(82099),Y=n(4474),q=n(70521),V=n(74350);function Q({className:e,type:t,...n}){return(0,a.jsx)("input",{type:t,"data-slot":"input",className:(0,B.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...n})}function ee({className:e,...t}){return(0,a.jsx)("textarea",{"data-slot":"textarea",className:(0,B.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),...t})}var et=n(61388);function en({className:e,...t}){return(0,a.jsx)(et.b,{"data-slot":"label",className:(0,B.cn)("flex items-center gap-2 text-sm 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",e),...t})}let ea=(0,v.createServerReference)("409f69afab3697fb1a09e5c2a13c5eee42dd0e6a5a",v.callServer,void 0,v.findSourceMapURL,"createNodeAction"),es=(0,v.createServerReference)("60b09b0336e41c6ac700efe4e8bafb4fd358e992b9",v.callServer,void 0,v.findSourceMapURL,"updateNodeAction");function er({open:e,onOpenChange:t,mode:n,view:r,heading:o,nodeId:i,parentId:l,position:d,defaults:c}){let u=(0,g.useRouter)(),[m,p]=(0,s.useState)(c?.title??""),[x,h]=(0,s.useState)(c?.role??""),[f,b]=(0,s.useState)(c?.plain??""),[y,v]=(0,s.useState)(c?.cluster??""),[j,w]=(0,s.useState)(c?.status??("ARCHITECTURE"===r?"REBUILD":"PENDING")),[N,k]=(0,s.useState)(c?.kind==="BUG"?"BUG":"FEATURE"),[C,E]=(0,s.useState)(!1),S="ARCHITECTURE"===r?R:D;async function A(){if(m.trim()){E(!0);try{"create"===n?await ea({view:r,..."ROADMAP"===r?{kind:N}:{},title:m.trim(),role:x.trim()||null,plain:f.trim()||null,cluster:y.trim()||null,parentId:l??null,status:j,x:d?.x??60,y:d?.y??60}):i&&await es(i,{..."ROADMAP"===r?{kind:N}:{},title:m.trim(),role:x.trim()||null,plain:f.trim()||null,cluster:y.trim()||null,status:j}),t(!1),u.refresh()}finally{E(!1)}}}return(0,a.jsx)(V.lG,{open:e,onOpenChange:t,children:(0,a.jsxs)(V.Cf,{children:[(0,a.jsx)(V.c7,{children:(0,a.jsx)(V.L3,{children:o})}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(en,{htmlFor:"nf-title",children:"Title"}),(0,a.jsx)(Q,{id:"nf-title",value:m,autoFocus:!0,onChange:e=>p(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(en,{htmlFor:"nf-role",children:"Role (one line)"}),(0,a.jsx)(Q,{id:"nf-role",value:x,onChange:e=>h(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(en,{htmlFor:"nf-plain",children:"Description"}),(0,a.jsx)(ee,{id:"nf-plain",rows:3,value:f,onChange:e=>b(e.target.value)})]}),"ROADMAP"===r&&(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(en,{children:"Kind"}),(0,a.jsxs)(M.l6,{value:N,onValueChange:e=>null!=e&&k(e),children:[(0,a.jsx)(M.bq,{children:(0,a.jsx)(M.yv,{children:e=>"BUG"===e?"Bug":"Feature"})}),(0,a.jsxs)(M.gC,{children:[(0,a.jsx)(M.eb,{value:"FEATURE",children:"Feature"}),(0,a.jsx)(M.eb,{value:"BUG",children:"Bug"})]})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(en,{children:"Status"}),(0,a.jsxs)(M.l6,{value:j,onValueChange:e=>null!=e&&w(e),children:[(0,a.jsx)(M.bq,{children:(0,a.jsx)(M.yv,{children:e=>P[e]?.label??e})}),(0,a.jsx)(M.gC,{children:S.map(e=>(0,a.jsx)(M.eb,{value:e,children:P[e]?.label??e},e))})]})]}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(en,{htmlFor:"nf-cluster",children:"Cluster / lane"}),(0,a.jsx)(Q,{id:"nf-cluster",value:y,onChange:e=>v(e.target.value)})]})]})]}),(0,a.jsxs)(V.Es,{children:[(0,a.jsx)(Y.$,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),(0,a.jsx)(Y.$,{onClick:A,disabled:C||!m.trim(),children:C?"Saving…":"Save"})]})]})})}let eo=(0,v.createServerReference)("40afaa017eb3f06b890ac66f886ea7149a4ab20279",v.callServer,void 0,v.findSourceMapURL,"deleteNodeAction"),ei=(0,v.createServerReference)("60cc066aa1e38ca18a9a3d3f306e0812e0ce215775",v.callServer,void 0,v.findSourceMapURL,"setStatusAction"),el=(0,v.createServerReference)("4031c064e8122a786422e7ec0932747c9fb33863b3",v.callServer,void 0,v.findSourceMapURL,"cancelAction"),ed=(0,v.createServerReference)("401435490c6732ca5498c5594b65ea75c454792c09",v.callServer,void 0,v.findSourceMapURL,"deprioritizeAction");function ec({view:e,selected:t,allNodes:n,onClose:s,commentsContent:r,commentsCount:o=0,activeTab:i,onTabChange:l,onAddComment:d,topOffset:c}){let u=!!r,m=i??"details";return(0,a.jsxs)(J.b,{className:"absolute bottom-3 right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:c??12},children:[u?(0,a.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-1 py-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,a.jsx)(eu,{active:"details"===m,onClick:()=>l?.("details"),children:"Details"}),(0,a.jsxs)(eu,{active:"comments"===m,onClick:()=>l?.("comments"),children:["Comments",o>0&&(0,a.jsx)("span",{className:"ml-1 rounded-full bg-white/10 px-1 text-[9px] font-semibold leading-4",children:o})]})]}),(0,a.jsx)("button",{onClick:s,title:"Close panel",className:"mr-1 rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,a.jsx)(I.A,{className:"size-4"})})]}):(0,a.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,a.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Details"}),(0,a.jsx)("button",{onClick:s,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,a.jsx)(I.A,{className:"size-4"})})]}),(0,a.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,a.jsx)("div",{className:"p-3",children:"comments"===m&&u?r:t?(0,a.jsxs)(a.Fragment,{children:[d&&(0,a.jsxs)("button",{type:"button",onClick:()=>d(t.title),className:"mb-3 flex w-full items-center justify-center gap-1.5 rounded-lg border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,a.jsx)(w.A,{className:"size-3.5"}),"Comment on this ","ARCHITECTURE"===e?"component":"feature"]}),(0,a.jsx)(em,{node:t,view:e},t.id)]}):(0,a.jsx)(ex,{view:e,nodes:n})})})]})}function eu({active:e,onClick:t,children:n}){return(0,a.jsx)("button",{type:"button",onClick:t,className:(0,B.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",e?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:n})}function em({node:e,view:t}){var n;let r=(0,g.useRouter)(),[o,i]=(0,s.useTransition)(),[l,d]=(0,s.useState)(!1),[c,u]=(0,s.useState)(!1),m="ARCHITECTURE"===t?R:D,p=e=>i(async()=>{await e(),r.refresh()});return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:[(n=e.cluster,n?.trim()||"—"),0===e.priority&&(0,a.jsx)("span",{className:"ml-2 text-[#ff7a90]",children:"\xb7 critical path"})]}),(0,a.jsx)("h2",{className:"mt-1 text-lg font-semibold leading-tight",children:e.title})]}),"INIT"===e.source&&(0,a.jsxs)("div",{className:"rounded-lg border border-violet-400/30 bg-violet-500/[0.06] p-2.5",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-violet-300",children:[(0,a.jsx)(S.A,{className:"size-3.5"})," AI suggestion"]}),(0,a.jsx)("p",{className:"mt-1 text-[11px] leading-snug text-muted-foreground",children:"Suggested direction surfaced when mapping the repo. Accept to turn it into your own feature, or dismiss."}),(0,a.jsxs)("div",{className:"mt-2 flex gap-1.5",children:[(0,a.jsx)(Y.$,{size:"sm",className:"h-7 px-2.5 text-xs",disabled:o,onClick:()=>p(()=>j(e.id)),children:"Accept"}),(0,a.jsx)(Y.$,{size:"sm",variant:"outline",className:"h-7 px-2.5 text-xs text-muted-foreground",disabled:o,onClick:()=>p(()=>eo(e.id)),children:"Dismiss"})]})]}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:"Status"}),(0,a.jsxs)(M.l6,{value:e.status,onValueChange:t=>null!=t&&p(()=>ei(e.id,t)),children:[(0,a.jsx)(M.bq,{className:"h-8",disabled:o,children:(0,a.jsx)(M.yv,{children:e=>P[e]?.label??e})}),(0,a.jsx)(M.gC,{children:m.map(e=>(0,a.jsx)(M.eb,{value:e,children:P[e]?.label??e},e))})]})]}),e.plain&&(0,a.jsx)("div",{className:"rounded-md border border-white/5 bg-card/40 px-2.5 py-2 text-sm",children:(0,a.jsx)(_.pO,{markdown:e.plain,variant:"compact",className:"text-[12.5px]"})}),e.sourceRef&&(0,a.jsx)("div",{className:"rounded-md border border-border bg-card px-2 py-1.5 font-mono text-xs text-muted-foreground",children:e.sourceRef}),e.files.length>0&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("h3",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:["Files (",e.files.length,")"]}),(0,a.jsx)("ul",{className:"space-y-0.5",children:e.files.map(e=>(0,a.jsx)("li",{children:(0,a.jsx)("button",{onClick:()=>fetch(`/api/open?path=${encodeURIComponent(e)}`).catch(()=>{}),title:`Open ${e} in editor`,className:"block w-full truncate rounded px-1.5 py-0.5 text-left font-mono text-[11px] text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:e})},e))})]}),"ARCHITECTURE"===t&&(0,a.jsx)(ep,{node:e}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-1.5 pt-1",children:[(0,a.jsx)(Y.$,{size:"sm",variant:"outline",onClick:()=>d(!0),children:"Edit"}),(0,a.jsx)(Y.$,{size:"sm",variant:"outline",onClick:()=>u(!0),children:"+ Sub-node"}),(0,a.jsx)(Y.$,{size:"sm",variant:"outline",disabled:o,onClick:()=>p(()=>el(e.id)),children:"Cancel"}),(0,a.jsx)(Y.$,{size:"sm",variant:"outline",disabled:o,onClick:()=>p(()=>ed(e.id)),children:"Deprioritize"}),(0,a.jsxs)(q.Lt,{children:[(0,a.jsx)(q.tv,{render:(0,a.jsx)(Y.$,{size:"sm",variant:"outline",className:"text-red-300",children:"Delete"})}),(0,a.jsxs)(q.EO,{children:[(0,a.jsxs)(q.wd,{children:[(0,a.jsxs)(q.r7,{children:["Delete “",e.title,"”?"]}),(0,a.jsx)(q.$v,{children:"This removes the node and all its sub-nodes. It can’t be undone."})]}),(0,a.jsxs)(q.ck,{children:[(0,a.jsx)(q.Zr,{children:"Cancel"}),(0,a.jsx)(q.Rx,{onClick:()=>p(()=>eo(e.id)),children:"Delete"})]})]})]})]}),l&&(0,a.jsx)(er,{open:!0,onOpenChange:d,mode:"edit",view:t,heading:"Edit node",nodeId:e.id,defaults:{title:e.title,role:e.role,plain:e.plain,status:e.status,cluster:e.cluster,kind:e.kind}}),c&&(0,a.jsx)(er,{open:!0,onOpenChange:u,mode:"create",view:t,heading:"New sub-node",parentId:e.id,position:{x:e.x,y:e.y+120},defaults:{cluster:e.cluster}})]})}function ep({node:e}){let t=(0,g.useRouter)(),[n,r]=(0,s.useState)(""),[o,i]=(0,s.useState)(!1),l=e.bugFlags.filter(e=>!e.resolved),d=e=>{i(!0),e().then(()=>t.refresh()).finally(()=>i(!1))},c=()=>{let t=n.trim();t&&d(async()=>{(await fetch("/api/bug-flags",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:e.id,by:"user",note:t})})).ok&&r("")})};return(0,a.jsxs)("div",{children:[(0,a.jsxs)("h3",{className:"mb-1.5 flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:[(0,a.jsx)(u.A,{className:"size-3.5 text-rose-300"}),"Bug flags",l.length>0&&` (${l.length} open)`]}),e.bugFlags.length>0&&(0,a.jsx)("ul",{className:"space-y-1.5",children:e.bugFlags.map(e=>(0,a.jsxs)("li",{className:(0,B.cn)("rounded-md border px-2 py-1.5",e.resolved?"border-white/5 bg-card/30 opacity-60":"border-rose-400/25 bg-rose-500/[0.05]"),children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{title:"agent"===e.by?"Flagged by an agent examining the code":"Flagged by you",className:(0,B.cn)("rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide","agent"===e.by?"bg-violet-500/15 text-violet-300":"bg-sky-500/15 text-sky-300"),children:"agent"===e.by?"agent":"you"}),(0,a.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[(0,a.jsx)("button",{type:"button",disabled:o,onClick:()=>d(()=>fetch(`/api/bug-flags/${e.id}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({resolved:!e.resolved})})),className:"rounded px-1.5 py-0.5 text-[10px] text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:e.resolved?"Reopen":"Resolve"}),(0,a.jsx)("button",{type:"button",disabled:o,title:"Delete flag",onClick:()=>d(()=>fetch(`/api/bug-flags/${e.id}`,{method:"DELETE"})),className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-red-300",children:(0,a.jsx)(I.A,{className:"size-3"})})]})]}),(0,a.jsx)("p",{className:(0,B.cn)("mt-1 text-[11.5px] leading-snug",e.resolved&&"line-through"),children:e.note})]},e.id))}),(0,a.jsxs)("div",{className:"mt-1.5 flex items-start gap-1.5",children:[(0,a.jsx)("textarea",{rows:1,value:n,placeholder:"Flag a bug or something worth investigating…",onChange:e=>r(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),c())},className:"field-sizing-content min-h-7 w-full resize-none rounded-md border border-white/10 bg-white/[0.03] px-2 py-1 text-[11.5px] outline-none placeholder:text-muted-foreground/60 focus:bg-white/[0.06]"}),(0,a.jsx)(Y.$,{size:"sm",variant:"outline",className:"h-7 shrink-0 px-2 text-[11px]",disabled:o||!n.trim(),onClick:c,children:"Flag"})]})]})}function ex({view:e,nodes:t}){let n=t.filter(e=>0===e.priority).length;return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-sm font-semibold",children:"ROADMAP"===e?"Roadmap":"Architecture"}),(0,a.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Click a node for details and actions. Drag to rearrange — positions are saved."})]}),(0,a.jsxs)("dl",{className:"grid grid-cols-2 gap-2 text-center",children:[(0,a.jsx)(eh,{label:"nodes",value:t.length}),(0,a.jsx)(eh,{label:"critical",value:n})]})]})}function eh({label:e,value:t}){return(0,a.jsxs)("div",{className:"rounded-md border border-border bg-card py-2",children:[(0,a.jsx)("div",{className:"text-lg font-semibold",children:t}),(0,a.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:e})]})}var ef=n(18874),eg=n(62311),eb=n(56614),ey=n(44267);function ev(e,t){let n={x:t.x,y:t.y};for(let t=0;t<100&&e.some(e=>200>Math.abs(n.x-e.x)&&150>Math.abs(n.y-e.y));t++)n.y+=150;return n}var ej=n(70947);let ew=[{value:"cluster",label:"Theme"},{value:"status",label:"Status"},{value:"priority",label:"Priority"}],eN=new Set(["title","role","plain","cluster","status","priority"]),ek={roadmapNode:X,archNode:X,annotation:y.Sh},eC={deletable:Z.I},eE={CONTAINS:{stroke:"#7c7c8a"},DEPENDS:{stroke:"#f5b942",dash:"6 4"},RELATES:{stroke:"#8a8a95",dash:"4 4"},REPLACES:{stroke:"#ff6b9d"}};function eS({view:e,nodes:t,edges:n,workOnNextId:g=null,embedded:b=!1,commentsContent:v,commentsCount:j=0,controlRef:w,onAskAgent:N,onAddComment:k,annotations:C,onPinClick:E,onUpdateComment:S,onRemoveComment:A,boardAnnotations:I,initialArrangedBy:T=null}){let z=(0,s.useMemo)(()=>t.map(e=>({id:e.id,type:"ROADMAP"===e.view?"roadmapNode":"archNode",position:{x:e.x,y:e.y},data:{title:e.title,role:e.role,plain:e.plain,status:e.status,priority:e.priority,cluster:e.cluster,view:e.view,kind:e.kind,source:e.source,sourceRef:e.sourceRef,isCriterion:e.isCriterion,isChild:null!=e.parentId,parentId:e.parentId,signals:e.signals,openBugs:e.bugFlags.filter(e=>!e.resolved).length}})),[t]),M=(0,s.useMemo)(()=>{let e;return e=new Set(t.map(e=>e.id)),[...t.filter(t=>t.parentId&&e.has(t.parentId)).map(e=>({id:`c-${e.id}`,source:e.parentId,sourceHandle:"sb",target:e.id,targetHandle:"tt",type:"smoothstep",style:{stroke:eE.CONTAINS.stroke}})),...n.filter(t=>e.has(t.fromId)&&e.has(t.toId)).map(e=>{let t=eE[e.kind]??eE.RELATES,n="DEPENDS"===e.kind?"depends on":void 0;return{id:e.id,source:e.fromId,sourceHandle:e.sourceHandle??void 0,target:e.toId,targetHandle:e.targetHandle??void 0,label:e.label??n,type:"deletable",markerEnd:{type:o.TG.ArrowClosed,color:t.stroke},style:{stroke:t.stroke,strokeDasharray:t.dash}}})]},[t,n]),[O,_]=(0,s.useState)(z),[H,U]=(0,s.useState)(M),[K,G]=(0,s.useState)(null),[X,Z]=(0,s.useState)(null),[J,Y]=(0,s.useState)(null),[q,V]=(0,s.useState)(!1),[Q,ee]=(0,s.useState)("details"),et=(0,s.useRef)(!1),en=(0,s.useRef)("details");(0,s.useEffect)(()=>{et.current=q},[q]),(0,s.useEffect)(()=>{en.current=Q},[Q]),(0,s.useEffect)(()=>{if(w)return w.current={open:()=>{if(et.current){V(!1),ee("details");return}V(!0),ee("details")},close:()=>{V(!1),ee("details")},openComments:()=>{V(!0),ee("comments")}},()=>{w&&(w.current=null)}},[w]);let[ea,es]=(0,s.useState)(new Set),[er,eo]=(0,s.useState)(null),[ei,el]=(0,s.useState)(!1),ed=(0,s.useRef)(null);(0,s.useEffect)(()=>_(z),[z]),(0,s.useEffect)(()=>U(M),[M]);let eu=(0,s.useCallback)((e,t,n)=>{_(n=>n.map(n=>n.id===e?{...n,data:{...n.data,...t}}:n)),n&&fetch(`/api/nodes/${e}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(Object.fromEntries(Object.entries(t).filter(([e])=>eN.has(e))))})},[]),em=(0,s.useMemo)(()=>Array.from(new Set(O.map(e=>e.data.cluster).filter(e=>!!e))).sort(),[O]),ep=(0,s.useCallback)(e=>es(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),[]),ex=(0,s.useCallback)(e=>{G(e),V(!0),ee("details")},[]),eh=(0,s.useCallback)(e=>{_(t=>t.filter(t=>t.id!==e)),G(t=>t===e?null:t),fetch(`/api/nodes/${e}`,{method:"DELETE"})},[]),eA=(0,s.useCallback)(async(t,n,a="FEATURE")=>{let s=(0,r.sX)(),o="ARCHITECTURE"===e?"REBUILD":"PENDING",i="BUG"===a?"New bug":"New node";_(r=>[...r,{id:s,type:"ROADMAP"===e?"roadmapNode":"archNode",position:{x:t,y:n},data:{title:i,role:null,plain:null,status:o,priority:2,cluster:null,view:e,kind:a,source:"MANUAL",sourceRef:null,isCriterion:!1,isChild:!1,parentId:null,openBugs:0}}]),es(e=>new Set(e).add(s)),eo(s),G(s);try{if(!(await fetch("/api/nodes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({id:s,view:e,kind:a,title:i,status:o,x:t,y:n})})).ok)throw Error("create failed")}catch{_(e=>e.filter(e=>e.id!==s)),es(e=>{let t=new Set(e);return t.delete(s),t}),eo(e=>e===s?null:e),G(e=>e===s?null:e)}},[e]),eI=(0,s.useCallback)(()=>{let e=O.filter(e=>"annotation"!==e.type);return function(e,t,n={}){let a=n.colW??320,s=n.rowH??150,r=n.maxCols??4,o=n.bandGap??90;if(0===e.length){if(0===t.length)return{x:0,y:0};let e=Math.max(...t.map(e=>e.y));return ev(t,{x:0,y:e+s+o})}let i=Math.min(...e.map(e=>e.x)),l=Math.min(...e.map(e=>e.y)),d=e.map(e=>Math.max(0,Math.round((e.x-i)/a))),c=Math.min(r,Math.max(Math.max(...d)+1,Math.ceil(Math.sqrt(e.length+1)))),u=Array(c).fill(l-s);e.forEach((e,t)=>{let n=Math.min(d[t],c-1);u[n]=Math.max(u[n],e.y)});let m=0;for(let e=1;e<c;e++)u[e]<u[m]&&(m=e);return ev(t,{x:i+m*a,y:u[m]+s})}(e.filter(e=>!e.data.parentId&&!(e.data.cluster??"").trim()).map(e=>e.position),e.map(e=>e.position))},[O]),eT=(0,s.useCallback)(()=>{let e=eI();eA(e.x,e.y)},[eA,eI]),ez=(0,s.useCallback)(()=>{let e=eI();eA(e.x,e.y,"BUG")},[eA,eI]),eM=(0,s.useMemo)(()=>({view:e,categories:em,statuses:"ARCHITECTURE"===e?R:D,patch:eu,isExpanded:e=>ea.has(e),toggleExpand:ep,openDetailed:ex,removeNode:eh,editingTitleId:er,onAskAgent:N}),[e,em,eu,ea,ep,ex,eh,er,N]),[eD,eR]=(0,s.useState)(T),[e$,eP]=(0,s.useState)(""),[eO,eF]=(0,s.useState)("full"),[eL,e_]=(0,s.useState)(new Set),[eB,eH]=(0,s.useState)(new Set),[eU,eK]=(0,s.useState)(new Set),eG=(0,s.useMemo)(()=>Array.from(new Set(t.map(e=>e.status))),[t]),eX=(0,s.useMemo)(()=>Array.from(new Set(t.map(e=>e.cluster).filter(e=>!!e))).sort(),[t]),eW=(0,s.useMemo)(()=>Array.from(new Set(t.map(e=>e.priority))).sort((e,t)=>e-t),[t]),eZ=(0,s.useCallback)(e=>(!eL.size||!!eL.has(e.status))&&(!eB.size||!!e.cluster&&!!eB.has(e.cluster))&&(!eU.size||!!eU.has(e.priority)),[eL,eB,eU]),eJ=eL.size+eB.size+eU.size,eY=(0,s.useCallback)(()=>{e_(new Set),eH(new Set),eK(new Set)},[]),eq=(0,s.useMemo)(()=>O.map(e=>({...e,hidden:!eZ(e.data)})),[O,eZ]),eV=(0,s.useMemo)(()=>new Set(eq.filter(e=>e.hidden).map(e=>e.id)),[eq]),eQ=(0,s.useMemo)(()=>H.map(e=>({...e,hidden:eV.has(e.source)||eV.has(e.target)})),[H,eV]),e0=(0,s.useMemo)(()=>{if(X){let e=eQ.find(e=>e.id===X);return e?new Set([e.source,e.target]):null}return K?(0,ef.F1)(K,eQ.filter(e=>!e.hidden)):null},[K,X,eQ]),e1=(0,s.useMemo)(()=>eq.map(e=>{let t=g&&e.id===g?{...e,data:{...e.data,isNext:!0}}:e;return(ea.has(e.id)&&(t={...t,zIndex:25}),!e0||t.hidden)?t:{...t,style:{...t.style,opacity:e0.has(e.id)?1:.45,transition:"opacity 120ms"}}}),[eq,e0,g,ea]),e5=(0,s.useMemo)(()=>{if("ROADMAP"===e&&!eD||"ROADMAP"!==e&&"ARCHITECTURE"!==e)return[];let t=new Map(e1.map(e=>[e.id,e])),n=[];for(let s of e1){var a;if(s.hidden||"annotation"===s.type)continue;let r=(s.data.parentId?t.get(s.data.parentId):void 0)??s,o="ROADMAP"===e&&eD?(a=r.data,"status"===eD?P[a.status]?.label??a.status:"priority"===eD?`P${a.priority}`:a.cluster?.trim()||"—"):r.data.cluster?.trim()||"—";n.push({id:s.id,group:o,x:s.position.x,y:s.position.y,w:s.measured?.width??(s.data.isChild?224:256),h:s.measured?.height??96})}return(0,ey.S)(n)},[e1,eD,e]),e2="ARCHITECTURE"===e||"cluster"===eD?"category":"neutral",e3=(0,s.useMemo)(()=>{let e=K??J;return X||e?eQ.map(t=>t.hidden?t:(X?t.id===X:t.source===e||t.target===e)?{...t,zIndex:20,style:{...t.style,opacity:1,strokeWidth:2.5}}:{...t,selectable:!1,label:void 0,markerEnd:void 0,style:{...t.style,opacity:.06}}):eQ.map(e=>e.hidden?e:{...e,label:void 0,style:{...e.style,opacity:.18}})},[eQ,K,X,J]),e4=void 0!==I,[e6,e8]=(0,s.useState)(I??[]);(0,s.useEffect)(()=>{I&&e8(I)},[I]);let e9=(0,s.useMemo)(()=>{if(e4){let e=new Set(t.map(e=>e.id));return e6.filter(t=>"feature"===t.targetKind&&e.has(t.targetId)).map((e,t)=>({id:e.id,n:t+1,targetId:e.targetId,text:e.body,x:e.x,y:e.y}))}let e=new Map((C??[]).map(e=>[e.id,e.comment]));return(0,W.m)(C??[],{tables:[],features:t.map(e=>({id:e.id,title:e.title}))}).map(t=>({id:t.annotationId,n:t.n,targetId:t.targetId,text:e.get(t.annotationId)??"",x:null,y:null}))},[e4,e6,C,t]),e7=(0,s.useMemo)(()=>{let e=new Map;for(let t of e9){let n=e.get(t.targetId)??[];n.push({id:t.id,n:t.n,column:null}),e.set(t.targetId,n)}return e},[e9]),te=(0,s.useCallback)(async e=>{let n=(0,W.m)([{id:"_",excerpt:e}],{tables:[],features:t.map(e=>({id:e.id,title:e.title}))})[0];if(!n)return;let a=await fetch("/api/board-annotations",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({targetKind:"feature",targetId:n.targetId})});if(a.ok){let e=await a.json();e8(t=>[...t,e])}},[t]),tt=(0,s.useCallback)((e,t)=>{e8(n=>n.map(n=>n.id===e?{...n,...t}:n)),fetch(`/api/board-annotations/${e}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(t)})},[]),tn=(0,s.useCallback)(e=>{e8(t=>t.filter(t=>t.id!==e)),fetch(`/api/board-annotations/${e}`,{method:"DELETE"})},[]),ta=e4?te:k,[ts,tr]=(0,s.useState)(()=>new Map),to=(0,s.useMemo)(()=>{let e=new Map(e1.map(e=>[e.id,e])),t=new Map,n=e9.flatMap(n=>{let a=e.get(n.targetId);if(!a||a.hidden)return[];let s=t.get(n.targetId)??0;t.set(n.targetId,s+1);let r=a.measured?.height??96;return[{id:`anno-${n.id}`,type:"annotation",position:{x:n.x??a.position.x+26,y:n.y??a.position.y+r+56+112*s},measured:ts.get(`anno-${n.id}`),draggable:e4,data:{n:n.n,text:n.text,annotationId:n.id,onClick:e4||S?void 0:E,editable:e4||!!S,onChangeText:e4?(e,t)=>tt(e,{body:t}):S,onDelete:e4?tn:A}}]});return[...e1.map(e=>{let t=e7.get(e.id);return t||ta?{...e,data:{...e.data,pins:t,onPinClick:e4?void 0:E,onComment:ta}}:e}),...n]},[e1,e9,e7,e4,E,S,A,ta,tt,tn,ts]),ti=(0,s.useMemo)(()=>e9.map(e=>({id:`annoe-${e.id}`,source:e.targetId,sourceHandle:`pin-${e.id}`,target:`anno-${e.id}`,targetHandle:"in",type:"default",selectable:!1,zIndex:30,style:{stroke:y.V5,strokeWidth:1.5,opacity:.9}})),[e9]),tl=(0,s.useCallback)(e=>{let t=[];for(let n of e)if("position"===n.type&&n.id.startsWith("anno-")&&n.position){let e=n.id.slice(5),{x:t,y:a}=n.position;e8(n=>n.map(n=>n.id===e?{...n,x:t,y:a}:n))}else if("dimensions"===n.type&&n.id.startsWith("anno-")){let e=n.dimensions;e&&tr(t=>{let a=t.get(n.id);if(a&&a.width===e.width&&a.height===e.height)return t;let s=new Map(t);return s.set(n.id,e),s})}else t.push(n);t.length&&_(e=>(0,i._0)(t,e))},[]),td=(0,s.useCallback)(e=>U(t=>(0,i.zW)(e,t)),[]),tc=(0,s.useCallback)(async e=>{if(!e.source||!e.target||e.source===e.target)return;let t=await fetch("/api/edges",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({fromId:e.source,toId:e.target,kind:"DEPENDS",sourceHandle:e.sourceHandle??null,targetHandle:e.targetHandle??null})});if(!t.ok)return;let n=await t.json(),a=eE.DEPENDS;U(t=>t.some(e=>e.id===n.id)?t:[...t,{id:n.id,source:n.fromId,sourceHandle:e.sourceHandle??void 0,target:n.toId,targetHandle:e.targetHandle??void 0,label:"depends on",type:"deletable",markerEnd:{type:o.TG.ArrowClosed,color:a.stroke},style:{stroke:a.stroke,strokeDasharray:a.dash}}])},[]),tu=(0,s.useCallback)(async(t,n,a)=>{let s=await fetch("/api/nodes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({view:e,title:"New node",parentId:t.id,cluster:t.data.cluster??null,status:"ARCHITECTURE"===e?"REBUILD":"PENDING",x:n,y:a})});if(!s.ok)return;let r=await s.json();_(s=>[...s,{id:r.id,type:"ROADMAP"===e?"roadmapNode":"archNode",position:{x:n,y:a},data:{title:r.title,role:r.role,plain:r.plain,status:r.status,priority:r.priority,cluster:r.cluster,view:r.view,source:r.source,sourceRef:r.sourceRef,kind:r.kind,isCriterion:!1,isChild:!0,parentId:t.id,openBugs:0}}]),U(e=>[...e,{id:`c-${r.id}`,source:t.id,target:r.id,type:"smoothstep",style:{stroke:eE.CONTAINS.stroke}}]),es(e=>new Set(e).add(r.id)),eo(r.id),G(r.id)},[e]),tm=(0,s.useCallback)(async(e,t)=>{if(t.isValid||!t.fromNode||!ed.current)return;let n=e.changedTouches,a=n?.[0]?.clientX??e.clientX,s=n?.[0]?.clientY??e.clientY,{x:r,y:o}=ed.current.screenToFlowPosition({x:a,y:s});await tu(t.fromNode,r,o)},[tu]);(0,s.useEffect)(()=>{if(!ei)return;let e=e=>{"Escape"===e.key&&el(!1)};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[ei]);let tp=(0,s.useMemo)(()=>t.find(e=>e.id===K)??null,[t,K]),tx=(0,s.useCallback)((e,t,n)=>{fetch(`/api/nodes/${e}/position`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({x:t,y:n})})},[]),th=(0,s.useCallback)(e=>{G(e),Z(null);let t=ed.current?.getNode(e);if(!t||!ed.current)return;let n=t.measured?.width??128,a=t.measured?.height??48;ed.current.setCenter(t.position.x+n/2,t.position.y+a/2,{zoom:1.2,duration:600})},[]),tf=(0,s.useCallback)(e=>{let t=function(e,t,n={}){let a=n.colW??320,s=n.rowH??150,r=n.childIndent??24,o=n.laneGap??56,i=n.bandGap??110,l=n.maxCols??10,d=n.maxBandW??8*a,c=new Set(e.map(e=>e.id)),u=e=>!e.parentId||!c.has(e.parentId),m=e.filter(u),p=new Map;for(let t of e){if(u(t))continue;let e=p.get(t.parentId);e?e.push(t):p.set(t.parentId,[t])}let x="status"===t?e=>e.status:"priority"===t?e=>String(e.priority):e=>(e.cluster??"").trim()||"—",h=new Map;for(let e of m){let t=x(e),n=h.get(t);n?n.push(e):h.set(t,[e])}let f=(function(e,t,n){if("status"===e)return[...$];if("priority"===e)return["0","1","2","3"];let a=Array.from(new Set(t.map(n))),s=a.filter(e=>"—"!==e).sort();return a.includes("—")?[...s,"—"]:s})(t,m,x).filter(e=>h.has(e)),g=new Map,b=0,y=0,v=0;for(let e of f){let t=h.get(e),n=t.reduce((e,t)=>e+1+(p.get(t.id)?.length??0),0),c=Math.max(1,Math.min(l,t.length,Math.round(Math.sqrt(.85*n))||1)),u=c*a;b>0&&b+u>d&&(b=0,y+=v+i,v=0);let m=Array(c).fill(0);for(let e of t){let t=0;for(let e=1;e<c;e++)m[e]<m[t]&&(t=e);let n=b+t*a,o=y+m[t]*s;g.set(e.id,{x:n,y:o});let i=p.get(e.id)??[];i.forEach((e,t)=>{g.set(e.id,{x:n+r,y:o+(t+1)*s})}),m[t]+=1+i.length}v=Math.max(v,m.reduce((e,t)=>Math.max(e,t),0)*s),b+=u+o}return g}(O.map(e=>({id:e.id,parentId:e.data.parentId??null,cluster:e.data.cluster,status:e.data.status,priority:e.data.priority})),e);_(e=>e.map(e=>{let n=t.get(e.id);return n?{...e,position:n}:e}));let n=Array.from(t,([e,t])=>({id:e,x:t.x,y:t.y}));n.length&&fetch("/api/nodes/positions",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({batch:n})}),eR(e),fetch("/api/board-layout",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({board:"roadmap",arrangedBy:e})}),requestAnimationFrame(()=>ed.current?.fitView({duration:600,padding:.2}))},[O]),tg=(0,s.useCallback)(()=>{let e=function(e,t){if(0===e.length)return new Map;let n=function(e,t){let n=e.map(e=>e.id).sort(),a=new Map(n.map(e=>[e,[]]));for(let e of[...t].sort((e,t)=>e.fromId.localeCompare(t.fromId)||e.toId.localeCompare(t.toId)))a.get(e.fromId)?.push(e);let s=new Map,r=[],o=e=>{for(let t of(s.set(e,"visiting"),a.get(e)??[])){let e=s.get(t.toId);"visiting"!==e&&(r.push(t),"done"!==e&&o(t.toId))}s.set(e,"done")};for(let e of n)s.has(e)||o(e);return r}(e,t),a=function(e,t){let n=new Map(e.map(e=>[e.id,[]]));for(let e of t)n.get(e.fromId)?.push(e.toId);let a=new Map,s=e=>{let t=a.get(e);if(void 0!==t)return t;a.set(e,0);let r=n.get(e)??[],o=r.length?1+Math.max(...r.map(s)):0;return a.set(e,o),o};for(let t of e)s(t.id);return a}(e,n),s=new Map(e.map(e=>[e.id,[]]));for(let e of n)s.get(e.fromId)?.push(e.toId);let r=Array.from(new Set(e.map(e=>e.group))),o=r.filter(e=>"—"!==e).sort(),i=r.includes("—")?[...o,"—"]:o,l=[];for(let t of i){let n=e.filter(e=>e.group===t),r=Math.min(...n.map(e=>a.get(e.id)??0)),o=Math.max(...n.map(e=>a.get(e.id)??0)),i=new Map,d=new Map,c=0,u=1;for(let e=r;e<=o;e++){let t=n.filter(t=>a.get(t.id)===e);if(!t.length)continue;let r=e=>{let t=(s.get(e.id)??[]).map(e=>d.get(e)).filter(e=>void 0!==e);return t.length?t.reduce((e,t)=>e+t,0)/t.length:1/0};t.sort((e,t)=>r(e)-r(t)||e.id.localeCompare(t.id));let o=Math.max(1,Math.ceil(Math.sqrt(2*t.length)));t.forEach((e,t)=>{let n=Math.floor(t/o),a=t%o;d.set(e.id,a),i.set(e.id,{x:c+360*n,y:150*a}),u=Math.max(u,a+1)}),c+=360*Math.ceil(t.length/o)}l.push({d:t,w:c,h:150*u,local:i})}let d=Math.max(2880,Math.round(Math.sqrt(2.2*l.reduce((e,t)=>e+(t.w+140)*(t.h+170),0)))),c=new Map,u=0,m=0,p=0;for(let e of l){for(let[t,n]of(u>0&&u+e.w>d&&(m+=p+170,u=0,p=0),e.local))c.set(t,{x:u+n.x,y:m+n.y});p=Math.max(p,e.h),u+=e.w+140}return c}(O.filter(e=>"annotation"!==e.type).map(e=>({id:e.id,group:(e.data.cluster??"").trim()||"—"})),n.filter(e=>"DEPENDS"===e.kind).map(e=>({fromId:e.fromId,toId:e.toId})));_(t=>t.map(t=>{let n=e.get(t.id);return n?{...t,position:n}:t}));let t=Array.from(e,([e,t])=>({id:e,x:t.x,y:t.y}));t.length&&fetch("/api/nodes/positions",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({batch:t})}),requestAnimationFrame(()=>ed.current?.fitView({duration:600,padding:.2}))},[O,n]),tb=(0,s.useMemo)(()=>{let e=e$.trim().toLowerCase();return e?O.filter(t=>eZ(t.data)&&t.data.title.toLowerCase().includes(e)).slice(0,8):[]},[O,e$,eZ]);function ty(e,t){t(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}return(0,a.jsx)(F.Provider,{value:eM,children:(0,a.jsxs)("div",{className:(0,B.cn)("canvas-dots relative w-full",b?"h-full":"h-screen"),onDragOver:e=>{e.dataTransfer.types.includes("application/beacon-node")&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},onDrop:e=>{if(!e.dataTransfer.getData("application/beacon-node")||!ed.current)return;e.preventDefault();let{x:t,y:n}=ed.current.screenToFlowPosition({x:e.clientX,y:e.clientY});eA(t,n,"BUG"===e.dataTransfer.getData("application/beacon-node-kind")?"BUG":"FEATURE")},children:[(0,a.jsxs)(i.Gc,{nodes:to,edges:"far"===eO?[...e3,...ti].map(e=>({...e,hidden:!0})):[...e3,...ti],nodeTypes:ek,edgeTypes:eC,connectionMode:o.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:e=>{ed.current=e},onNodesChange:tl,onEdgesChange:td,onConnect:tc,onConnectEnd:tm,onNodeMouseEnter:(e,t)=>Y(t.id),onNodeMouseLeave:()=>Y(null),onEdgesDelete:e=>{for(let t of e)t.id.startsWith("c-")||fetch(`/api/edges/${t.id}`,{method:"DELETE"})},onNodesDelete:e=>{for(let t of e)t.id.startsWith("anno-")||(fetch(`/api/nodes/${t.id}`,{method:"DELETE"}),G(e=>e===t.id?null:e))},onNodeClick:(e,t)=>{if("annotation"===t.type){let e=t.data;e.editable||E?.(e.annotationId);return}if(ei){if(el(!1),t.data.isChild)return;tu(t,t.position.x+300,t.position.y+60);return}if(G(t.id),Z(null),ee("details"),b){let t=e.target;t?.closest("input, textarea, select, button, [role='combobox']")||V(!0)}},onEdgeClick:(e,t)=>{Z(t.id),G(null),ee("details")},onPaneClick:()=>{ei?el(!1):(G(null),Z(null))},onNodeDragStop:(e,t)=>{if(t.id.startsWith("anno-")){e4&&tt(t.id.slice(5),{x:t.position.x,y:t.position.y});return}tx(t.id,t.position.x,t.position.y)},deleteKeyCode:["Backspace","Delete"],colorMode:"dark",fitView:!0,minZoom:.2,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,a.jsx)(ej.Z,{regions:e5,tone:e2,lod:eO}),(0,a.jsx)(L.J,{onLod:eF}),(0,a.jsx)(i.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-white/10 [&_button]:!border-white/10 [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),(0,a.jsx)(i.Zk,{position:"bottom-right",style:{marginBottom:152},children:(0,a.jsx)(eb.er,{title:"Legend",trigger:(e,t)=>(0,a.jsx)("button",{type:"button",onClick:t,title:"Legend",className:(0,B.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",e?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,a.jsx)(l.A,{className:"size-4"})}),children:(0,a.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:[(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"inline-block rounded bg-sky-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"feature"}),(0,a.jsx)("span",{children:"top-level card \xb7 can have sub-tasks"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"inline-block rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub-task"}),(0,a.jsx)("span",{children:"child of a feature"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#33333a]"}),(0,a.jsx)("span",{children:"contains \xb7 drag the bottom handle to empty canvas"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#f5b942"}}),(0,a.jsx)("span",{children:"depends on \xb7 drag between two cards"})]})]})})}),!b&&(0,a.jsx)(i.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur",nodeColor:e=>e.data?.priority===0?"#ff3860":"#555"}),(0,a.jsxs)(i.Zk,{position:"bottom-center",className:"!mb-4 flex flex-col items-center gap-2",children:[ei&&(0,a.jsxs)("div",{className:"glass rounded-full px-3 py-1 text-[11px] text-muted-foreground",children:["Click a ","ARCHITECTURE"===e?"component":"feature"," to attach the"," ","ARCHITECTURE"===e?"sub-component":"sub-task"," \xb7 Esc to cancel"]}),"ARCHITECTURE"===e&&(0,a.jsx)("div",{className:"glass flex items-center rounded-full p-0.5",children:(0,a.jsxs)("button",{onClick:tg,title:"Arrange components into a left→right dependency flow, grouped by domain",className:"flex h-6 items-center gap-1.5 rounded-full px-3 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,a.jsx)(d.A,{className:"size-3"}),"Arrange"]})}),"ROADMAP"===e&&(0,a.jsxs)("div",{className:"glass flex items-center gap-1 rounded-full p-1",children:[(0,a.jsx)("span",{className:"pl-2 pr-0.5 text-[11px] text-muted-foreground",children:"Group by"}),ew.map(e=>(0,a.jsx)("button",{onClick:()=>tf(e.value),title:`Arrange features into lanes by ${e.label.toLowerCase()}`,className:(0,B.cn)("h-7 rounded-full px-2.5 text-[11px] font-medium transition-colors",eD===e.value?"bg-white/[0.12] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:e.label},e.value))]}),(0,a.jsxs)("div",{className:"glass flex items-center gap-1 rounded-full p-1",children:[(0,a.jsxs)("button",{onClick:eT,draggable:!0,onDragStart:t=>{t.dataTransfer.setData("application/beacon-node",e),t.dataTransfer.effectAllowed="copy"},title:"ARCHITECTURE"===e?"Add component (click, or drag onto the board to place it)":"Add feature (click, or drag onto the board to place it)",className:"flex h-8 cursor-grab items-center gap-1.5 rounded-full px-3 text-[12px] font-medium text-foreground transition-colors hover:bg-white/[0.06] active:cursor-grabbing",children:[(0,a.jsx)(c.A,{className:"size-3.5 text-[var(--accent-2,#ff7a45)]"}),"ARCHITECTURE"===e?"Component":"Feature"]}),"ROADMAP"===e&&(0,a.jsxs)("button",{onClick:ez,draggable:!0,onDragStart:t=>{t.dataTransfer.setData("application/beacon-node",e),t.dataTransfer.setData("application/beacon-node-kind","BUG"),t.dataTransfer.effectAllowed="copy"},title:"Add bug (click, or drag onto the board to place it)",className:"flex h-8 cursor-grab items-center gap-1.5 rounded-full px-3 text-[12px] font-medium text-foreground transition-colors hover:bg-white/[0.06] active:cursor-grabbing",children:[(0,a.jsx)(u.A,{className:"size-3.5 text-rose-400"}),"Bug"]}),(0,a.jsx)("span",{"aria-hidden":!0,className:"mx-0.5 h-5 w-px bg-white/10"}),(0,a.jsxs)("button",{onClick:()=>el(e=>!e),title:"ARCHITECTURE"===e?"Add sub-component (click a component next)":"Add sub-task (click a feature next)",className:(0,B.cn)("flex h-8 items-center gap-1.5 rounded-full px-3 text-[12px] font-medium transition-colors",ei?"bg-white/[0.1] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:[(0,a.jsx)(m.A,{className:"size-3.5"}),"ARCHITECTURE"===e?"Sub-component":"Sub-task"]})]})]}),!b&&(0,a.jsx)(i.Zk,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,a.jsx)(eg.Z,{active:e,tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"FILES",label:"Files",href:"/map?view=FILES"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"}]})}),(0,a.jsxs)(i.Zk,{position:"top-right",className:(0,B.cn)("flex items-center gap-1 transition-[margin] duration-200",q&&"!mr-[332px]",b&&"hidden"),children:[(0,a.jsxs)(eb.er,{title:"Search",trigger:(e,t)=>(0,a.jsx)("button",{type:"button",onClick:t,title:"Search features",className:(0,B.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",e?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,a.jsx)(p.A,{className:"size-4"})}),children:[(0,a.jsx)("input",{autoFocus:!0,value:e$,onChange:e=>eP(e.target.value),placeholder:"Find a feature…",className:"w-full rounded-md border border-white/10 bg-white/[0.04] px-2 py-1 text-[12px] outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.08]"}),(0,a.jsxs)("div",{className:"mt-2 max-h-64 space-y-0.5 overflow-y-auto",children:[e$.trim()&&0===tb.length&&(0,a.jsx)("div",{className:"px-1 py-1 text-[11px] text-muted-foreground",children:"No matches"}),tb.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>th(e.id),className:"block w-full truncate rounded-md px-2 py-1 text-left text-[12px] text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:e.data.title},e.id))]})]}),"ROADMAP"===e&&g&&(0,a.jsx)("button",{type:"button",onClick:()=>th(g),title:"Jump to the next feature to work on",className:"glass flex size-8 items-center justify-center rounded-lg text-emerald-300 transition-colors hover:text-emerald-200",children:(0,a.jsx)(x.A,{className:"size-4"})}),(0,a.jsxs)(eb.er,{title:"Filters",trigger:(e,t)=>(0,a.jsxs)("button",{type:"button",onClick:t,title:"Filters",className:(0,B.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",e||eJ>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,a.jsx)(h.A,{className:"size-4"}),eJ>0&&(0,a.jsx)("span",{className:"absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-[var(--accent-2,#ff7a45)] px-1 text-[9px] font-semibold text-white",children:eJ})]}),children:[eG.length>0&&(0,a.jsx)(eb.r1,{title:"Status",children:eG.map(e=>(0,a.jsx)(eb.vu,{on:eL.has(e),onClick:()=>ty(e,e_),children:P[e]?.label??e},e))}),eX.length>0&&(0,a.jsx)(eb.r1,{title:"Cluster",children:eX.map(e=>(0,a.jsx)(eb.vu,{on:eB.has(e),onClick:()=>ty(e,eH),children:e},e))}),eW.length>0&&(0,a.jsx)(eb.r1,{title:"Priority",children:eW.map(e=>(0,a.jsxs)(eb.vu,{on:eU.has(e),onClick:()=>ty(e,eK),children:["P",e]},e))}),eJ>0&&(0,a.jsx)("button",{type:"button",onClick:eY,className:"mt-1 w-full rounded-md border border-white/10 px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:"clear filters"})]}),!q&&(0,a.jsx)("button",{onClick:()=>{V(!0),ee("details")},title:"Show panel",className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,a.jsx)(f.A,{className:"size-4"})})]})]}),q&&(0,a.jsx)(ec,{view:e,selected:tp,allNodes:t,onClose:()=>{V(!1),ee("details")},commentsContent:v,commentsCount:j,activeTab:Q,onTabChange:ee,onAddComment:ta,topOffset:b?64:void 0})]})})}},12410:(e,t,n)=>{n.d(t,{a:()=>o,x:()=>i});let a=["bg-emerald-500/15 text-emerald-300","bg-sky-500/15 text-sky-300","bg-violet-500/15 text-violet-300","bg-amber-500/15 text-amber-200","bg-rose-500/15 text-rose-300","bg-cyan-500/15 text-cyan-300","bg-fuchsia-500/15 text-fuchsia-300","bg-lime-500/15 text-lime-300","bg-orange-500/15 text-orange-300","bg-teal-500/15 text-teal-300","bg-indigo-500/15 text-indigo-300","bg-pink-500/15 text-pink-300"],s=["border-emerald-500/20 bg-emerald-500/[0.04]","border-sky-500/20 bg-sky-500/[0.04]","border-violet-500/20 bg-violet-500/[0.04]","border-amber-500/20 bg-amber-500/[0.04]","border-rose-500/20 bg-rose-500/[0.04]","border-cyan-500/20 bg-cyan-500/[0.04]","border-fuchsia-500/20 bg-fuchsia-500/[0.04]","border-lime-500/20 bg-lime-500/[0.04]","border-orange-500/20 bg-orange-500/[0.04]","border-teal-500/20 bg-teal-500/[0.04]","border-indigo-500/20 bg-indigo-500/[0.04]","border-pink-500/20 bg-pink-500/[0.04]"];function r(e){let t=(e??"").trim().toUpperCase();if(!t)return null;let n=0;for(let e=0;e<t.length;e++)n=31*n+t.charCodeAt(e)>>>0;return n%a.length}function o(e){let t=r(e);return null===t?"bg-white/[0.06] text-muted-foreground":a[t]}function i(e){let t=r(e);return null===t?"border-white/10 bg-white/[0.02]":s[t]}},17918:(e,t,n)=>{n.d(t,{Sh:()=>c,V5:()=>d,e0:()=>m});var a=n(95155),s=n(12115),r=n(81750),o=n(6266),i=n(9005),l=n(91337);let d="#ff7a45";function c({data:e,selected:t}){let[n,u]=(0,s.useState)(e.text);return(0,s.useEffect)(()=>{u(e.text)},[e.text]),(0,a.jsxs)("div",{onClick:()=>e.onClick?.(e.annotationId),className:(0,l.cn)("group/anno relative w-[270px] rounded-xl border border-white/10 bg-[#1b1b1e]/95 px-4 py-3 shadow-[0_18px_50px_-20px_rgba(0,0,0,0.9)] backdrop-blur transition-colors hover:border-white/20",!e.editable&&"cursor-pointer",t&&"border-[#ff7a45]/50"),children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute -left-px bottom-2 top-2 w-[3px] rounded-full",style:{background:d}}),(0,a.jsx)(r.h7,{type:"target",id:"in",position:o.yX.Top,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"auto",right:22,top:0}}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("div",{className:"font-mono text-[10px] font-semibold uppercase tracking-[0.22em]",style:{color:d},children:"Annotation \xb7 You"}),e.editable&&e.onDelete&&(0,a.jsx)("button",{type:"button",title:"Delete annotation",onClick:t=>{t.stopPropagation(),e.onDelete?.(e.annotationId)},className:"nodrag nopan -mr-1 rounded p-0.5 text-muted-foreground/60 opacity-0 transition-opacity hover:text-red-300 group-hover/anno:opacity-100",children:(0,a.jsx)(i.A,{className:"size-3"})})]}),e.editable?(0,a.jsx)("textarea",{value:n,autoFocus:!e.text.trim(),placeholder:"Type your annotation…",rows:Math.max(2,Math.min(6,n.split("\n").length)),onChange:e=>u(e.target.value),onBlur:()=>{n!==e.text&&e.onChangeText?.(e.annotationId,n)},onKeyDown:e=>e.stopPropagation(),className:"nodrag nopan mt-1.5 w-full resize-none bg-transparent text-[13px] leading-snug text-foreground/95 outline-none placeholder:text-muted-foreground/60"}):(0,a.jsx)("div",{className:"mt-1.5 text-[13px] leading-snug text-foreground/95",children:e.text.trim()?e.text:(0,a.jsx)("span",{className:"text-muted-foreground",children:"…"})})]})}function u({n:e,annotationId:t,onClick:n}){return(0,a.jsxs)("button",{type:"button",title:`Annotation ${e} — view comment`,onClick:e=>{e.stopPropagation(),n?.(t)},className:"nodrag nopan relative flex size-6 items-center justify-center rounded-full font-mono text-[11px] font-bold text-[#181818] shadow-[0_0_0_3px_rgba(255,122,69,0.22),0_0_16px_2px_rgba(255,122,69,0.4)] transition-transform hover:scale-110",style:{background:d},children:[e,(0,a.jsx)(r.h7,{type:"source",id:`pin-${t}`,position:o.yX.Bottom,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"50%",bottom:2}})]})}function m({pins:e,onPinClick:t}){return e.length?(0,a.jsx)("span",{className:"absolute -right-3 top-1/2 z-10 flex -translate-y-1/2 flex-row-reverse gap-1",children:e.map(e=>(0,a.jsx)(u,{n:e.n,annotationId:e.id,onClick:t},e.id))}):null}},18874:(e,t,n)=>{n.d(t,{F1:()=>i,e6:()=>r,qA:()=>s,ru:()=>o});let a={auth:"#4ea1ff",firms:"#c792ea",search:"#7bd389",storage:"#ffb86b",petitions:"#ff7a45",monitoring:"#f5b942",admin:"#ff6b9d"};function s(e){return e&&a[e]||"#8a8a8a"}let r={GET:"#7bd389",POST:"#4ea1ff",PUT:"#ffb86b",PATCH:"#ffb86b",DELETE:"#ff3860"},o={read:"#4ea1ff",write:"#ffb86b","read-write":"#c792ea"};function i(e,t){let n=new Set([e]);for(let a of t)a.source===e&&n.add(a.target),a.target===e&&n.add(a.source);return n}},26518:(e,t,n)=>{n.d(t,{bq:()=>N,eb:()=>C,gC:()=>k,l6:()=>j,yv:()=>w});var a=n(95155);n(12115);var s=n(40595),r=n(41294),o=n(75681),i=n(17314),l=n(37265),d=n(23107),c=n(70826),u=n(67564),m=n(1938),p=n(15433),x=n(5919),h=n(45450),f=n(88988),g=n(91337),b=n(12363),y=n(64577),v=n(94088);let j=s.H;function w({className:e,...t}){return(0,a.jsx)(r.y,{"data-slot":"select-value",className:(0,g.cn)("flex flex-1 text-left",e),...t})}function N({className:e,size:t="default",children:n,...s}){return(0,a.jsxs)(o.b,{"data-slot":"select-trigger","data-size":t,className:(0,g.cn)("flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...s,children:[n,(0,a.jsx)(i.w,{render:(0,a.jsx)(b.A,{className:"pointer-events-none size-4 text-muted-foreground"})})]})}function k({className:e,children:t,side:n="bottom",sideOffset:s=4,align:r="center",alignOffset:o=0,alignItemWithTrigger:i=!0,...m}){return(0,a.jsx)(l.V,{children:(0,a.jsx)(d.l,{side:n,sideOffset:s,align:r,alignOffset:o,alignItemWithTrigger:i,className:"isolate z-50",children:(0,a.jsxs)(c.t,{"data-slot":"select-content","data-align-trigger":i,className:(0,g.cn)("relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...m,children:[(0,a.jsx)(E,{}),(0,a.jsx)(u.B,{children:t}),(0,a.jsx)(S,{})]})})})}function C({className:e,children:t,...n}){return(0,a.jsxs)(m.e,{"data-slot":"select-item",className:(0,g.cn)("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...n,children:[(0,a.jsx)(p.h,{className:"flex flex-1 shrink-0 gap-2 whitespace-nowrap",children:t}),(0,a.jsx)(x.h,{render:(0,a.jsx)("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center"}),children:(0,a.jsx)(y.A,{className:"pointer-events-none"})})]})}function E({className:e,...t}){return(0,a.jsx)(h.w,{"data-slot":"select-scroll-up-button",className:(0,g.cn)("top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",e),...t,children:(0,a.jsx)(v.A,{})})}function S({className:e,...t}){return(0,a.jsx)(f.d,{"data-slot":"select-scroll-down-button",className:(0,g.cn)("bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",e),...t,children:(0,a.jsx)(b.A,{})})}},44267:(e,t,n)=>{n.d(t,{S:()=>a});function a(e,t={}){let n=t.pad??20,s=t.header??26,r=new Map;for(let t of e){let e=r.get(t.group);e?(e.minX=Math.min(e.minX,t.x),e.minY=Math.min(e.minY,t.y),e.maxX=Math.max(e.maxX,t.x+t.w),e.maxY=Math.max(e.maxY,t.y+t.h),e.count++):r.set(t.group,{minX:t.x,minY:t.y,maxX:t.x+t.w,maxY:t.y+t.h,count:1})}return Array.from(r.entries()).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({key:e,label:e,x:t.minX-n,y:t.minY-n-s,w:t.maxX-t.minX+2*n,h:t.maxY-t.minY+2*n+s,count:t.count}))}},54698:(e,t,n)=>{n.d(t,{m:()=>a});function a(e,t){let n=[];return e.forEach((e,a)=>{let s=e.excerpt.trim();if(!s)return;let r={annotationId:e.id,n:a+1};for(let e of t.tables){if(s===e.name)return void n.push({...r,kind:"table",targetId:e.id,column:null});if(s.startsWith(`${e.name}.`)){let t=s.slice(e.name.length+1);if(e.columns.includes(t))return void n.push({...r,kind:"column",targetId:e.id,column:t})}}for(let e of t.endpoints??[])if(s===`${e.method} ${e.path}`)return void n.push({...r,kind:"endpoint",targetId:e.id,column:null});for(let e of t.features??[])if(s===e.title||s===`feature: ${e.title}`)return void n.push({...r,kind:"feature",targetId:e.id,column:null})}),n}},56614:(e,t,n)=>{n.d(t,{er:()=>o,r1:()=>i,vu:()=>l});var a=n(95155),s=n(12115),r=n(91337);function o({trigger:e,title:t,align:n="right",children:i}){let[l,d]=(0,s.useState)(!1),c=(0,s.useRef)(null);return(0,s.useEffect)(()=>{if(!l)return;let e=e=>{c.current?.contains(e.target)||d(!1)},t=e=>{"Escape"===e.key&&d(!1)};return window.addEventListener("mousedown",e),window.addEventListener("keydown",t),()=>{window.removeEventListener("mousedown",e),window.removeEventListener("keydown",t)}},[l]),(0,a.jsxs)("div",{ref:c,className:"relative",children:[e(l,()=>d(e=>!e)),l&&(0,a.jsxs)("div",{className:(0,r.cn)("glass absolute top-full z-30 mt-1.5 w-64 rounded-xl p-3 shadow-xl","right"===n?"right-0":"left-0"),children:[t&&(0,a.jsx)("div",{className:"mb-2 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:t}),i]})]})}function i({title:e,children:t}){return(0,a.jsxs)("div",{className:"mb-2.5 last:mb-0",children:[(0,a.jsx)("div",{className:"mb-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground/80",children:e}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1",children:t})]})}function l({on:e,onClick:t,children:n,tone:s="default"}){return(0,a.jsx)("button",{type:"button",onClick:t,className:(0,r.cn)("rounded-md border px-2 py-0.5 text-[11px] font-medium transition-colors",{default:e?"border-foreground/40 bg-white/10 text-foreground":"border-white/10 text-muted-foreground hover:text-foreground",danger:e?"border-red-500/40 bg-red-500/15 text-red-300":"border-white/10 text-muted-foreground hover:text-foreground",accent:e?"border-sky-500/40 bg-sky-500/15 text-sky-300":"border-white/10 text-muted-foreground hover:text-foreground"}[s]),children:n})}},57144:(e,t,n)=>{n.d(t,{I:()=>c});var a=n(95155),s=n(81750),r=n(6266),o=n(65738);function i(e){let{x:t,y:n}=e.internals.positionAbsolute,a=e.measured?.width??0,s=e.measured?.height??0;return{x:t,y:n,w:a,h:s,cx:t+a/2,cy:n+s/2}}function l(e,t){let n=i(e),a=i(t),s=n.w/2||1,r=n.h/2||1,o=(a.cx-n.cx)/(2*s)-(a.cy-n.cy)/(2*r),l=(a.cx-n.cx)/(2*s)+(a.cy-n.cy)/(2*r),d=1/(Math.abs(o)+Math.abs(l)||1);return{x:s*d*(o+l)+n.cx,y:r*d*(-o+l)+n.cy}}function d(e,t){let n=i(e),a=Math.round(t.x),s=Math.round(t.y);return a<=Math.round(n.x)+1?r.yX.Left:a>=Math.round(n.x+n.w)-1?r.yX.Right:s<=Math.round(n.y)+1?r.yX.Top:r.yX.Bottom}function c(e){let t,n,{deleteElements:i}=(0,s.VH)(),c=(0,s.JY)(e.source),u=(0,s.JY)(e.target),m=c&&u?(t=l(c,u),n=l(u,c),{sx:t.x,sy:t.y,tx:n.x,ty:n.y,sourcePos:d(c,t),targetPos:d(u,n)}):null,[p,x,h]=(0,r.Fp)(m?{sourceX:m.sx,sourceY:m.sy,sourcePosition:m.sourcePos,targetX:m.tx,targetY:m.ty,targetPosition:m.targetPos}:{sourceX:e.sourceX,sourceY:e.sourceY,sourcePosition:e.sourcePosition,targetX:e.targetX,targetY:e.targetY,targetPosition:e.targetPosition});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.tE,{id:e.id,path:p,style:e.style,markerEnd:e.markerEnd,interactionWidth:20}),e.label&&(0,a.jsx)(s.rV,{children:(0,a.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -120%) translate(${x}px, ${h}px)`,fontSize:11,color:"#cfcfcf",background:"#161616",padding:"1px 4px",borderRadius:4,pointerEvents:"none",zIndex:1e3},children:e.label})}),e.selected&&(0,a.jsx)(s.rV,{children:(0,a.jsx)("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, 0) translate(${x}px, ${h+14}px)`,pointerEvents:"all",zIndex:1e3},children:(0,a.jsx)("button",{type:"button",onMouseDown:e=>e.stopPropagation(),onClick:t=>{t.stopPropagation(),i({edges:[{id:e.id}]})},title:"Delete (or press Backspace)",className:"flex size-7 items-center justify-center rounded-full border border-white/20 bg-card/95 text-red-300 shadow-lg backdrop-blur-md transition-colors hover:bg-red-500/25 hover:text-red-200",children:(0,a.jsx)(o.A,{className:"size-3.5"})})})})]})}},60874:(e,t,n)=>{n.d(t,{F8:()=>b,NG:()=>x,QH:()=>h,Vq:()=>g,aM:()=>j,cV:()=>N,kz:()=>v,n$:()=>m,pO:()=>o,vB:()=>y});var a=n(95155),s=n(12115),r=n(91337);function o({markdown:e,className:t,variant:n="reading"}){let i=(0,s.useMemo)(()=>m(e),[e]),l="reading"===n;return(0,a.jsx)("div",{className:(0,r.cn)("min-w-0 [overflow-wrap:anywhere]",l?"mx-auto w-full max-w-[66ch] space-y-4 text-[15px] leading-[1.6]":"space-y-3.5 text-[13px] leading-relaxed",t),children:i.map((e,t)=>(0,a.jsx)(w,{block:e,variant:n},t))})}function i(e){let t=e.trim();return t.includes("|")&&t.includes("-")&&/^[\s|:-]+$/.test(t)}function l(e){return""!==e.trim()&&e.includes("|")}function d(e){let t=e.trim();return t.startsWith("|")&&(t=t.slice(1)),t.endsWith("|")&&(t=t.slice(0,-1)),t.split("|").map(e=>e.trim())}function c(e){let t=e.trim(),n=t.startsWith(":"),a=t.endsWith(":");return n&&a?"center":a?"right":n?"left":null}let u=/^\s*```[^\s`]*\s*$/;function m(e){let t=e.split("\n"),n=[],a=[],s=()=>{a.length&&(n.push({kind:"p",text:a.join("\n")}),a=[])},r=null,o=()=>{null!==r&&(n.push({kind:"quote",text:r.join("\n")}),r=null)},m=e=>Math.min(6,Math.floor(e.length/2)),p=null,x=null;for(let e=0;e<t.length;e++){let h=t[e];if(null!==p){u.test(h)?(n.push({kind:"code",text:p.join("\n")}),p=null):p.push(h);continue}let f=h.match(/^>\s?(.*)$/);if(f){s(),x=null,(r??=[]).push(f[1]);continue}if(o(),u.test(h)){s(),x=null,p=[];continue}if(/^\s*$/.test(h)){s(),x=null;continue}let g=h.match(/^#### +(.+)$/);if(g){s(),x=null,n.push({kind:"h4",text:g[1]});continue}let b=h.match(/^### +(.+)$/);if(b){s(),x=null,n.push({kind:"h3",text:b[1]});continue}let y=h.match(/^## +(.+)$/);if(y){s(),x=null,n.push({kind:"h2",text:y[1]});continue}let v=h.match(/^# +(.+)$/);if(v){s(),x=null,n.push({kind:"h1",text:v[1]});continue}if(l(h)&&e+1<t.length&&i(t[e+1])){s(),x=null;let a=[d(h)],r=d(t[e+1]).map(c),o=e+2;for(;o<t.length&&l(t[o])&&!i(t[o]);)a.push(d(t[o])),o++;n.push({kind:"table",text:t.slice(e,o).join("\n"),rows:a,align:r}),e=o-1;continue}let j=h.match(/^(\s*)(\d+)\. +(.+)$/);if(j){s(),n.push({kind:"ol",text:j[3],depth:m(j[1]),marker:j[2]}),x=n.length-1;continue}let w=h.match(/^(\s*)- +(.+)$/);if(w){s(),n.push({kind:"ul",text:w[2],depth:m(w[1])}),x=n.length-1;continue}if(null!==x&&0===a.length){n[x].text+=" "+h.trim();continue}a.push(h)}return s(),o(),null!==p&&n.push({kind:"code",text:p.join("\n")}),n}let p=/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/g;function x({text:e}){let t=function(e){let t=e.trim();if(!t||"{"!==t[0]&&"["!==t[0])return null;try{return JSON.stringify(JSON.parse(t),null,2)}catch{return null}}(e);return(0,a.jsx)("pre",{className:"overflow-x-auto rounded-lg border border-white/10 bg-white/[0.06] p-3 text-[12px] leading-relaxed",children:(0,a.jsx)("code",{className:"whitespace-pre font-mono [overflow-wrap:normal]",children:t?function(e){let t,n=[],s=0,r=0,o=e=>(0,a.jsx)("span",{className:"text-foreground/45",children:e},r++);for(p.lastIndex=0;null!==(t=p.exec(e));){if(t.index>s&&n.push(o(e.slice(s,t.index))),void 0!==t[1]){let e=void 0!==t[2];n.push((0,a.jsx)("span",{className:e?"text-sky-300":"text-emerald-300/90",children:t[1]},r++)),e&&t[2]&&n.push(o(t[2]))}else void 0!==t[3]?n.push((0,a.jsx)("span",{className:"text-purple-300",children:t[3]},r++)):void 0!==t[4]&&n.push((0,a.jsx)("span",{className:"text-amber-300",children:t[4]},r++));s=p.lastIndex}return s<e.length&&n.push(o(e.slice(s))),n}(t):(0,a.jsx)("span",{className:"text-foreground/85",children:e})})})}function h({block:e}){let t=e.rows??[];if(0===t.length)return null;let[n,...s]=t,o=e.align??[],i=e=>"center"===o[e]?"text-center":"right"===o[e]?"text-right":"text-left";return(0,a.jsx)("div",{className:"overflow-x-auto rounded-lg border border-white/10",children:(0,a.jsxs)("table",{className:"w-full border-collapse text-[13px] [overflow-wrap:normal]",children:[(0,a.jsx)("thead",{children:(0,a.jsx)("tr",{className:"border-b border-white/15 bg-white/[0.04]",children:n.map((e,t)=>(0,a.jsx)("th",{className:(0,r.cn)("whitespace-nowrap px-3 py-1.5 font-semibold text-foreground",i(t)),children:(0,a.jsx)(N,{text:e})},t))})}),(0,a.jsx)("tbody",{children:s.map((e,t)=>(0,a.jsx)("tr",{className:"border-b border-white/5 last:border-0",children:e.map((e,t)=>(0,a.jsx)("td",{className:(0,r.cn)("px-3 py-1.5 align-top text-foreground/90",i(t)),children:(0,a.jsx)(N,{text:e})},t))},t))})]})})}let f=["h1","h2","h3","h4"];function g(e){return f.includes(e)}function b(e){let t=f.indexOf(e);return t<0?0:t}function y(e){return`plan-h-${e}`}function v(e){return e.replace(/[`*]/g,"").trim()}function j(e,t,n,s){let o="reading"===n;switch(e.kind){case"h1":return(0,a.jsx)("h1",{id:s,className:o?"scroll-mt-24 text-xl font-semibold tracking-tight text-foreground":"text-base font-semibold text-foreground",children:t});case"h2":return(0,a.jsx)("h2",{id:s,className:o?"mt-6 scroll-mt-24 border-b border-white/10 pb-1 text-lg font-semibold text-foreground":"mt-3 text-sm font-semibold text-muted-foreground",children:t});case"h3":return(0,a.jsx)("h3",{id:s,className:o?"mt-4 scroll-mt-24 text-base font-semibold text-foreground":"mt-2 text-[13px] font-semibold text-foreground",children:t});case"h4":return(0,a.jsx)("h4",{id:s,className:o?"mt-3 scroll-mt-24 text-sm font-semibold text-muted-foreground":"mt-2 text-[13px] font-semibold text-muted-foreground",children:t});case"ul":case"ol":{let n=e.depth??0;return(0,a.jsxs)("div",{className:(0,r.cn)("flex gap-2",o?"text-foreground/95":"text-foreground/90"),style:{marginLeft:`${.75+1.25*n}rem`},children:[(0,a.jsx)("span",{className:"shrink-0 select-none text-muted-foreground tabular-nums",children:"ol"===e.kind?`${e.marker}.`:"•"}),(0,a.jsx)("span",{className:"min-w-0 flex-1",children:t})]})}case"quote":return(0,a.jsx)("blockquote",{className:(0,r.cn)("whitespace-pre-wrap border-l-2 pl-3 italic",o?"border-white/15 text-foreground/80":"border-white/10 text-foreground/75"),children:t});default:return(0,a.jsx)("p",{className:(0,r.cn)("whitespace-pre-wrap",o?"text-foreground/95":"text-foreground/90"),children:t})}}function w({block:e,variant:t}){return"code"===e.kind?(0,a.jsx)(x,{text:e.text}):"table"===e.kind?(0,a.jsx)(h,{block:e}):(0,a.jsx)(a.Fragment,{children:j(e,(0,a.jsx)(N,{text:e.text}),t)})}function N({text:e}){let t=e.split(/(`[^`]+`|\*\*[\s\S]+?\*\*|\*[^*]+\*)/g);return(0,a.jsx)(a.Fragment,{children:t.map((e,t)=>/^`[^`]+`$/.test(e)?(0,a.jsx)("code",{className:"rounded bg-white/5 px-1 font-mono text-[12px]",children:e.slice(1,-1)},t):/^\*\*[\s\S]+\*\*$/.test(e)?(0,a.jsx)("strong",{className:"font-semibold text-foreground",children:(0,a.jsx)(N,{text:e.slice(2,-2)})},t):/^\*[^*]+\*$/.test(e)?(0,a.jsx)("em",{className:"text-muted-foreground",children:(0,a.jsx)(N,{text:e.slice(1,-1)})},t):(0,a.jsx)("span",{children:e},t))})}},62311:(e,t,n)=>{n.d(t,{Z:()=>m});var a=n(95155),s=n(98500),r=n.n(s),o=n(25640),i=n(83599),l=n(94192),d=n(34306),c=n(91337);let u={ROADMAP:o.A,ARCHITECTURE:i.A,FILES:l.A,DATABASE:d.A};function m({tabs:e,active:t}){return(0,a.jsx)("div",{className:"flex items-center gap-0.5",children:e.map(e=>{let n=e.value===t,s=e.Icon??u[e.value];return(0,a.jsxs)(r(),{href:e.href,className:(0,c.cn)("flex items-center gap-1.5 rounded-md px-2.5 py-1 text-[12px] font-medium tracking-tight transition-colors",n?"bg-white/10 text-foreground":"text-muted-foreground/80 hover:bg-white/5 hover:text-foreground"),children:[s?(0,a.jsx)(s,{className:"size-3"}):null,(0,a.jsx)("span",{children:e.label})]},e.value)})})}},70521:(e,t,n)=>{n.d(t,{$v:()=>w,EO:()=>b,Lt:()=>x,Rx:()=>N,Zr:()=>k,ck:()=>v,r7:()=>j,tv:()=>h,wd:()=>y});var a=n(95155);n(12115);var s=n(25381),r=n(7121),o=n(51880),i=n(35176),l=n(11248),d=n(82022),c=n(98758),u=n(45362),m=n(91337),p=n(4474);function x({...e}){return(0,a.jsx)(s.V,{"data-slot":"alert-dialog",...e})}function h({...e}){return(0,a.jsx)(r.t,{"data-slot":"alert-dialog-trigger",...e})}function f({...e}){return(0,a.jsx)(o.Z,{"data-slot":"alert-dialog-portal",...e})}function g({className:e,...t}){return(0,a.jsx)(i.X,{"data-slot":"alert-dialog-overlay",className:(0,m.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function b({className:e,size:t="default",...n}){return(0,a.jsxs)(f,{children:[(0,a.jsx)(g,{}),(0,a.jsx)(l.h,{"data-slot":"alert-dialog-content","data-size":t,className:(0,m.cn)("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...n})]})}function y({className:e,...t}){return(0,a.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,m.cn)("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",e),...t})}function v({className:e,...t}){return(0,a.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,m.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",e),...t})}function j({className:e,...t}){return(0,a.jsx)(d.L,{"data-slot":"alert-dialog-title",className:(0,m.cn)("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",e),...t})}function w({className:e,...t}){return(0,a.jsx)(c.r,{"data-slot":"alert-dialog-description",className:(0,m.cn)("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function N({className:e,variant:t,size:n,...s}){return(0,a.jsx)(u.H,{"data-slot":"alert-dialog-action",className:(0,m.cn)(e),render:(0,a.jsx)(p.$,{variant:t,size:n}),...s})}function k({className:e,variant:t="outline",size:n="default",...s}){return(0,a.jsx)(u.H,{"data-slot":"alert-dialog-cancel",className:(0,m.cn)(e),render:(0,a.jsx)(p.$,{variant:t,size:n}),...s})}},70947:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(95155),s=n(81750),r=n(12410),o=n(91337);function i({regions:e,tone:t="neutral",lod:n="full"}){let l=(0,s.Pj)(e=>e.transform[2]);if(0===e.length)return null;let d="far"===n,c=Math.min(150,26/Math.max(l,.05)),u=Math.min(80,13/Math.max(l,.05));return(0,a.jsx)(s.DX,{children:e.map(e=>(0,a.jsx)("div",{style:{position:"absolute",transform:`translate(${e.x}px, ${e.y}px)`,width:e.w,height:e.h,pointerEvents:"none",zIndex:0},className:(0,o.cn)("rounded-2xl border","category"===t?(0,r.x)(e.key):"border-white/[0.08] bg-white/[0.015]",d&&"bg-card/80"),children:d?(0,a.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-[0.3em] px-2",children:[(0,a.jsx)("span",{className:"whitespace-nowrap text-center font-semibold tracking-tight text-foreground",style:{fontSize:Math.min(c,.34*e.h,(e.w-16)/(.74*Math.max(e.label.length,1))),lineHeight:1.1},children:e.label}),(0,a.jsxs)("span",{className:"tabular-nums text-muted-foreground",style:{fontSize:Math.min(u,.18*e.h)},children:[e.count," ",1===e.count?"card":"cards"]})]}):(0,a.jsxs)("div",{className:"flex items-baseline gap-2 px-3 py-1",children:[(0,a.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground/80",children:e.label}),(0,a.jsx)("span",{className:"text-[10px] tabular-nums text-muted-foreground/50",children:e.count})]})},e.key))})}},74350:(e,t,n)=>{n.d(t,{Cf:()=>g,Es:()=>y,L3:()=>v,c7:()=>b,lG:()=>x,rr:()=>j});var a=n(95155);n(12115);var s=n(17112),r=n(51880),o=n(35176),i=n(11248),l=n(45362),d=n(82022),c=n(98758),u=n(91337),m=n(4474),p=n(9005);function x({...e}){return(0,a.jsx)(s.D,{"data-slot":"dialog",...e})}function h({...e}){return(0,a.jsx)(r.Z,{"data-slot":"dialog-portal",...e})}function f({className:e,...t}){return(0,a.jsx)(o.X,{"data-slot":"dialog-overlay",className:(0,u.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function g({className:e,children:t,showCloseButton:n=!0,...s}){return(0,a.jsxs)(h,{children:[(0,a.jsx)(f,{}),(0,a.jsxs)(i.h,{"data-slot":"dialog-content",className:(0,u.cn)("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...s,children:[t,n&&(0,a.jsxs)(l.H,{"data-slot":"dialog-close",render:(0,a.jsx)(m.$,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,a.jsx)(p.A,{}),(0,a.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function b({className:e,...t}){return(0,a.jsx)("div",{"data-slot":"dialog-header",className:(0,u.cn)("flex flex-col gap-2",e),...t})}function y({className:e,showCloseButton:t=!1,children:n,...s}){return(0,a.jsxs)("div",{"data-slot":"dialog-footer",className:(0,u.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),...s,children:[n,t&&(0,a.jsx)(l.H,{render:(0,a.jsx)(m.$,{variant:"outline"}),children:"Close"})]})}function v({className:e,...t}){return(0,a.jsx)(d.L,{"data-slot":"dialog-title",className:(0,u.cn)("font-heading text-base leading-none font-medium",e),...t})}function j({className:e,...t}){return(0,a.jsx)(c.r,{"data-slot":"dialog-description",className:(0,u.cn)("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}},82099:(e,t,n)=>{n.d(t,{b:()=>r});var a=n(95155);n(12115);var s=n(91337);function r({className:e,children:t,...n}){return(0,a.jsxs)("div",{className:(0,s.cn)("glass relative isolate overflow-hidden",e),...n,children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 -z-10 rounded-[inherit]",style:{background:"radial-gradient(90% 60% at 0% 0%, oklch(1 0 0 / 0.04), transparent 42%)"}}),(0,a.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 -z-10 rounded-[inherit] opacity-[0.035] mix-blend-overlay",style:{backgroundImage:"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E\")",backgroundSize:"120px 120px"}}),t]})}},89657:(e,t,n)=>{n.d(t,{J:()=>o,k:()=>r});var a=n(12115),s=n(81750);function r(){let[e,t]=(0,a.useState)("full"),n=(0,s.Pj)(t=>(function(e,t="full"){return e<.3||"far"===t&&e<.34?"far":e<.55||"mid"===t&&e<.6?"mid":"full"})(t.transform[2],e));return n!==e&&t(n),n}function o({onLod:e}){let t=r(),n=(0,a.useRef)(null);return(0,a.useEffect)(()=>{n.current!==t&&(n.current=t,e(t))},[t,e]),null}},91337:(e,t,n)=>{n.d(t,{cn:()=>r});var a=n(29722),s=n(622);function r(...e){return(0,s.QP)((0,a.$)(e))}},91588:(e,t,n)=>{n.d(t,{DbMapClient:()=>el});var a=n(95155),s=n(12115),r=n(73321),o=n(81750),i=n(6266);n(53255);var l=n(32133),d=n(81499),c=n(51128),u=n(65738),m=n(9005),p=n(2125),x=n(91337),h=n(18874);let f=(0,s.createContext)(null);function g(){let e=(0,s.useContext)(f);if(!e)throw Error("useDbEdit must be used inside DbEditContext");return e}var b=n(89657),y=n(95635),v=n(17918);let j={danger:"bg-red-500/15 text-red-300",warn:"bg-amber-500/15 text-amber-300"};function w({badges:e,className:t}){return e.length?(0,a.jsx)("span",{className:(0,x.cn)("flex shrink-0 items-center gap-0.5",t),children:e.map(e=>(0,a.jsx)("span",{title:e.title,className:(0,x.cn)("rounded px-1 text-[8px] font-semibold uppercase tracking-wide",j[e.tone]),children:e.label},e.label))}):null}let N=/pass(word)?|token|secret|api[_-]?key|credential|priv(ate)?[_-]?key|hash|salt/i,k=/auth|login|logout|session|token|password|oauth|sso|credential/i,C="nodrag nopan",E=y.x;function S({onClick:e,title:t}){return(0,a.jsx)("button",{type:"button",title:t,onClick:t=>{t.stopPropagation(),e()},className:(0,x.cn)(C,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover/row:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,a.jsx)(l.A,{className:"size-3"})})}function A({c:e,fkTargets:t}){let n=t?.[e.name];return(0,a.jsx)("span",{className:"ml-auto shrink-0 truncate font-mono text-[11px] text-muted-foreground/80",children:n?(0,a.jsxs)(a.Fragment,{children:["→\xa0",n]}):e.type})}let I="nodrag nopan",T=["GET","POST","PUT","PATCH","DELETE"];var z=n(54698),M=n(82099),D=n(4474);let R=[{id:"claude",label:"Prompt p/ Claude Code",fn:function(e){let t=["Implement this database schema in this project, following its existing stack and conventions:",""];for(let n of e.tables){let e=`Table \`${n.name}\``+(n.domain?` (domain: ${n.domain})`:"")+(n.description?` — ${n.description}`:"");for(let a of(t.push(e),n.columns)){let e=[a.isPk&&"PK",a.isFk&&"FK",!1===a.nullable&&"NOT NULL"].filter(Boolean).join(", ");t.push(` - ${a.name}: ${a.type}`+(e?` [${e}]`:"")+(a.note?` — ${a.note}`:""))}t.push("")}if(e.relations.length){for(let n of(t.push("Foreign keys:"),e.relations))t.push(` - ${n.fromTable}.${n.fromColumn} -> ${n.toTable}.${n.toColumn}`);t.push("")}return t.push("Create the models/migrations using the project's existing ORM and patterns, wire the relationships, and keep table and column names exactly as given."),t.join("\n")}},{id:"dbml",label:"DBML",fn:function(e){let t=[];for(let n of e.tables){for(let e of(t.push(`Table ${n.name} {`),n.columns)){let n=[e.isPk&&"pk",!1===e.nullable&&!e.isPk&&"not null",e.note&&`note: '${e.note.replace(/'/g,"")}'`].filter(Boolean).join(", ");t.push(` ${e.name} ${e.type}`+(n?` [${n}]`:""))}t.push("}","")}for(let n of e.relations)t.push(`Ref: ${n.fromTable}.${n.fromColumn} > ${n.toTable}.${n.toColumn}`);return t.join("\n").trim()}},{id:"sql",label:"SQL DDL",fn:function(e){let t=[];for(let n of e.tables){t.push(`CREATE TABLE ${n.name} (`);let a=n.columns.map(e=>{let t=[` ${e.name} ${e.type}`];return e.isPk?t.push("PRIMARY KEY"):!1===e.nullable&&t.push("NOT NULL"),t.join(" ")}),s=e.relations.filter(e=>e.fromTable===n.name).map(e=>` FOREIGN KEY (${e.fromColumn}) REFERENCES ${e.toTable}(${e.toColumn})`);t.push([...a,...s].join(",\n")),t.push(");","")}return t.join("\n").trim()}}];function $({draftGraph:e}){let[t,n]=(0,s.useState)(null);if(0===e.tables.length)return null;async function r(t){await navigator.clipboard.writeText(t.fn(e)).catch(()=>{}),n(t.id),setTimeout(()=>n(null),1500)}return(0,a.jsxs)("div",{className:"space-y-2 rounded-xl border border-sky-400/20 bg-sky-500/[0.04] p-3",children:[(0,a.jsxs)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-sky-300",children:["Rascunho \xb7 ",e.tables.length," tabelas"]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,a.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:"copiar:"}),R.map(e=>(0,a.jsx)(D.$,{size:"sm",variant:"outline",className:"h-6 px-2 text-[11px]",onClick:()=>r(e),children:t===e.id?"✓":e.label},e.id))]})]})}function P({selected:e,tables:t,relations:n,endpoints:s,draftGraph:r,onClose:o,commentsContent:i,commentsCount:d=0,activeTab:c,onTabChange:u,onAddComment:p,topOffset:x}){let h,f,g=new Map(t.map(e=>[e.id,e.name])),b=!!i,y=c??"details",v=e?.kind==="table"?t.find(t=>t.id===e.id)?.name??null:e?.kind==="endpoint"&&(f=s.find(t=>t.id===e.id))?`${f.method} ${f.path}`:null;if(e?.kind==="table"){let r=t.find(t=>t.id===e.id);h=r?(0,a.jsx)(F,{table:r,relations:n,endpoints:s,nameById:g}):null}else if(e?.kind==="endpoint"){let t=s.find(t=>t.id===e.id);h=t?(0,a.jsx)(L,{ep:t,nameById:g}):null}else h=(0,a.jsx)(_,{tables:t,relations:n,endpoints:s});return(0,a.jsxs)(M.b,{className:"absolute bottom-3 right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:x??12},children:[b?(0,a.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-1 py-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,a.jsx)(O,{active:"details"===y,onClick:()=>u?.("details"),children:"Details"}),(0,a.jsxs)(O,{active:"comments"===y,onClick:()=>u?.("comments"),children:["Comments",d>0&&(0,a.jsx)("span",{className:"ml-1 rounded-full bg-white/10 px-1 text-[9px] font-semibold leading-4",children:d})]})]}),(0,a.jsx)("button",{onClick:o,title:"Close panel",className:"mr-1 rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,a.jsx)(m.A,{className:"size-4"})})]}):(0,a.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,a.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Panel"}),(0,a.jsx)("button",{onClick:o,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,a.jsx)(m.A,{className:"size-4"})})]}),(0,a.jsx)("div",{className:"flex-1 overflow-y-auto",children:"comments"===y&&b?(0,a.jsx)("div",{className:"p-3",children:i}):(0,a.jsxs)(a.Fragment,{children:[r.tables.length>0&&(0,a.jsx)("div",{className:"border-b border-white/10 p-3.5",children:(0,a.jsx)($,{draftGraph:r})}),(0,a.jsxs)("div",{className:"p-4",children:[p&&v&&(0,a.jsxs)("button",{type:"button",onClick:()=>p(v),className:"mb-3 flex w-full items-center justify-center gap-1.5 rounded-lg border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,a.jsx)(l.A,{className:"size-3.5"}),"Comment on this ",e?.kind==="endpoint"?"endpoint":"table"]}),h]})]})})]})}function O({active:e,onClick:t,children:n}){return(0,a.jsx)("button",{type:"button",onClick:t,className:(0,x.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",e?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:n})}function F({table:e,relations:t,endpoints:n,nameById:s}){let r=t.filter(t=>t.fromTableId===e.id),o=t.filter(t=>t.toTableId===e.id),i=n.map(t=>({e:t,u:t.tables.find(t=>t.tableId===e.id)})).filter(e=>e.u);return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-xs uppercase tracking-wide",style:{color:(0,h.qA)(e.domain)},children:e.domain??"table"}),(0,a.jsx)("h2",{className:"font-mono text-lg font-semibold",children:e.name}),e.description&&(0,a.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:e.description})]}),(0,a.jsx)(B,{title:`Columns (${e.columns.length})`,children:(0,a.jsx)("ul",{className:"space-y-0.5",children:e.columns.map(e=>(0,a.jsxs)("li",{className:"flex items-center gap-1.5 text-xs",children:[e.isPk?(0,a.jsx)(d.A,{className:"size-3 text-amber-400"}):e.isFk?(0,a.jsx)(c.A,{className:"size-3 text-sky-400"}):(0,a.jsx)("span",{className:"size-3"}),(0,a.jsx)("span",{className:"font-mono",children:e.name}),(0,a.jsxs)("span",{className:"ml-auto font-mono text-[10px] text-muted-foreground",children:[e.type,!e.nullable&&" \xb7NN"]})]},e.name))})}),r.length>0&&(0,a.jsx)(B,{title:"References (FK out)",children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:r.map(e=>(0,a.jsxs)("li",{className:"font-mono text-muted-foreground",children:[e.fromColumn," → ",s.get(e.toTableId),".",e.toColumn]},e.id))})}),o.length>0&&(0,a.jsx)(B,{title:"Referenced by (FK in)",children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:o.map(e=>(0,a.jsxs)("li",{className:"font-mono text-muted-foreground",children:[s.get(e.fromTableId),".",e.fromColumn]},e.id))})}),i.length>0&&(0,a.jsx)(B,{title:`Used by endpoints (${i.length})`,children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:i.map(({e,u:t})=>(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{style:{color:h.e6[e.method]},className:"font-bold",children:e.method}),(0,a.jsx)("span",{className:"truncate font-mono",children:e.path}),(0,a.jsx)("span",{className:"ml-auto",style:{color:h.ru[t.access]},children:t.access})]},e.id))})})]})}function L({ep:e,nameById:t}){return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[11px] font-bold",style:{background:`${h.e6[e.method]}22`,color:h.e6[e.method]},children:e.method}),(0,a.jsx)("h2",{className:"mt-2 font-mono text-base font-semibold",children:e.path}),e.description&&(0,a.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:e.description})]}),(0,a.jsx)(B,{title:`Tables used (${e.tables.length})`,children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:e.tables.map(e=>(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"font-mono",children:t.get(e.tableId)}),(0,a.jsx)("span",{className:"ml-auto",style:{color:h.ru[e.access]},children:e.access})]},e.tableId))})})]})}function _({tables:e,relations:t,endpoints:n}){return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-sm font-semibold",children:"Database"}),(0,a.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Live schema derived from your code. Click a table or endpoint to see details. Drag to rearrange — positions are saved."})]}),(0,a.jsxs)("dl",{className:"grid grid-cols-3 gap-2 text-center",children:[(0,a.jsx)(H,{label:"tables",value:e.length}),(0,a.jsx)(H,{label:"FKs",value:t.length}),(0,a.jsx)(H,{label:"endpoints",value:n.length})]}),(0,a.jsx)(B,{title:"Legend",children:(0,a.jsxs)("ul",{className:"space-y-1 text-xs text-muted-foreground",children:[(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)(d.A,{className:"size-3 text-amber-400"})," primary key"]}),(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)(c.A,{className:"size-3 text-sky-400"})," foreign key"]}),(0,a.jsx)("li",{children:"— gray line: FK relation between tables"}),(0,a.jsx)("li",{children:"– – dashed line: endpoint uses table (read/write)"})]})})]})}function B({title:e,children:t}){return(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:e}),t]})}function H({label:e,value:t}){return(0,a.jsxs)("div",{className:"rounded-lg border border-white/10 bg-white/[0.03] py-2",children:[(0,a.jsx)("div",{className:"text-lg font-semibold",children:t}),(0,a.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:e})]})}var U=n(56614),K=n(62311);let G=new Set(["GET","HEAD","OPTIONS"]);var X=n(44267);let W="Unattached";var Z=n(70947);let J=e=>e.trim().toLowerCase();var Y=n(85618),q=n(80846),V=n(17356),Q=n(45486),ee=n(15330),et=n(60976),en=n(64577),ea=n(57144);let es={dbTable:function({id:e,data:t,selected:n}){var r;let o,i,l="DRAFT"===t.source,f="added"===t.diffStatus?"#7bd389":"modified"===t.diffStatus?"#ffb86b":"#4ea1ff",j="added"===t.diffStatus?"new":"modified"===t.diffStatus?"changed":"draft",k=t.diffChanges?.length?t.diffChanges.join("\n"):"draft",I=l?f:(0,h.qA)(t.domain),T=(r={domain:t.domain,columns:t.columns},o=[],(i=r.columns.filter(e=>N.test(e.name)).map(e=>e.name)).length&&o.push({label:"secrets",tone:"danger",title:`stores credentials: ${i.join(", ")}`}),r.domain&&/auth/i.test(r.domain)&&o.push({label:"auth",tone:"warn",title:"auth-domain table"}),o),z=g(),[M,D]=(0,s.useState)(t.name),[R,$]=(0,s.useState)(t.columns),[P,O]=(0,s.useState)(!1);(0,s.useEffect)(()=>{D(t.name),$(t.columns)},[t.rev]);let F=e=>e.stopPropagation(),L=t=>{$(t),z.patchTable(e,{columns:t})},_=(t.pins??[]).filter(e=>null===e.column),B=e=>(t.pins??[]).filter(t=>t.column===e),H=(0,x.cn)("relative rounded-xl border bg-[#161618]/95 text-card-foreground shadow-[0_18px_50px_-22px_rgba(0,0,0,0.9)] backdrop-blur",n&&"ring-2 ring-[var(--accent,#f5b942)]"),U=(0,b.k)();return"full"!==U?(0,a.jsxs)("div",{className:(0,x.cn)(H,"w-[260px] border-white/10 px-3 py-2.5","far"===U&&"!opacity-0"),children:[(0,a.jsx)(y.x,{}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"inline-block size-2 shrink-0 rounded-full",style:{background:I}}),(0,a.jsx)("span",{className:"truncate font-mono text-[15px] font-semibold",children:t.name})]})]}):l?(0,a.jsxs)("div",{className:(0,x.cn)(H,"group/card w-[252px]"),style:{borderColor:`${f}59`},children:[(0,a.jsx)(E,{}),(0,a.jsxs)("div",{className:"group/row relative flex items-center gap-1.5 rounded-t-[11px] px-3 py-2",style:{background:`${f}14`},children:[(0,a.jsx)("input",{value:M,onChange:e=>D(e.target.value),onBlur:()=>{let n=M.trim();n&&n!==t.name&&z.patchTable(e,{name:n})},onKeyDown:e=>{F(e),"Enter"===e.key&&e.currentTarget.blur()},placeholder:"table",className:(0,x.cn)(C,"min-w-0 flex-1 bg-transparent font-mono text-[13px] font-semibold tracking-tight outline-none")}),(0,a.jsx)(w,{badges:T}),(0,a.jsx)("span",{title:k,className:"shrink-0 rounded-md border px-1.5 py-px font-mono text-[9px] font-semibold uppercase tracking-[0.14em]",style:{background:`${f}1f`,borderColor:`${f}55`,color:f},children:j}),(0,a.jsx)("button",{type:"button",onClick:t=>{F(t),P?z.deleteTable(e):O(!0)},onBlur:()=>O(!1),title:"Delete table",className:(0,x.cn)(C,"shrink-0 transition-all",P?"text-red-300":"text-muted-foreground opacity-0 hover:text-red-300 group-hover/card:opacity-100"),children:(0,a.jsx)(u.A,{className:"size-3"})}),_.length>0?(0,a.jsx)(v.e0,{pins:_,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(S,{title:`Comment on ${t.name}`,onClick:()=>t.onComment?.(t.name)})]}),(0,a.jsxs)("div",{className:"divide-y divide-white/[0.05]",children:[R.map((e,n)=>{let s=B(e.name);return(0,a.jsxs)("div",{className:"group/row relative flex items-center gap-1.5 px-3 py-[5px] text-[12px]",children:[(0,a.jsx)("button",{type:"button",onClick:e=>{F(e),L(R.map((e,t)=>t===n?{...e,isPk:!e.isPk}:e))},title:"Primary key",className:(0,x.cn)(C,"shrink-0",e.isPk?"text-amber-300/90":"text-muted-foreground/40 hover:text-amber-300"),children:(0,a.jsx)(d.A,{className:"size-3"})}),(0,a.jsx)("button",{type:"button",onClick:e=>{F(e),L(R.map((e,t)=>t===n?{...e,isFk:!e.isFk}:e))},title:"Foreign key",className:(0,x.cn)(C,"shrink-0",e.isFk?"text-sky-400/80":"text-muted-foreground/40 hover:text-sky-400"),children:(0,a.jsx)(c.A,{className:"size-3"})}),(0,a.jsx)("input",{value:e.name,onChange:e=>$(t=>t.map((t,a)=>a===n?{...t,name:e.target.value}:t)),onBlur:()=>L(R),onKeyDown:F,placeholder:"column",className:(0,x.cn)(C,"min-w-0 flex-1 bg-transparent font-mono outline-none")}),t.fkTargets?.[e.name]?(0,a.jsxs)("span",{className:"w-16 shrink-0 truncate text-right font-mono text-[11px] text-muted-foreground/80",children:["→\xa0",t.fkTargets[e.name]]}):(0,a.jsx)("input",{value:e.type,onChange:e=>$(t=>t.map((t,a)=>a===n?{...t,type:e.target.value}:t)),onBlur:()=>L(R),onKeyDown:F,placeholder:"type",className:(0,x.cn)(C,"w-16 shrink-0 bg-transparent text-right font-mono text-[11px] text-muted-foreground/80 outline-none")}),(0,a.jsx)("button",{type:"button",onClick:e=>{F(e),L(R.filter((e,t)=>t!==n))},title:"Remove column",className:(0,x.cn)(C,"shrink-0 text-muted-foreground/40 opacity-0 transition-opacity hover:text-red-300 group-hover/card:opacity-100"),children:(0,a.jsx)(m.A,{className:"size-3"})}),s.length>0?(0,a.jsx)(v.e0,{pins:s,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(S,{title:`Comment on ${t.name}.${e.name}`,onClick:()=>t.onComment?.(`${t.name}.${e.name}`)})]},n)}),(0,a.jsxs)("button",{type:"button",onClick:e=>{F(e),L([...R,{name:"",type:"text",isPk:!1,isFk:!1,nullable:!0,note:null}])},className:(0,x.cn)(C,"flex w-full items-center gap-1 px-3 py-1.5 text-[10px] text-muted-foreground hover:text-foreground"),children:[(0,a.jsx)(p.A,{className:"size-3"})," column"]})]})]}):(0,a.jsxs)("div",{className:(0,x.cn)(H,"w-[240px]"),style:{borderColor:`${I}3d`},children:[(0,a.jsx)(E,{}),(0,a.jsxs)("div",{className:"group/row relative flex items-center justify-between rounded-t-[11px] px-3 py-2",style:{background:`${I}14`},children:[(0,a.jsxs)("span",{className:"flex items-center gap-1.5 font-mono text-[13px] font-semibold tracking-tight",children:["INTROSPECTION"===t.source&&(0,a.jsx)("span",{title:"live — derived from your code",className:"inline-block size-1.5 rounded-full bg-emerald-400"}),t.name]}),(0,a.jsxs)("span",{className:"flex items-center gap-1.5",children:["INTROSPECTION"!==t.source&&(0,a.jsx)("span",{title:"planned — not yet detected in code",className:"shrink-0 rounded-md border border-[#f5b942]/35 bg-[#f5b942]/10 px-1.5 py-px font-mono text-[9px] font-semibold uppercase tracking-[0.14em] text-[#f5b942]",children:"planned"}),(0,a.jsx)(w,{badges:T}),t.domain&&(0,a.jsx)("span",{className:"text-[9px] uppercase tracking-[0.14em]",style:{color:I},children:t.domain})]}),_.length>0?(0,a.jsx)(v.e0,{pins:_,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(S,{title:`Comment on ${t.name}`,onClick:()=>t.onComment?.(t.name)})]}),(0,a.jsx)("div",{className:"divide-y divide-white/[0.05]",children:t.columns.map(e=>{let n=B(e.name);return(0,a.jsxs)("div",{className:"group/row relative flex items-center gap-2 px-3 py-[7px] text-[12px]",children:[e.isPk?(0,a.jsx)(d.A,{className:"size-3 shrink-0 text-amber-300/90"}):e.isFk?(0,a.jsx)(c.A,{className:"size-3 shrink-0 text-sky-400/80"}):(0,a.jsx)("span",{className:"size-3 shrink-0"}),(0,a.jsx)("span",{className:"truncate font-mono",children:e.name}),(0,a.jsx)(A,{c:e,fkTargets:t.fkTargets}),n.length>0?(0,a.jsx)(v.e0,{pins:n,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(S,{title:`Comment on ${t.name}.${e.name}`,onClick:()=>t.onComment?.(`${t.name}.${e.name}`)})]},e.name)})})]})},endpoint:function({id:e,data:t,selected:n}){var r;let o,i=h.e6[t.method]??"#8a8a8a",d="DRAFT"===t.source,c="added"===t.diffStatus?"#7bd389":"modified"===t.diffStatus?"#ffb86b":"#4ea1ff",m="added"===t.diffStatus?"new":"modified"===t.diffStatus?"changed":"draft",p=t.diffChanges?.length?t.diffChanges.join("\n"):"draft",f=(r={method:t.method,domain:t.domain,path:t.path},o=[],/^delete$/i.test(r.method.trim())&&o.push({label:"DELETE",tone:"danger",title:"destructive: deletes data"}),(r.domain&&/auth/i.test(r.domain)||k.test(r.path))&&o.push({label:"auth",tone:"warn",title:"auth-related endpoint"}),o),j=g(),[N,C]=(0,s.useState)(t.path),[E,S]=(0,s.useState)(!1);(0,s.useEffect)(()=>{C(t.path)},[t.rev]);let A=e=>e.stopPropagation(),z=(0,b.k)();return"full"!==z?(0,a.jsxs)("div",{className:(0,x.cn)("relative flex w-[240px] items-center gap-2 rounded-lg border border-white/10 bg-[#161618]/95 px-2.5 py-2 text-card-foreground backdrop-blur",n&&"ring-2 ring-[var(--accent,#f5b942)]","far"===z&&"!opacity-0"),children:[(0,a.jsx)(y.x,{}),(0,a.jsx)("span",{className:"shrink-0 font-mono text-[12px] font-bold",style:{color:i},children:t.method}),(0,a.jsx)("span",{className:"truncate font-mono text-[13px]",children:t.path})]}):(0,a.jsxs)("div",{className:(0,x.cn)("group relative flex w-[240px] items-center gap-2 rounded-lg border bg-[#161618]/95 px-2.5 py-1.5 text-card-foreground shadow-[0_12px_36px_-18px_rgba(0,0,0,0.9)] backdrop-blur",d?"border-dashed":"border-white/10",n&&"ring-2 ring-[var(--accent,#f5b942)]"),style:d?{borderColor:`${c}66`,background:`${c}0f`}:void 0,children:[(0,a.jsx)(y.x,{}),"INTROSPECTION"===t.source&&(0,a.jsx)("span",{title:"live — derived from your code",className:"inline-block size-1.5 shrink-0 rounded-full bg-emerald-400"}),d?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("select",{value:t.method,onChange:t=>j.patchEndpoint(e,{method:t.target.value}),onPointerDown:A,className:(0,x.cn)(I,"shrink-0 rounded bg-transparent text-[10px] font-bold outline-none"),style:{color:i},title:"Method",children:T.map(e=>(0,a.jsx)("option",{value:e,className:"bg-card text-foreground",children:e},e))}),(0,a.jsx)("input",{value:N,onChange:e=>C(e.target.value),onBlur:()=>{let n=N.trim();n&&n!==t.path&&j.patchEndpoint(e,{path:n})},onKeyDown:e=>{A(e),"Enter"===e.key&&e.currentTarget.blur()},className:(0,x.cn)(I,"min-w-0 flex-1 bg-transparent font-mono text-[11px] outline-none")}),(0,a.jsx)(w,{badges:f}),(0,a.jsx)("span",{title:p,className:"shrink-0 rounded px-1 py-0.5 text-[8px] font-semibold uppercase",style:{background:`${c}26`,color:c},children:m}),(0,a.jsx)("button",{type:"button",onClick:t=>{A(t),E?j.deleteEndpoint(e):S(!0)},onBlur:()=>S(!1),title:"Delete",className:(0,x.cn)(I,"shrink-0 transition-colors",E?"text-red-300":"text-muted-foreground hover:text-red-300"),children:(0,a.jsx)(u.A,{className:"size-3"})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[10px] font-bold",style:{background:`${i}22`,color:i},children:t.method}),(0,a.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[11px]",children:t.path}),"INTROSPECTION"!==t.source&&(0,a.jsx)("span",{title:"planned — not yet detected in code",className:"shrink-0 rounded-md border border-[#f5b942]/35 bg-[#f5b942]/10 px-1.5 py-px font-mono text-[8px] font-semibold uppercase tracking-[0.14em] text-[#f5b942]",children:"planned"}),(0,a.jsx)(w,{badges:f}),(0,a.jsx)("button",{type:"button",onClick:t=>{A(t),E?j.deleteRealEndpoint(e):S(!0)},onBlur:()=>S(!1),title:E?"Click again to delete":"Delete endpoint",className:(0,x.cn)(I,"shrink-0 opacity-0 transition-opacity group-hover:opacity-100",E?"text-red-300 opacity-100":"text-muted-foreground hover:text-red-300"),children:(0,a.jsx)(u.A,{className:"size-3"})})]}),(t.pins?.length??0)>0?(0,a.jsx)(v.e0,{pins:t.pins,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)("button",{type:"button",title:`Comment on ${t.method} ${t.path}`,onClick:e=>{A(e),t.onComment?.(`${t.method} ${t.path}`)},className:(0,x.cn)(I,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,a.jsx)(l.A,{className:"size-3"})})]})},annotation:v.Sh},er={deletable:ea.I},eo="beacon:db-draft",ei={proposedAt:0,status:"pending",tables:[],relations:[],endpoints:[]};function el({tables:e,relations:t,endpoints:n,draft:l,workspaceId:d,embedded:c=!1,draftRef:m,onEdit:p,controlRef:g,commentsContent:y,commentsCount:j=0,onAddComment:w,annotations:N,onPinClick:k,onUpdateComment:C,onRemoveComment:E,boardAnnotations:S}){let A=(0,r.useRouter)(),[I,T]=(0,s.useState)(!0),[M,D]=(0,s.useState)(null),[R,$]=(0,s.useState)(null),[O,F]=(0,s.useState)(null),[L,_]=(0,s.useState)(!1),[B,H]=(0,s.useState)("details"),[ea,ed]=(0,s.useState)(!1);(0,s.useEffect)(()=>{if(g)return g.current={open:()=>{_(!0),H("details")},close:()=>{_(!1),H("details")},openComments:()=>{_(!0),H("comments")}},()=>{g&&(g.current=null)}},[g]);let[ec,eu]=(0,s.useState)(new Set),[em,ep]=(0,s.useState)("full"),[ex,eh]=(0,s.useState)(new Set),[ef,eg]=(0,s.useState)(new Set),[eb,ey]=(0,s.useState)(()=>({past:[],present:l??ei,future:[],rev:0,edited:!1})),ev=eb.present,ej=(0,s.useCallback)(e=>{ey(t=>{let n=e(t.present);return n===t.present?t:{past:[...t.past,t.present].slice(-100),present:n,future:[],rev:t.rev+1,edited:!0}})},[]),ew=(0,s.useCallback)(e=>{ey(t=>{let n=e(t.present);return n===t.present?t:{...t,present:n}})},[]),eN=(0,s.useCallback)(()=>ey(e=>e.past.length?{past:e.past.slice(0,-1),present:e.past[e.past.length-1],future:[e.present,...e.future],rev:e.rev+1,edited:!0}:e),[]),ek=(0,s.useCallback)(()=>ey(e=>e.future.length?{past:[...e.past,e.present],present:e.future[0],future:e.future.slice(1),rev:e.rev+1,edited:!0}:e),[]),eC=(0,s.useCallback)(e=>ey(t=>({past:[],present:e,future:[],rev:t.rev+1,edited:!1})),[]),eE=(0,s.useRef)(!1),eS=l?.proposedAt??0;(0,s.useEffect)(()=>{let e=null;if(eE.current)l&&l.proposedAt!==ev.proposedAt?e=l:!l&&(ev.tables.length>0||ev.endpoints.length>0)&&(e=ei);else{eE.current=!0;let t=null;try{let e=localStorage.getItem(eo);if(e){let n=JSON.parse(e);n.workspaceId===d&&n.doc&&l&&n.doc.proposedAt===l.proposedAt&&(t=n.doc)}}catch{}e=t??l??null}e&&eC(e)},[eS]),(0,s.useEffect)(()=>{try{ev.tables.length>0||ev.endpoints.length>0?localStorage.setItem(eo,JSON.stringify({workspaceId:d,doc:ev})):localStorage.removeItem(eo)}catch{}},[ev,d]),(0,s.useEffect)(()=>{m&&(m.current=ev)},[m,ev]);let eA=(0,s.useRef)(!1);(0,s.useEffect)(()=>{eb.edited&&!eA.current&&(eA.current=!0,p?.())},[eb.edited,p]);let eI=(0,s.useMemo)(()=>ev.tables.map(e=>({id:e.id,name:e.name,domain:e.domain,description:e.description,source:"DRAFT",x:e.x,y:e.y,columns:e.columns})),[ev]),eT=(0,s.useMemo)(()=>ev.endpoints.map(e=>({id:e.id,method:e.method,path:e.path,domain:e.domain,description:e.description,source:"DRAFT",x:e.x,y:e.y,tables:e.links.map(e=>({tableId:e.tableId,access:e.access}))})),[ev]),ez=(0,s.useMemo)(()=>[...e,...eI],[e,eI]),eM=(0,s.useMemo)(()=>[...n,...eT],[n,eT]),eD=(0,s.useMemo)(()=>new Map,[]),eR=(0,s.useMemo)(()=>c?function(e,t){let n=new Map(e.map(e=>[J(e.name),e])),a=new Map;for(let e of t){let t=n.get(J(e.name));if(!t){a.set(e.id,{status:"added",changes:["new table"]});continue}let s=function(e,t){let n=new Map(e.map(e=>[J(e.name),e])),a=new Set(t.map(e=>J(e.name))),s=[];for(let e of t){let t=n.get(J(e.name));if(!t){s.push(`+ column ${e.name} (${e.type})`);continue}let a=[];J(t.type)!==J(e.type)&&a.push(`type ${t.type}→${e.type}`),t.isPk!==e.isPk&&a.push(e.isPk?"now PK":"no longer PK"),t.isFk!==e.isFk&&a.push(e.isFk?"now FK":"no longer FK"),t.nullable!==e.nullable&&a.push(e.nullable?"now nullable":"now required"),a.length&&s.push(`~ column ${e.name}: ${a.join(", ")}`)}for(let t of e)a.has(J(t.name))||s.push(`- column ${t.name}`);return s}(t.columns,e.columns);a.set(e.id,{status:s.length?"modified":"unchanged",changes:s})}return a}(e,eI):eD,[c,e,eI,eD]),e$=(0,s.useMemo)(()=>c?function(e,t){let n=e=>`${J(e.method)} ${J(e.path)}`,a=new Set(e.map(n)),s=new Map;for(let e of t)s.set(e.id,a.has(n(e))?{status:"unchanged",changes:[]}:{status:"added",changes:["new endpoint"]});return s}(n,eT):eD,[c,n,eT,eD]),eP=(0,s.useMemo)(()=>[...t,...ev.relations.map(e=>({id:e.id,fromTableId:e.fromTableId,toTableId:e.toTableId,fromColumn:e.fromColumn,toColumn:e.toColumn,label:e.label}))],[t,ev.relations]),eO=(0,s.useMemo)(()=>{let e=new Map;for(let t of eM)for(let n of t.tables)e.set(n.tableId,(e.get(n.tableId)??0)+1);return e},[eM]),eF=(0,s.useMemo)(()=>{let e=new Map;return ez.forEach(t=>e.set(t.id,t.x)),eM.forEach(t=>e.set(t.id,t.x)),e},[ez,eM]),eL=(0,s.useMemo)(()=>{let e=new Map(ez.map(e=>[e.id,e.name])),t=new Map;for(let n of eP){let a=e.get(n.toTableId);if(!a)continue;let s=t.get(n.fromTableId)??{};s[n.fromColumn]=a,t.set(n.fromTableId,s)}return t},[eP,ez]),e_=void 0!==S,[eB,eH]=(0,s.useState)(S??[]);(0,s.useEffect)(()=>{S&&eH(S)},[S]);let eU=(0,s.useMemo)(()=>({tables:ez.map(e=>({id:e.id,name:e.name,columns:e.columns.map(e=>e.name)})),endpoints:eM.map(e=>({id:e.id,method:e.method,path:e.path}))}),[ez,eM]),eK=(0,s.useMemo)(()=>{if(e_){let e=new Set([...ez.map(e=>e.id),...eM.map(e=>e.id)]);return eB.filter(t=>e.has(t.targetId)).map((e,t)=>({id:e.id,n:t+1,targetId:e.targetId,column:e.columnName,text:e.body,x:e.x,y:e.y}))}let e=new Map((N??[]).map(e=>[e.id,e.comment]));return(0,z.m)(N??[],eU).map(t=>({id:t.annotationId,n:t.n,targetId:t.targetId,column:t.column,text:e.get(t.annotationId)??"",x:null,y:null}))},[e_,eB,N,eU,ez,eM]),eG=(0,s.useMemo)(()=>{let e=new Map;for(let t of eK){let n=e.get(t.targetId)??[];n.push({id:t.id,n:t.n,column:t.column}),e.set(t.targetId,n)}return e},[eK]),eX=(0,s.useMemo)(()=>new Map(eK.map(e=>[`anno-${e.id}`,e.targetId])),[eK]),eW=(0,s.useCallback)(async e=>{let t=(0,z.m)([{id:"_",excerpt:e}],eU)[0];if(!t)return;let n=await fetch("/api/board-annotations",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({targetKind:t.kind,targetId:t.targetId,columnName:t.column??void 0})});if(n.ok){let e=await n.json();eH(t=>[...t,e])}},[eU]),eZ=(0,s.useCallback)((e,t)=>{eH(n=>n.map(n=>n.id===e?{...n,...t}:n)),fetch(`/api/board-annotations/${e}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(t)})},[]),eJ=(0,s.useCallback)(e=>{eH(t=>t.filter(t=>t.id!==e)),fetch(`/api/board-annotations/${e}`,{method:"DELETE"})},[]),eY=e_?eW:w,eq=(0,s.useCallback)((e,t)=>(eF.get(e)??0)<=(eF.get(t)??0)?{sourceHandle:"sr",targetHandle:"tl"}:{sourceHandle:"sl",targetHandle:"tr"},[eF]),eV=(0,s.useMemo)(()=>new Set([...ev.tables.map(e=>e.id),...ev.endpoints.map(e=>e.id)]),[ev]),eQ=(0,s.useMemo)(()=>new Set(e.map(e=>e.id)),[e]),e0=(0,s.useCallback)(()=>{let e=ez.map(e=>({id:e.id,type:"dbTable",position:{x:e.x,y:e.y},data:{name:e.name,domain:e.domain,columns:e.columns,usageCount:eO.get(e.id)??0,source:e.source,rev:eb.rev,diffStatus:eR.get(e.id)?.status,diffChanges:eR.get(e.id)?.changes,fkTargets:eL.get(e.id),pins:eG.get(e.id),onPinClick:k,onComment:eY}})),t=eM.map(e=>({id:e.id,type:"endpoint",position:{x:e.x,y:e.y},data:{method:e.method,path:e.path,domain:e.domain,source:e.source,rev:eb.rev,diffStatus:e$.get(e.id)?.status,diffChanges:e$.get(e.id)?.changes,pins:eG.get(e.id),onPinClick:k,onComment:eY}})),n=new Map,a=new Map(ez.map(e=>[e.id,e])),s=new Map(eM.map(e=>[e.id,e]));return[...e,...t,...eK.map(e=>{let t=a.get(e.targetId),r=s.get(e.targetId),o=t?.x??r?.x??0,i=t?.y??r?.y??0,l=t?38+28*t.columns.length:42,d=n.get(e.targetId)??0;return n.set(e.targetId,d+1),{id:`anno-${e.id}`,type:"annotation",position:{x:e.x??o+26,y:e.y??i+l+64+112*d},data:{n:e.n,text:e.text,annotationId:e.id,onClick:e_||C?void 0:k,editable:e_||!!C,onChangeText:e_?(e,t)=>eZ(e,{body:t}):C,onDelete:e_?eJ:E}}})]},[ez,eM,eO,eb.rev,eR,e$,eL,eG,eK,e_,k,C,E,eY,eZ,eJ]),[e1,e5,e2]=(0,o.ck)(e0());(0,s.useEffect)(()=>{e5(e=>{let t=new Map(e.map(e=>[e.id,e.position]));return e0().map(e=>({...e,position:t.get(e.id)??e.position}))})},[e0,e5]);let e3=(0,s.useCallback)((e,t,n,a)=>{fetch("/api/db/position",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({kind:e,id:t,x:n,y:a})})},[]),e4=(0,s.useCallback)((e,t)=>{let{x:n,y:a}=t.position;if(t.id.startsWith("anno-")){e_&&eZ(t.id.slice(5),{x:n,y:a});return}eV.has(t.id)?ew(e=>e.tables.some(e=>e.id===t.id)?{...e,tables:e.tables.map(e=>e.id===t.id?{...e,x:n,y:a}:e)}:e.endpoints.some(e=>e.id===t.id)?{...e,endpoints:e.endpoints.map(e=>e.id===t.id?{...e,x:n,y:a}:e)}:e):e3("endpoint"===t.type?"endpoint":"table",t.id,n,a)},[eV,ew,e3,e_,eZ]),e6=(0,s.useMemo)(()=>eP.map(e=>({id:`fk-${e.id}`,source:e.fromTableId,target:e.toTableId,...eq(e.fromTableId,e.toTableId),type:"deletable",label:e.label??void 0,markerEnd:{type:i.TG.ArrowClosed,color:"#6b6b6b"},style:{stroke:"#6b6b6b"}})),[eP,eq]),e8=(0,s.useMemo)(()=>eM.flatMap(e=>e.tables.map(t=>{let n=h.ru[t.access]??"#5a5a5a";return{id:`u-${e.id}-${t.tableId}`,source:e.id,target:t.tableId,...eq(e.id,t.tableId),type:"default",markerEnd:{type:i.TG.ArrowClosed,color:n},style:{stroke:n,strokeDasharray:"4 4",opacity:.7}}})),[eM,eq]),e9=(0,s.useMemo)(()=>I?[...e6,...e8]:e6,[e6,e8,I]),e7=(0,s.useMemo)(()=>eK.map(e=>({id:`annoe-${e.id}`,source:e.targetId,sourceHandle:`pin-${e.id}`,target:`anno-${e.id}`,targetHandle:"in",type:"default",selectable:!1,zIndex:30,style:{stroke:v.V5,strokeWidth:1.5,opacity:.9}})),[eK]),te=M?.id??O,tt=(0,s.useMemo)(()=>{if(R){let e=e9.find(e=>e.id===R);return e?new Set([e.source,e.target]):null}return te?(0,h.F1)(te,e9):null},[te,R,e9]),tn=(0,s.useMemo)(()=>new Map(ez.map(e=>[e.id,{domain:e.domain,source:e.source}])),[ez]),ta=(0,s.useMemo)(()=>new Map(eM.map(e=>[e.id,{method:e.method,source:e.source}])),[eM]),ts=(0,s.useMemo)(()=>{let e=new Set;if(!I)for(let t of ta.keys())e.add(t);for(let[t,n]of tn)!ec.size||n.domain&&ec.has(n.domain)||e.add(t),ex.size&&!ex.has(n.source)&&e.add(t);for(let[t,n]of ta)ef.size&&!ef.has(n.method)&&e.add(t),ex.size&&!ex.has(n.source)&&e.add(t);return e},[I,tn,ta,ec,ex,ef]),tr=(0,s.useMemo)(()=>e1.map(e=>{if(e.id.startsWith("anno-")){let t=eX.get(e.id),n=!!t&&ts.has(t);return!!e.hidden!==n?{...e,hidden:n}:e}let t=ts.has(e.id);return tt?{...e,hidden:t,style:{...e.style,opacity:tt.has(e.id)?1:.45,transition:"opacity 120ms"}}:t?{...e,hidden:t}:e}),[e1,ts,tt,eX]),to=(0,s.useMemo)(()=>{let e=new Map(ez.map(e=>[e.id,(e.domain??"").trim()||"—"])),t=function(e,t){let n=new Map(e.map(e=>[e.id,e.name])),a=new Map;for(let e of t)for(let t of e.uses)n.has(t.tableId)&&a.set(t.tableId,(a.get(t.tableId)??0)+1);return new Map(t.map(e=>[e.id,function(e,t,n){let a=new Map;for(let n of e.uses)t.has(n.tableId)&&a.set(n.tableId,(a.get(n.tableId)??0)+1);let s=null;for(let[e,r]of a){if(null===s){s=e;continue}let o=a.get(s);if(r>o){s=e;continue}if(r<o)continue;let i=n?.get(e)??0,l=n?.get(s)??0;i<l?s=e:i===l&&0>t.get(e).localeCompare(t.get(s))&&(s=e)}return s}(e,n,a)]))}(ez,eM.map(e=>({id:e.id,method:e.method,path:e.path,uses:e.tables.map(e=>({tableId:e.tableId}))})));return new Map(eM.map(n=>{let a=t.get(n.id);return[n.id,a?e.get(a):W]}))},[ez,eM]),ti=(0,s.useMemo)(()=>{let e=[];for(let t of e1)if(!ts.has(t.id))if("dbTable"===t.type){let n=t.data;e.push({id:t.id,group:(n.domain??"").trim()||"—",x:t.position.x,y:t.position.y,w:t.measured?.width??280,h:t.measured?.height??38+28*n.columns.length})}else"endpoint"===t.type&&e.push({id:t.id,group:to.get(t.id)??W,x:t.position.x,y:t.position.y,w:t.measured?.width??240,h:t.measured?.height??50});return(0,X.S)(e)},[e1,ts,to]),tl=(0,s.useMemo)(()=>e9.map(e=>{let t=ts.has(e.source)||ts.has(e.target);return te||R?(R?e.id===R:te&&(e.source===te||e.target===te))?{...e,hidden:t,zIndex:20,style:{...e.style,opacity:1,strokeWidth:2.5}}:{...e,hidden:t,selectable:!1,label:void 0,markerEnd:void 0,style:{...e.style,opacity:.08}}:{...e,hidden:t,label:void 0}}),[e9,te,R,ts]),td=(0,s.useMemo)(()=>Array.from(new Set(ez.map(e=>e.domain).filter(e=>!!e))).sort(),[ez]),tc=(0,s.useMemo)(()=>Array.from(new Set([...ez.map(e=>e.source),...eM.map(e=>e.source)])).sort(),[ez,eM]),tu=(0,s.useMemo)(()=>Array.from(new Set(eM.map(e=>e.method))).sort(),[eM]);function tm(e,t){t(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}let tp=+!I+ec.size+ex.size+ef.size,tx=(0,s.useCallback)(()=>{T(!0),eu(new Set),eh(new Set),eg(new Set)},[]),th=(0,s.useCallback)(e=>{let{source:t,target:n}=e;t&&n&&t!==n&&ej(e=>{if(!(e.tables.some(e=>e.id===n)||eQ.has(n)))return e;let a=e.endpoints.find(e=>e.id===t);return a?a.links.some(e=>e.tableId===n)?e:{...e,endpoints:e.endpoints.map(e=>{var a;return e.id===t?{...e,links:[...e.links,{tableId:n,access:(a=e.method,G.has(a.trim().toUpperCase())?"read":"write")}]}:e})}:e.tables.find(e=>e.id===t)?e.relations.some(e=>e.fromTableId===t&&e.toTableId===n)?e:{...e,relations:[...e.relations,{id:crypto.randomUUID(),fromTableId:t,toTableId:n,fromColumn:"fk",toColumn:"id",label:null}]}:e})},[ej,eQ]),tf=(0,s.useMemo)(()=>({patchEndpoint:(e,t)=>ej(n=>({...n,endpoints:n.endpoints.map(n=>n.id===e?{...n,...t}:n)})),deleteEndpoint:e=>ej(t=>({...t,endpoints:t.endpoints.filter(t=>t.id!==e)})),patchTable:(e,t)=>ej(n=>({...n,tables:n.tables.map(n=>n.id===e?{...n,...t}:n)})),deleteTable:e=>ej(t=>({...t,tables:t.tables.filter(t=>t.id!==e),relations:t.relations.filter(t=>t.fromTableId!==e&&t.toTableId!==e),endpoints:t.endpoints.map(t=>({...t,links:t.links.filter(t=>t.tableId!==e)}))})),deleteRealEndpoint:e=>{fetch(`/api/endpoints/${e}`,{method:"DELETE"}).then(e=>{e.ok&&A.refresh()})}}),[ej,A]);(0,s.useEffect)(()=>{let e=e=>{if(!(e.metaKey||e.ctrlKey))return;let t=e.target;if(t&&/^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName))return;let n=e.key.toLowerCase();"z"===n?(e.preventDefault(),e.shiftKey?ek():eN()):"y"===n&&(e.preventDefault(),ek())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[eN,ek]);let tg=(0,s.useCallback)(async()=>{ed(!0);try{if((await fetch("/api/draft/approve",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(ev)})).ok){try{localStorage.removeItem(eo)}catch{}eC(ei),A.refresh()}}finally{ed(!1)}},[ev,eC,A]),tb=(0,s.useCallback)(async()=>{ed(!0);try{await fetch("/api/draft",{method:"DELETE"})}catch{}try{localStorage.removeItem(eo)}catch{}eC(ei),A.refresh(),ed(!1)},[eC,A]),ty=(0,s.useMemo)(()=>{let e;return e=new Map(ev.tables.map(e=>[e.id,e.name])),{tables:ev.tables.map(e=>({name:e.name,domain:e.domain,description:e.description,columns:e.columns.map(e=>({name:e.name,type:e.type,isPk:e.isPk,isFk:e.isFk,nullable:e.nullable,note:e.note}))})),relations:ev.relations.flatMap(t=>{let n=e.get(t.fromTableId),a=e.get(t.toTableId);return n&&a?[{fromTable:n,fromColumn:t.fromColumn,toTable:a,toColumn:t.toColumn,label:t.label}]:[]}),endpoints:ev.endpoints.map(t=>({method:t.method,path:t.path,domain:t.domain,description:t.description,uses:t.links.flatMap(t=>{let n=e.get(t.tableId);return n?[{table:n,access:t.access}]:[]})}))}},[ev]),tv=ev.tables.length>0||ev.endpoints.length>0,tj=eb.past.length>0,tw=eb.future.length>0;return(0,a.jsx)(f.Provider,{value:tf,children:(0,a.jsxs)("div",{className:(0,x.cn)("canvas-dots relative w-full",c?"h-full":"h-screen"),children:[(0,a.jsxs)(o.Gc,{nodes:tr,edges:"far"===em?[...tl,...e7].map(e=>({...e,hidden:!0})):[...tl,...e7.map(e=>({...e,hidden:ts.has(e.source)}))],nodeTypes:es,edgeTypes:er,connectionMode:i.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onNodesChange:e2,onConnect:th,onNodeMouseEnter:(e,t)=>{"annotation"!==t.type&&F(t.id)},onNodeMouseLeave:()=>F(null),onNodeClick:(e,t)=>{if("annotation"===t.type){let e=t.data;e.editable||k?.(e.annotationId);return}let n="endpoint"===t.type?"endpoint":"table";D({id:t.id,kind:n}),$(null),_(!0),H("details")},onEdgeClick:(e,t)=>{$(t.id),D(null)},onPaneClick:()=>{D(null),$(null)},onNodeDragStop:e4,onEdgesDelete:e=>{for(let t of e)if(t.id.startsWith("fk-")){let e=t.id.slice(3);fetch(`/api/db/relations/${e}`,{method:"DELETE"})}},onNodesDelete:e=>{for(let t of e)t.id.startsWith("anno-")||eV.has(t.id)||("endpoint"===t.type?fetch(`/api/endpoints/${t.id}`,{method:"DELETE"}):"dbTable"===t.type&&fetch(`/api/db/tables/${t.id}`,{method:"DELETE"}))},deleteKeyCode:["Backspace","Delete"],colorMode:"dark",fitView:!0,minZoom:.15,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,a.jsx)(Z.Z,{regions:ti,tone:"category",lod:em}),(0,a.jsx)(b.J,{onLod:ep}),(0,a.jsx)(o.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-white/10 [&_button]:!border-white/10 [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),!c&&(0,a.jsx)(o.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur",nodeColor:"#555"}),!c&&(0,a.jsx)(o.Zk,{position:"bottom-center",className:"!mb-4",children:(0,a.jsx)("div",{className:"glass flex items-center rounded-full p-0.5",children:(0,a.jsxs)("button",{type:"button",disabled:ea,title:"Re-arrange the board — domain clusters with endpoints docked under their tables",onClick:async()=>{ed(!0);try{await fetch("/api/db/arrange",{method:"POST"}),A.refresh()}finally{ed(!1)}},className:"flex h-6 items-center gap-1.5 rounded-full px-3 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground disabled:opacity-40",children:[(0,a.jsx)(Y.A,{className:"size-3"}),ea?"Arranging…":"Arrange"]})})}),!c&&(0,a.jsx)(o.Zk,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,a.jsx)(K.Z,{active:"DATABASE",tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"FILES",label:"Files",href:"/map?view=FILES"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"}]})}),(0,a.jsxs)(o.Zk,{position:"top-right",className:(0,x.cn)("flex items-center gap-1 transition-[margin] duration-200",L&&"!mr-[332px]",c&&"hidden"),children:[(0,a.jsx)("button",{type:"button",title:"Arrange board — pack tables + endpoints side by side",disabled:ea,onClick:async()=>{ed(!0);try{await fetch("/api/db/arrange",{method:"POST"}),A.refresh()}finally{ed(!1)}},className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground disabled:opacity-40",children:(0,a.jsx)(Y.A,{className:"size-4"})}),(0,a.jsxs)(U.er,{title:"Filters",trigger:(e,t)=>(0,a.jsxs)("button",{type:"button",onClick:t,title:"Filters",className:(0,x.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",e||tp>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,a.jsx)(q.A,{className:"size-4"}),tp>0&&(0,a.jsx)("span",{className:"absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-[var(--accent-2,#ff7a45)] px-1 text-[9px] font-semibold text-white",children:tp})]}),children:[(0,a.jsx)(U.r1,{title:"Show",children:(0,a.jsx)(U.vu,{tone:"accent",on:I,onClick:()=>T(e=>!e),children:"endpoints"})}),td.length>0&&(0,a.jsx)(U.r1,{title:"Domain",children:td.map(e=>(0,a.jsx)(U.vu,{on:ec.has(e),onClick:()=>tm(e,eu),children:e},e))}),tu.length>0&&(0,a.jsx)(U.r1,{title:"Method",children:tu.map(e=>(0,a.jsx)(U.vu,{on:ef.has(e),onClick:()=>tm(e,eg),children:e},e))}),tc.length>0&&(0,a.jsx)(U.r1,{title:"Source",children:tc.map(e=>(0,a.jsx)(U.vu,{on:ex.has(e),onClick:()=>tm(e,eh),children:e.toLowerCase()},e))}),tp>0&&(0,a.jsx)("button",{type:"button",onClick:tx,className:"mt-1 w-full rounded-md border border-white/10 px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:"clear filters"})]}),(0,a.jsx)(U.er,{title:"Legend",trigger:(e,t)=>(0,a.jsx)("button",{type:"button",onClick:t,title:"Legend",className:(0,x.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",e?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,a.jsx)(V.A,{className:"size-4"})}),children:(0,a.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:[(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#6b6b6b]"}),(0,a.jsx)("span",{children:"foreign key \xb7 drag from a table handle"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#4ea1ff"}}),(0,a.jsx)("span",{children:"endpoint read \xb7 GET / POST / etc"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#ffb86b"}}),(0,a.jsx)("span",{children:"endpoint write"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"inline-block rounded border border-dashed border-sky-400/50 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"draft"}),(0,a.jsx)("span",{children:"agent-proposed \xb7 approve to persist"})]})]})}),!L&&(0,a.jsx)("button",{onClick:()=>_(!0),title:"Show panel",className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,a.jsx)(Q.A,{className:"size-4"})})]}),tv&&(0,a.jsxs)(o.Zk,{position:"bottom-center",className:"glass flex items-center gap-1 rounded-xl p-1.5",children:[(0,a.jsxs)("button",{onClick:eN,disabled:!tj,title:"Undo (⌘Z)",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground disabled:opacity-30 disabled:hover:bg-transparent",children:[(0,a.jsx)(ee.A,{className:"size-3.5"})," undo"]}),(0,a.jsxs)("button",{onClick:ek,disabled:!tw,title:"Redo (⇧⌘Z)",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground disabled:opacity-30 disabled:hover:bg-transparent",children:[(0,a.jsx)(et.A,{className:"size-3.5"})," redo"]}),!c&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"mx-1 h-4 w-px bg-white/10"}),(0,a.jsxs)("button",{onClick:tb,disabled:ea,title:"Discard draft",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-red-500/15 hover:text-red-300 disabled:opacity-40",children:[(0,a.jsx)(u.A,{className:"size-3.5"})," discard"]}),(0,a.jsxs)("button",{onClick:tg,disabled:ea,title:"Approve and persist to the schema",className:"flex items-center gap-1 rounded-md border border-emerald-500/40 bg-emerald-500/15 px-2.5 py-1 text-[11px] font-semibold text-emerald-300 transition-colors hover:bg-emerald-500/25 disabled:opacity-40",children:[(0,a.jsx)(en.A,{className:"size-3.5"})," approve draft"]})]})]})]}),L&&(0,a.jsx)(P,{selected:M,tables:ez,relations:eP,endpoints:eM,draftGraph:ty,onClose:()=>{_(!1),H("details")},commentsContent:y,commentsCount:j,activeTab:B,onTabChange:H,onAddComment:eY,topOffset:c?64:void 0})]})})}},95635:(e,t,n)=>{n.d(t,{x:()=>o});var a=n(95155),s=n(81750),r=n(6266);function o(){let e="!h-2 !w-2 !border-0 !bg-zinc-400";return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.h7,{type:"target",position:r.yX.Top,id:"tt",className:e}),(0,a.jsx)(s.h7,{type:"source",position:r.yX.Top,id:"st",className:e}),(0,a.jsx)(s.h7,{type:"target",position:r.yX.Right,id:"tr",className:e}),(0,a.jsx)(s.h7,{type:"source",position:r.yX.Right,id:"sr",className:e}),(0,a.jsx)(s.h7,{type:"target",position:r.yX.Bottom,id:"tb",className:e}),(0,a.jsx)(s.h7,{type:"source",position:r.yX.Bottom,id:"sb",className:e}),(0,a.jsx)(s.h7,{type:"target",position:r.yX.Left,id:"tl",className:e}),(0,a.jsx)(s.h7,{type:"source",position:r.yX.Left,id:"sl",className:e})]})}}}]);
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3862],{81750:(e,t,n)=>{n.d(t,{DX:()=>tN,Gc:()=>tw,H2:()=>tL,JY:()=>tM,Pj:()=>m,VH:()=>ea,Zk:()=>N,_0:()=>X,ck:()=>tk,h7:()=>eS,of:()=>tX,rV:()=>tC,tE:()=>eH,zW:()=>W});var o,r,a=n(95155),i=n(12115),l=n(69684),s=n(6266),d=n(50916),c=n(99026),u=n(47650);let g=(0,i.createContext)(null),f=g.Provider,p=s.xc.error001("react");function m(e,t){let n=(0,i.useContext)(g);if(null===n)throw Error(p);return(0,d.n)(n,e,t)}function h(){let e=(0,i.useContext)(g);if(null===e)throw Error(p);return(0,i.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}let y={display:"none"},b={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},x="react-flow__node-desc",v="react-flow__edge-desc",w=e=>e.ariaLiveMessage,S=e=>e.ariaLabelConfig;function C({rfId:e}){let t=m(w);return(0,a.jsx)("div",{id:`react-flow__aria-live-${e}`,"aria-live":"assertive","aria-atomic":"true",style:b,children:t})}function E({rfId:e,disableKeyboardA11y:t}){let n=m(S);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{id:`${x}-${e}`,style:y,children:t?n["node.a11yDescription.default"]:n["node.a11yDescription.keyboardDisabled"]}),(0,a.jsx)("div",{id:`${v}-${e}`,style:y,children:n["edge.a11yDescription.default"]}),!t&&(0,a.jsx)(C,{rfId:e})]})}let N=(0,i.forwardRef)(({position:e="top-left",children:t,className:n,style:o,...r},i)=>{let s=`${e}`.split("-");return(0,a.jsx)("div",{className:(0,l.A)(["react-flow__panel",n,...s]),style:o,ref:i,...r,children:t})});function k({proOptions:e,position:t="bottom-right"}){return e?.hideAttribution?null:(0,a.jsx)(N,{position:t,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:(0,a.jsx)("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}N.displayName="Panel";let M=e=>{let t=[],n=[];for(let[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(let[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},P=e=>e.id;function j(e,t){return(0,c.x)(e.selectedNodes.map(P),t.selectedNodes.map(P))&&(0,c.x)(e.selectedEdges.map(P),t.selectedEdges.map(P))}function D({onSelectionChange:e}){let t=h(),{selectedNodes:n,selectedEdges:o}=m(M,j);return(0,i.useEffect)(()=>{let r={nodes:n,edges:o};e?.(r),t.getState().onSelectionChangeHandlers.forEach(e=>e(r))},[n,o,e]),null}let _=e=>!!e.onSelectionChangeHandlers;function R({onSelectionChange:e}){let t=m(_);return e||t?(0,a.jsx)(D,{onSelectionChange:e}):null}let A=[0,0],I={x:0,y:0,zoom:1},O=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode","rfId"],L=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),z={translateExtent:s.ZO,nodeOrigin:A,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function B(e){let{setNodes:t,setEdges:n,setMinZoom:o,setMaxZoom:r,setTranslateExtent:a,setNodeExtent:l,reset:d,setDefaultNodesAndEdges:u}=m(L,c.x),g=h();(0,i.useEffect)(()=>(u(e.defaultNodes,e.defaultEdges),()=>{f.current=z,d()}),[]);let f=(0,i.useRef)(z);return(0,i.useEffect)(()=>{for(let i of O){let d=e[i];d!==f.current[i]&&void 0!==e[i]&&("nodes"===i?t(d):"edges"===i?n(d):"minZoom"===i?o(d):"maxZoom"===i?r(d):"translateExtent"===i?a(d):"nodeExtent"===i?l(d):"ariaLabelConfig"===i?g.setState({ariaLabelConfig:(0,s.Q6)(d)}):"fitView"===i?g.setState({fitViewQueued:d}):"fitViewOptions"===i?g.setState({fitViewOptions:d}):g.setState({[i]:d}))}f.current=e},O.map(t=>e[t])),null}function $(){return"u"<typeof window||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}let V="u">typeof document?document:null;function F(e=null,t={target:V,actInsideInputWithModifier:!0}){let[n,o]=(0,i.useState)(!1),r=(0,i.useRef)(!1),a=(0,i.useRef)(new Set([])),[l,d]=(0,i.useMemo)(()=>{if(null!==e){let t=(Array.isArray(e)?e:[e]).filter(e=>"string"==typeof e).map(e=>e.replace("+","\n").replace("\n\n","\n+").split("\n")),n=t.reduce((e,t)=>e.concat(...t),[]);return[t,n]}return[[],[]]},[e]);return(0,i.useEffect)(()=>{let n=t?.target??V,i=t?.actInsideInputWithModifier??!0;if(null!==e){let e=e=>{if(r.current=e.ctrlKey||e.metaKey||e.shiftKey||e.altKey,(!r.current||r.current&&!i)&&(0,s.v5)(e))return!1;let n=T(e.code,d);if(a.current.add(e[n]),H(l,a.current,!1)){let n=e.composedPath?.()?.[0]||e.target,a=n?.nodeName==="BUTTON"||n?.nodeName==="A";!1!==t.preventDefault&&(r.current||!a)&&e.preventDefault(),o(!0)}},c=e=>{let t=T(e.code,d);H(l,a.current,!0)?(o(!1),a.current.clear()):a.current.delete(e[t]),"Meta"===e.key&&a.current.clear(),r.current=!1},u=()=>{a.current.clear(),o(!1)};return n?.addEventListener("keydown",e),n?.addEventListener("keyup",c),window.addEventListener("blur",u),window.addEventListener("contextmenu",u),()=>{n?.removeEventListener("keydown",e),n?.removeEventListener("keyup",c),window.removeEventListener("blur",u),window.removeEventListener("contextmenu",u)}}},[e,o]),n}function H(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function T(e,t){return t.includes(e)?"code":"key"}function Z(e,t){let n=[],o=new Map,r=[];for(let t of e)if("add"===t.type){r.push(t);continue}else if("remove"===t.type||"replace"===t.type)o.set(t.id,[t]);else{let e=o.get(t.id);e?e.push(t):o.set(t.id,[t])}for(let e of t){let t=o.get(e.id);if(!t){n.push(e);continue}if("remove"===t[0].type)continue;if("replace"===t[0].type){n.push({...t[0].item});continue}let r={...e};for(let e of t){var a=e,i=r;switch(a.type){case"select":i.selected=a.selected;break;case"position":void 0!==a.position&&(i.position=a.position),void 0!==a.dragging&&(i.dragging=a.dragging);break;case"dimensions":void 0!==a.dimensions&&(i.measured={...a.dimensions},a.setAttributes&&((!0===a.setAttributes||"width"===a.setAttributes)&&(i.width=a.dimensions.width),(!0===a.setAttributes||"height"===a.setAttributes)&&(i.height=a.dimensions.height))),"boolean"==typeof a.resizing&&(i.resizing=a.resizing)}}n.push(r)}return r.length&&r.forEach(e=>{void 0!==e.index?n.splice(e.index,0,{...e.item}):n.push({...e.item})}),n}function X(e,t){return Z(e,t)}function W(e,t){return Z(e,t)}function K(e,t){return{id:e,type:"select",selected:t}}function Y(e,t=new Set,n=!1){let o=[];for(let[r,a]of e){let e=t.has(r);(void 0!==a.selected||e)&&a.selected!==e&&(n&&(a.selected=e),o.push(K(a.id,e)))}return o}function Q({items:e=[],lookup:t}){let n=[],o=new Map(e.map(e=>[e.id,e]));for(let[o,r]of e.entries()){let e=t.get(r.id),a=e?.internals?.userNode??e;void 0!==a&&a!==r&&n.push({id:r.id,item:r,type:"replace"}),void 0===a&&n.push({item:r,type:"add",index:o})}for(let[e]of t)void 0===o.get(e)&&n.push({id:e,type:"remove"});return n}function q(e){return{id:e.id,type:"remove"}}let U=(0,s.kr)("React Flow","https://reactflow.dev/"),G=e=>(0,s.oB)(e);function J(e){return(0,i.forwardRef)(e)}let ee="u">typeof window?i.useLayoutEffect:i.useEffect;function et(e){let[t,n]=(0,i.useState)(BigInt(0)),[o]=(0,i.useState)(()=>{var e;let t;return e=()=>n(e=>e+BigInt(1)),t=[],{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}});return ee(()=>{let t=o.get();t.length&&(e(t),o.reset())},[t]),o}let en=(0,i.createContext)(null);function eo({children:e}){let t=h(),n=et((0,i.useCallback)(e=>{let{nodes:n=[],setNodes:o,hasDefaultNodes:r,onNodesChange:a,nodeLookup:i,fitViewQueued:l,onNodesChangeMiddlewareMap:s}=t.getState(),d=n;for(let t of e)d="function"==typeof t?t(d):t;let c=Q({items:d,lookup:i});for(let e of s.values())c=e(c);r&&o(d),c.length>0?a?.(c):l&&window.requestAnimationFrame(()=>{let{fitViewQueued:e,nodes:n,setNodes:o}=t.getState();e&&o(n)})},[])),o=et((0,i.useCallback)(e=>{let{edges:n=[],setEdges:o,hasDefaultEdges:r,onEdgesChange:a,edgeLookup:i}=t.getState(),l=n;for(let t of e)l="function"==typeof t?t(l):t;r?o(l):a&&a(Q({items:l,lookup:i}))},[])),r=(0,i.useMemo)(()=>({nodeQueue:n,edgeQueue:o}),[]);return(0,a.jsx)(en.Provider,{value:r,children:e})}let er=e=>!!e.panZoom;function ea(){let e,t=(e=h(),(0,i.useMemo)(()=>({zoomIn:async t=>{let{panZoom:n}=e.getState();return!!n&&n.scaleBy(1.2,t)},zoomOut:async t=>{let{panZoom:n}=e.getState();return!!n&&n.scaleBy(1/1.2,t)},zoomTo:async(t,n)=>{let{panZoom:o}=e.getState();return!!o&&o.scaleTo(t,n)},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{let{transform:[o,r,a],panZoom:i}=e.getState();return!!i&&(await i.setViewport({x:t.x??o,y:t.y??r,zoom:t.zoom??a},n),!0)},getViewport:()=>{let[t,n,o]=e.getState().transform;return{x:t,y:n,zoom:o}},setCenter:async(t,n,o)=>e.getState().setCenter(t,n,o),fitBounds:async(t,n)=>{let{width:o,height:r,minZoom:a,maxZoom:i,panZoom:l}=e.getState(),d=(0,s.R4)(t,o,r,a,i,n?.padding??.1);return!!l&&(await l.setViewport(d,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0)},screenToFlowPosition:(t,n={})=>{let{transform:o,snapGrid:r,snapToGrid:a,domNode:i}=e.getState();if(!i)return t;let{x:l,y:d}=i.getBoundingClientRect(),c={x:t.x-l,y:t.y-d},u=n.snapGrid??r,g=n.snapToGrid??a;return(0,s.Ff)(c,o,g,u)},flowToScreenPosition:t=>{let{transform:n,domNode:o}=e.getState();if(!o)return t;let{x:r,y:a}=o.getBoundingClientRect(),i=(0,s.zj)(t,n);return{x:i.x+r,y:i.y+a}}}),[])),n=h(),o=function(){let e=(0,i.useContext)(en);if(!e)throw Error("useBatchContext must be used within a BatchProvider");return e}(),r=m(er),a=(0,i.useMemo)(()=>{let e=e=>n.getState().nodeLookup.get(e),t=e=>{o.nodeQueue.push(e)},r=e=>{o.edgeQueue.push(e)},a=e=>{let{nodeLookup:t,nodeOrigin:o}=n.getState(),r=G(e)?e:t.get(e.id),a=r.parentId?(0,s.us)(r.position,r.measured,r.parentId,t,o):r.position,i={...r,position:a,width:r.measured?.width??r.width,height:r.measured?.height??r.height};return(0,s.kM)(i)},i=(e,n,o={replace:!1})=>{t(t=>t.map(t=>{if(t.id===e){let e="function"==typeof n?n(t):n;return o.replace&&G(e)?e:{...t,...e}}return t}))},l=(e,t,n={replace:!1})=>{r(o=>o.map(o=>{if(o.id===e){let e="function"==typeof t?t(o):t;return n.replace&&(0,s.b$)(e)?e:{...o,...e}}return o}))};return{getNodes:()=>n.getState().nodes.map(e=>({...e})),getNode:t=>e(t)?.internals.userNode,getInternalNode:e,getEdges:()=>{let{edges:e=[]}=n.getState();return e.map(e=>({...e}))},getEdge:e=>n.getState().edgeLookup.get(e),setNodes:t,setEdges:r,addNodes:e=>{let t=Array.isArray(e)?e:[e];o.nodeQueue.push(e=>[...e,...t])},addEdges:e=>{let t=Array.isArray(e)?e:[e];o.edgeQueue.push(e=>[...e,...t])},toObject:()=>{let{nodes:e=[],edges:t=[],transform:o}=n.getState(),[r,a,i]=o;return{nodes:e.map(e=>({...e})),edges:t.map(e=>({...e})),viewport:{x:r,y:a,zoom:i}}},deleteElements:async({nodes:e=[],edges:t=[]})=>{let{nodes:o,edges:r,onNodesDelete:a,onEdgesDelete:i,triggerNodeChanges:l,triggerEdgeChanges:d,onDelete:c,onBeforeDelete:u}=n.getState(),{nodes:g,edges:f}=await (0,s.Tq)({nodesToRemove:e,edgesToRemove:t,nodes:o,edges:r,onBeforeDelete:u}),p=f.length>0,m=g.length>0;if(p){let e=f.map(q);i?.(f),d(e)}if(m){let e=g.map(q);a?.(g),l(e)}return(m||p)&&c?.({nodes:g,edges:f}),{deletedNodes:g,deletedEdges:f}},getIntersectingNodes:(e,t=!0,o)=>{let r=(0,s.mW)(e),i=r?e:a(e),l=void 0!==o;return i?(o||n.getState().nodes).filter(o=>{let a=n.getState().nodeLookup.get(o.id);if(a&&!r&&(o.id===e.id||!a.internals.positionAbsolute))return!1;let d=(0,s.kM)(l?o:a),c=(0,s.X6)(d,i);return t&&c>0||c>=d.width*d.height||c>=i.width*i.height}):[]},isNodeIntersecting:(e,t,n=!0)=>{let o=(0,s.mW)(e)?e:a(e);if(!o)return!1;let r=(0,s.X6)(o,t);return n&&r>0||r>=t.width*t.height||r>=o.width*o.height},updateNode:i,updateNodeData:(e,t,n={replace:!1})=>{i(e,e=>{let o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}},n)},updateEdge:l,updateEdgeData:(e,t,n={replace:!1})=>{l(e,e=>{let o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}},n)},getNodesBounds:e=>{let{nodeLookup:t,nodeOrigin:o}=n.getState();return(0,s.Jo)(e,{nodeLookup:t,nodeOrigin:o})},getHandleConnections:({type:e,id:t,nodeId:o})=>Array.from(n.getState().connectionLookup.get(`${o}-${e}${t?`-${t}`:""}`)?.values()??[]),getNodeConnections:({type:e,handleId:t,nodeId:o})=>Array.from(n.getState().connectionLookup.get(`${o}${e?t?`-${e}-${t}`:`-${e}`:""}`)?.values()??[]),fitView:async e=>{let t=n.getState().fitViewResolver??(0,s.YN)();return n.setState({fitViewQueued:!0,fitViewOptions:e,fitViewResolver:t}),o.nodeQueue.push(e=>[...e]),t.promise}}},[]);return(0,i.useMemo)(()=>({...a,...t,viewportInitialized:r}),[r])}let ei=e=>e.selected,el="u">typeof window?window:void 0,es={position:"absolute",width:"100%",height:"100%",top:0,left:0},ed=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function ec({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:o=!1,panOnScrollSpeed:r=.5,panOnScrollMode:l=s.ny.Free,zoomOnDoubleClick:d=!0,panOnDrag:u=!0,defaultViewport:g,translateExtent:f,minZoom:p,maxZoom:y,zoomActivationKeyCode:b,preventScrolling:x=!0,children:v,noWheelClassName:w,noPanClassName:S,onViewportChange:C,isControlledViewport:E,paneClickDistance:N,selectionOnDrag:k}){let M,P=h(),j=(0,i.useRef)(null),{userSelectionActive:D,lib:_,connectionInProgress:R}=m(ed,c.x),A=F(b),I=(0,i.useRef)();M=h(),(0,i.useEffect)(()=>{let e=()=>{if(!j.current||!(j.current.checkVisibility?.()??!0))return!1;let e=(0,s.Eo)(j.current);(0===e.height||0===e.width)&&M.getState().onError?.("004",s.xc.error004()),M.setState({width:e.width||500,height:e.height||500})};if(j.current){e(),window.addEventListener("resize",e);let t=new ResizeObserver(()=>e());return t.observe(j.current),()=>{window.removeEventListener("resize",e),t&&j.current&&t.unobserve(j.current)}}},[]);let O=(0,i.useCallback)(e=>{C?.({x:e[0],y:e[1],zoom:e[2]}),E||P.setState({transform:e})},[C,E]);return(0,i.useEffect)(()=>{if(j.current){I.current=(0,s.kO)({domNode:j.current,minZoom:p,maxZoom:y,translateExtent:f,viewport:g,onDraggingChange:e=>P.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:o}=P.getState();o?.(e,t),n?.(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:o}=P.getState();o?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:o}=P.getState();o?.(e,t),n?.(t)}});let{x:e,y:t,zoom:n}=I.current.getViewport();return P.setState({panZoom:I.current,transform:[e,t,n],domNode:j.current.closest(".react-flow")}),()=>{I.current?.destroy()}}},[]),(0,i.useEffect)(()=>{I.current?.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:o,panOnScrollSpeed:r,panOnScrollMode:l,zoomOnDoubleClick:d,panOnDrag:u,zoomActivationKeyPressed:A,preventScrolling:x,noPanClassName:S,userSelectionActive:D,noWheelClassName:w,lib:_,onTransformChange:O,connectionInProgress:R,selectionOnDrag:k,paneClickDistance:N})},[e,t,n,o,r,l,d,u,A,x,S,D,w,_,O,R,k,N]),(0,a.jsx)("div",{className:"react-flow__renderer",ref:j,style:es,children:v})}let eu=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function eg(){let{userSelectionActive:e,userSelectionRect:t}=m(eu,c.x);return e&&t?(0,a.jsx)("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}let ef=(e,t)=>n=>{n.target===t.current&&e?.(n)},ep=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function em({isSelecting:e,selectionKeyPressed:t,selectionMode:n=s.Qc.Full,panOnDrag:o,autoPanOnSelection:r,paneClickDistance:d,selectionOnDrag:u,onSelectionStart:g,onSelectionEnd:f,onPaneClick:p,onPaneContextMenu:y,onPaneScroll:b,onPaneMouseEnter:x,onPaneMouseMove:v,onPaneMouseLeave:w,children:S}){let C=(0,i.useRef)(0),E=h(),{userSelectionActive:N,elementsSelectable:k,dragging:M,connectionInProgress:P,panBy:j,autoPanSpeed:D}=m(ep,c.x),_=k&&(e||N),R=(0,i.useRef)(null),A=(0,i.useRef)(),I=(0,i.useRef)(new Set),O=(0,i.useRef)(new Set),L=(0,i.useRef)(!1),z=(0,i.useRef)({x:0,y:0}),B=(0,i.useRef)(!1),$=e=>{if(L.current||P){L.current=!1;return}p?.(e),E.getState().resetSelectedElements(),E.setState({nodesSelectionActive:!1})};function V(e,t){let{userSelectionRect:o}=E.getState();if(!o)return;let{transform:r,nodeLookup:a,edgeLookup:i,connectionLookup:l,triggerNodeChanges:d,triggerEdgeChanges:c,defaultEdgeOptions:u}=E.getState(),g={x:o.startX,y:o.startY},{x:f,y:p}=(0,s.zj)(g,r),m={startX:g.x,startY:g.y,x:e<f?e:f,y:t<p?t:p,width:Math.abs(e-f),height:Math.abs(t-p)},h=I.current,y=O.current;I.current=new Set((0,s.U$)(a,m,r,n===s.Qc.Partial,!0).map(e=>e.id)),O.current=new Set;let b=u?.selectable??!0;for(let e of I.current){let t=l.get(e);if(t)for(let{edgeId:e}of t.values()){let t=i.get(e);t&&(t.selectable??b)&&O.current.add(e)}}(0,s._s)(h,I.current)||d(Y(a,I.current,!0)),(0,s._s)(y,O.current)||c(Y(i,O.current)),E.setState({userSelectionRect:m,userSelectionActive:!0,nodesSelectionActive:!1})}let F=()=>{cancelAnimationFrame(C.current),C.current=0,B.current=!1};(0,i.useEffect)(()=>()=>F(),[]);let H=!0===o||Array.isArray(o)&&o.includes(0);return(0,a.jsxs)("div",{className:(0,l.A)(["react-flow__pane",{draggable:H,dragging:M,selection:e}]),onClick:_?void 0:ef($,R),onContextMenu:ef(e=>{Array.isArray(o)&&o?.includes(2)?e.preventDefault():y?.(e)},R),onWheel:ef(b?e=>b(e):void 0,R),onPointerEnter:_?void 0:x,onPointerMove:_?e=>{let{userSelectionRect:n,transform:o,resetSelectedElements:a}=E.getState();if(!A.current||!n)return;let{x:i,y:l}=(0,s.q1)(e.nativeEvent,A.current);z.current={x:i,y:l};let c=(0,s.zj)({x:n.startX,y:n.startY},o);if(!L.current){if(Math.hypot(i-c.x,l-c.y)<=(t?0:d))return;a(),g?.(e)}L.current=!0,B.current||(!function e(){if(!r||!A.current)return;let[t,n]=(0,s._7)(z.current,A.current,D);j({x:t,y:n}).then(t=>{if(!L.current||!t){C.current=requestAnimationFrame(e);return}let{x:n,y:o}=z.current;V(n,o),C.current=requestAnimationFrame(e)})}(),B.current=!0),V(i,l)}:v,onPointerUp:_?e=>{0===e.button&&(e.target?.releasePointerCapture?.(e.pointerId),!N&&e.target===R.current&&E.getState().userSelectionRect&&$?.(e),E.setState({userSelectionActive:!1,userSelectionRect:null}),L.current&&(f?.(e),E.setState({nodesSelectionActive:I.current.size>0})),F())}:void 0,onPointerCancel:_?e=>{e.target?.releasePointerCapture?.(e.pointerId),F()}:void 0,onPointerDownCapture:_?n=>{let{domNode:o,transform:r}=E.getState();if(A.current=o?.getBoundingClientRect(),!A.current)return;let a=n.target===R.current;if(!a&&n.target.closest(".nokey")||!e||!(u&&a||t)||0!==n.button||!n.isPrimary)return;n.target?.setPointerCapture?.(n.pointerId),L.current=!1;let{x:i,y:l}=(0,s.q1)(n.nativeEvent,A.current),d=(0,s.Ff)({x:i,y:l},r);E.setState({userSelectionRect:{width:0,height:0,startX:d.x,startY:d.y,x:i,y:l}}),a||(n.stopPropagation(),n.preventDefault())}:void 0,onClickCapture:_?e=>{L.current&&(e.stopPropagation(),L.current=!1)}:void 0,onPointerLeave:w,ref:R,style:es,children:[S,(0,a.jsx)(eg,{})]})}function eh({id:e,store:t,unselect:n=!1,nodeRef:o}){let{addSelectedNodes:r,unselectNodesAndEdges:a,multiSelectionActive:i,nodeLookup:l,onError:d}=t.getState(),c=l.get(e);c?(t.setState({nodesSelectionActive:!1}),c.selected?(n||c.selected&&i)&&(a({nodes:[c],edges:[]}),requestAnimationFrame(()=>o?.current?.blur())):r([e])):d?.("012",s.xc.error012(e))}function ey({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:o,nodeId:r,isSelectable:a,nodeClickDistance:l}){let d=h(),[c,u]=(0,i.useState)(!1),g=(0,i.useRef)();return(0,i.useEffect)(()=>{g.current=(0,s.I$)({getStoreItems:()=>d.getState(),onNodeMouseDown:t=>{eh({id:t,store:d,nodeRef:e})},onDragStart:()=>{u(!0)},onDragStop:()=>{u(!1)}})},[]),(0,i.useEffect)(()=>{if(!t&&e.current&&g.current)return g.current.update({noDragClassName:n,handleSelector:o,domNode:e.current,isSelectable:a,nodeId:r,nodeClickDistance:l}),()=>{g.current?.destroy()}},[n,o,t,a,e,r,l]),c}function eb(){let e=h();return(0,i.useCallback)(t=>{let{nodeExtent:n,snapToGrid:o,snapGrid:r,nodesDraggable:a,onError:i,updateNodePositions:l,nodeLookup:d,nodeOrigin:c}=e.getState(),u=new Map,g=e=>e.selected&&(e.draggable||a&&void 0===e.draggable),f=o?r[0]:5,p=o?r[1]:5,m=t.direction.x*f*t.factor,h=t.direction.y*p*t.factor;for(let[,e]of d){if(!g(e))continue;let t={x:e.internals.positionAbsolute.x+m,y:e.internals.positionAbsolute.y+h};o&&(t=(0,s.s_)(t,r));let{position:a,positionAbsolute:l}=(0,s.aE)({nodeId:e.id,nextPosition:t,nodeLookup:d,nodeExtent:n,nodeOrigin:c,onError:i});e.position=a,e.internals.positionAbsolute=l,u.set(e.id,e)}l(u)},[])}let ex=(0,i.createContext)(null),ev=ex.Provider;ex.Consumer;let ew=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),eS=(0,i.memo)(J(function({type:e="source",position:t=s.yX.Top,isValidConnection:n,isConnectable:o=!0,isConnectableStart:r=!0,isConnectableEnd:d=!0,id:u,onConnect:g,children:f,className:p,onMouseDown:y,onTouchStart:b,...x},v){let w=u||null,S="target"===e,C=h(),E=(0,i.useContext)(ex),{connectOnClick:N,noPanClassName:k,rfId:M}=m(ew,c.x),{connectingFrom:P,connectingTo:j,clickConnecting:D,isPossibleEndHandle:_,connectionInProcess:R,clickConnectionInProcess:A,valid:I}=m(t=>{let{connectionClickStartHandle:n,connectionMode:o,connection:r}=t,{fromHandle:a,toHandle:i,isValid:l}=r,d=i?.nodeId===E&&i?.id===w&&i?.type===e;return{connectingFrom:a?.nodeId===E&&a?.id===w&&a?.type===e,connectingTo:d,clickConnecting:n?.nodeId===E&&n?.id===w&&n?.type===e,isPossibleEndHandle:o===s.WZ.Strict?a?.type!==e:E!==a?.nodeId||w!==a?.id,connectionInProcess:!!a,clickConnectionInProcess:!!n,valid:d&&l}},c.x);E||C.getState().onError?.("010",s.xc.error010());let O=e=>{let{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:o}=C.getState(),r={...t,...e};if(o){let{edges:e,setEdges:t,onError:n}=C.getState();t(function(e,t,n={}){return(0,s.rN)(e,t,{...n,onError:n.onError??U})}(r,e,{onError:n}))}n?.(r),g?.(r)},L=e=>{if(!E)return;let t=(0,s.Er)(e.nativeEvent);if(r&&(t&&0===e.button||!t)){let t=C.getState();s.aQ.onPointerDown(e.nativeEvent,{handleDomNode:e.currentTarget,autoPanOnConnect:t.autoPanOnConnect,connectionMode:t.connectionMode,connectionRadius:t.connectionRadius,domNode:t.domNode,nodeLookup:t.nodeLookup,lib:t.lib,isTarget:S,handleId:w,nodeId:E,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:(...e)=>C.getState().onConnectEnd?.(...e),updateConnection:t.updateConnection,onConnect:O,isValidConnection:n||((...e)=>C.getState().isValidConnection?.(...e)??!0),getTransform:()=>C.getState().transform,getFromHandle:()=>C.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed,dragThreshold:t.connectionDragThreshold})}t?y?.(e):b?.(e)};return(0,a.jsx)("div",{"data-handleid":w,"data-nodeid":E,"data-handlepos":t,"data-id":`${M}-${E}-${w}-${e}`,className:(0,l.A)(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",k,p,{source:!S,target:S,connectable:o,connectablestart:r,connectableend:d,clickconnecting:D,connectingfrom:P,connectingto:j,valid:I,connectionindicator:o&&(!R||_)&&(R||A?d:r)}]),onMouseDown:L,onTouchStart:L,onClick:N?t=>{let{onClickConnectStart:o,onClickConnectEnd:a,connectionClickStartHandle:i,connectionMode:l,isValidConnection:d,lib:c,rfId:u,nodeLookup:g,connection:f}=C.getState();if(!E||!i&&!r)return;if(!i){o?.(t.nativeEvent,{nodeId:E,handleId:w,handleType:e}),C.setState({connectionClickStartHandle:{nodeId:E,type:e,id:w}});return}let p=(0,s.oj)(t.target),m=n||d,{connection:h,isValid:y}=s.aQ.isValid(t.nativeEvent,{handle:{nodeId:E,id:w,type:e},connectionMode:l,fromNodeId:i.nodeId,fromHandleId:i.id||null,fromType:i.type,isValidConnection:m,flowId:u,doc:p,lib:c,nodeLookup:g});y&&h&&O(h);let b=structuredClone(f);delete b.inProgress,b.toPosition=b.toHandle?b.toHandle.position:null,a?.(t,b),C.setState({connectionClickStartHandle:null})}:void 0,ref:v,...x,children:f})})),eC={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},eE={input:function({data:e,isConnectable:t,sourcePosition:n=s.yX.Bottom}){return(0,a.jsxs)(a.Fragment,{children:[e?.label,(0,a.jsx)(eS,{type:"source",position:n,isConnectable:t})]})},default:function({data:e,isConnectable:t,targetPosition:n=s.yX.Top,sourcePosition:o=s.yX.Bottom}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eS,{type:"target",position:n,isConnectable:t}),e?.label,(0,a.jsx)(eS,{type:"source",position:o,isConnectable:t})]})},output:function({data:e,isConnectable:t,targetPosition:n=s.yX.Top}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eS,{type:"target",position:n,isConnectable:t}),e?.label]})},group:function(){return null}},eN=e=>{let{width:t,height:n,x:o,y:r}=(0,s.aZ)(e.nodeLookup,{filter:e=>!!e.selected});return{width:(0,s.kf)(t)?t:null,height:(0,s.kf)(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${o}px,${r}px)`}};function ek({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){let o=h(),{width:r,height:s,transformString:d,userSelectionActive:u}=m(eN,c.x),g=eb(),f=(0,i.useRef)(null);(0,i.useEffect)(()=>{n||f.current?.focus({preventScroll:!0})},[n]);let p=!u&&null!==r&&null!==s;if(ey({nodeRef:f,disabled:!p}),!p)return null;let y=e?t=>{e(t,o.getState().nodes.filter(e=>e.selected))}:void 0;return(0,a.jsx)("div",{className:(0,l.A)(["react-flow__nodesselection","react-flow__container",t]),style:{transform:d},children:(0,a.jsx)("div",{ref:f,className:"react-flow__nodesselection-rect",onContextMenu:y,tabIndex:n?void 0:-1,onKeyDown:n?void 0:e=>{Object.prototype.hasOwnProperty.call(eC,e.key)&&(e.preventDefault(),g({direction:eC[e.key],factor:e.shiftKey?4:1}))},style:{width:r,height:s}})})}let eM="u">typeof window?window:void 0,eP=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function ej({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:o,onPaneMouseLeave:r,onPaneContextMenu:l,onPaneScroll:s,paneClickDistance:d,deleteKeyCode:u,selectionKeyCode:g,selectionOnDrag:f,selectionMode:p,onSelectionStart:y,onSelectionEnd:b,multiSelectionKeyCode:x,panActivationKeyCode:v,zoomActivationKeyCode:w,elementsSelectable:S,zoomOnScroll:C,zoomOnPinch:E,panOnScroll:N,panOnScrollSpeed:k,panOnScrollMode:M,zoomOnDoubleClick:P,panOnDrag:j,autoPanOnSelection:D,defaultViewport:_,translateExtent:R,minZoom:A,maxZoom:I,preventScrolling:O,onSelectionContextMenu:L,noWheelClassName:z,noPanClassName:B,disableKeyboardA11y:$,onViewportChange:V,isControlledViewport:H}){let{nodesSelectionActive:T,userSelectionActive:Z}=m(eP,c.x),X=F(g,{target:eM}),W=F(v,{target:eM}),K=W||j,Y=W||N,Q=f&&!0!==K,q=X||Z||Q;return!function({deleteKeyCode:e,multiSelectionKeyCode:t}){let n=h(),{deleteElements:o}=ea(),r=F(e,{actInsideInputWithModifier:!1}),a=F(t,{target:el});(0,i.useEffect)(()=>{if(r){let{edges:e,nodes:t}=n.getState();o({nodes:t.filter(ei),edges:e.filter(ei)}),n.setState({nodesSelectionActive:!1})}},[r]),(0,i.useEffect)(()=>{n.setState({multiSelectionActive:a})},[a])}({deleteKeyCode:u,multiSelectionKeyCode:x}),(0,a.jsx)(ec,{onPaneContextMenu:l,elementsSelectable:S,zoomOnScroll:C,zoomOnPinch:E,panOnScroll:Y,panOnScrollSpeed:k,panOnScrollMode:M,zoomOnDoubleClick:P,panOnDrag:!X&&K,defaultViewport:_,translateExtent:R,minZoom:A,maxZoom:I,zoomActivationKeyCode:w,preventScrolling:O,noWheelClassName:z,noPanClassName:B,onViewportChange:V,isControlledViewport:H,paneClickDistance:d,selectionOnDrag:Q,children:(0,a.jsxs)(em,{onSelectionStart:y,onSelectionEnd:b,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:o,onPaneMouseLeave:r,onPaneContextMenu:l,onPaneScroll:s,panOnDrag:K,autoPanOnSelection:D,isSelecting:!!q,selectionMode:p,selectionKeyPressed:X,paneClickDistance:d,selectionOnDrag:Q,children:[e,T&&(0,a.jsx)(ek,{onSelectionContextMenu:L,noPanClassName:B,disableKeyboardA11y:$})]})})}ej.displayName="FlowRenderer";let eD=(0,i.memo)(ej),e_=e=>e.updateNodeInternals;var eR=(0,i.memo)(function({id:e,onClick:t,onMouseEnter:n,onMouseMove:o,onMouseLeave:r,onContextMenu:d,onDoubleClick:u,nodesDraggable:g,elementsSelectable:f,nodesConnectable:p,nodesFocusable:y,resizeObserver:b,noDragClassName:v,noPanClassName:w,disableKeyboardA11y:S,rfId:C,nodeTypes:E,nodeClickDistance:N,onError:k}){let{node:M,internals:P,isParent:j}=m(t=>{let n=t.nodeLookup.get(e),o=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:o}},c.x),D=M.type||"default",_=E?.[D]||eE[D];void 0===_&&(k?.("003",s.xc.error003(D)),D="default",_=E?.default||eE.default);let R=!!(M.draggable||g&&void 0===M.draggable),A=!!(M.selectable||f&&void 0===M.selectable),I=!!(M.connectable||p&&void 0===M.connectable),O=!!(M.focusable||y&&void 0===M.focusable),L=h(),z=(0,s.QE)(M),B=function({node:e,nodeType:t,hasDimensions:n,resizeObserver:o}){let r=h(),a=(0,i.useRef)(null),l=(0,i.useRef)(null),s=(0,i.useRef)(e.sourcePosition),d=(0,i.useRef)(e.targetPosition),c=(0,i.useRef)(t),u=n&&!!e.internals.handleBounds;return(0,i.useEffect)(()=>{!a.current||e.hidden||u&&l.current===a.current||(l.current&&o?.unobserve(l.current),o?.observe(a.current),l.current=a.current)},[u,e.hidden]),(0,i.useEffect)(()=>()=>{l.current&&(o?.unobserve(l.current),l.current=null)},[]),(0,i.useEffect)(()=>{if(a.current){let n=c.current!==t,o=s.current!==e.sourcePosition,i=d.current!==e.targetPosition;(n||o||i)&&(c.current=t,s.current=e.sourcePosition,d.current=e.targetPosition,r.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:a.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),a}({node:M,nodeType:D,hasDimensions:z,resizeObserver:b}),$=ey({nodeRef:B,disabled:M.hidden||!R,noDragClassName:v,handleSelector:M.dragHandle,nodeId:e,isSelectable:A,nodeClickDistance:N}),V=eb();if(M.hidden)return null;let F=(0,s.uD)(M),H=void 0===M.internals.handleBounds?{width:M.width??M.initialWidth??M.style?.width,height:M.height??M.initialHeight??M.style?.height}:{width:M.width??M.style?.width,height:M.height??M.style?.height},T=A||R||t||n||o||r,Z=n?e=>n(e,{...P.userNode}):void 0,X=o?e=>o(e,{...P.userNode}):void 0,W=r?e=>r(e,{...P.userNode}):void 0,K=d?e=>d(e,{...P.userNode}):void 0,Y=u?e=>u(e,{...P.userNode}):void 0;return(0,a.jsx)("div",{className:(0,l.A)(["react-flow__node",`react-flow__node-${D}`,{[w]:R},M.className,{selected:M.selected,selectable:A,parent:j,draggable:R,dragging:$}]),ref:B,style:{zIndex:P.z,transform:`translate(${P.positionAbsolute.x}px,${P.positionAbsolute.y}px)`,pointerEvents:T?"all":"none",visibility:z?"visible":"hidden",...M.style,...H},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:Z,onMouseMove:X,onMouseLeave:W,onContextMenu:K,onClick:n=>{let{selectNodesOnDrag:o,nodeDragThreshold:r}=L.getState();A&&(!o||!R||r>0)&&eh({id:e,store:L,nodeRef:B}),t&&t(n,{...P.userNode})},onDoubleClick:Y,onKeyDown:O?t=>{if(!(0,s.v5)(t.nativeEvent)&&!S){if(s.tn.includes(t.key)&&A)eh({id:e,store:L,unselect:"Escape"===t.key,nodeRef:B});else if(R&&M.selected&&Object.prototype.hasOwnProperty.call(eC,t.key)){t.preventDefault();let{ariaLabelConfig:e}=L.getState();L.setState({ariaLiveMessage:e["node.a11yDescription.ariaLiveMessage"]({direction:t.key.replace("Arrow","").toLowerCase(),x:~~P.positionAbsolute.x,y:~~P.positionAbsolute.y})}),V({direction:eC[t.key],factor:t.shiftKey?4:1})}}}:void 0,tabIndex:O?0:void 0,onFocus:O?()=>{if(S||!B.current?.matches(":focus-visible"))return;let{transform:t,width:n,height:o,autoPanOnNodeFocus:r,setCenter:a}=L.getState();!r||(0,s.U$)(new Map([[e,M]]),{x:0,y:0,width:n,height:o},t,!0).length>0||a(M.position.x+F.width/2,M.position.y+F.height/2,{zoom:t[2]})}:void 0,role:M.ariaRole??(O?"group":void 0),"aria-roledescription":"node","aria-describedby":S?void 0:`${x}-${C}`,"aria-label":M.ariaLabel,...M.domAttributes,children:(0,a.jsx)(ev,{value:e,children:(0,a.jsx)(_,{id:e,data:M.data,type:D,positionAbsoluteX:P.positionAbsolute.x,positionAbsoluteY:P.positionAbsolute.y,selected:M.selected??!1,selectable:A,draggable:R,deletable:M.deletable??!0,isConnectable:I,sourcePosition:M.sourcePosition,targetPosition:M.targetPosition,dragging:$,dragHandle:M.dragHandle,zIndex:P.z,parentId:M.parentId,...F})})})});let eA=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function eI(e){var t;let{nodesDraggable:n,nodesConnectable:o,nodesFocusable:r,elementsSelectable:l,onError:d}=m(eA,c.x),u=(t=e.onlyRenderVisibleElements,m((0,i.useCallback)(e=>t?(0,s.U$)(e.nodeLookup,{x:0,y:0,width:e.width,height:e.height},e.transform,!0).map(e=>e.id):Array.from(e.nodeLookup.keys()),[t]),c.x)),g=function(){let e=m(e_),[t]=(0,i.useState)(()=>"u"<typeof ResizeObserver?null:new ResizeObserver(t=>{let n=new Map;t.forEach(e=>{let t=e.target.getAttribute("data-id");n.set(t,{id:t,nodeElement:e.target,force:!0})}),e(n)}));return(0,i.useEffect)(()=>()=>{t?.disconnect()},[t]),t}();return(0,a.jsx)("div",{className:"react-flow__nodes",style:es,children:u.map(t=>(0,a.jsx)(eR,{id:t,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:g,nodesDraggable:n,nodesConnectable:o,nodesFocusable:r,elementsSelectable:l,nodeClickDistance:e.nodeClickDistance,onError:d},t))})}eI.displayName="NodeRenderer";let eO=(0,i.memo)(eI),eL={[s.TG.Arrow]:({color:e="none",strokeWidth:t=1})=>{let n={strokeWidth:t,...e&&{stroke:e}};return(0,a.jsx)("polyline",{className:"arrow",style:n,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},[s.TG.ArrowClosed]:({color:e="none",strokeWidth:t=1})=>{let n={strokeWidth:t,...e&&{stroke:e,fill:e}};return(0,a.jsx)("polyline",{className:"arrowclosed",style:n,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})}},ez=({id:e,type:t,color:n,width:o=12.5,height:r=12.5,markerUnits:l="strokeWidth",strokeWidth:d,orient:c="auto-start-reverse"})=>{let u,g=(u=h(),(0,i.useMemo)(()=>Object.prototype.hasOwnProperty.call(eL,t)?eL[t]:(u.getState().onError?.("009",s.xc.error009(t)),null),[t]));return g?(0,a.jsx)("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${o}`,markerHeight:`${r}`,viewBox:"-10 -10 20 20",markerUnits:l,orient:c,refX:"0",refY:"0",children:(0,a.jsx)(g,{color:n,strokeWidth:d})}):null},eB=({defaultColor:e,rfId:t})=>{let n=m(e=>e.edges),o=m(e=>e.defaultEdgeOptions),r=(0,i.useMemo)(()=>(0,s.Hm)(n,{id:t,defaultColor:e,defaultMarkerStart:o?.markerStart,defaultMarkerEnd:o?.markerEnd}),[n,o,t,e]);return r.length?(0,a.jsx)("svg",{className:"react-flow__marker","aria-hidden":"true",children:(0,a.jsx)("defs",{children:r.map(e=>(0,a.jsx)(ez,{id:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,strokeWidth:e.strokeWidth,orient:e.orient},e.id))})}):null};eB.displayName="MarkerDefinitions";var e$=(0,i.memo)(eB);function eV({x:e,y:t,label:n,labelStyle:o,labelShowBg:r=!0,labelBgStyle:s,labelBgPadding:d=[2,4],labelBgBorderRadius:c=2,children:u,className:g,...f}){let[p,m]=(0,i.useState)({x:1,y:0,width:0,height:0}),h=(0,l.A)(["react-flow__edge-textwrapper",g]),y=(0,i.useRef)(null);return((0,i.useEffect)(()=>{if(y.current){let e=y.current.getBBox();m({x:e.x,y:e.y,width:e.width,height:e.height})}},[n]),n)?(0,a.jsxs)("g",{transform:`translate(${e-p.width/2} ${t-p.height/2})`,className:h,visibility:p.width?"visible":"hidden",...f,children:[r&&(0,a.jsx)("rect",{width:p.width+2*d[0],x:-d[0],y:-d[1],height:p.height+2*d[1],className:"react-flow__edge-textbg",style:s,rx:c,ry:c}),(0,a.jsx)("text",{className:"react-flow__edge-text",y:p.height/2,dy:"0.3em",ref:y,style:o,children:n}),u]}):null}eV.displayName="EdgeText";let eF=(0,i.memo)(eV);function eH({path:e,labelX:t,labelY:n,label:o,labelStyle:r,labelShowBg:i,labelBgStyle:d,labelBgPadding:c,labelBgBorderRadius:u,interactionWidth:g=20,...f}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{...f,d:e,fill:"none",className:(0,l.A)(["react-flow__edge-path",f.className])}),g?(0,a.jsx)("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:g,className:"react-flow__edge-interaction"}):null,o&&(0,s.kf)(t)&&(0,s.kf)(n)?(0,a.jsx)(eF,{x:t,y:n,label:o,labelStyle:r,labelShowBg:i,labelBgStyle:d,labelBgPadding:c,labelBgBorderRadius:u}):null]})}function eT({pos:e,x1:t,y1:n,x2:o,y2:r}){return e===s.yX.Left||e===s.yX.Right?[.5*(t+o),n]:[t,.5*(n+r)]}function eZ({sourceX:e,sourceY:t,sourcePosition:n=s.yX.Bottom,targetX:o,targetY:r,targetPosition:a=s.yX.Top}){let[i,l]=eT({pos:n,x1:e,y1:t,x2:o,y2:r}),[d,c]=eT({pos:a,x1:o,y1:r,x2:e,y2:t}),[u,g,f,p]=(0,s.e_)({sourceX:e,sourceY:t,targetX:o,targetY:r,sourceControlX:i,sourceControlY:l,targetControlX:d,targetControlY:c});return[`M${e},${t} C${i},${l} ${d},${c} ${o},${r}`,u,g,f,p]}function eX(e){return(0,i.memo)(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:i,sourcePosition:l,targetPosition:s,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:y,interactionWidth:b})=>{let[x,v,w]=eZ({sourceX:n,sourceY:o,sourcePosition:l,targetX:r,targetY:i,targetPosition:s}),S=e.isInternal?void 0:t;return(0,a.jsx)(eH,{id:S,path:x,labelX:v,labelY:w,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:y,interactionWidth:b})})}let eW=eX({isInternal:!1}),eK=eX({isInternal:!0});function eY(e){return(0,i.memo)(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:i,label:l,labelStyle:d,labelShowBg:c,labelBgStyle:u,labelBgPadding:g,labelBgBorderRadius:f,style:p,sourcePosition:m=s.yX.Bottom,targetPosition:h=s.yX.Top,markerEnd:y,markerStart:b,pathOptions:x,interactionWidth:v})=>{let[w,S,C]=(0,s.oN)({sourceX:n,sourceY:o,sourcePosition:m,targetX:r,targetY:i,targetPosition:h,borderRadius:x?.borderRadius,offset:x?.offset,stepPosition:x?.stepPosition}),E=e.isInternal?void 0:t;return(0,a.jsx)(eH,{id:E,path:w,labelX:S,labelY:C,label:l,labelStyle:d,labelShowBg:c,labelBgStyle:u,labelBgPadding:g,labelBgBorderRadius:f,style:p,markerEnd:y,markerStart:b,interactionWidth:v})})}eW.displayName="SimpleBezierEdge",eK.displayName="SimpleBezierEdgeInternal";let eQ=eY({isInternal:!1}),eq=eY({isInternal:!0});function eU(e){return(0,i.memo)(({id:t,...n})=>{let o=e.isInternal?void 0:t;return(0,a.jsx)(eQ,{...n,id:o,pathOptions:(0,i.useMemo)(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}eQ.displayName="SmoothStepEdge",eq.displayName="SmoothStepEdgeInternal";let eG=eU({isInternal:!1}),eJ=eU({isInternal:!0});function e0(e){return(0,i.memo)(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:i,label:l,labelStyle:d,labelShowBg:c,labelBgStyle:u,labelBgPadding:g,labelBgBorderRadius:f,style:p,markerEnd:m,markerStart:h,interactionWidth:y})=>{let[b,x,v]=(0,s.ah)({sourceX:n,sourceY:o,targetX:r,targetY:i}),w=e.isInternal?void 0:t;return(0,a.jsx)(eH,{id:w,path:b,labelX:x,labelY:v,label:l,labelStyle:d,labelShowBg:c,labelBgStyle:u,labelBgPadding:g,labelBgBorderRadius:f,style:p,markerEnd:m,markerStart:h,interactionWidth:y})})}eG.displayName="StepEdge",eJ.displayName="StepEdgeInternal";let e1=e0({isInternal:!1}),e3=e0({isInternal:!0});function e2(e){return(0,i.memo)(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:i,sourcePosition:l=s.yX.Bottom,targetPosition:d=s.yX.Top,label:c,labelStyle:u,labelShowBg:g,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:m,style:h,markerEnd:y,markerStart:b,pathOptions:x,interactionWidth:v})=>{let[w,S,C]=(0,s.Fp)({sourceX:n,sourceY:o,sourcePosition:l,targetX:r,targetY:i,targetPosition:d,curvature:x?.curvature}),E=e.isInternal?void 0:t;return(0,a.jsx)(eH,{id:E,path:w,labelX:S,labelY:C,label:c,labelStyle:u,labelShowBg:g,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:m,style:h,markerEnd:y,markerStart:b,interactionWidth:v})})}e1.displayName="StraightEdge",e3.displayName="StraightEdgeInternal";let e4=e2({isInternal:!1}),e5=e2({isInternal:!0});e4.displayName="BezierEdge",e5.displayName="BezierEdgeInternal";let e6={default:e5,straight:e3,step:eJ,smoothstep:eq,simplebezier:eK},e7={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},e8="react-flow__edgeupdater";function e9({position:e,centerX:t,centerY:n,radius:o=10,onMouseDown:r,onMouseEnter:i,onMouseOut:d,type:c}){return(0,a.jsx)("circle",{onMouseDown:r,onMouseEnter:i,onMouseOut:d,className:(0,l.A)([e8,`${e8}-${c}`]),cx:e===s.yX.Left?t-o:e===s.yX.Right?t+o:t,cy:e===s.yX.Top?n-o:e===s.yX.Bottom?n+o:n,r:o,stroke:"transparent",fill:"transparent"})}function te({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:o,sourceY:r,targetX:i,targetY:l,sourcePosition:d,targetPosition:c,onReconnect:u,onReconnectStart:g,onReconnectEnd:f,setReconnecting:p,setUpdateHover:m}){let y=h(),b=(e,t)=>{if(0!==e.button)return;let{autoPanOnConnect:o,domNode:r,connectionMode:a,connectionRadius:i,lib:l,onConnectStart:d,cancelConnection:c,nodeLookup:m,rfId:h,panBy:b,updateConnection:x}=y.getState(),v="target"===t.type;s.aQ.onPointerDown(e.nativeEvent,{autoPanOnConnect:o,connectionMode:a,connectionRadius:i,domNode:r,handleId:t.id,nodeId:t.nodeId,nodeLookup:m,isTarget:v,edgeUpdaterType:t.type,lib:l,flowId:h,cancelConnection:c,panBy:b,isValidConnection:(...e)=>y.getState().isValidConnection?.(...e)??!0,onConnect:e=>u?.(n,e),onConnectStart:(o,r)=>{p(!0),g?.(e,n,t.type),d?.(o,r)},onConnectEnd:(...e)=>y.getState().onConnectEnd?.(...e),onReconnectEnd:(e,o)=>{p(!1),f?.(e,n,t.type,o)},updateConnection:x,getTransform:()=>y.getState().transform,getFromHandle:()=>y.getState().connection.fromHandle,dragThreshold:y.getState().connectionDragThreshold,handleDomNode:e.currentTarget})},x=()=>m(!0),v=()=>m(!1);return(0,a.jsxs)(a.Fragment,{children:[(!0===e||"source"===e)&&(0,a.jsx)(e9,{position:d,centerX:o,centerY:r,radius:t,onMouseDown:e=>b(e,{nodeId:n.target,id:n.targetHandle??null,type:"target"}),onMouseEnter:x,onMouseOut:v,type:"source"}),(!0===e||"target"===e)&&(0,a.jsx)(e9,{position:c,centerX:i,centerY:l,radius:t,onMouseDown:e=>b(e,{nodeId:n.source,id:n.sourceHandle??null,type:"source"}),onMouseEnter:x,onMouseOut:v,type:"target"})]})}var tt=(0,i.memo)(function({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:o,onClick:r,onDoubleClick:d,onContextMenu:u,onMouseEnter:g,onMouseMove:f,onMouseLeave:p,reconnectRadius:y,onReconnect:b,onReconnectStart:x,onReconnectEnd:w,rfId:S,edgeTypes:C,noPanClassName:E,onError:N,disableKeyboardA11y:k}){let M=m(t=>t.edgeLookup.get(e)),P=m(e=>e.defaultEdgeOptions),j=(M=P?{...P,...M}:M).type||"default",D=C?.[j]||e6[j];void 0===D&&(N?.("011",s.xc.error011(j)),j="default",D=C?.default||e6.default);let _=!!(M.focusable||t&&void 0===M.focusable),R=void 0!==b&&(M.reconnectable||n&&void 0===M.reconnectable),A=!!(M.selectable||o&&void 0===M.selectable),I=(0,i.useRef)(null),[O,L]=(0,i.useState)(!1),[z,B]=(0,i.useState)(!1),$=h(),{zIndex:V,sourceX:F,sourceY:H,targetX:T,targetY:Z,sourcePosition:X,targetPosition:W}=m((0,i.useCallback)(t=>{let n=t.nodeLookup.get(M.source),o=t.nodeLookup.get(M.target);if(!n||!o)return{zIndex:M.zIndex,...e7};let r=(0,s.b5)({id:e,sourceNode:n,targetNode:o,sourceHandle:M.sourceHandle||null,targetHandle:M.targetHandle||null,connectionMode:t.connectionMode,onError:N});return{zIndex:(0,s.qX)({selected:M.selected,zIndex:M.zIndex,sourceNode:n,targetNode:o,elevateOnSelect:t.elevateEdgesOnSelect,zIndexMode:t.zIndexMode}),...r||e7}},[M.source,M.target,M.sourceHandle,M.targetHandle,M.selected,M.zIndex]),c.x),K=(0,i.useMemo)(()=>M.markerStart?`url('#${(0,s.aW)(M.markerStart,S)}')`:void 0,[M.markerStart,S]),Y=(0,i.useMemo)(()=>M.markerEnd?`url('#${(0,s.aW)(M.markerEnd,S)}')`:void 0,[M.markerEnd,S]);if(M.hidden||null===F||null===H||null===T||null===Z)return null;let Q=d?e=>{d(e,{...M})}:void 0,q=u?e=>{u(e,{...M})}:void 0,U=g?e=>{g(e,{...M})}:void 0,G=f?e=>{f(e,{...M})}:void 0,J=p?e=>{p(e,{...M})}:void 0;return(0,a.jsx)("svg",{style:{zIndex:V},children:(0,a.jsxs)("g",{className:(0,l.A)(["react-flow__edge",`react-flow__edge-${j}`,M.className,E,{selected:M.selected,animated:M.animated,inactive:!A&&!r,updating:O,selectable:A}]),onClick:t=>{let{addSelectedEdges:n,unselectNodesAndEdges:o,multiSelectionActive:a}=$.getState();A&&($.setState({nodesSelectionActive:!1}),M.selected&&a?(o({nodes:[],edges:[M]}),I.current?.blur()):n([e])),r&&r(t,M)},onDoubleClick:Q,onContextMenu:q,onMouseEnter:U,onMouseMove:G,onMouseLeave:J,onKeyDown:_?t=>{if(!k&&s.tn.includes(t.key)&&A){let{unselectNodesAndEdges:n,addSelectedEdges:o}=$.getState();"Escape"===t.key?(I.current?.blur(),n({edges:[M]})):o([e])}}:void 0,tabIndex:_?0:void 0,role:M.ariaRole??(_?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":null===M.ariaLabel?void 0:M.ariaLabel||`Edge from ${M.source} to ${M.target}`,"aria-describedby":_?`${v}-${S}`:void 0,ref:I,...M.domAttributes,children:[!z&&(0,a.jsx)(D,{id:e,source:M.source,target:M.target,type:M.type,selected:M.selected,animated:M.animated,selectable:A,deletable:M.deletable??!0,label:M.label,labelStyle:M.labelStyle,labelShowBg:M.labelShowBg,labelBgStyle:M.labelBgStyle,labelBgPadding:M.labelBgPadding,labelBgBorderRadius:M.labelBgBorderRadius,sourceX:F,sourceY:H,targetX:T,targetY:Z,sourcePosition:X,targetPosition:W,data:M.data,style:M.style,sourceHandleId:M.sourceHandle,targetHandleId:M.targetHandle,markerStart:K,markerEnd:Y,pathOptions:"pathOptions"in M?M.pathOptions:void 0,interactionWidth:M.interactionWidth}),R&&(0,a.jsx)(te,{edge:M,isReconnectable:R,reconnectRadius:y,onReconnect:b,onReconnectStart:x,onReconnectEnd:w,sourceX:F,sourceY:H,targetX:T,targetY:Z,sourcePosition:X,targetPosition:W,setUpdateHover:L,setReconnecting:B})]})})});let tn=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function to({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:o,noPanClassName:r,onReconnect:l,onEdgeContextMenu:d,onEdgeMouseEnter:u,onEdgeMouseMove:g,onEdgeMouseLeave:f,onEdgeClick:p,reconnectRadius:h,onEdgeDoubleClick:y,onReconnectStart:b,onReconnectEnd:x,disableKeyboardA11y:v}){let{edgesFocusable:w,edgesReconnectable:S,elementsSelectable:C,onError:E}=m(tn,c.x),N=m((0,i.useCallback)(e=>{if(!t)return e.edges.map(e=>e.id);let n=[];if(e.width&&e.height)for(let t of e.edges){let o=e.nodeLookup.get(t.source),r=e.nodeLookup.get(t.target);o&&r&&(0,s.uj)({sourceNode:o,targetNode:r,width:e.width,height:e.height,transform:e.transform})&&n.push(t.id)}return n},[t]),c.x);return(0,a.jsxs)("div",{className:"react-flow__edges",children:[(0,a.jsx)(e$,{defaultColor:e,rfId:n}),N.map(e=>(0,a.jsx)(tt,{id:e,edgesFocusable:w,edgesReconnectable:S,elementsSelectable:C,noPanClassName:r,onReconnect:l,onContextMenu:d,onMouseEnter:u,onMouseMove:g,onMouseLeave:f,onClick:p,reconnectRadius:h,onDoubleClick:y,onReconnectStart:b,onReconnectEnd:x,rfId:n,onError:E,edgeTypes:o,disableKeyboardA11y:v},e))]})}to.displayName="EdgeRenderer";let tr=(0,i.memo)(to),ta=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function ti({children:e}){let t=m(ta);return(0,a.jsx)("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:t},children:e})}let tl=e=>e.panZoom?.syncViewport;function ts(e){return e.connection.inProgress?{...e.connection,to:(0,s.Ff)(e.connection.to,e.transform)}:{...e.connection}}let td=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function tc({containerStyle:e,style:t,type:n,component:o}){let{nodesConnectable:r,width:i,height:d,isValid:u,inProgress:g}=m(td,c.x);return i&&r&&g?(0,a.jsx)("svg",{style:e,width:i,height:d,className:"react-flow__connectionline react-flow__container",children:(0,a.jsx)("g",{className:(0,l.A)(["react-flow__connection",(0,s.HF)(u)]),children:(0,a.jsx)(tu,{style:t,type:n,CustomComponent:o,isValid:u})})}):null}let tu=({style:e,type:t=s.Do.Bezier,CustomComponent:n,isValid:o})=>{let{inProgress:r,from:i,fromNode:l,fromHandle:d,fromPosition:u,to:g,toNode:f,toHandle:p,toPosition:h,pointer:y}=m(ts,c.x);if(!r)return;if(n)return(0,a.jsx)(n,{connectionLineType:t,connectionLineStyle:e,fromNode:l,fromHandle:d,fromX:i.x,fromY:i.y,toX:g.x,toY:g.y,fromPosition:u,toPosition:h,connectionStatus:(0,s.HF)(o),toNode:f,toHandle:p,pointer:y});let b="",x={sourceX:i.x,sourceY:i.y,sourcePosition:u,targetX:g.x,targetY:g.y,targetPosition:h};switch(t){case s.Do.Bezier:[b]=(0,s.Fp)(x);break;case s.Do.SimpleBezier:[b]=eZ(x);break;case s.Do.Step:[b]=(0,s.oN)({...x,borderRadius:0});break;case s.Do.SmoothStep:[b]=(0,s.oN)(x);break;default:[b]=(0,s.ah)(x)}return(0,a.jsx)("path",{d:b,fill:"none",className:"react-flow__connection-path",style:e})};tu.displayName="ConnectionLine";let tg={};function tf(e=tg){(0,i.useRef)(e),h(),(0,i.useEffect)(()=>{},[e])}function tp({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:o,onEdgeClick:r,onNodeDoubleClick:l,onEdgeDoubleClick:s,onNodeMouseEnter:d,onNodeMouseMove:c,onNodeMouseLeave:u,onNodeContextMenu:g,onSelectionContextMenu:f,onSelectionStart:p,onSelectionEnd:y,connectionLineType:b,connectionLineStyle:x,connectionLineComponent:v,connectionLineContainerStyle:w,selectionKeyCode:S,selectionOnDrag:C,selectionMode:E,multiSelectionKeyCode:N,panActivationKeyCode:k,zoomActivationKeyCode:M,deleteKeyCode:P,onlyRenderVisibleElements:j,elementsSelectable:D,defaultViewport:_,translateExtent:R,minZoom:A,maxZoom:I,preventScrolling:O,defaultMarkerColor:L,zoomOnScroll:z,zoomOnPinch:B,panOnScroll:$,panOnScrollSpeed:V,panOnScrollMode:F,zoomOnDoubleClick:H,panOnDrag:T,autoPanOnSelection:Z,onPaneClick:X,onPaneMouseEnter:W,onPaneMouseMove:K,onPaneMouseLeave:Y,onPaneScroll:Q,onPaneContextMenu:q,paneClickDistance:U,nodeClickDistance:G,onEdgeContextMenu:J,onEdgeMouseEnter:ee,onEdgeMouseMove:et,onEdgeMouseLeave:en,reconnectRadius:eo,onReconnect:er,onReconnectStart:ei,onReconnectEnd:el,noDragClassName:es,noWheelClassName:ed,noPanClassName:ec,disableKeyboardA11y:eu,nodeExtent:eg,rfId:ef,viewport:ep,onViewportChange:em}){let eh,ey,eb,ex;return tf(e),tf(t),h(),(0,i.useRef)(!1),(0,i.useEffect)(()=>{},[]),eh=ea(),ey=(0,i.useRef)(!1),(0,i.useEffect)(()=>{!ey.current&&eh.viewportInitialized&&n&&(setTimeout(()=>n(eh),1),ey.current=!0)},[n,eh.viewportInitialized]),eb=m(tl),ex=h(),(0,i.useEffect)(()=>{ep&&(eb?.(ep),ex.setState({transform:[ep.x,ep.y,ep.zoom]}))},[ep,eb]),(0,a.jsx)(eD,{onPaneClick:X,onPaneMouseEnter:W,onPaneMouseMove:K,onPaneMouseLeave:Y,onPaneContextMenu:q,onPaneScroll:Q,paneClickDistance:U,deleteKeyCode:P,selectionKeyCode:S,selectionOnDrag:C,selectionMode:E,onSelectionStart:p,onSelectionEnd:y,multiSelectionKeyCode:N,panActivationKeyCode:k,zoomActivationKeyCode:M,elementsSelectable:D,zoomOnScroll:z,zoomOnPinch:B,zoomOnDoubleClick:H,panOnScroll:$,panOnScrollSpeed:V,panOnScrollMode:F,panOnDrag:T,autoPanOnSelection:Z,defaultViewport:_,translateExtent:R,minZoom:A,maxZoom:I,onSelectionContextMenu:f,preventScrolling:O,noDragClassName:es,noWheelClassName:ed,noPanClassName:ec,disableKeyboardA11y:eu,onViewportChange:em,isControlledViewport:!!ep,children:(0,a.jsxs)(ti,{children:[(0,a.jsx)(tr,{edgeTypes:t,onEdgeClick:r,onEdgeDoubleClick:s,onReconnect:er,onReconnectStart:ei,onReconnectEnd:el,onlyRenderVisibleElements:j,onEdgeContextMenu:J,onEdgeMouseEnter:ee,onEdgeMouseMove:et,onEdgeMouseLeave:en,reconnectRadius:eo,defaultMarkerColor:L,noPanClassName:ec,disableKeyboardA11y:eu,rfId:ef}),(0,a.jsx)(tc,{style:x,type:b,component:v,containerStyle:w}),(0,a.jsx)("div",{className:"react-flow__edgelabel-renderer"}),(0,a.jsx)(eO,{nodeTypes:e,onNodeClick:o,onNodeDoubleClick:l,onNodeMouseEnter:d,onNodeMouseMove:c,onNodeMouseLeave:u,onNodeContextMenu:g,nodeClickDistance:G,onlyRenderVisibleElements:j,noPanClassName:ec,noDragClassName:es,disableKeyboardA11y:eu,nodeExtent:eg,rfId:ef}),(0,a.jsx)("div",{className:"react-flow__viewport-portal"})]})})}tp.displayName="GraphView";let tm=(0,i.memo)(tp),th=(0,s.kr)("React Flow","https://reactflow.dev/"),ty=({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:a,fitView:i,fitViewOptions:l,minZoom:d=.5,maxZoom:c=2,nodeOrigin:u,nodeExtent:g,zIndexMode:f="basic"}={})=>{let p=new Map,m=new Map,h=new Map,y=new Map,b=o??t??[],x=n??e??[],v=u??[0,0],w=g??s.ZO;(0,s.qn)(h,y,b);let{nodesInitialized:S}=(0,s.bi)(x,p,m,{nodeOrigin:v,nodeExtent:w,zIndexMode:f}),C=[0,0,1];if(i&&r&&a){let e=(0,s.aZ)(p,{filter:e=>!!((e.width||e.initialWidth)&&(e.height||e.initialHeight))}),{x:t,y:n,zoom:o}=(0,s.R4)(e,r,a,d,c,l?.padding??.1);C=[t,n,o]}return{rfId:"1",width:r??0,height:a??0,transform:C,nodes:x,nodesInitialized:S,nodeLookup:p,parentLookup:m,edges:b,edgeLookup:y,connectionLookup:h,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:void 0!==n,hasDefaultEdges:void 0!==o,panZoom:null,minZoom:d,maxZoom:c,translateExtent:s.ZO,nodeExtent:w,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:s.WZ.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:v,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:i??!1,fitViewOptions:l,fitViewResolver:null,connection:{...s.bK},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:th,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:s.tM,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}};function tb({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:o,initialWidth:r,initialHeight:l,initialMinZoom:c,initialMaxZoom:u,initialFitViewOptions:g,fitView:p,nodeOrigin:m,nodeExtent:h,zIndexMode:y,children:b}){let[x]=(0,i.useState)(()=>(({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:a,fitView:i,fitViewOptions:l,minZoom:c,maxZoom:u,nodeOrigin:g,nodeExtent:f,zIndexMode:p})=>(0,d.h)((d,m)=>{async function h(){let{nodeLookup:e,panZoom:t,fitViewOptions:n,fitViewResolver:o,width:r,height:a,minZoom:i,maxZoom:l}=m();t&&(await (0,s.IO)({nodes:e,width:r,height:a,panZoom:t,minZoom:i,maxZoom:l},n),o?.resolve(!0),d({fitViewResolver:null}))}return{...ty({nodes:e,edges:t,width:r,height:a,fitView:i,fitViewOptions:l,minZoom:c,maxZoom:u,nodeOrigin:g,nodeExtent:f,defaultNodes:n,defaultEdges:o,zIndexMode:p}),setNodes:e=>{let{nodeLookup:t,parentLookup:n,nodeOrigin:o,elevateNodesOnSelect:r,fitViewQueued:a,zIndexMode:i,nodesSelectionActive:l}=m(),{nodesInitialized:c,hasSelectedNodes:u}=(0,s.bi)(e,t,n,{nodeOrigin:o,nodeExtent:f,elevateNodesOnSelect:r,checkEquality:!0,zIndexMode:i}),g=l&&u;a&&c?(h(),d({nodes:e,nodesInitialized:c,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:g})):d({nodes:e,nodesInitialized:c,nodesSelectionActive:g})},setEdges:e=>{let{connectionLookup:t,edgeLookup:n}=m();(0,s.qn)(t,n,e),d({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){let{setNodes:t}=m();t(e),d({hasDefaultNodes:!0})}if(t){let{setEdges:e}=m();e(t),d({hasDefaultEdges:!0})}},updateNodeInternals:e=>{let{triggerNodeChanges:t,nodeLookup:n,parentLookup:o,domNode:r,nodeOrigin:a,nodeExtent:i,debug:l,fitViewQueued:c,zIndexMode:u}=m(),{changes:g,updatedInternals:f}=(0,s.uL)(e,n,o,r,a,i,u);f&&((0,s.vS)(n,o,{nodeOrigin:a,nodeExtent:i,zIndexMode:u}),c?(h(),d({fitViewQueued:!1,fitViewOptions:void 0})):d({}),g?.length>0&&(l&&console.log("React Flow: trigger node changes",g),t?.(g)))},updateNodePositions:(e,t=!1)=>{let n=[],o=[],{nodeLookup:r,triggerNodeChanges:a,connection:i,updateConnection:l,onNodesChangeMiddlewareMap:d}=m();for(let[a,d]of e){let e=r.get(a),c=!!(e?.expandParent&&e?.parentId&&d?.position),u={id:a,type:"position",position:c?{x:Math.max(0,d.position.x),y:Math.max(0,d.position.y)}:d.position,dragging:t};if(e&&i.inProgress&&i.fromNode.id===e.id){let t=(0,s.M_)(e,i.fromHandle,s.yX.Left,!0);l({...i,from:t})}c&&e.parentId&&n.push({id:a,parentId:e.parentId,rect:{...d.internals.positionAbsolute,width:d.measured.width??0,height:d.measured.height??0}}),o.push(u)}if(n.length>0){let{parentLookup:e,nodeOrigin:t}=m(),a=(0,s.r8)(n,r,e,t);o.push(...a)}for(let e of d.values())o=e(o);a(o)},triggerNodeChanges:e=>{let{onNodesChange:t,setNodes:n,nodes:o,hasDefaultNodes:r,debug:a}=m();e?.length&&(r&&n(Z(e,o)),a&&console.log("React Flow: trigger node changes",e),t?.(e))},triggerEdgeChanges:e=>{let{onEdgesChange:t,setEdges:n,edges:o,hasDefaultEdges:r,debug:a}=m();e?.length&&(r&&n(Z(e,o)),a&&console.log("React Flow: trigger edge changes",e),t?.(e))},addSelectedNodes:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:a}=m();t?r(e.map(e=>K(e,!0))):(r(Y(o,new Set([...e]),!0)),a(Y(n)))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:a}=m();t?a(e.map(e=>K(e,!0))):(a(Y(n,new Set([...e]))),r(Y(o,new Set,!0)))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{let{edges:n,nodes:o,nodeLookup:r,triggerNodeChanges:a,triggerEdgeChanges:i}=m(),l=[];for(let t of e||o){if(!t.selected)continue;let e=r.get(t.id);e&&(e.selected=!1),l.push(K(t.id,!1))}let s=[];for(let e of t||n)e.selected&&s.push(K(e.id,!1));a(l),i(s)},setMinZoom:e=>{let{panZoom:t,maxZoom:n}=m();t?.setScaleExtent([e,n]),d({minZoom:e})},setMaxZoom:e=>{let{panZoom:t,minZoom:n}=m();t?.setScaleExtent([n,e]),d({maxZoom:e})},setTranslateExtent:e=>{m().panZoom?.setTranslateExtent(e),d({translateExtent:e})},resetSelectedElements:()=>{let{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:o,elementsSelectable:r}=m();if(!r)return;let a=t.reduce((e,t)=>t.selected?[...e,K(t.id,!1)]:e,[]),i=e.reduce((e,t)=>t.selected?[...e,K(t.id,!1)]:e,[]);n(a),o(i)},setNodeExtent:e=>{let{nodes:t,nodeLookup:n,parentLookup:o,nodeOrigin:r,elevateNodesOnSelect:a,nodeExtent:i,zIndexMode:l}=m();(e[0][0]!==i[0][0]||e[0][1]!==i[0][1]||e[1][0]!==i[1][0]||e[1][1]!==i[1][1])&&((0,s.bi)(t,n,o,{nodeOrigin:r,nodeExtent:e,elevateNodesOnSelect:a,checkEquality:!1,zIndexMode:l}),d({nodeExtent:e}))},panBy:e=>{let{transform:t,width:n,height:o,panZoom:r,translateExtent:a}=m();return(0,s.No)({delta:e,panZoom:r,transform:t,translateExtent:a,width:n,height:o})},setCenter:async(e,t,n)=>{let{width:o,height:r,maxZoom:a,panZoom:i}=m();if(!i)return!1;let l=void 0!==n?.zoom?n.zoom:a;return await i.setViewport({x:o/2-e*l,y:r/2-t*l,zoom:l},{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0},cancelConnection:()=>{d({connection:{...s.bK}})},updateConnection:e=>{d({connection:e})},reset:()=>d({...ty()})}},Object.is))({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:l,fitView:p,minZoom:c,maxZoom:u,fitViewOptions:g,nodeOrigin:m,nodeExtent:h,zIndexMode:y}));return(0,a.jsx)(f,{value:x,children:(0,a.jsx)(eo,{children:b})})}function tx({children:e,nodes:t,edges:n,defaultNodes:o,defaultEdges:r,width:l,height:s,fitView:d,fitViewOptions:c,minZoom:u,maxZoom:f,nodeOrigin:p,nodeExtent:m,zIndexMode:h}){return(0,i.useContext)(g)?(0,a.jsx)(a.Fragment,{children:e}):(0,a.jsx)(tb,{initialNodes:t,initialEdges:n,defaultNodes:o,defaultEdges:r,initialWidth:l,initialHeight:s,fitView:d,initialFitViewOptions:c,initialMinZoom:u,initialMaxZoom:f,nodeOrigin:p,nodeExtent:m,zIndexMode:h,children:e})}let tv={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};var tw=J(function({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,className:r,nodeTypes:d,edgeTypes:c,onNodeClick:u,onEdgeClick:g,onInit:f,onMove:p,onMoveStart:m,onMoveEnd:h,onConnect:y,onConnectStart:b,onConnectEnd:x,onClickConnectStart:v,onClickConnectEnd:w,onNodeMouseEnter:S,onNodeMouseMove:C,onNodeMouseLeave:N,onNodeContextMenu:M,onNodeDoubleClick:P,onNodeDragStart:j,onNodeDrag:D,onNodeDragStop:_,onNodesDelete:O,onEdgesDelete:L,onDelete:z,onSelectionChange:V,onSelectionDragStart:F,onSelectionDrag:H,onSelectionDragStop:T,onSelectionContextMenu:Z,onSelectionStart:X,onSelectionEnd:W,onBeforeDelete:K,connectionMode:Y,connectionLineType:Q=s.Do.Bezier,connectionLineStyle:q,connectionLineComponent:U,connectionLineContainerStyle:G,deleteKeyCode:J="Backspace",selectionKeyCode:ee="Shift",selectionOnDrag:et=!1,selectionMode:en=s.Qc.Full,panActivationKeyCode:eo="Space",multiSelectionKeyCode:er=(0,s.Ue)()?"Meta":"Control",zoomActivationKeyCode:ea=(0,s.Ue)()?"Meta":"Control",snapToGrid:ei,snapGrid:el,onlyRenderVisibleElements:es=!1,selectNodesOnDrag:ed,nodesDraggable:ec,autoPanOnNodeFocus:eu,nodesConnectable:eg,nodesFocusable:ef,nodeOrigin:ep=A,edgesFocusable:em,edgesReconnectable:eh,elementsSelectable:ey=!0,defaultViewport:eb=I,minZoom:ex=.5,maxZoom:ev=2,translateExtent:ew=s.ZO,preventScrolling:eS=!0,nodeExtent:eC,defaultMarkerColor:eE="#b1b1b7",zoomOnScroll:eN=!0,zoomOnPinch:ek=!0,panOnScroll:eM=!1,panOnScrollSpeed:eP=.5,panOnScrollMode:ej=s.ny.Free,zoomOnDoubleClick:eD=!0,panOnDrag:e_=!0,onPaneClick:eR,onPaneMouseEnter:eA,onPaneMouseMove:eI,onPaneMouseLeave:eO,onPaneScroll:eL,onPaneContextMenu:ez,paneClickDistance:eB=1,nodeClickDistance:e$=0,children:eV,onReconnect:eF,onReconnectStart:eH,onReconnectEnd:eT,onEdgeContextMenu:eZ,onEdgeDoubleClick:eX,onEdgeMouseEnter:eW,onEdgeMouseMove:eK,onEdgeMouseLeave:eY,reconnectRadius:eQ=10,onNodesChange:eq,onEdgesChange:eU,noDragClassName:eG="nodrag",noWheelClassName:eJ="nowheel",noPanClassName:e0="nopan",fitView:e1,fitViewOptions:e3,connectOnClick:e2,attributionPosition:e4,proOptions:e5,defaultEdgeOptions:e6,elevateNodesOnSelect:e7=!0,elevateEdgesOnSelect:e8=!1,disableKeyboardA11y:e9=!1,autoPanOnConnect:te,autoPanOnNodeDrag:tt,autoPanOnSelection:tn=!0,autoPanSpeed:to,connectionRadius:tr,isValidConnection:ta,onError:ti,style:tl,id:ts,nodeDragThreshold:td,connectionDragThreshold:tc,viewport:tu,onViewportChange:tg,width:tf,height:tp,colorMode:th="light",debug:ty,onScroll:tb,ariaLabelConfig:tw,zIndexMode:tS="basic",...tC},tE){let tN=ts||"1",tk=function(e){let[t,n]=(0,i.useState)("system"===e?null:e);return(0,i.useEffect)(()=>{if("system"!==e)return void n(e);let t=$(),o=()=>n(t?.matches?"dark":"light");return o(),t?.addEventListener("change",o),()=>{t?.removeEventListener("change",o)}},[e]),null!==t?t:$()?.matches?"dark":"light"}(th),tM=(0,i.useCallback)(e=>{e.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),tb?.(e)},[tb]);return(0,a.jsx)("div",{"data-testid":"rf__wrapper",...tC,onScroll:tM,style:{...tl,...tv},ref:tE,className:(0,l.A)(["react-flow",r,tk]),id:ts,role:"application",children:(0,a.jsxs)(tx,{nodes:e,edges:t,width:tf,height:tp,fitView:e1,fitViewOptions:e3,minZoom:ex,maxZoom:ev,nodeOrigin:ep,nodeExtent:eC,zIndexMode:tS,children:[(0,a.jsx)(B,{nodes:e,edges:t,defaultNodes:n,defaultEdges:o,onConnect:y,onConnectStart:b,onConnectEnd:x,onClickConnectStart:v,onClickConnectEnd:w,nodesDraggable:ec,autoPanOnNodeFocus:eu,nodesConnectable:eg,nodesFocusable:ef,edgesFocusable:em,edgesReconnectable:eh,elementsSelectable:ey,elevateNodesOnSelect:e7,elevateEdgesOnSelect:e8,minZoom:ex,maxZoom:ev,nodeExtent:eC,onNodesChange:eq,onEdgesChange:eU,snapToGrid:ei,snapGrid:el,connectionMode:Y,translateExtent:ew,connectOnClick:e2,defaultEdgeOptions:e6,fitView:e1,fitViewOptions:e3,onNodesDelete:O,onEdgesDelete:L,onDelete:z,onNodeDragStart:j,onNodeDrag:D,onNodeDragStop:_,onSelectionDrag:H,onSelectionDragStart:F,onSelectionDragStop:T,onMove:p,onMoveStart:m,onMoveEnd:h,noPanClassName:e0,nodeOrigin:ep,rfId:tN,autoPanOnConnect:te,autoPanOnNodeDrag:tt,autoPanSpeed:to,onError:ti,connectionRadius:tr,isValidConnection:ta,selectNodesOnDrag:ed,nodeDragThreshold:td,connectionDragThreshold:tc,onBeforeDelete:K,debug:ty,ariaLabelConfig:tw,zIndexMode:tS}),(0,a.jsx)(tm,{onInit:f,onNodeClick:u,onEdgeClick:g,onNodeMouseEnter:S,onNodeMouseMove:C,onNodeMouseLeave:N,onNodeContextMenu:M,onNodeDoubleClick:P,nodeTypes:d,edgeTypes:c,connectionLineType:Q,connectionLineStyle:q,connectionLineComponent:U,connectionLineContainerStyle:G,selectionKeyCode:ee,selectionOnDrag:et,selectionMode:en,deleteKeyCode:J,multiSelectionKeyCode:er,panActivationKeyCode:eo,zoomActivationKeyCode:ea,onlyRenderVisibleElements:es,defaultViewport:eb,translateExtent:ew,minZoom:ex,maxZoom:ev,preventScrolling:eS,zoomOnScroll:eN,zoomOnPinch:ek,zoomOnDoubleClick:eD,panOnScroll:eM,panOnScrollSpeed:eP,panOnScrollMode:ej,panOnDrag:e_,autoPanOnSelection:tn,onPaneClick:eR,onPaneMouseEnter:eA,onPaneMouseMove:eI,onPaneMouseLeave:eO,onPaneScroll:eL,onPaneContextMenu:ez,paneClickDistance:eB,nodeClickDistance:e$,onSelectionContextMenu:Z,onSelectionStart:X,onSelectionEnd:W,onReconnect:eF,onReconnectStart:eH,onReconnectEnd:eT,onEdgeContextMenu:eZ,onEdgeDoubleClick:eX,onEdgeMouseEnter:eW,onEdgeMouseMove:eK,onEdgeMouseLeave:eY,reconnectRadius:eQ,defaultMarkerColor:eE,noDragClassName:eG,noWheelClassName:eJ,noPanClassName:e0,rfId:tN,disableKeyboardA11y:e9,nodeExtent:eC,viewport:tu,onViewportChange:tg}),(0,a.jsx)(R,{onSelectionChange:V}),eV,(0,a.jsx)(k,{proOptions:e5,position:e4}),(0,a.jsx)(E,{rfId:tN,disableKeyboardA11y:e9})]})})});let tS=e=>e.domNode?.querySelector(".react-flow__edgelabel-renderer");function tC({children:e}){let t=m(tS);return t?(0,u.createPortal)(e,t):null}let tE=e=>e.domNode?.querySelector(".react-flow__viewport-portal");function tN({children:e}){let t=m(tE);return t?(0,u.createPortal)(e,t):null}function tk(e){let[t,n]=(0,i.useState)(e),o=(0,i.useCallback)(e=>n(t=>Z(e,t)),[]);return[t,n,o]}function tM(e){return m((0,i.useCallback)(t=>t.nodeLookup.get(e),[e]),c.x)}function tP(){return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:(0,a.jsx)("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function tj(){return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:(0,a.jsx)("path",{d:"M0 0h32v4.2H0z"})})}function tD(){return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:(0,a.jsx)("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function t_(){return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:(0,a.jsx)("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function tR(){return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:(0,a.jsx)("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function tA({children:e,className:t,...n}){return(0,a.jsx)("button",{type:"button",className:(0,l.A)(["react-flow__controls-button",t]),...n,children:e})}s.xc.error014(),(o=r||(r={})).Lines="lines",o.Dots="dots",o.Cross="cross",r.Dots,r.Lines,r.Cross;let tI=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function tO({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:o=!0,fitViewOptions:r,onZoomIn:i,onZoomOut:s,onFitView:d,onInteractiveChange:u,className:g,children:f,position:p="bottom-left",orientation:y="vertical","aria-label":b}){let x=h(),{isInteractive:v,minZoomReached:w,maxZoomReached:S,ariaLabelConfig:C}=m(tI,c.x),{zoomIn:E,zoomOut:k,fitView:M}=ea();return(0,a.jsxs)(N,{className:(0,l.A)(["react-flow__controls","horizontal"===y?"horizontal":"vertical",g]),position:p,style:e,"data-testid":"rf__controls","aria-label":b??C["controls.ariaLabel"],children:[t&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(tA,{onClick:()=>{E(),i?.()},className:"react-flow__controls-zoomin",title:C["controls.zoomIn.ariaLabel"],"aria-label":C["controls.zoomIn.ariaLabel"],disabled:S,children:(0,a.jsx)(tP,{})}),(0,a.jsx)(tA,{onClick:()=>{k(),s?.()},className:"react-flow__controls-zoomout",title:C["controls.zoomOut.ariaLabel"],"aria-label":C["controls.zoomOut.ariaLabel"],disabled:w,children:(0,a.jsx)(tj,{})})]}),n&&(0,a.jsx)(tA,{className:"react-flow__controls-fitview",onClick:()=>{M(r),d?.()},title:C["controls.fitView.ariaLabel"],"aria-label":C["controls.fitView.ariaLabel"],children:(0,a.jsx)(tD,{})}),o&&(0,a.jsx)(tA,{className:"react-flow__controls-interactive",onClick:()=>{x.setState({nodesDraggable:!v,nodesConnectable:!v,elementsSelectable:!v}),u?.(!v)},title:C["controls.interactive.ariaLabel"],"aria-label":C["controls.interactive.ariaLabel"],children:v?(0,a.jsx)(tR,{}):(0,a.jsx)(t_,{})}),f]})}tO.displayName="Controls";let tL=(0,i.memo)(tO),tz=(0,i.memo)(function({id:e,x:t,y:n,width:o,height:r,style:i,color:s,strokeColor:d,strokeWidth:c,className:u,borderRadius:g,shapeRendering:f,selected:p,onClick:m}){let{background:h,backgroundColor:y}=i||{};return(0,a.jsx)("rect",{className:(0,l.A)(["react-flow__minimap-node",{selected:p},u]),x:t,y:n,rx:g,ry:g,width:o,height:r,style:{fill:s||h||y,stroke:d,strokeWidth:c},shapeRendering:f,onClick:m?t=>m(t,e):void 0})}),tB=e=>e.nodes.map(e=>e.id),t$=e=>e instanceof Function?e:()=>e,tV=(0,i.memo)(function({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:o,nodeBorderRadius:r,nodeStrokeWidth:i,shapeRendering:l,NodeComponent:d,onClick:u}){let{node:g,x:f,y:p,width:h,height:y}=m(t=>{let n=t.nodeLookup.get(e);if(!n)return{node:void 0,x:0,y:0,width:0,height:0};let o=n.internals.userNode,{x:r,y:a}=n.internals.positionAbsolute,{width:i,height:l}=(0,s.uD)(o);return{node:o,x:r,y:a,width:i,height:l}},c.x);return g&&!g.hidden&&(0,s.QE)(g)?(0,a.jsx)(d,{x:f,y:p,width:h,height:y,style:g.style,selected:!!g.selected,className:o(g),color:t(g),borderRadius:r,strokeColor:n(g),strokeWidth:i,shapeRendering:l,onClick:u,id:g.id}):null});var tF=(0,i.memo)(function({nodeStrokeColor:e,nodeColor:t,nodeClassName:n="",nodeBorderRadius:o=5,nodeStrokeWidth:r,nodeComponent:i=tz,onClick:l}){let s=m(tB,c.x),d=t$(t),u=t$(e),g=t$(n),f="u"<typeof window||window.chrome?"crispEdges":"geometricPrecision";return(0,a.jsx)(a.Fragment,{children:s.map(e=>(0,a.jsx)(tV,{id:e,nodeColorFunc:d,nodeStrokeColorFunc:u,nodeClassNameFunc:g,nodeBorderRadius:o,nodeStrokeWidth:r,NodeComponent:i,onClick:l,shapeRendering:f},e))})});let tH=e=>!e.hidden,tT=e=>{let t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?(0,s.Mi)((0,s.aZ)(e.nodeLookup,{filter:tH}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}};function tZ({style:e,className:t,nodeStrokeColor:n,nodeColor:o,nodeClassName:r="",nodeBorderRadius:d=5,nodeStrokeWidth:u,nodeComponent:g,bgColor:f,maskColor:p,maskStrokeColor:y,maskStrokeWidth:b,position:x="bottom-right",onClick:v,onNodeClick:w,pannable:S=!1,zoomable:C=!1,ariaLabel:E,inversePan:k,zoomStep:M=1,offsetScale:P=5}){let j=h(),D=(0,i.useRef)(null),{boundingRect:_,viewBB:R,rfId:A,panZoom:I,translateExtent:O,flowWidth:L,flowHeight:z,ariaLabelConfig:B}=m(tT,c.x),$=e?.width??200,V=e?.height??150,F=Math.max(_.width/$,_.height/V),H=F*$,T=F*V,Z=P*F,X=_.x-(H-_.width)/2-Z,W=_.y-(T-_.height)/2-Z,K=H+2*Z,Y=T+2*Z,Q=`react-flow__minimap-desc-${A}`,q=(0,i.useRef)(0),U=(0,i.useRef)();q.current=F,(0,i.useEffect)(()=>{if(D.current&&I)return U.current=(0,s.di)({domNode:D.current,panZoom:I,getTransform:()=>j.getState().transform,getViewScale:()=>q.current}),()=>{U.current?.destroy()}},[I]),(0,i.useEffect)(()=>{U.current?.update({translateExtent:O,width:L,height:z,inversePan:k,pannable:S,zoomStep:M,zoomable:C})},[S,C,k,M,O,L,z]);let G=v?e=>{let[t,n]=U.current?.pointer(e)||[0,0];v(e,{x:t,y:n})}:void 0,J=w?(0,i.useCallback)((e,t)=>{w(e,j.getState().nodeLookup.get(t).internals.userNode)},[]):void 0,ee=E??B["minimap.ariaLabel"];return(0,a.jsx)(N,{position:x,style:{...e,"--xy-minimap-background-color-props":"string"==typeof f?f:void 0,"--xy-minimap-mask-background-color-props":"string"==typeof p?p:void 0,"--xy-minimap-mask-stroke-color-props":"string"==typeof y?y:void 0,"--xy-minimap-mask-stroke-width-props":"number"==typeof b?b*F:void 0,"--xy-minimap-node-background-color-props":"string"==typeof o?o:void 0,"--xy-minimap-node-stroke-color-props":"string"==typeof n?n:void 0,"--xy-minimap-node-stroke-width-props":"number"==typeof u?u:void 0},className:(0,l.A)(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:(0,a.jsxs)("svg",{width:$,height:V,viewBox:`${X} ${W} ${K} ${Y}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":Q,ref:D,onClick:G,children:[ee&&(0,a.jsx)("title",{id:Q,children:ee}),(0,a.jsx)(tF,{onClick:J,nodeColor:o,nodeStrokeColor:n,nodeBorderRadius:d,nodeClassName:r,nodeStrokeWidth:u,nodeComponent:g}),(0,a.jsx)("path",{className:"react-flow__minimap-mask",d:`M${X-Z},${W-Z}h${K+2*Z}v${Y+2*Z}h${-K-2*Z}z
2
+ M${R.x},${R.y}h${R.width}v${R.height}h${-R.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}tZ.displayName="MiniMap";let tX=(0,i.memo)(tZ);s.xN.Line,s.xN.Handle}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,204,439,730,1145,1235,1288,1361,1570,1617,1662,1918,1929,2442,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4284,4360,4505,4636,4816,4852,4896,5022,5043,5152,5190,5412,5807,5884,6600,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7743,7851,8167,8235,8617,8650,9140,9550,9560],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,204,439,730,1145,1235,1288,1361,1570,1617,1662,1918,1929,2442,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4284,4360,4505,4636,4816,4852,4896,5022,5043,5152,5190,5412,5807,5884,6600,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7743,7851,8167,8235,8617,8650,9140,9550,9560],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,204,439,730,1145,1235,1288,1361,1570,1617,1662,1918,1929,2442,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4284,4360,4505,4636,4816,4852,4896,5022,5043,5152,5190,5412,5807,5884,6600,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7743,7851,8167,8235,8617,8650,9140,9550,9560],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,204,439,730,1145,1235,1288,1361,1570,1617,1662,1918,1929,2442,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4284,4360,4505,4636,4816,4852,4896,5022,5043,5152,5190,5412,5807,5884,6600,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7743,7851,8167,8235,8617,8650,9140,9550,9560],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,204,439,730,1145,1235,1288,1361,1570,1617,1662,1918,1929,2442,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4284,4360,4505,4636,4816,4852,4896,5022,5043,5152,5190,5412,5807,5884,6600,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7743,7851,8167,8235,8617,8650,9140,9550,9560],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,204,439,730,1145,1235,1288,1361,1570,1617,1662,1918,1929,2442,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4284,4360,4505,4636,4816,4852,4896,5022,5043,5152,5190,5412,5807,5884,6600,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7743,7851,8167,8235,8617,8650,9140,9550,9560],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);