trybeacon 0.1.24 → 0.1.25

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 (357) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +7 -6
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/routes-manifest.json +6 -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/reconcile-endpoints/route.js +1 -1
  54. package/.next/server/app/api/db/reconcile-endpoints/route.js.nft.json +1 -1
  55. package/.next/server/app/api/db/relations/[id]/route.js +1 -1
  56. package/.next/server/app/api/db/relations/[id]/route.js.nft.json +1 -1
  57. package/.next/server/app/api/db/tables/[id]/route.js +1 -1
  58. package/.next/server/app/api/db/tables/[id]/route.js.nft.json +1 -1
  59. package/.next/server/app/api/draft/approve/route.js +1 -5
  60. package/.next/server/app/api/draft/approve/route.js.nft.json +1 -1
  61. package/.next/server/app/api/draft/route.js +1 -5
  62. package/.next/server/app/api/draft/route.js.nft.json +1 -1
  63. package/.next/server/app/api/draft/status/route.js +1 -1
  64. package/.next/server/app/api/draft/status/route.js.nft.json +1 -1
  65. package/.next/server/app/api/edges/[id]/route.js +1 -1
  66. package/.next/server/app/api/edges/[id]/route.js.nft.json +1 -1
  67. package/.next/server/app/api/edges/route.js +1 -1
  68. package/.next/server/app/api/edges/route.js.nft.json +1 -1
  69. package/.next/server/app/api/endpoints/[id]/route.js +1 -1
  70. package/.next/server/app/api/endpoints/[id]/route.js.nft.json +1 -1
  71. package/.next/server/app/api/entities/route.js +1 -1
  72. package/.next/server/app/api/entities/route.js.nft.json +1 -1
  73. package/.next/server/app/api/feedback/[id]/route.js +1 -1
  74. package/.next/server/app/api/feedback/[id]/route.js.nft.json +1 -1
  75. package/.next/server/app/api/feedback/[id]/vote/route.js +1 -1
  76. package/.next/server/app/api/feedback/[id]/vote/route.js.nft.json +1 -1
  77. package/.next/server/app/api/feedback/route.js +1 -1
  78. package/.next/server/app/api/feedback/route.js.nft.json +1 -1
  79. package/.next/server/app/api/ingest/route.js +2 -2
  80. package/.next/server/app/api/ingest/route.js.nft.json +1 -1
  81. package/.next/server/app/api/init/route.js +2 -2
  82. package/.next/server/app/api/init/route.js.nft.json +1 -1
  83. package/.next/server/app/api/map/describe/route.js +2 -2
  84. package/.next/server/app/api/map/describe/route.js.nft.json +1 -1
  85. package/.next/server/app/api/map/files/route.js +1 -1
  86. package/.next/server/app/api/map/files/route.js.nft.json +1 -1
  87. package/.next/server/app/api/map/finish/route.js +1 -1
  88. package/.next/server/app/api/map/finish/route.js.nft.json +1 -1
  89. package/.next/server/app/api/map/route.js +1 -1
  90. package/.next/server/app/api/map/route.js.nft.json +1 -1
  91. package/.next/server/app/api/map/start/route.js +1 -1
  92. package/.next/server/app/api/map/start/route.js.nft.json +1 -1
  93. package/.next/server/app/api/map/touch-active/route.js +1 -1
  94. package/.next/server/app/api/map/touch-active/route.js.nft.json +1 -1
  95. package/.next/server/app/api/nodes/[id]/position/route.js +1 -1
  96. package/.next/server/app/api/nodes/[id]/position/route.js.nft.json +1 -1
  97. package/.next/server/app/api/nodes/[id]/route.js +1 -1
  98. package/.next/server/app/api/nodes/[id]/route.js.nft.json +1 -1
  99. package/.next/server/app/api/nodes/positions/route.js +1 -1
  100. package/.next/server/app/api/nodes/positions/route.js.nft.json +1 -1
  101. package/.next/server/app/api/nodes/route.js +1 -1
  102. package/.next/server/app/api/nodes/route.js.nft.json +1 -1
  103. package/.next/server/app/api/nodes/subtasks/route.js +1 -1
  104. package/.next/server/app/api/nodes/subtasks/route.js.nft.json +1 -1
  105. package/.next/server/app/api/notes/[id]/route.js +1 -1
  106. package/.next/server/app/api/notes/[id]/route.js.nft.json +1 -1
  107. package/.next/server/app/api/notes/route.js +1 -1
  108. package/.next/server/app/api/notes/route.js.nft.json +1 -1
  109. package/.next/server/app/api/open/route.js +1 -1
  110. package/.next/server/app/api/open/route.js.nft.json +1 -1
  111. package/.next/server/app/api/plan/annotations/route.js +3 -3
  112. package/.next/server/app/api/plan/annotations/route.js.nft.json +1 -1
  113. package/.next/server/app/api/plan/approve/route.js +2 -6
  114. package/.next/server/app/api/plan/approve/route.js.nft.json +1 -1
  115. package/.next/server/app/api/plan/history/route.js +1 -1
  116. package/.next/server/app/api/plan/history/route.js.nft.json +1 -1
  117. package/.next/server/app/api/plan/markdown/route.js +1 -1
  118. package/.next/server/app/api/plan/markdown/route.js.nft.json +1 -1
  119. package/.next/server/app/api/plan/presence/route.js +1 -1
  120. package/.next/server/app/api/plan/presence/route.js.nft.json +1 -1
  121. package/.next/server/app/api/plan/route.js +1 -1
  122. package/.next/server/app/api/plan/route.js.nft.json +1 -1
  123. package/.next/server/app/api/plan/verdict/route.js +1 -5
  124. package/.next/server/app/api/plan/verdict/route.js.nft.json +1 -1
  125. package/.next/server/app/api/preferences/route.js +1 -1
  126. package/.next/server/app/api/reset/route.js +1 -1
  127. package/.next/server/app/api/reset/route.js.nft.json +1 -1
  128. package/.next/server/app/api/stream/route.js +2 -2
  129. package/.next/server/app/api/stream/route.js.nft.json +1 -1
  130. package/.next/server/app/api/version/route.js +1 -1
  131. package/.next/server/app/api/version/route.js.nft.json +1 -1
  132. package/.next/server/app/api/workspace/activate/route.js +1 -1
  133. package/.next/server/app/api/workspace/activate/route.js.nft.json +1 -1
  134. package/.next/server/app/api/workspace/route.js +1 -1
  135. package/.next/server/app/api/workspace/route.js.nft.json +1 -1
  136. package/.next/server/app/apple-icon.png/route.js +1 -1
  137. package/.next/server/app/docs/page.js +2 -2
  138. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  139. package/.next/server/app/docs.html +1 -1
  140. package/.next/server/app/docs.rsc +2 -2
  141. package/.next/server/app/docs.segments/_full.segment.rsc +2 -2
  142. package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  143. package/.next/server/app/docs.segments/_index.segment.rsc +2 -2
  144. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  145. package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
  146. package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  147. package/.next/server/app/feedback/page.js +2 -2
  148. package/.next/server/app/feedback/page_client-reference-manifest.js +1 -1
  149. package/.next/server/app/feedback.html +1 -1
  150. package/.next/server/app/feedback.rsc +2 -2
  151. package/.next/server/app/feedback.segments/_full.segment.rsc +2 -2
  152. package/.next/server/app/feedback.segments/_head.segment.rsc +1 -1
  153. package/.next/server/app/feedback.segments/_index.segment.rsc +2 -2
  154. package/.next/server/app/feedback.segments/_tree.segment.rsc +2 -2
  155. package/.next/server/app/feedback.segments/feedback/__PAGE__.segment.rsc +1 -1
  156. package/.next/server/app/feedback.segments/feedback.segment.rsc +1 -1
  157. package/.next/server/app/help/page.js +2 -2
  158. package/.next/server/app/help/page_client-reference-manifest.js +1 -1
  159. package/.next/server/app/help.html +1 -1
  160. package/.next/server/app/help.rsc +2 -2
  161. package/.next/server/app/help.segments/_full.segment.rsc +2 -2
  162. package/.next/server/app/help.segments/_head.segment.rsc +1 -1
  163. package/.next/server/app/help.segments/_index.segment.rsc +2 -2
  164. package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
  165. package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
  166. package/.next/server/app/help.segments/help.segment.rsc +1 -1
  167. package/.next/server/app/icon.svg/route.js +1 -1
  168. package/.next/server/app/index.html +1 -1
  169. package/.next/server/app/index.rsc +2 -2
  170. package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  171. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  172. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  173. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  174. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  175. package/.next/server/app/map/page.js +2 -2
  176. package/.next/server/app/map/page.js.nft.json +1 -1
  177. package/.next/server/app/map/page_client-reference-manifest.js +1 -1
  178. package/.next/server/app/page.js +2 -2
  179. package/.next/server/app/page_client-reference-manifest.js +1 -1
  180. package/.next/server/app/plan/page.js +2 -2
  181. package/.next/server/app/plan/page.js.nft.json +1 -1
  182. package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
  183. package/.next/server/app/settings/page.js +2 -2
  184. package/.next/server/app/settings/page.js.nft.json +1 -1
  185. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  186. package/.next/server/app-paths-manifest.json +7 -6
  187. package/.next/server/chunks/249.js +1 -1
  188. package/.next/server/chunks/2877.js +7 -0
  189. package/.next/server/chunks/2933.js +2 -15
  190. package/.next/server/chunks/2981.js +1 -1
  191. package/.next/server/chunks/3221.js +5 -0
  192. package/.next/server/chunks/3254.js +1 -1
  193. package/.next/server/chunks/4198.js +1 -0
  194. package/.next/server/chunks/4274.js +1 -1
  195. package/.next/server/chunks/4378.js +1 -0
  196. package/.next/server/chunks/5258.js +1 -1
  197. package/.next/server/chunks/617.js +1 -0
  198. package/.next/server/chunks/7373.js +1 -0
  199. package/.next/server/chunks/9127.js +1 -1
  200. package/.next/server/chunks/{3349.js → 9213.js} +1 -1
  201. package/.next/server/chunks/9313.js +14 -0
  202. package/.next/server/chunks/9683.js +1 -1
  203. package/.next/server/chunks/9734.js +1 -1
  204. package/.next/server/instrumentation.js +1 -1
  205. package/.next/server/instrumentation.js.nft.json +1 -1
  206. package/.next/server/middleware-build-manifest.js +1 -1
  207. package/.next/server/middleware.js +2 -2
  208. package/.next/server/pages/404.html +1 -1
  209. package/.next/server/pages/500.html +1 -1
  210. package/.next/server/server-reference-manifest.js +1 -1
  211. package/.next/server/server-reference-manifest.json +1 -1
  212. package/.next/static/MYvJ_ebinIGa9MP5kWFaY/_buildManifest.js +1 -0
  213. package/.next/static/chunks/1a258343-7b029f38cf13f847.js +2 -0
  214. package/.next/static/chunks/6773-89cca3b011769270.js +1 -0
  215. package/.next/static/chunks/app/_global-error/{page-0fdd2f2bb2631a50.js → page-8fa95c63b95bf9c3.js} +1 -1
  216. package/.next/static/chunks/app/api/board-annotations/[id]/{route-0fdd2f2bb2631a50.js → route-8fa95c63b95bf9c3.js} +1 -1
  217. package/.next/static/chunks/app/api/board-annotations/{route-0fdd2f2bb2631a50.js → route-8fa95c63b95bf9c3.js} +1 -1
  218. package/.next/static/chunks/app/api/{bug-flags/[id]/route-0fdd2f2bb2631a50.js → board-layout/route-8fa95c63b95bf9c3.js} +1 -1
  219. package/.next/static/chunks/app/api/bug-flags/[id]/route-8fa95c63b95bf9c3.js +1 -0
  220. package/.next/static/chunks/app/api/bug-flags/route-8fa95c63b95bf9c3.js +1 -0
  221. package/.next/static/chunks/app/api/code-graph/position/route-8fa95c63b95bf9c3.js +1 -0
  222. package/.next/static/chunks/app/api/code-graph/route-8fa95c63b95bf9c3.js +1 -0
  223. package/.next/static/chunks/app/api/context/feature/route-8fa95c63b95bf9c3.js +1 -0
  224. package/.next/static/chunks/app/api/context/file/route-8fa95c63b95bf9c3.js +1 -0
  225. package/.next/static/chunks/app/api/context/route-8fa95c63b95bf9c3.js +1 -0
  226. package/.next/static/chunks/app/api/db/arrange/route-8fa95c63b95bf9c3.js +1 -0
  227. package/.next/static/chunks/app/api/db/backfill-access/route-8fa95c63b95bf9c3.js +1 -0
  228. package/.next/static/chunks/app/api/db/position/route-8fa95c63b95bf9c3.js +1 -0
  229. package/.next/static/chunks/app/api/db/reconcile-endpoints/route-8fa95c63b95bf9c3.js +1 -0
  230. package/.next/static/chunks/app/api/db/relations/[id]/route-8fa95c63b95bf9c3.js +1 -0
  231. package/.next/static/chunks/app/api/db/tables/[id]/route-8fa95c63b95bf9c3.js +1 -0
  232. package/.next/static/chunks/app/api/draft/approve/route-8fa95c63b95bf9c3.js +1 -0
  233. package/.next/static/chunks/app/api/draft/route-8fa95c63b95bf9c3.js +1 -0
  234. package/.next/static/chunks/app/api/draft/status/route-8fa95c63b95bf9c3.js +1 -0
  235. package/.next/static/chunks/app/api/edges/[id]/route-8fa95c63b95bf9c3.js +1 -0
  236. package/.next/static/chunks/app/api/edges/route-8fa95c63b95bf9c3.js +1 -0
  237. package/.next/static/chunks/app/api/endpoints/[id]/route-8fa95c63b95bf9c3.js +1 -0
  238. package/.next/static/chunks/app/api/entities/route-8fa95c63b95bf9c3.js +1 -0
  239. package/.next/static/chunks/app/api/feedback/[id]/route-8fa95c63b95bf9c3.js +1 -0
  240. package/.next/static/chunks/app/api/feedback/[id]/vote/route-8fa95c63b95bf9c3.js +1 -0
  241. package/.next/static/chunks/app/api/feedback/route-8fa95c63b95bf9c3.js +1 -0
  242. package/.next/static/chunks/app/api/ingest/route-8fa95c63b95bf9c3.js +1 -0
  243. package/.next/static/chunks/app/api/init/route-8fa95c63b95bf9c3.js +1 -0
  244. package/.next/static/chunks/app/api/map/describe/route-8fa95c63b95bf9c3.js +1 -0
  245. package/.next/static/chunks/app/api/map/files/route-8fa95c63b95bf9c3.js +1 -0
  246. package/.next/static/chunks/app/api/map/finish/route-8fa95c63b95bf9c3.js +1 -0
  247. package/.next/static/chunks/app/api/map/route-8fa95c63b95bf9c3.js +1 -0
  248. package/.next/static/chunks/app/api/map/start/route-8fa95c63b95bf9c3.js +1 -0
  249. package/.next/static/chunks/app/api/map/touch-active/route-8fa95c63b95bf9c3.js +1 -0
  250. package/.next/static/chunks/app/api/nodes/[id]/position/route-8fa95c63b95bf9c3.js +1 -0
  251. package/.next/static/chunks/app/api/nodes/[id]/route-8fa95c63b95bf9c3.js +1 -0
  252. package/.next/static/chunks/app/api/nodes/positions/route-8fa95c63b95bf9c3.js +1 -0
  253. package/.next/static/chunks/app/api/nodes/route-8fa95c63b95bf9c3.js +1 -0
  254. package/.next/static/chunks/app/api/nodes/subtasks/route-8fa95c63b95bf9c3.js +1 -0
  255. package/.next/static/chunks/app/api/notes/[id]/route-8fa95c63b95bf9c3.js +1 -0
  256. package/.next/static/chunks/app/api/notes/route-8fa95c63b95bf9c3.js +1 -0
  257. package/.next/static/chunks/app/api/open/route-8fa95c63b95bf9c3.js +1 -0
  258. package/.next/static/chunks/app/api/plan/annotations/route-8fa95c63b95bf9c3.js +1 -0
  259. package/.next/static/chunks/app/api/plan/approve/route-8fa95c63b95bf9c3.js +1 -0
  260. package/.next/static/chunks/app/api/plan/history/route-8fa95c63b95bf9c3.js +1 -0
  261. package/.next/static/chunks/app/api/plan/markdown/route-8fa95c63b95bf9c3.js +1 -0
  262. package/.next/static/chunks/app/api/plan/presence/route-8fa95c63b95bf9c3.js +1 -0
  263. package/.next/static/chunks/app/api/plan/route-8fa95c63b95bf9c3.js +1 -0
  264. package/.next/static/chunks/app/api/plan/verdict/route-8fa95c63b95bf9c3.js +1 -0
  265. package/.next/static/chunks/app/api/preferences/route-8fa95c63b95bf9c3.js +1 -0
  266. package/.next/static/chunks/app/api/reset/route-8fa95c63b95bf9c3.js +1 -0
  267. package/.next/static/chunks/app/api/stream/route-8fa95c63b95bf9c3.js +1 -0
  268. package/.next/static/chunks/app/api/version/route-8fa95c63b95bf9c3.js +1 -0
  269. package/.next/static/chunks/app/api/workspace/activate/route-8fa95c63b95bf9c3.js +1 -0
  270. package/.next/static/chunks/app/api/workspace/route-8fa95c63b95bf9c3.js +1 -0
  271. package/.next/static/chunks/app/map/{page-b2fdc0df2743d278.js → page-2cac4ffa4e4220c2.js} +1 -1
  272. package/.next/static/chunks/app/plan/{page-611d499986560198.js → page-8a9ed9019afac5ca.js} +1 -1
  273. package/.next/static/chunks/app/settings/{page-d1b0fe0c79c8a745.js → page-4d4879990a4f14fc.js} +1 -1
  274. package/.next/static/chunks/next/dist/client/components/builtin/app-error-8fa95c63b95bf9c3.js +1 -0
  275. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-8fa95c63b95bf9c3.js +1 -0
  276. package/.next/static/chunks/next/dist/client/components/builtin/not-found-8fa95c63b95bf9c3.js +1 -0
  277. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-8fa95c63b95bf9c3.js +1 -0
  278. package/.next/static/css/30e69a9d2de6ece7.css +1 -0
  279. package/.next/trace +37 -37
  280. package/.next/trace-build +1 -1
  281. package/.next/types/app/api/board-layout/route.ts +351 -0
  282. package/.next/types/app/api/plan/route.ts +351 -0
  283. package/.next/types/routes.d.ts +2 -1
  284. package/.next/types/validator.ts +9 -0
  285. package/dist/bin/beacon.js +3 -3
  286. package/dist/bin/doctor.js +22 -22
  287. package/dist/bin/hook.js +26 -26
  288. package/dist/bin/mcp.js +27 -27
  289. package/dist/bin/plan.js +21 -21
  290. package/dist/bin/remove.js +8 -0
  291. package/dist/bin/uninstall.js +25 -25
  292. package/dist/lib/workspaces.js +1 -1
  293. package/package.json +1 -1
  294. package/.next/server/chunks/1130.js +0 -1
  295. package/.next/server/chunks/1193.js +0 -1
  296. package/.next/server/chunks/873.js +0 -1
  297. package/.next/server/chunks/8815.js +0 -5
  298. package/.next/static/B4If6Zrc9d_A-Vd9UPyiQ/_buildManifest.js +0 -1
  299. package/.next/static/chunks/1412-94916474aa89a70b.js +0 -1
  300. package/.next/static/chunks/1a258343-248e24606fc4ca54.js +0 -2
  301. package/.next/static/chunks/app/api/bug-flags/route-0fdd2f2bb2631a50.js +0 -1
  302. package/.next/static/chunks/app/api/code-graph/position/route-0fdd2f2bb2631a50.js +0 -1
  303. package/.next/static/chunks/app/api/code-graph/route-0fdd2f2bb2631a50.js +0 -1
  304. package/.next/static/chunks/app/api/context/feature/route-0fdd2f2bb2631a50.js +0 -1
  305. package/.next/static/chunks/app/api/context/file/route-0fdd2f2bb2631a50.js +0 -1
  306. package/.next/static/chunks/app/api/context/route-0fdd2f2bb2631a50.js +0 -1
  307. package/.next/static/chunks/app/api/db/arrange/route-0fdd2f2bb2631a50.js +0 -1
  308. package/.next/static/chunks/app/api/db/backfill-access/route-0fdd2f2bb2631a50.js +0 -1
  309. package/.next/static/chunks/app/api/db/position/route-0fdd2f2bb2631a50.js +0 -1
  310. package/.next/static/chunks/app/api/db/reconcile-endpoints/route-0fdd2f2bb2631a50.js +0 -1
  311. package/.next/static/chunks/app/api/db/relations/[id]/route-0fdd2f2bb2631a50.js +0 -1
  312. package/.next/static/chunks/app/api/db/tables/[id]/route-0fdd2f2bb2631a50.js +0 -1
  313. package/.next/static/chunks/app/api/draft/approve/route-0fdd2f2bb2631a50.js +0 -1
  314. package/.next/static/chunks/app/api/draft/route-0fdd2f2bb2631a50.js +0 -1
  315. package/.next/static/chunks/app/api/draft/status/route-0fdd2f2bb2631a50.js +0 -1
  316. package/.next/static/chunks/app/api/edges/[id]/route-0fdd2f2bb2631a50.js +0 -1
  317. package/.next/static/chunks/app/api/edges/route-0fdd2f2bb2631a50.js +0 -1
  318. package/.next/static/chunks/app/api/endpoints/[id]/route-0fdd2f2bb2631a50.js +0 -1
  319. package/.next/static/chunks/app/api/entities/route-0fdd2f2bb2631a50.js +0 -1
  320. package/.next/static/chunks/app/api/feedback/[id]/route-0fdd2f2bb2631a50.js +0 -1
  321. package/.next/static/chunks/app/api/feedback/[id]/vote/route-0fdd2f2bb2631a50.js +0 -1
  322. package/.next/static/chunks/app/api/feedback/route-0fdd2f2bb2631a50.js +0 -1
  323. package/.next/static/chunks/app/api/ingest/route-0fdd2f2bb2631a50.js +0 -1
  324. package/.next/static/chunks/app/api/init/route-0fdd2f2bb2631a50.js +0 -1
  325. package/.next/static/chunks/app/api/map/describe/route-0fdd2f2bb2631a50.js +0 -1
  326. package/.next/static/chunks/app/api/map/files/route-0fdd2f2bb2631a50.js +0 -1
  327. package/.next/static/chunks/app/api/map/finish/route-0fdd2f2bb2631a50.js +0 -1
  328. package/.next/static/chunks/app/api/map/route-0fdd2f2bb2631a50.js +0 -1
  329. package/.next/static/chunks/app/api/map/start/route-0fdd2f2bb2631a50.js +0 -1
  330. package/.next/static/chunks/app/api/map/touch-active/route-0fdd2f2bb2631a50.js +0 -1
  331. package/.next/static/chunks/app/api/nodes/[id]/position/route-0fdd2f2bb2631a50.js +0 -1
  332. package/.next/static/chunks/app/api/nodes/[id]/route-0fdd2f2bb2631a50.js +0 -1
  333. package/.next/static/chunks/app/api/nodes/positions/route-0fdd2f2bb2631a50.js +0 -1
  334. package/.next/static/chunks/app/api/nodes/route-0fdd2f2bb2631a50.js +0 -1
  335. package/.next/static/chunks/app/api/nodes/subtasks/route-0fdd2f2bb2631a50.js +0 -1
  336. package/.next/static/chunks/app/api/notes/[id]/route-0fdd2f2bb2631a50.js +0 -1
  337. package/.next/static/chunks/app/api/notes/route-0fdd2f2bb2631a50.js +0 -1
  338. package/.next/static/chunks/app/api/open/route-0fdd2f2bb2631a50.js +0 -1
  339. package/.next/static/chunks/app/api/plan/annotations/route-0fdd2f2bb2631a50.js +0 -1
  340. package/.next/static/chunks/app/api/plan/approve/route-0fdd2f2bb2631a50.js +0 -1
  341. package/.next/static/chunks/app/api/plan/history/route-0fdd2f2bb2631a50.js +0 -1
  342. package/.next/static/chunks/app/api/plan/markdown/route-0fdd2f2bb2631a50.js +0 -1
  343. package/.next/static/chunks/app/api/plan/presence/route-0fdd2f2bb2631a50.js +0 -1
  344. package/.next/static/chunks/app/api/plan/route-0fdd2f2bb2631a50.js +0 -1
  345. package/.next/static/chunks/app/api/plan/verdict/route-0fdd2f2bb2631a50.js +0 -1
  346. package/.next/static/chunks/app/api/preferences/route-0fdd2f2bb2631a50.js +0 -1
  347. package/.next/static/chunks/app/api/reset/route-0fdd2f2bb2631a50.js +0 -1
  348. package/.next/static/chunks/app/api/stream/route-0fdd2f2bb2631a50.js +0 -1
  349. package/.next/static/chunks/app/api/version/route-0fdd2f2bb2631a50.js +0 -1
  350. package/.next/static/chunks/app/api/workspace/activate/route-0fdd2f2bb2631a50.js +0 -1
  351. package/.next/static/chunks/app/api/workspace/route-0fdd2f2bb2631a50.js +0 -1
  352. package/.next/static/chunks/next/dist/client/components/builtin/app-error-0fdd2f2bb2631a50.js +0 -1
  353. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-0fdd2f2bb2631a50.js +0 -1
  354. package/.next/static/chunks/next/dist/client/components/builtin/not-found-0fdd2f2bb2631a50.js +0 -1
  355. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-0fdd2f2bb2631a50.js +0 -1
  356. package/.next/static/css/75d4c21b97e04260.css +0 -1
  357. /package/.next/static/{B4If6Zrc9d_A-Vd9UPyiQ → MYvJ_ebinIGa9MP5kWFaY}/_ssgManifest.js +0 -0
@@ -1,5 +0,0 @@
1
- "use strict";exports.id=8815,exports.ids=[8815],exports.modules={18072:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Bk:()=>v,Ph:()=>t,Ze:()=>w,sS:()=>u});var e=c(34216),f=c(56727),g=c(30046),h=c(72179),i=c(50101),j=c(61024),k=c(79935),l=c(24433),m=c(54655),n=c(89049),o=c(70809),p=c(19734),q=a([f,h,i,l,p]);async function r(){let a=(0,m.Fn)(),b=(0,h.iL)(),c=await (0,i.C5)(),d=(0,o.YV)(),e=a?.description??"(no description)",f=a?.markdown?(0,l.J)(a.markdown).prose:(0,k.j)(e,b,c);return{description:e,markdown:f,draftDoc:b,featureGraph:c,annotations:d.annotations,globalComment:d.globalComment}}async function s(){await (0,i.t7)(),(0,h.Vs)(),(0,m.E9)(),(0,o.nb)()}async function t(a){let b=(0,m.Fn)(),c=await r(),d=a?.doc??c.draftDoc,i=d?await (0,h.XF)(d):null,k=await f.db.update(g.node).set({source:"MANUAL"}).where((0,e.Uo)((0,e.eq)(g.node.source,"DRAFT"),(0,e.eq)(g.node.view,"ROADMAP"))).returning({id:g.node.id,title:g.node.title}),l={count:k.length};(0,j.WH)({description:c.description,markdown:c.markdown,verdict:"approved",annotations:c.annotations,globalComment:c.globalComment,draftDoc:c.draftDoc,featureGraph:c.featureGraph});let o=[];i&&o.push(`${i.tables} table(s), ${i.relations} relation(s) and ${i.endpoints} endpoint(s)`),l.count&&o.push(`${l.count} feature(s)`);let q=o.length?`${o.join(" and ")} approved and persisted.`:"Plan approved.";return(0,n.Af)({proposedAt:b?.proposedAt??0,status:"approved",summary:q,detail:d?(0,h.zO)(d):void 0,features:k.map(a=>({title:a.title,id:a.id})),decidedAt:Date.now()}),await s(),await (0,p.Bx)(),{db:i,features:l.count}}async function u(){let a=(0,m.Fn)(),b=await r();(b.draftDoc&&(b.draftDoc.tables.length||b.draftDoc.endpoints.length)||b.featureGraph.features.length>0||a?.markdown)&&(0,j.WH)({description:b.description,markdown:b.markdown,verdict:"discarded",annotations:b.annotations,globalComment:b.globalComment,draftDoc:b.draftDoc,featureGraph:b.featureGraph}),(0,n.Af)({proposedAt:a?.proposedAt??0,status:"discarded",summary:"The user discarded the plan.",decidedAt:Date.now()}),(0,h.mk)(),await s(),await (0,p.Bx)()}async function v(){let a=(0,o.Z3)();if(a.submitted&&a.feedback)return{kind:"feedback",feedback:a.feedback};let b=(0,n.zC)();if(b)return"approved"===b.status?{kind:"approved",summary:b.summary,detail:b.detail,features:function(a){if(a?.length)return a.map(a=>"string"==typeof a?{title:a,id:""}:{title:a.title,id:a.id})}(b.features)}:{kind:"discarded",summary:b.summary};let c=(0,m.Fn)(),d=(0,h.iL)(),e=await (0,i.C5)();return(d?.tables.length??0)+(d?.endpoints.length??0)+e.features.length>0||c?.markdown?{kind:"pending"}:{kind:"discarded",summary:"The user discarded the plan."}}function w(){(0,o.nb)(),(0,n.mh)()}[f,h,i,l,p]=q.then?(await q)():q,d()}catch(a){d(a)}})},19225:(a,b,c)=>{a.exports=c(44870)},29833:(a,b,c)=>{c.d(b,{mk:()=>i});let d=new Set(["a","an","the","of","for","to","and","or","in","on","with","via","by","using","use","add","adds","support","implement","implementation","feature","new","build","create","o","os","as","um","uma","de","da","do","das","dos","para","por","com","e","ou","no","na","nos","nas","ao","aos","adicionar","implementar","suporte","suportar","nova","novo","funcionalidade","usar","usando","criar"]);function e(a){return a.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9]+/g," ").trim().replace(/\s+/g," ")}function f(a){return e(a).split(" ").filter(a=>a&&!d.has(a))}function g(a,b){if(!a.size||!b.size)return 0;let c=0;for(let d of a)b.has(d)&&c++;return 2*c/(a.size+b.size)}function h(a){let b=e(a).replace(/ /g,""),c=new Set;for(let a=0;a<b.length-1;a++)c.add(b.slice(a,a+2));return c}function i(a,b,c={}){let d=c.confident??.72,j=c.consider??.5,k=c.margin??.1,l=b.map(b=>{var c,d;let i,j;return{...b,score:Math.round(100*(c=a,d=b.title,i=e(c),j=e(d),i&&j?i===j?1:Math.min(1,.7*g(new Set(f(c)),new Set(f(d)))+.4*g(h(c),h(d))):0))/100}}).sort((a,b)=>b.score-a.score),m=l[0];if(!m||m.score<j)return{best:null,candidates:[]};let n=l[1]?.score??0,o=1===l.length||m.score-n>=k;return m.score>=d&&o?{best:m,candidates:[]}:{best:null,candidates:l.filter(a=>a.score>=j).slice(0,4)}}},38356:(a,b,c)=>{c.d(b,{AG:()=>g,Ey:()=>h,Kn:()=>e,oA:()=>f});var d=c(29833);function e(a){let b=a.map(a=>{let b=[],c=a.cluster??a.category??a.domain??null;return c&&c.trim()||b.push("category"),null==a.priority&&b.push("priority"),b.length?` • "${a.title?.trim()||"(untitled)"}" — missing ${b.join(" + ")}`:null}).filter(a=>null!==a);return 0===b.length?null:"⛔ Every roadmap feature needs a category AND a priority — they drive grouping and ordering on the board, and the user shouldn't have to add them by hand. Missing:\n"+b.join("\n")+"\n\nRe-present with each feature carrying its category as `category` (or `cluster` — both work; e.g. AUTH, SEARCH, DATA, INTEL, BILLING …) and `priority` (0 = P0 critical, 1 = P1 high, 2 = P2 medium, 3 = P3 low). Set BOTH on EVERY feature; don't rely on defaults."}function f(a){let b=(a.title??"").trim();if(!b)return"⛔ A feature needs a non-empty title.";if(!(a.category??"").trim()){let c=function(a){let b=new Set;for(let c of a){let a=(c.cluster??"").trim();a&&b.add(a)}return[...b].sort()}(a.existing),d=c.length?` Reuse an existing category where it fits: ${c.join(", ")}.`:"";return`⛔ Feature "${b}" has no category. Every roadmap feature needs one — it drives grouping and color on the board.${d} Pass it as \`category\` (e.g. AUTH, SEARCH, DATA, INTEL, BILLING, INFRA …); don't rely on a default.`}let c=(0,d.mk)(b,a.existing.map(a=>({id:a.id,title:a.title})));if(c.best){let d=a.existing.find(a=>a.id===c.best.id),e=d?.status?` (${d.status})`:"";return`⛔ "${b}" already exists as the feature "${d?.title??c.best.title}"${e}. Don't create a duplicate — mark progress on it with \`beacon_start_feature({ id })\`, add sub-tasks with \`beacon_add_subtasks\`, or finish it with \`beacon_describe_feature\`.`}return null}function g(a,b){let c=b.map(a=>({id:a.id,title:a.title})),e=a.map(a=>{let e=(0,d.mk)(a.title??"",c);return e.best?{title:a.title,hit:b.find(a=>a.id===e.best.id)}:null}).filter(a=>null!==a);return e.length?"⛔ These proposed features already exist on the roadmap — reuse them instead of creating duplicates:\n"+e.map(a=>` • "${a.title}" → existing "${a.hit.title}"${a.hit.status?` (${a.hit.status})`:""}`).join("\n")+"\n\nDrop the duplicate(s) from the plan; to add work to an existing feature, ship sub-tasks or update it via beacon_describe_feature. Keep only genuinely new features in the proposal.":null}function h(a,b){let c=(a??"").trim();if(!c)return null;let e=(0,d.mk)(c,b);if(e.best)return null;let f=e.candidates.length?` Did you mean: ${e.candidates.map(a=>`"${a.title}"`).join(", ")}?`:"";return`⛔ front "${c}" doesn't match an existing feature.${f} \`front\` nests a feature UNDER an existing parent feature — it is NOT a domain tag. If "${c}" is a domain, pass it as \`category\` instead. If it's a real umbrella feature, create it first via beacon_propose_plan.`}},54655:(a,b,c)=>{c.d(b,{E9:()=>k,Fn:()=>i,UC:()=>j});var d=c(73024),e=c(76760),f=c(45301),g=c(32213);function h(){return(0,e.join)((0,f.KS)(),"plan-meta.json")}function i(){try{return JSON.parse((0,d.readFileSync)(h(),"utf8"))}catch{return null}}function j(a){(0,g.q)(h(),a)}function k(){(0,d.rmSync)(h(),{force:!0})}},61024:(a,b,c)=>{c.d(b,{Pq:()=>k,WH:()=>j,ao:()=>l});var d=c(73024),e=c(76760),f=c(77598),g=c(45301),h=c(32213);function i(){let a=(0,e.join)((0,g.KS)(),"plans","history");return(0,d.mkdirSync)(a,{recursive:!0}),a}function j(a){let b={...a,id:(0,f.randomUUID)().slice(0,8),archivedAt:Date.now()};return(0,h.q)((0,e.join)(i(),`${b.id}.json`),b,!0),b}function k(){let a;try{a=(0,d.readdirSync)(i())}catch{return[]}let b=[];for(let c of a)if(c.endsWith(".json"))try{let a=(0,e.join)(i(),c),f=(0,d.readFileSync)(a,"utf8"),g=JSON.parse(f);b.push(g)}catch{}return b.sort((a,b)=>b.archivedAt-a.archivedAt)}function l(a){try{let b=(0,d.readFileSync)((0,e.join)(i(),`${a}.json`),"utf8");return JSON.parse(b)}catch{return null}}},63622:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DELETE:()=>u,GET:()=>s,POST:()=>t,dynamic:()=>v});var e=c(77598),f=c(44046),g=c(6324),h=c(50101),i=c(38356),j=c(72179),k=c(24433),l=c(72658),m=c(19734),n=c(18072),o=c(54655),p=c(56727),q=c(6716),r=a([h,j,k,l,m,n,p]);[h,j,k,l,m,n,p]=r.then?(await r)():r;let v="force-dynamic",w=f.Ik({description:f.Yj().trim().min(1),markdown:f.Yj().optional(),draft:g.Xg.optional(),features:h.Qy.shape.features.optional()});async function s(a){return(0,p.X_)((0,q.Ck)(a),async()=>{let a=(0,j.iL)(),b=await (0,h.C5)(),c=(0,o.Fn)(),d=(a?.tables.length??0)+(a?.endpoints.length??0)+b.features.length>0||!!c?.markdown;return Response.json({pending:d,description:c?.description??"",proposedAt:c?.proposedAt??0,tables:a?.tables.length??0,endpoints:a?.endpoints.length??0,features:b.features.length})})}async function t(a){try{let b=w.parse(await a.json());return await (0,p.X_)((0,q.Ck)(a),async()=>{let a=(0,e.createHash)("sha256").update(JSON.stringify({d:b.description,m:b.markdown??"",t:b.draft??null,f:b.features??null})).digest("hex"),c=b.draft,d=b.features,f=b.markdown,g=(c?.tables.length??0)>0||(c?.endpoints.length??0)>0||(c?.relations.length??0)>0||(d?.length??0)>0;if(b.markdown&&!g){let a=(0,k.J)(b.markdown);f=a.prose,c=a.draft,d=a.features}let q=(c?.tables.length??0)+(c?.endpoints.length??0)+(d?.length??0)>0,r=(0,o.Fn)();if(r?.contentHash===a&&(r.proposedAt??0)>0){let a=(0,j.iL)(),b=await (0,h.C5)();if((a?.tables.length??0)+(a?.endpoints.length??0)+b.features.length>0||!q)return Response.json({ok:!0,resumed:!0})}if(d&&d.length){let a=(0,i.Kn)(d);if(a)return Response.json({error:a},{status:422});let b=await p.db.query.node.findMany({where:(a,{and:b,eq:c,ne:d})=>b(c(a.view,"ROADMAP"),d(a.source,"DRAFT")),columns:{id:!0,title:!0,cluster:!0,status:!0}}),c=(0,i.AG)(d,b);if(c)return Response.json({error:c},{status:422})}let s=0,t=0;if(c&&(c.tables.length||c.endpoints.length)){let a=await (0,l.CP)(),b=(0,j.Gf)(c,a);s=b.tables.length,t=b.endpoints.length}let u=0;d&&d.length&&(await (0,h.KR)({features:d}),u=d.length);let v=!!f?.trim();return 0!==s||0!==t||0!==u||v?((0,o.UC)({description:b.description,proposedAt:Math.max(Date.now(),(r?.proposedAt??0)+1),markdown:v?f:r?.description===b.description?r?.markdown:void 0,originalFeatures:d?.map(a=>a.title)??[],contentHash:a}),(0,n.Ze)(),await (0,m.Bx)(),Response.json({ok:!0,tables:s,endpoints:t,features:u})):new Response("plan must include at least one table, endpoint, feature, or markdown",{status:400})})}catch(a){return new Response(`plan failed: ${a instanceof Error?a.message:"error"}`,{status:400})}}async function u(a){return(0,p.X_)((0,q.Ck)(a),async()=>(await (0,n.sS)(),new Response(null,{status:204})))}d()}catch(a){d(a)}})},70809:(a,b,c)=>{c.d(b,{nb:()=>k,Z3:()=>m,YV:()=>i,Tm:()=>l,D_:()=>j});var d=c(73024),e=c(76760),f=c(45301),g=c(32213);function h(){return(0,e.join)((0,f.KS)(),"plan-annotations-current.json")}function i(){try{let a=JSON.parse((0,d.readFileSync)(h(),"utf8"));return{annotations:a.annotations??[],globalComment:a.globalComment??"",submitted:!!a.submitted,submittedAt:a.submittedAt,boardEdits:a.boardEdits??"",questions:a.questions??[]}}catch{return{annotations:[],globalComment:"",submitted:!1,questions:[]}}}function j(a){(0,g.q)(h(),a)}function k(){(0,d.rmSync)(h(),{force:!0})}function l(a){let b;return[function(a,b=""){let c=a.filter(a=>(a.kind??"comment")==="comment"&&a.comment.trim()),d=a.filter(a=>"deletion"===a.kind),e=b.trim();if(!c.length&&!d.length&&!e)return"";let f=[];if(e&&f.push(`## Overall feedback
2
-
3
- ${e}`),c.length){let a=["## Inline comments",""];for(let b of c){let c=b.excerpt.split("\n").map(a=>`> ${a}`).join("\n");a.push(`${c}
4
-
5
- ${b.comment.trim()}`)}f.push(a.join("\n"))}if(d.length){let a=["## Marked for deletion","","The user marked these passages for removal — drop them from the next plan:",""];for(let b of d){let c=b.excerpt.split("\n").map(a=>`> ${a}`).join("\n");a.push(c),a.push("")}f.push(a.join("\n").trim())}return f.join("\n\n").trim()}(a.annotations,a.globalComment),a.boardEdits??"",!(b=(a.questions??[]).filter(a=>a.question.trim())).length?"":["## Questions to answer before approving",...b.map(a=>`- **${a.target}** — ${a.question.trim()}`)].join("\n")].filter(Boolean).join("\n\n")}function m(){let a=i();return{submitted:a.submitted,feedback:a.submitted?l(a):""}}},89049:(a,b,c)=>{c.d(b,{Af:()=>j,mh:()=>k,zC:()=>i});var d=c(73024),e=c(76760),f=c(45301),g=c(32213);function h(){return(0,e.join)((0,f.KS)(),"plan-verdict.json")}function i(){try{return JSON.parse((0,d.readFileSync)(h(),"utf8"))}catch{return null}}function j(a){(0,g.q)(h(),a)}function k(){(0,d.rmSync)(h(),{force:!0})}},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:54,errorRate:1e-4,numBits:1036,numHashes:14,bitArray:[0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,1,1,1,0,0,1,1,0,1,0,1,0,1,1,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,1,0,1,1,0,1,0,1,0,1,1,0,1,1,0,1,0,0,1,0,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,1,0,1,1,1,0,0,1,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,1,1,1,0,1,0,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,1,1,0,0,1,0,0,1,1,0,0,1,0,0,1,1,1,0,1,0,1,1,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,0,1,0,0,1,1,1,0,1,0,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,0,0,1,1,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,1,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,0,1,1,0,1,1,0,1,0,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,0,1,0,1,1,0,1,1,0,1,1,1,0,0,1,0,1,1,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,0,0,1,0,1,0,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1,1,0,1,1,1,1,0,0,1,0,0,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,1,0,0,0,1,1,1,0,1,1,1,0,1,0,0,1,1,0,1,1,1,1,0,1,0,1,0,1,1,1,1,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,1,1,1,0,1,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,0,1,0,1,1,0,0,1,1,0,0,1,1,1,1,1,0,1,0,1,1,0,0,1,0,1,0,0,0,0,1,1,0,1,1,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,0,1,1,0,1,1,0,0,0,1,0,0,1,1,0,1,0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,0,1,1,0,1,0,1,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,1,0,0,1,1,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0,0,1,1,1,0,0,1,1,1,0,0,0,1,1,1,0,1,0,0,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0,1,1,0,1,0,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,1,0,0,0,1,1,1,0,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,1,0,0,0,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1]},__routerFilterDynamic:{numItems:9,errorRate:1e-4,numBits:173,numHashes:14,bitArray:[0,0,0,0,0,0,1,1,1,0,0,1,0,1,0,0,1,0,1,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,0,0,1,0,1,0,0,1,1,0,1,1,0,0,1,0,1,0,0,1,0,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,1,0,1,0,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,1,1,1,0,1,1,0,1,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,1,0,1,0,1,0,0,1,1,0,0,1,1,1]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1412],{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})}},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),v=n(64577),y=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)(v.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)(y.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,{})})}},26856:(e,t,n)=>{n.d(t,{DbMapClient:()=>es});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(95635),v=n(17918);let y={danger:"bg-red-500/15 text-red-300",warn:"bg-amber-500/15 text-amber-300"};function j({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",y[e.tone]),children:e.label},e.label))}):null}let w=/pass(word)?|token|secret|api[_-]?key|credential|priv(ate)?[_-]?key|hash|salt/i,N=/auth|login|logout|session|token|password|oauth|sso|credential/i,k="nodrag nopan",C=b.x;function E({onClick:e,title:t}){return(0,a.jsx)("button",{type:"button",title:t,onClick:t=>{t.stopPropagation(),e()},className:(0,x.cn)(k,"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 S({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 A="nodrag nopan",z=["GET","POST","PUT","PATCH","DELETE"];var T=n(54698),I=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 M({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,v=c??"details",y=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)(O,{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)(F,{ep:t,nameById:g}):null}else h=(0,a.jsx)(L,{tables:t,relations:n,endpoints:s});return(0,a.jsxs)(I.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)(P,{active:"details"===v,onClick:()=>u?.("details"),children:"Details"}),(0,a.jsxs)(P,{active:"comments"===v,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"===v&&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&&y&&(0,a.jsxs)("button",{type:"button",onClick:()=>p(y),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 P({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 O({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)(_,{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)(_,{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)(_,{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)(_,{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 F({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)(_,{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 L({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)(B,{label:"tables",value:e.length}),(0,a.jsx)(B,{label:"FKs",value:t.length}),(0,a.jsx)(B,{label:"endpoints",value:n.length})]}),(0,a.jsx)(_,{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 _({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 B({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 H=n(56614),U=n(62311);let K=new Set(["GET","HEAD","OPTIONS"]),G=e=>e.trim().toLowerCase();var X=n(85618),W=n(80846),Y=n(17356),Z=n(45486),J=n(15330),V=n(60976),q=n(64577),Q=n(57144);let ee={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",b="added"===t.diffStatus?"new":"modified"===t.diffStatus?"changed":"draft",y=t.diffChanges?.length?t.diffChanges.join("\n"):"draft",N=l?f:(0,h.qA)(t.domain),A=(r={domain:t.domain,columns:t.columns},o=[],(i=r.columns.filter(e=>w.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(),[T,I]=(0,s.useState)(t.name),[D,R]=(0,s.useState)(t.columns),[$,M]=(0,s.useState)(!1);(0,s.useEffect)(()=>{I(t.name),R(t.columns)},[t.rev]);let P=e=>e.stopPropagation(),O=t=>{R(t),z.patchTable(e,{columns:t})},F=(t.pins??[]).filter(e=>null===e.column),L=e=>(t.pins??[]).filter(t=>t.column===e),_=(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)]");return l?(0,a.jsxs)("div",{className:(0,x.cn)(_,"group/card w-[252px]"),style:{borderColor:`${f}59`},children:[(0,a.jsx)(C,{}),(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:T,onChange:e=>I(e.target.value),onBlur:()=>{let n=T.trim();n&&n!==t.name&&z.patchTable(e,{name:n})},onKeyDown:e=>{P(e),"Enter"===e.key&&e.currentTarget.blur()},placeholder:"table",className:(0,x.cn)(k,"min-w-0 flex-1 bg-transparent font-mono text-[13px] font-semibold tracking-tight outline-none")}),(0,a.jsx)(j,{badges:A}),(0,a.jsx)("span",{title:y,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:b}),(0,a.jsx)("button",{type:"button",onClick:t=>{P(t),$?z.deleteTable(e):M(!0)},onBlur:()=>M(!1),title:"Delete table",className:(0,x.cn)(k,"shrink-0 transition-all",$?"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"})}),F.length>0?(0,a.jsx)(v.e0,{pins:F,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(E,{title:`Comment on ${t.name}`,onClick:()=>t.onComment?.(t.name)})]}),(0,a.jsxs)("div",{className:"divide-y divide-white/[0.05]",children:[D.map((e,n)=>{let s=L(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=>{P(e),O(D.map((e,t)=>t===n?{...e,isPk:!e.isPk}:e))},title:"Primary key",className:(0,x.cn)(k,"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=>{P(e),O(D.map((e,t)=>t===n?{...e,isFk:!e.isFk}:e))},title:"Foreign key",className:(0,x.cn)(k,"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=>R(t=>t.map((t,a)=>a===n?{...t,name:e.target.value}:t)),onBlur:()=>O(D),onKeyDown:P,placeholder:"column",className:(0,x.cn)(k,"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=>R(t=>t.map((t,a)=>a===n?{...t,type:e.target.value}:t)),onBlur:()=>O(D),onKeyDown:P,placeholder:"type",className:(0,x.cn)(k,"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=>{P(e),O(D.filter((e,t)=>t!==n))},title:"Remove column",className:(0,x.cn)(k,"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)(E,{title:`Comment on ${t.name}.${e.name}`,onClick:()=>t.onComment?.(`${t.name}.${e.name}`)})]},n)}),(0,a.jsxs)("button",{type:"button",onClick:e=>{P(e),O([...D,{name:"",type:"text",isPk:!1,isFk:!1,nullable:!0,note:null}])},className:(0,x.cn)(k,"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)(_,"w-[240px]"),style:{borderColor:`${N}3d`},children:[(0,a.jsx)(C,{}),(0,a.jsxs)("div",{className:"group/row relative flex items-center justify-between rounded-t-[11px] px-3 py-2",style:{background:`${N}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:[(0,a.jsx)(j,{badges:A}),t.domain&&(0,a.jsx)("span",{className:"text-[9px] uppercase tracking-[0.14em]",style:{color:N},children:t.domain})]}),F.length>0?(0,a.jsx)(v.e0,{pins:F,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(E,{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=L(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)(S,{c:e,fkTargets:t.fkTargets}),n.length>0?(0,a.jsx)(v.e0,{pins:n,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(E,{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)||N.test(r.path))&&o.push({label:"auth",tone:"warn",title:"auth-related endpoint"}),o),y=g(),[w,k]=(0,s.useState)(t.path),[C,E]=(0,s.useState)(!1);(0,s.useEffect)(()=>{k(t.path)},[t.rev]);let S=e=>e.stopPropagation();return(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)(b.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=>y.patchEndpoint(e,{method:t.target.value}),onPointerDown:S,className:(0,x.cn)(A,"shrink-0 rounded bg-transparent text-[10px] font-bold outline-none"),style:{color:i},title:"Method",children:z.map(e=>(0,a.jsx)("option",{value:e,className:"bg-card text-foreground",children:e},e))}),(0,a.jsx)("input",{value:w,onChange:e=>k(e.target.value),onBlur:()=>{let n=w.trim();n&&n!==t.path&&y.patchEndpoint(e,{path:n})},onKeyDown:e=>{S(e),"Enter"===e.key&&e.currentTarget.blur()},className:(0,x.cn)(A,"min-w-0 flex-1 bg-transparent font-mono text-[11px] outline-none")}),(0,a.jsx)(j,{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=>{S(t),C?y.deleteEndpoint(e):E(!0)},onBlur:()=>E(!1),title:"Delete",className:(0,x.cn)(A,"shrink-0 transition-colors",C?"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}),(0,a.jsx)(j,{badges:f}),(0,a.jsx)("button",{type:"button",onClick:t=>{S(t),C?y.deleteRealEndpoint(e):E(!0)},onBlur:()=>E(!1),title:C?"Click again to delete":"Delete endpoint",className:(0,x.cn)(A,"shrink-0 opacity-0 transition-opacity group-hover:opacity-100",C?"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=>{S(e),t.onComment?.(`${t.method} ${t.path}`)},className:(0,x.cn)(A,"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},et={deletable:Q.I},en="beacon:db-draft",ea={proposedAt:0,status:"pending",tables:[],relations:[],endpoints:[]};function es({tables:e,relations:t,endpoints:n,draft:l,workspaceId:d,embedded:c=!1,draftRef:m,onEdit:p,controlRef:g,commentsContent:b,commentsCount:y=0,onAddComment:j,annotations:w,onPinClick:N,onUpdateComment:k,onRemoveComment:C,boardAnnotations:E}){let S=(0,r.useRouter)(),[A,z]=(0,s.useState)(!0),[I,D]=(0,s.useState)(null),[R,$]=(0,s.useState)(null),[P,O]=(0,s.useState)(null),[F,L]=(0,s.useState)(!1),[_,B]=(0,s.useState)("details"),[Q,er]=(0,s.useState)(!1);(0,s.useEffect)(()=>{if(g)return g.current={open:()=>{L(!0),B("details")},close:()=>{L(!1),B("details")},openComments:()=>{L(!0),B("comments")}},()=>{g&&(g.current=null)}},[g]);let[eo,ei]=(0,s.useState)(new Set),[el,ed]=(0,s.useState)(new Set),[ec,eu]=(0,s.useState)(new Set),[em,ep]=(0,s.useState)(()=>({past:[],present:l??ea,future:[],rev:0,edited:!1})),ex=em.present,eh=(0,s.useCallback)(e=>{ep(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}})},[]),ef=(0,s.useCallback)(e=>{ep(t=>{let n=e(t.present);return n===t.present?t:{...t,present:n}})},[]),eg=(0,s.useCallback)(()=>ep(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),[]),eb=(0,s.useCallback)(()=>ep(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),[]),ev=(0,s.useCallback)(e=>ep(t=>({past:[],present:e,future:[],rev:t.rev+1,edited:!1})),[]),ey=(0,s.useRef)(!1),ej=l?.proposedAt??0;(0,s.useEffect)(()=>{let e=null;if(ey.current)l&&l.proposedAt!==ex.proposedAt?e=l:!l&&(ex.tables.length>0||ex.endpoints.length>0)&&(e=ea);else{ey.current=!0;let t=null;try{let e=localStorage.getItem(en);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&&ev(e)},[ej]),(0,s.useEffect)(()=>{try{ex.tables.length>0||ex.endpoints.length>0?localStorage.setItem(en,JSON.stringify({workspaceId:d,doc:ex})):localStorage.removeItem(en)}catch{}},[ex,d]),(0,s.useEffect)(()=>{m&&(m.current=ex)},[m,ex]);let ew=(0,s.useRef)(!1);(0,s.useEffect)(()=>{em.edited&&!ew.current&&(ew.current=!0,p?.())},[em.edited,p]);let eN=(0,s.useMemo)(()=>ex.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})),[ex]),ek=(0,s.useMemo)(()=>ex.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}))})),[ex]),eC=(0,s.useMemo)(()=>[...e,...eN],[e,eN]),eE=(0,s.useMemo)(()=>[...n,...ek],[n,ek]),eS=(0,s.useMemo)(()=>new Map,[]),eA=(0,s.useMemo)(()=>c?function(e,t){let n=new Map(e.map(e=>[G(e.name),e])),a=new Map;for(let e of t){let t=n.get(G(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=>[G(e.name),e])),a=new Set(t.map(e=>G(e.name))),s=[];for(let e of t){let t=n.get(G(e.name));if(!t){s.push(`+ column ${e.name} (${e.type})`);continue}let a=[];G(t.type)!==G(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(G(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,eN):eS,[c,e,eN,eS]),ez=(0,s.useMemo)(()=>c?function(e,t){let n=e=>`${G(e.method)} ${G(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,ek):eS,[c,n,ek,eS]),eT=(0,s.useMemo)(()=>[...t,...ex.relations.map(e=>({id:e.id,fromTableId:e.fromTableId,toTableId:e.toTableId,fromColumn:e.fromColumn,toColumn:e.toColumn,label:e.label}))],[t,ex.relations]),eI=(0,s.useMemo)(()=>{let e=new Map;for(let t of eE)for(let n of t.tables)e.set(n.tableId,(e.get(n.tableId)??0)+1);return e},[eE]),eD=(0,s.useMemo)(()=>{let e=new Map;return eC.forEach(t=>e.set(t.id,t.x)),eE.forEach(t=>e.set(t.id,t.x)),e},[eC,eE]),eR=(0,s.useMemo)(()=>{let e=new Map(eC.map(e=>[e.id,e.name])),t=new Map;for(let n of eT){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},[eT,eC]),e$=void 0!==E,[eM,eP]=(0,s.useState)(E??[]);(0,s.useEffect)(()=>{E&&eP(E)},[E]);let eO=(0,s.useMemo)(()=>({tables:eC.map(e=>({id:e.id,name:e.name,columns:e.columns.map(e=>e.name)})),endpoints:eE.map(e=>({id:e.id,method:e.method,path:e.path}))}),[eC,eE]),eF=(0,s.useMemo)(()=>{if(e$){let e=new Set([...eC.map(e=>e.id),...eE.map(e=>e.id)]);return eM.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((w??[]).map(e=>[e.id,e.comment]));return(0,T.m)(w??[],eO).map(t=>({id:t.annotationId,n:t.n,targetId:t.targetId,column:t.column,text:e.get(t.annotationId)??"",x:null,y:null}))},[e$,eM,w,eO,eC,eE]),eL=(0,s.useMemo)(()=>{let e=new Map;for(let t of eF){let n=e.get(t.targetId)??[];n.push({id:t.id,n:t.n,column:t.column}),e.set(t.targetId,n)}return e},[eF]),e_=(0,s.useMemo)(()=>new Map(eF.map(e=>[`anno-${e.id}`,e.targetId])),[eF]),eB=(0,s.useCallback)(async e=>{let t=(0,T.m)([{id:"_",excerpt:e}],eO)[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();eP(t=>[...t,e])}},[eO]),eH=(0,s.useCallback)((e,t)=>{eP(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)})},[]),eU=(0,s.useCallback)(e=>{eP(t=>t.filter(t=>t.id!==e)),fetch(`/api/board-annotations/${e}`,{method:"DELETE"})},[]),eK=e$?eB:j,eG=(0,s.useCallback)((e,t)=>(eD.get(e)??0)<=(eD.get(t)??0)?{sourceHandle:"sr",targetHandle:"tl"}:{sourceHandle:"sl",targetHandle:"tr"},[eD]),eX=(0,s.useMemo)(()=>new Set([...ex.tables.map(e=>e.id),...ex.endpoints.map(e=>e.id)]),[ex]),eW=(0,s.useMemo)(()=>new Set(e.map(e=>e.id)),[e]),eY=(0,s.useCallback)(()=>{let e=eC.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:eI.get(e.id)??0,source:e.source,rev:em.rev,diffStatus:eA.get(e.id)?.status,diffChanges:eA.get(e.id)?.changes,fkTargets:eR.get(e.id),pins:eL.get(e.id),onPinClick:N,onComment:eK}})),t=eE.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:em.rev,diffStatus:ez.get(e.id)?.status,diffChanges:ez.get(e.id)?.changes,pins:eL.get(e.id),onPinClick:N,onComment:eK}})),n=new Map,a=new Map(eC.map(e=>[e.id,e])),s=new Map(eE.map(e=>[e.id,e]));return[...e,...t,...eF.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$||k?void 0:N,editable:e$||!!k,onChangeText:e$?(e,t)=>eH(e,{body:t}):k,onDelete:e$?eU:C}}})]},[eC,eE,eI,em.rev,eA,ez,eR,eL,eF,e$,N,k,C,eK,eH,eU]),[eZ,eJ,eV]=(0,o.ck)(eY());(0,s.useEffect)(()=>{eJ(e=>{let t=new Map(e.map(e=>[e.id,e.position]));return eY().map(e=>({...e,position:t.get(e.id)??e.position}))})},[eY,eJ]);let eq=(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})})},[]),eQ=(0,s.useCallback)((e,t)=>{let{x:n,y:a}=t.position;if(t.id.startsWith("anno-")){e$&&eH(t.id.slice(5),{x:n,y:a});return}eX.has(t.id)?ef(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):eq("endpoint"===t.type?"endpoint":"table",t.id,n,a)},[eX,ef,eq,e$,eH]),e0=(0,s.useMemo)(()=>eT.map(e=>({id:`fk-${e.id}`,source:e.fromTableId,target:e.toTableId,...eG(e.fromTableId,e.toTableId),type:"deletable",label:e.label??void 0,markerEnd:{type:i.TG.ArrowClosed,color:"#6b6b6b"},style:{stroke:"#6b6b6b"}})),[eT,eG]),e1=(0,s.useMemo)(()=>eE.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,...eG(e.id,t.tableId),type:"default",markerEnd:{type:i.TG.ArrowClosed,color:n},style:{stroke:n,strokeDasharray:"4 4",opacity:.7}}})),[eE,eG]),e5=(0,s.useMemo)(()=>A?[...e0,...e1]:e0,[e0,e1,A]),e2=(0,s.useMemo)(()=>eF.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}})),[eF]),e3=I?.id??P,e4=(0,s.useMemo)(()=>{if(R){let e=e5.find(e=>e.id===R);return e?new Set([e.source,e.target]):null}return e3?(0,h.F1)(e3,e5):null},[e3,R,e5]),e6=(0,s.useMemo)(()=>new Map(eC.map(e=>[e.id,{domain:e.domain,source:e.source}])),[eC]),e8=(0,s.useMemo)(()=>new Map(eE.map(e=>[e.id,{method:e.method,source:e.source}])),[eE]),e9=(0,s.useMemo)(()=>{let e=new Set;if(!A)for(let t of e8.keys())e.add(t);for(let[t,n]of e6)!eo.size||n.domain&&eo.has(n.domain)||e.add(t),el.size&&!el.has(n.source)&&e.add(t);for(let[t,n]of e8)ec.size&&!ec.has(n.method)&&e.add(t),el.size&&!el.has(n.source)&&e.add(t);return e},[A,e6,e8,eo,el,ec]),e7=(0,s.useMemo)(()=>eZ.map(e=>{if(e.id.startsWith("anno-")){let t=e_.get(e.id),n=!!t&&e9.has(t);return!!e.hidden!==n?{...e,hidden:n}:e}let t=e9.has(e.id);return e4?{...e,hidden:t,style:{...e.style,opacity:e4.has(e.id)?1:.45,transition:"opacity 120ms"}}:t?{...e,hidden:t}:e}),[eZ,e9,e4,e_]),te=(0,s.useMemo)(()=>e5.map(e=>{let t=e9.has(e.source)||e9.has(e.target);return e3||R?(R?e.id===R:e3&&(e.source===e3||e.target===e3))?{...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}}:t?{...e,hidden:t}:e}),[e5,e3,R,e9]),tt=(0,s.useMemo)(()=>Array.from(new Set(eC.map(e=>e.domain).filter(e=>!!e))).sort(),[eC]),tn=(0,s.useMemo)(()=>Array.from(new Set([...eC.map(e=>e.source),...eE.map(e=>e.source)])).sort(),[eC,eE]),ta=(0,s.useMemo)(()=>Array.from(new Set(eE.map(e=>e.method))).sort(),[eE]);function ts(e,t){t(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}let tr=+!A+eo.size+el.size+ec.size,to=(0,s.useCallback)(()=>{z(!0),ei(new Set),ed(new Set),eu(new Set)},[]),ti=(0,s.useCallback)(e=>{let{source:t,target:n}=e;t&&n&&t!==n&&eh(e=>{if(!(e.tables.some(e=>e.id===n)||eW.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,K.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})},[eh,eW]),tl=(0,s.useMemo)(()=>({patchEndpoint:(e,t)=>eh(n=>({...n,endpoints:n.endpoints.map(n=>n.id===e?{...n,...t}:n)})),deleteEndpoint:e=>eh(t=>({...t,endpoints:t.endpoints.filter(t=>t.id!==e)})),patchTable:(e,t)=>eh(n=>({...n,tables:n.tables.map(n=>n.id===e?{...n,...t}:n)})),deleteTable:e=>eh(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&&S.refresh()})}}),[eh,S]);(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?eb():eg()):"y"===n&&(e.preventDefault(),eb())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[eg,eb]);let td=(0,s.useCallback)(async()=>{er(!0);try{if((await fetch("/api/draft/approve",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(ex)})).ok){try{localStorage.removeItem(en)}catch{}ev(ea),S.refresh()}}finally{er(!1)}},[ex,ev,S]),tc=(0,s.useCallback)(async()=>{er(!0);try{await fetch("/api/draft",{method:"DELETE"})}catch{}try{localStorage.removeItem(en)}catch{}ev(ea),S.refresh(),er(!1)},[ev,S]),tu=(0,s.useMemo)(()=>{let e;return e=new Map(ex.tables.map(e=>[e.id,e.name])),{tables:ex.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:ex.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:ex.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}]:[]})}))}},[ex]),tm=ex.tables.length>0||ex.endpoints.length>0,tp=em.past.length>0,tx=em.future.length>0;return(0,a.jsx)(f.Provider,{value:tl,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:e7,edges:[...te,...e2.map(e=>({...e,hidden:e9.has(e.source)}))],nodeTypes:ee,edgeTypes:et,connectionMode:i.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onNodesChange:eV,onConnect:ti,onNodeMouseEnter:(e,t)=>{"annotation"!==t.type&&O(t.id)},onNodeMouseLeave:()=>O(null),onNodeClick:(e,t)=>{if("annotation"===t.type)return void N?.(t.data.annotationId);let n="endpoint"===t.type?"endpoint":"table";D({id:t.id,kind:n}),$(null),L(!0),B("details")},onEdgeClick:(e,t)=>{$(t.id),D(null)},onPaneClick:()=>{D(null),$(null)},onNodeDragStop:eQ,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-")||eX.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)(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:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,a.jsx)(U.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",F&&"!mr-[332px]",c&&"hidden"),children:[(0,a.jsx)("button",{type:"button",title:"Arrange board — pack tables + endpoints side by side",disabled:Q,onClick:async()=>{er(!0);try{await fetch("/api/db/arrange",{method:"POST"}),S.refresh()}finally{er(!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)(X.A,{className:"size-4"})}),(0,a.jsxs)(H.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||tr>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,a.jsx)(W.A,{className:"size-4"}),tr>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:tr})]}),children:[(0,a.jsx)(H.r1,{title:"Show",children:(0,a.jsx)(H.vu,{tone:"accent",on:A,onClick:()=>z(e=>!e),children:"endpoints"})}),tt.length>0&&(0,a.jsx)(H.r1,{title:"Domain",children:tt.map(e=>(0,a.jsx)(H.vu,{on:eo.has(e),onClick:()=>ts(e,ei),children:e},e))}),ta.length>0&&(0,a.jsx)(H.r1,{title:"Method",children:ta.map(e=>(0,a.jsx)(H.vu,{on:ec.has(e),onClick:()=>ts(e,eu),children:e},e))}),tn.length>0&&(0,a.jsx)(H.r1,{title:"Source",children:tn.map(e=>(0,a.jsx)(H.vu,{on:el.has(e),onClick:()=>ts(e,ed),children:e.toLowerCase()},e))}),tr>0&&(0,a.jsx)("button",{type:"button",onClick:to,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)(H.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)(Y.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"})]})]})}),!F&&(0,a.jsx)("button",{onClick:()=>L(!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)(Z.A,{className:"size-4"})})]}),tm&&(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:eg,disabled:!tp,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)(J.A,{className:"size-3.5"})," undo"]}),(0,a.jsxs)("button",{onClick:eb,disabled:!tx,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)(V.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:tc,disabled:Q,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:td,disabled:Q,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)(q.A,{className:"size-3.5"})," approve draft"]})]})]})]}),F&&(0,a.jsx)(M,{selected:I,tables:eC,relations:eT,endpoints:eE,draftGraph:tu,onClose:()=>{L(!1),B("details")},commentsContent:b,commentsCount:y,activeTab:_,onTabChange:B,onAddComment:eK,topOffset:c?64:void 0})]})})}},36077:(e,t,n)=>{n.d(t,{MapClient:()=>ew});var a=n(95155),s=n(12115),r=n(98112),o=n(6266),i=n(81750);n(53255);var l=n(17356),d=n(2125),c=n(68319),u=n(15480),m=n(65377),p=n(17494),x=n(80846),h=n(45486),f=n(73321),g=n(95635),b=n(17918),v=n(9339);let y=(0,v.createServerReference)("4027c2809699e746c9dc2d4de53fa4e02fc880143a",v.callServer,void 0,v.findSourceMapURL,"acceptSuggestionAction");var j=n(32133),w=n(65408),N=n(8962),k=n(84824),C=n(5736),E=n(86272),S=n(64577),A=n(9005),z=n(65738),T=n(40638),I=n(26518);let D=["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED"],R=["KEEP","REBUILD","REPLACE","DROP"],$=["IN_PROGRESS","PENDING","BLOCKED","DONE","DEPRIORITIZED","CANCELLED"],M={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"}},P=["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"];function O(e){let t=(e??"").trim().toUpperCase();if(!t)return"bg-white/[0.06] text-muted-foreground";let n=0;for(let e=0;e<t.length;e++)n=31*n+t.charCodeAt(e)>>>0;return P[n%P.length]}let F=(0,s.createContext)(null);var L=n(60874),_=n(91337);let B=[{v:0,l:"P0 \xb7 critical"},{v:1,l:"P1 \xb7 high"},{v:2,l:"P2 \xb7 medium"},{v:3,l:"P3 \xb7 low"}],H="nodrag nopan";function U({nodeId:e}){let t=(0,f.useRouter)(),[n,r]=(0,s.useState)(!1),[o,i]=(0,s.useState)(""),[l,d]=(0,s.useState)(!1),u=()=>{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&&(u(),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,_.cn)(H,"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)(c.A,{className:"size-3"})}),n&&(0,a.jsxs)("div",{onClick:e=>e.stopPropagation(),className:(0,_.cn)(H,"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)(c.A,{className:"size-3"})," Flag a bug"]}),(0,a.jsx)("button",{type:"button",title:"Cancel",onClick:u,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&&u(),"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"})]})]})}function K({id:e,data:t,selected:n}){let{categories:r,statuses:o,patch:i,isExpanded:l,toggleExpand:d,openDetailed:u,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}(),f=l(e),[v,D]=(0,s.useState)(!1),[R,$]=(0,s.useState)(!1),[P,G]=(0,s.useState)(t.title),[X,W]=(0,s.useState)(t.cluster??""),[Y,Z]=(0,s.useState)(t.plain??""),J=0===t.priority,V="BUG"===t.kind&&"ROADMAP"===t.view,q="ARCHITECTURE"===t.view,Q=t.openBugs??0,ee="CANCELLED"===t.status||"DROP"===t.status,et="DEPRIORITIZED"===t.status,en="DRAFT"===t.source,ea="IN_PROGRESS"===t.status,es="INIT"===t.source&&"ROADMAP"===t.view,er=e=>e.stopPropagation(),[eo,ei]=(0,s.useTransition)();return(0,a.jsxs)("div",{className:(0,_.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",f?"min-w-80":"min-w-64",en?"border-dashed border-sky-400/50 bg-sky-500/[0.06]":es?"border-dashed border-violet-400/60 bg-violet-500/[0.07] shadow-[0_0_0_1px_rgba(167,139,250,0.18)]":J?"border-[#ff3860]/60 shadow-[0_0_0_1px_rgba(255,56,96,0.15)]":"border-border",V&&!en&&"border-rose-400/50 bg-rose-500/[0.05]",ea&&"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)]",ee&&"opacity-60",et&&"opacity-70 border-dashed"),children:[(0,a.jsx)(g.x,{}),q&&(0,a.jsx)(U,{nodeId:e}),(t.pins?.length??0)>0?(0,a.jsx)(b.e0,{pins:t.pins,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)("button",{type:"button",title:`Annotate ${t.title}`,onClick:e=>{er(e),t.onComment?.(t.title)},className:(0,_.cn)(H,"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)(j.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:[ea&&(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&&!ea&&(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:P,autoFocus:p===e,placeholder:"Title…",onFocus:t=>{p===e&&t.currentTarget.select()},onChange:e=>G(e.target.value),onBlur:()=>{let n=P.trim();n&&n!==t.title&&i(e,{title:n},!0)},onKeyDown:e=>{er(e),"Enter"!==e.key||e.shiftKey||(e.preventDefault(),e.currentTarget.blur())},className:(0,_.cn)(H,"field-sizing-content w-full resize-none bg-transparent text-sm font-medium leading-snug outline-none placeholder:text-muted-foreground/60",ee&&"line-through")}),(0,a.jsx)("button",{type:"button",onClick:t=>{er(t),d(e)},title:f?"Collapse":"Expand",className:(0,_.cn)(H,"mt-0.5 shrink-0 text-muted-foreground hover:text-foreground"),children:f?(0,a.jsx)(w.A,{className:"size-3.5"}):(0,a.jsx)(N.A,{className:"size-3.5"})})]}),((t.signals?.untested??0)>0||t.signals?.auth||Q>0)&&(0,a.jsxs)("div",{className:"mt-1 flex w-0 min-w-full flex-wrap items-center gap-1",children:[Q>0&&(0,a.jsxs)("span",{title:`${Q} 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)(c.A,{className:"size-2.5"}),Q," ",1===Q?"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)(k.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)(C.A,{className:"size-2.5"})," auth"]})]}),t.role&&(0,a.jsx)("div",{className:(0,_.cn)("mt-0.5 w-0 min-w-full text-[10px] leading-snug text-muted-foreground",!f&&"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,_.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)(c.A,{className:"size-2.5"}),V?"bug":t.isChild?"sub-task":"feature"]}),es&&(0,a.jsxs)("span",{className:(0,_.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",eo&&"opacity-50"),children:[(0,a.jsx)(E.A,{className:"size-2.5"})," IA",(0,a.jsx)("button",{type:"button",title:"Accept suggestion — turn it into your own feature",disabled:eo,onClick:t=>{er(t),ei(async()=>y(e))},className:(0,_.cn)(H,"-my-0.5 rounded p-0.5 hover:bg-emerald-500/20 hover:text-emerald-300"),children:(0,a.jsx)(S.A,{className:"size-2.5"})}),(0,a.jsx)("button",{type:"button",title:"Dismiss suggestion (deletes the card)",disabled:eo,onClick:t=>{er(t),m(e)},className:(0,_.cn)(H,"-my-0.5 -ml-0.5 rounded p-0.5 hover:bg-red-500/20 hover:text-red-300"),children:(0,a.jsx)(A.A,{className:"size-2.5"})})]}),(0,a.jsx)("input",{list:`cats-${e}`,value:X,placeholder:"category",onChange:e=>W(e.target.value),onBlur:()=>{let n=X.trim()||null;n!==(t.cluster??null)&&i(e,{cluster:n},!0)},onKeyDown:e=>{er(e),"Enter"===e.key&&e.currentTarget.blur()},className:(0,_.cn)(H,"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",O(X))})]}):(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:X,placeholder:"domain",title:"Architecture domain — the lane this component lives in",onChange:e=>W(e.target.value),onBlur:()=>{let n=X.trim()||null;n!==(t.cluster??null)&&i(e,{cluster:n},!0)},onKeyDown:e=>{er(e),"Enter"===e.key&&e.currentTarget.blur()},className:(0,_.cn)(H,"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",O(X))})]}),(0,a.jsx)("datalist",{id:`cats-${e}`,children:r.map(e=>(0,a.jsx)("option",{value:e},e))}),(0,a.jsxs)(I.l6,{value:t.status,onValueChange:t=>i(e,{status:t},!0),children:[(0,a.jsx)(I.bq,{className:(0,_.cn)(H,"ml-auto h-6 shrink-0 gap-1 rounded border px-1.5 py-0 text-[10px] font-medium",M[t.status]?.className??"border-white/10"),children:(0,a.jsx)(I.yv,{children:e=>M[e]?.label??e})}),(0,a.jsx)(I.gC,{alignItemWithTrigger:!1,children:o.map(e=>(0,a.jsx)(I.eb,{value:e,children:M[e]?.label??e},e))})]})]}),f&&(0,a.jsxs)("div",{className:"mt-2 w-0 min-w-full space-y-2 border-t border-white/10 pt-2",children:[R||!Y.trim()?(0,a.jsx)("textarea",{autoFocus:R,value:Y,placeholder:"Description (markdown)…",onChange:e=>Z(e.target.value),onBlur:()=>{$(!1);let n=Y.trim()||null;n!==(t.plain??null)&&i(e,{plain:n},!0)},onKeyDown:er,rows:3,className:(0,_.cn)(H,"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=>{er(e),$(!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)(L.pO,{markdown:Y,variant:"compact",className:"text-[12px]"})}),(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)(I.l6,{value:String(t.priority),onValueChange:t=>i(e,{priority:Number(t)},!0),children:[(0,a.jsx)(I.bq,{className:(0,_.cn)(H,"h-6 gap-1 rounded border-white/10 px-1.5 py-0 text-[10px]"),children:(0,a.jsx)(I.yv,{children:e=>B.find(t=>String(t.v)===e)?.l??e})}),(0,a.jsx)(I.gC,{alignItemWithTrigger:!1,children:B.map(e=>(0,a.jsx)(I.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=>{er(t),v?m(e):D(!0)},onBlur:()=>D(!1),title:"Delete node",className:(0,_.cn)(H,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] transition-colors",v?"bg-red-500/20 text-red-300":"text-muted-foreground hover:bg-white/5 hover:text-red-300"),children:[(0,a.jsx)(z.A,{className:"size-3"}),v&&"Delete?"]}),x&&(0,a.jsxs)("button",{type:"button",onClick:e=>{er(e),x(`feature: ${t.title}`)},title:"Ask the agent a question about this feature (answered in its next round)",className:(0,_.cn)(H,"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)(T.A,{className:"size-3"})," Ask"]}),(0,a.jsxs)("button",{type:"button",onClick:t=>{er(t),u(e)},className:(0,_.cn)(H,"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)(h.A,{className:"size-3"})," Details"]})]})]})]})]})}var G=n(54698),X=n(57144),W=n(82099),Y=n(4474),Z=n(70521),J=n(74350);function V({className:e,type:t,...n}){return(0,a.jsx)("input",{type:t,"data-slot":"input",className:(0,_.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 q({className:e,...t}){return(0,a.jsx)("textarea",{"data-slot":"textarea",className:(0,_.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 Q=n(61388);function ee({className:e,...t}){return(0,a.jsx)(Q.b,{"data-slot":"label",className:(0,_.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 et=(0,v.createServerReference)("40eb685ebfe9863865881ba107a6d9f06ca48be7ed",v.callServer,void 0,v.findSourceMapURL,"createNodeAction"),en=(0,v.createServerReference)("60a8bcbb7eb57e0d85ea4c6f2752198acafa0a560c",v.callServer,void 0,v.findSourceMapURL,"updateNodeAction");function ea({open:e,onOpenChange:t,mode:n,view:r,heading:o,nodeId:i,parentId:l,position:d,defaults:c}){let u=(0,f.useRouter)(),[m,p]=(0,s.useState)(c?.title??""),[x,h]=(0,s.useState)(c?.role??""),[g,b]=(0,s.useState)(c?.plain??""),[v,y]=(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 et({view:r,..."ROADMAP"===r?{kind:N}:{},title:m.trim(),role:x.trim()||null,plain:g.trim()||null,cluster:v.trim()||null,parentId:l??null,status:j,x:d?.x??60,y:d?.y??60}):i&&await en(i,{..."ROADMAP"===r?{kind:N}:{},title:m.trim(),role:x.trim()||null,plain:g.trim()||null,cluster:v.trim()||null,status:j}),t(!1),u.refresh()}finally{E(!1)}}}return(0,a.jsx)(J.lG,{open:e,onOpenChange:t,children:(0,a.jsxs)(J.Cf,{children:[(0,a.jsx)(J.c7,{children:(0,a.jsx)(J.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)(ee,{htmlFor:"nf-title",children:"Title"}),(0,a.jsx)(V,{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)(ee,{htmlFor:"nf-role",children:"Role (one line)"}),(0,a.jsx)(V,{id:"nf-role",value:x,onChange:e=>h(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(ee,{htmlFor:"nf-plain",children:"Description"}),(0,a.jsx)(q,{id:"nf-plain",rows:3,value:g,onChange:e=>b(e.target.value)})]}),"ROADMAP"===r&&(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(ee,{children:"Kind"}),(0,a.jsxs)(I.l6,{value:N,onValueChange:e=>null!=e&&k(e),children:[(0,a.jsx)(I.bq,{children:(0,a.jsx)(I.yv,{children:e=>"BUG"===e?"Bug":"Feature"})}),(0,a.jsxs)(I.gC,{children:[(0,a.jsx)(I.eb,{value:"FEATURE",children:"Feature"}),(0,a.jsx)(I.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)(ee,{children:"Status"}),(0,a.jsxs)(I.l6,{value:j,onValueChange:e=>null!=e&&w(e),children:[(0,a.jsx)(I.bq,{children:(0,a.jsx)(I.yv,{children:e=>M[e]?.label??e})}),(0,a.jsx)(I.gC,{children:S.map(e=>(0,a.jsx)(I.eb,{value:e,children:M[e]?.label??e},e))})]})]}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(ee,{htmlFor:"nf-cluster",children:"Cluster / lane"}),(0,a.jsx)(V,{id:"nf-cluster",value:v,onChange:e=>y(e.target.value)})]})]})]}),(0,a.jsxs)(J.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 es=(0,v.createServerReference)("40aa1e7107fe3c8f957869f0e12efa617d22879e4c",v.callServer,void 0,v.findSourceMapURL,"deleteNodeAction"),er=(0,v.createServerReference)("608314f97341e28ae04ab4ab5ee7f6e9beb38a0460",v.callServer,void 0,v.findSourceMapURL,"setStatusAction"),eo=(0,v.createServerReference)("405b6297a013f25886facc6eec3f7c9b3f484d1704",v.callServer,void 0,v.findSourceMapURL,"cancelAction"),ei=(0,v.createServerReference)("401c5dcbda4f5183d28ca893c77ed3d2a9d45fefb6",v.callServer,void 0,v.findSourceMapURL,"deprioritizeAction");function el({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)(W.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)(ed,{active:"details"===m,onClick:()=>l?.("details"),children:"Details"}),(0,a.jsxs)(ed,{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)(A.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)(A.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)(j.A,{className:"size-3.5"}),"Comment on this ","ARCHITECTURE"===e?"component":"feature"]}),(0,a.jsx)(ec,{node:t,view:e},t.id)]}):(0,a.jsx)(em,{view:e,nodes:n})})})]})}function ed({active:e,onClick:t,children:n}){return(0,a.jsx)("button",{type:"button",onClick:t,className:(0,_.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 ec({node:e,view:t}){var n;let r=(0,f.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)(E.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(()=>y(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(()=>es(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)(I.l6,{value:e.status,onValueChange:t=>null!=t&&p(()=>er(e.id,t)),children:[(0,a.jsx)(I.bq,{className:"h-8",disabled:o,children:(0,a.jsx)(I.yv,{children:e=>M[e]?.label??e})}),(0,a.jsx)(I.gC,{children:m.map(e=>(0,a.jsx)(I.eb,{value:e,children:M[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)(L.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)(eu,{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(()=>eo(e.id)),children:"Cancel"}),(0,a.jsx)(Y.$,{size:"sm",variant:"outline",disabled:o,onClick:()=>p(()=>ei(e.id)),children:"Deprioritize"}),(0,a.jsxs)(Z.Lt,{children:[(0,a.jsx)(Z.tv,{render:(0,a.jsx)(Y.$,{size:"sm",variant:"outline",className:"text-red-300",children:"Delete"})}),(0,a.jsxs)(Z.EO,{children:[(0,a.jsxs)(Z.wd,{children:[(0,a.jsxs)(Z.r7,{children:["Delete “",e.title,"”?"]}),(0,a.jsx)(Z.$v,{children:"This removes the node and all its sub-nodes. It can’t be undone."})]}),(0,a.jsxs)(Z.ck,{children:[(0,a.jsx)(Z.Zr,{children:"Cancel"}),(0,a.jsx)(Z.Rx,{onClick:()=>p(()=>es(e.id)),children:"Delete"})]})]})]})]}),l&&(0,a.jsx)(ea,{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)(ea,{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 eu({node:e}){let t=(0,f.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))},u=()=>{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)(c.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,_.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,_.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)(A.A,{className:"size-3"})})]})]}),(0,a.jsx)("p",{className:(0,_.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(),u())},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:u,children:"Flag"})]})]})}function em({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)(ep,{label:"nodes",value:t.length}),(0,a.jsx)(ep,{label:"critical",value:n})]})]})}function ep({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 ex=n(18874),eh=n(62311),ef=n(56614);let eg=[{value:"cluster",label:"Theme"},{value:"status",label:"Status"},{value:"priority",label:"Priority"}],eb=new Set(["title","role","plain","cluster","status","priority"]),ev={roadmapNode:K,archNode:K,annotation:b.Sh},ey={deletable:X.I},ej={CONTAINS:{stroke:"#7c7c8a"},DEPENDS:{stroke:"#f5b942",dash:"6 4"},RELATES:{stroke:"#8a8a95",dash:"4 4"},REPLACES:{stroke:"#ff6b9d"}};function ew({view:e,nodes:t,edges:n,workOnNextId:f=null,embedded:g=!1,commentsContent:v,commentsCount:y=0,controlRef:j,onAskAgent:w,onAddComment:N,annotations:k,onPinClick:C,onUpdateComment:E,onRemoveComment:S,boardAnnotations:A}){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]),T=(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:ej.CONTAINS.stroke}})),...n.filter(t=>e.has(t.fromId)&&e.has(t.toId)).map(e=>{let t=ej[e.kind]??ej.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]),[I,P]=(0,s.useState)(z),[O,L]=(0,s.useState)(T),[B,H]=(0,s.useState)(null),[U,K]=(0,s.useState)(null),[X,W]=(0,s.useState)(null),[Y,Z]=(0,s.useState)(!1),[J,V]=(0,s.useState)("details"),q=(0,s.useRef)(!1),Q=(0,s.useRef)("details");(0,s.useEffect)(()=>{q.current=Y},[Y]),(0,s.useEffect)(()=>{Q.current=J},[J]),(0,s.useEffect)(()=>{if(j)return j.current={open:()=>{if(q.current){Z(!1),V("details");return}Z(!0),V("details")},close:()=>{Z(!1),V("details")},openComments:()=>{Z(!0),V("comments")}},()=>{j&&(j.current=null)}},[j]);let[ee,et]=(0,s.useState)(new Set),[en,ea]=(0,s.useState)(null),[es,er]=(0,s.useState)(!1),eo=(0,s.useRef)(0),ei=(0,s.useRef)(null);(0,s.useEffect)(()=>P(z),[z]),(0,s.useEffect)(()=>L(T),[T]);let ed=(0,s.useCallback)((e,t,n)=>{P(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])=>eb.has(e))))})},[]),ec=(0,s.useMemo)(()=>Array.from(new Set(I.map(e=>e.data.cluster).filter(e=>!!e))).sort(),[I]),eu=(0,s.useCallback)(e=>et(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),[]),em=(0,s.useCallback)(e=>{H(e),Z(!0),V("details")},[]),ep=(0,s.useCallback)(e=>{P(t=>t.filter(t=>t.id!==e)),H(t=>t===e?null:t),fetch(`/api/nodes/${e}`,{method:"DELETE"})},[]),eN=(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";P(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}}]),et(e=>new Set(e).add(s)),ea(s),H(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{P(e=>e.filter(e=>e.id!==s)),et(e=>{let t=new Set(e);return t.delete(s),t}),ea(e=>e===s?null:e),H(e=>e===s?null:e)}},[e]),ek=(0,s.useCallback)(()=>{let e=eo.current++%8*28;eN(80+e,80+e)},[eN]),eC=(0,s.useCallback)(()=>{let e=eo.current++%8*28;eN(80+e,80+e,"BUG")},[eN]),eE=(0,s.useMemo)(()=>({view:e,categories:ec,statuses:"ARCHITECTURE"===e?R:D,patch:ed,isExpanded:e=>ee.has(e),toggleExpand:eu,openDetailed:em,removeNode:ep,editingTitleId:en,onAskAgent:w}),[e,ec,ed,ee,eu,em,ep,en,w]),[eS,eA]=(0,s.useState)(null),[ez,eT]=(0,s.useState)(""),[eI,eD]=(0,s.useState)(new Set),[eR,e$]=(0,s.useState)(new Set),[eM,eP]=(0,s.useState)(new Set),eO=(0,s.useMemo)(()=>Array.from(new Set(t.map(e=>e.status))),[t]),eF=(0,s.useMemo)(()=>Array.from(new Set(t.map(e=>e.cluster).filter(e=>!!e))).sort(),[t]),eL=(0,s.useMemo)(()=>Array.from(new Set(t.map(e=>e.priority))).sort((e,t)=>e-t),[t]),e_=(0,s.useCallback)(e=>(!eI.size||!!eI.has(e.status))&&(!eR.size||!!e.cluster&&!!eR.has(e.cluster))&&(!eM.size||!!eM.has(e.priority)),[eI,eR,eM]),eB=eI.size+eR.size+eM.size,eH=(0,s.useCallback)(()=>{eD(new Set),e$(new Set),eP(new Set)},[]),eU=(0,s.useMemo)(()=>I.map(e=>({...e,hidden:!e_(e.data)})),[I,e_]),eK=(0,s.useMemo)(()=>new Set(eU.filter(e=>e.hidden).map(e=>e.id)),[eU]),eG=(0,s.useMemo)(()=>O.map(e=>({...e,hidden:eK.has(e.source)||eK.has(e.target)})),[O,eK]),eX=(0,s.useMemo)(()=>{if(U){let e=eG.find(e=>e.id===U);return e?new Set([e.source,e.target]):null}return B?(0,ex.F1)(B,eG.filter(e=>!e.hidden)):null},[B,U,eG]),eW=(0,s.useMemo)(()=>eU.map(e=>{let t=f&&e.id===f?{...e,data:{...e.data,isNext:!0}}:e;return(ee.has(e.id)&&(t={...t,zIndex:25}),!eX||t.hidden)?t:{...t,style:{...t.style,opacity:eX.has(e.id)?1:.45,transition:"opacity 120ms"}}}),[eU,eX,f,ee]),eY=(0,s.useMemo)(()=>{if(!eS||"ROADMAP"!==e)return[];let t=new Map(eW.map(e=>[e.id,e])),n=new Map;for(let e of eW){var a;if(e.hidden)continue;let s=(a=((e.data.parentId?t.get(e.data.parentId):void 0)??e).data,"status"===eS?M[a.status]?.label??a.status:"priority"===eS?`P${a.priority}`:a.cluster?.trim()||"—"),r=e.measured?.width??(e.data.isChild?224:256),o=e.measured?.height??96,i=e.position.x,l=e.position.y,d=n.get(s);d?(d.minX=Math.min(d.minX,i),d.minY=Math.min(d.minY,l),d.maxX=Math.max(d.maxX,i+r),d.maxY=Math.max(d.maxY,l+o)):n.set(s,{label:s,minX:i,minY:l,maxX:i+r,maxY:l+o})}return Array.from(n.values()).map(e=>({label:e.label,x:e.minX-20,y:e.minY-20-26,w:e.maxX-e.minX+40,h:e.maxY-e.minY+40+26}))},[eW,eS,e]),eZ=(0,s.useMemo)(()=>{let e=B??X;return U||e?eG.map(t=>t.hidden?t:(U?t.id===U: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}}):eG.map(e=>e.hidden?e:{...e,label:void 0,style:{...e.style,opacity:.18}})},[eG,B,U,X]),eJ=void 0!==A,[eV,eq]=(0,s.useState)(A??[]);(0,s.useEffect)(()=>{A&&eq(A)},[A]);let eQ=(0,s.useMemo)(()=>{if(eJ){let e=new Set(t.map(e=>e.id));return eV.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((k??[]).map(e=>[e.id,e.comment]));return(0,G.m)(k??[],{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}))},[eJ,eV,k,t]),e0=(0,s.useMemo)(()=>{let e=new Map;for(let t of eQ){let n=e.get(t.targetId)??[];n.push({id:t.id,n:t.n,column:null}),e.set(t.targetId,n)}return e},[eQ]),e1=(0,s.useCallback)(async e=>{let n=(0,G.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();eq(t=>[...t,e])}},[t]),e5=(0,s.useCallback)((e,t)=>{eq(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)})},[]),e2=(0,s.useCallback)(e=>{eq(t=>t.filter(t=>t.id!==e)),fetch(`/api/board-annotations/${e}`,{method:"DELETE"})},[]),e3=eJ?e1:N,[e4,e6]=(0,s.useState)(()=>new Map),e8=(0,s.useMemo)(()=>{let e=new Map(eW.map(e=>[e.id,e])),t=new Map,n=eQ.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:e4.get(`anno-${n.id}`),draggable:eJ,data:{n:n.n,text:n.text,annotationId:n.id,onClick:eJ||E?void 0:C,editable:eJ||!!E,onChangeText:eJ?(e,t)=>e5(e,{body:t}):E,onDelete:eJ?e2:S}}]});return[...eW.map(e=>{let t=e0.get(e.id);return t||e3?{...e,data:{...e.data,pins:t,onPinClick:eJ?void 0:C,onComment:e3}}:e}),...n]},[eW,eQ,e0,eJ,C,E,S,e3,e5,e2,e4]),e9=(0,s.useMemo)(()=>eQ.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:b.V5,strokeWidth:1.5,opacity:.9}})),[eQ]),e7=(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;eq(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&&e6(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&&P(e=>(0,i._0)(t,e))},[]),te=(0,s.useCallback)(e=>L(t=>(0,i.zW)(e,t)),[]),tt=(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=ej.DEPENDS;L(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}}])},[]),tn=(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();P(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}}]),L(e=>[...e,{id:`c-${r.id}`,source:t.id,target:r.id,type:"smoothstep",style:{stroke:ej.CONTAINS.stroke}}]),et(e=>new Set(e).add(r.id)),ea(r.id),H(r.id)},[e]),ta=(0,s.useCallback)(async(e,t)=>{if(t.isValid||!t.fromNode||!ei.current)return;let n=e.changedTouches,a=n?.[0]?.clientX??e.clientX,s=n?.[0]?.clientY??e.clientY,{x:r,y:o}=ei.current.screenToFlowPosition({x:a,y:s});await tn(t.fromNode,r,o)},[tn]);(0,s.useEffect)(()=>{if(!es)return;let e=e=>{"Escape"===e.key&&er(!1)};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[es]);let ts=(0,s.useMemo)(()=>t.find(e=>e.id===B)??null,[t,B]),tr=(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})})},[]),to=(0,s.useCallback)(e=>{H(e),K(null);let t=ei.current?.getNode(e);if(!t||!ei.current)return;let n=t.measured?.width??128,a=t.measured?.height??48;ei.current.setCenter(t.position.x+n/2,t.position.y+a/2,{zoom:1.2,duration:600})},[]),ti=(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??4,d=n.maxBandW??6*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,v=0,y=0;for(let e of f){let t=h.get(e),n=Math.max(1,Math.min(l,Math.ceil(Math.sqrt(t.length)))),c=n*a;b>0&&b+c>d&&(b=0,v+=y+i,y=0);let u=Array(n).fill(0);for(let e of t){let t=0;for(let e=1;e<n;e++)u[e]<u[t]&&(t=e);let o=b+t*a,i=v+u[t]*s;g.set(e.id,{x:o,y:i});let l=p.get(e.id)??[];l.forEach((e,t)=>{g.set(e.id,{x:o+r,y:i+(t+1)*s})}),u[t]+=1+l.length}y=Math.max(y,u.reduce((e,t)=>Math.max(e,t),0)*s),b+=c+o}return g}(I.map(e=>({id:e.id,parentId:e.data.parentId??null,cluster:e.data.cluster,status:e.data.status,priority:e.data.priority})),e);P(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})}),eA(e),requestAnimationFrame(()=>ei.current?.fitView({duration:600,padding:.2}))},[I]),tl=(0,s.useMemo)(()=>{let e=ez.trim().toLowerCase();return e?I.filter(t=>e_(t.data)&&t.data.title.toLowerCase().includes(e)).slice(0,8):[]},[I,ez,e_]);function td(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:eE,children:(0,a.jsxs)("div",{className:(0,_.cn)("canvas-dots relative w-full",g?"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")||!ei.current)return;e.preventDefault();let{x:t,y:n}=ei.current.screenToFlowPosition({x:e.clientX,y:e.clientY});eN(t,n,"BUG"===e.dataTransfer.getData("application/beacon-node-kind")?"BUG":"FEATURE")},children:[(0,a.jsxs)(i.Gc,{nodes:e8,edges:[...eZ,...e9],nodeTypes:ev,edgeTypes:ey,connectionMode:o.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:e=>{ei.current=e},onNodesChange:e7,onEdgesChange:te,onConnect:tt,onConnectEnd:ta,onNodeMouseEnter:(e,t)=>W(t.id),onNodeMouseLeave:()=>W(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"}),H(e=>e===t.id?null:e))},onNodeClick:(e,t)=>{if("annotation"===t.type)return void C?.(t.data.annotationId);if(es){if(er(!1),t.data.isChild)return;tn(t,t.position.x+300,t.position.y+60);return}if(H(t.id),K(null),V("details"),g){let t=e.target;t?.closest("input, textarea, select, button, [role='combobox']")||Z(!0)}},onEdgeClick:(e,t)=>{K(t.id),H(null),V("details")},onPaneClick:()=>{es?er(!1):(H(null),K(null))},onNodeDragStop:(e,t)=>{if(t.id.startsWith("anno-")){eJ&&e5(t.id.slice(5),{x:t.position.x,y:t.position.y});return}tr(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:[eY.length>0&&(0,a.jsx)(i.DX,{children:eY.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:"rounded-2xl border border-white/[0.08] bg-white/[0.015]",children:(0,a.jsx)("div",{className:"px-3 py-1 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground/70",children:e.label})},e.label))}),(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)(ef.er,{title:"Legend",trigger:(e,t)=>(0,a.jsx)("button",{type:"button",onClick:t,title:"Legend",className:(0,_.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"})]})]})})}),!g&&(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:[es&&(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"]}),"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"}),eg.map(e=>(0,a.jsx)("button",{onClick:()=>ti(e.value),title:`Arrange features into lanes by ${e.label.toLowerCase()}`,className:(0,_.cn)("h-7 rounded-full px-2.5 text-[11px] font-medium transition-colors",eS===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:ek,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)(d.A,{className:"size-3.5 text-[var(--accent-2,#ff7a45)]"}),"ARCHITECTURE"===e?"Component":"Feature"]}),"ROADMAP"===e&&(0,a.jsxs)("button",{onClick:eC,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)(c.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:()=>er(e=>!e),title:"ARCHITECTURE"===e?"Add sub-component (click a component next)":"Add sub-task (click a feature next)",className:(0,_.cn)("flex h-8 items-center gap-1.5 rounded-full px-3 text-[12px] font-medium transition-colors",es?"bg-white/[0.1] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:[(0,a.jsx)(u.A,{className:"size-3.5"}),"ARCHITECTURE"===e?"Sub-component":"Sub-task"]})]})]}),!g&&(0,a.jsx)(i.Zk,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,a.jsx)(eh.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,_.cn)("flex items-center gap-1 transition-[margin] duration-200",Y&&"!mr-[332px]",g&&"hidden"),children:[(0,a.jsxs)(ef.er,{title:"Search",trigger:(e,t)=>(0,a.jsx)("button",{type:"button",onClick:t,title:"Search features",className:(0,_.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)(m.A,{className:"size-4"})}),children:[(0,a.jsx)("input",{autoFocus:!0,value:ez,onChange:e=>eT(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:[ez.trim()&&0===tl.length&&(0,a.jsx)("div",{className:"px-1 py-1 text-[11px] text-muted-foreground",children:"No matches"}),tl.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>to(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&&f&&(0,a.jsx)("button",{type:"button",onClick:()=>to(f),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)(p.A,{className:"size-4"})}),(0,a.jsxs)(ef.er,{title:"Filters",trigger:(e,t)=>(0,a.jsxs)("button",{type:"button",onClick:t,title:"Filters",className:(0,_.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",e||eB>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,a.jsx)(x.A,{className:"size-4"}),eB>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:eB})]}),children:[eO.length>0&&(0,a.jsx)(ef.r1,{title:"Status",children:eO.map(e=>(0,a.jsx)(ef.vu,{on:eI.has(e),onClick:()=>td(e,eD),children:M[e]?.label??e},e))}),eF.length>0&&(0,a.jsx)(ef.r1,{title:"Cluster",children:eF.map(e=>(0,a.jsx)(ef.vu,{on:eR.has(e),onClick:()=>td(e,e$),children:e},e))}),eL.length>0&&(0,a.jsx)(ef.r1,{title:"Priority",children:eL.map(e=>(0,a.jsxs)(ef.vu,{on:eM.has(e),onClick:()=>td(e,eP),children:["P",e]},e))}),eB>0&&(0,a.jsx)("button",{type:"button",onClick:eH,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"})]}),!Y&&(0,a.jsx)("button",{onClick:()=>{Z(!0),V("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)(h.A,{className:"size-4"})})]})]}),Y&&(0,a.jsx)(el,{view:e,selected:ts,allNodes:t,onClose:()=>{Z(!1),V("details")},commentsContent:v,commentsCount:y,activeTab:J,onTabChange:V,onAddComment:e3,topOffset:g?64:void 0})]})})}},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"},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:()=>y,n$:()=>m,pO:()=>o,vB:()=>v});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 v=h.match(/^## +(.+)$/);if(v){s(),x=null,n.push({kind:"h2",text:v[1]});continue}let y=h.match(/^# +(.+)$/);if(y){s(),x=null,n.push({kind:"h1",text:y[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 v(e){return`plan-h-${e}`}function y(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:()=>y,r7:()=>j,tv:()=>h,wd:()=>v});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 v({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 y({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})}},74350:(e,t,n)=>{n.d(t,{Cf:()=>g,Es:()=>v,L3:()=>y,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 v({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 y({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]})}},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))}},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})]})}}}]);
@@ -1,2 +0,0 @@
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,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}}]);
@@ -1 +0,0 @@
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,4360,4505,4636,4816,4852,4896,5022,5043,5152,5190,5412,5807,5884,6600,6714,6760,6805,6819,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()}]);