trybeacon 0.1.80 → 0.1.81

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 (129) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.next/BUILD_ID +1 -1
  3. package/.next/app-path-routes-manifest.json +18 -18
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  7. package/.next/server/app/_global-error.html +1 -1
  8. package/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/server/app/_not-found/page.js +2 -2
  16. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  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 +26 -25
  20. package/.next/server/app/_not-found.segments/_full.segment.rsc +26 -25
  21. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_index.segment.rsc +15 -14
  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/docs/page.js +2 -2
  27. package/.next/server/app/docs/page.js.nft.json +1 -1
  28. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/docs.html +1 -1
  30. package/.next/server/app/docs.rsc +27 -26
  31. package/.next/server/app/docs.segments/_full.segment.rsc +27 -26
  32. package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  33. package/.next/server/app/docs.segments/_index.segment.rsc +15 -14
  34. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  35. package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
  36. package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  37. package/.next/server/app/help/page.js +2 -2
  38. package/.next/server/app/help/page.js.nft.json +1 -1
  39. package/.next/server/app/help/page_client-reference-manifest.js +1 -1
  40. package/.next/server/app/help.html +1 -1
  41. package/.next/server/app/help.rsc +35 -34
  42. package/.next/server/app/help.segments/_full.segment.rsc +35 -34
  43. package/.next/server/app/help.segments/_head.segment.rsc +1 -1
  44. package/.next/server/app/help.segments/_index.segment.rsc +15 -14
  45. package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
  46. package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
  47. package/.next/server/app/help.segments/help.segment.rsc +1 -1
  48. package/.next/server/app/index.html +1 -1
  49. package/.next/server/app/index.rsc +25 -24
  50. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  51. package/.next/server/app/index.segments/_full.segment.rsc +25 -24
  52. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  53. package/.next/server/app/index.segments/_index.segment.rsc +15 -14
  54. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  55. package/.next/server/app/learn/page.js +4 -4
  56. package/.next/server/app/learn/page.js.nft.json +1 -1
  57. package/.next/server/app/learn/page_client-reference-manifest.js +1 -1
  58. package/.next/server/app/map/page.js +2 -2
  59. package/.next/server/app/map/page.js.nft.json +1 -1
  60. package/.next/server/app/map/page_client-reference-manifest.js +1 -1
  61. package/.next/server/app/page.js +2 -2
  62. package/.next/server/app/page.js.nft.json +1 -1
  63. package/.next/server/app/page_client-reference-manifest.js +1 -1
  64. package/.next/server/app/plan/page.js +3 -3
  65. package/.next/server/app/plan/page.js.nft.json +1 -1
  66. package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
  67. package/.next/server/app/s/[token]/page.js +2 -2
  68. package/.next/server/app/s/[token]/page.js.nft.json +1 -1
  69. package/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
  70. package/.next/server/app/settings/page.js +2 -2
  71. package/.next/server/app/settings/page.js.nft.json +1 -1
  72. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  73. package/.next/server/app-paths-manifest.json +18 -18
  74. package/.next/server/chunks/{7720.js → 141.js} +4 -4
  75. package/.next/server/chunks/2025.js +1 -1
  76. package/.next/server/chunks/2455.js +1 -0
  77. package/.next/server/chunks/3174.js +1 -1
  78. package/.next/server/chunks/3179.js +1 -0
  79. package/.next/server/chunks/6469.js +2 -2
  80. package/.next/server/middleware-build-manifest.js +1 -1
  81. package/.next/server/pages/404.html +1 -1
  82. package/.next/server/pages/500.html +1 -1
  83. package/.next/server/server-reference-manifest.js +1 -1
  84. package/.next/server/server-reference-manifest.json +1 -1
  85. package/.next/static/chunks/1909-0f500ebe4df09208.js +1 -0
  86. package/.next/static/chunks/{3908-80efc60050779adf.js → 3908-2ba88cd8ba5dfa2e.js} +1 -1
  87. package/.next/static/chunks/{2059-fba06ba63ba64522.js → 4674-31ad596c3e856647.js} +3 -3
  88. package/.next/static/chunks/4752-81a4fc25de32efa2.js +1 -0
  89. package/.next/static/chunks/4853-43350f60d0d9135b.js +1 -0
  90. package/.next/static/chunks/6639-f0b63e1e7d03a20a.js +1 -0
  91. package/.next/static/chunks/9784-880aab43467bf1e0.js +1 -0
  92. package/.next/static/chunks/app/layout-ef1edf5ed5839b01.js +1 -0
  93. package/.next/static/chunks/app/learn/page-6459c292421bec82.js +7 -0
  94. package/.next/static/chunks/app/map/page-602309791f192143.js +1 -0
  95. package/.next/static/chunks/app/page-32a051917fc57795.js +1 -0
  96. package/.next/static/chunks/app/plan/page-920d4fecdd6dde34.js +11 -0
  97. package/.next/static/chunks/app/s/[token]/page-1df7929974ceeb5a.js +1 -0
  98. package/.next/static/chunks/app/settings/page-f128ae102e013087.js +1 -0
  99. package/.next/static/css/9301599114d42898.css +1 -0
  100. package/.next/trace +47 -46
  101. package/.next/trace-build +1 -1
  102. package/dist/bin/beacon.js +16 -15
  103. package/dist/bin/doctor.js +61 -60
  104. package/dist/bin/hook.js +58 -57
  105. package/dist/bin/mcp.js +70 -69
  106. package/dist/bin/plan.js +61 -60
  107. package/dist/bin/uninstall.js +59 -58
  108. package/dist/lib/assets.js +55 -20
  109. package/dist/lib/codex-install.js +62 -61
  110. package/dist/lib/daemon-boot.js +37 -0
  111. package/dist/lib/global-install.js +62 -61
  112. package/package.json +1 -1
  113. package/.next/server/chunks/5295.js +0 -1
  114. package/.next/server/chunks/7652.js +0 -1
  115. package/.next/static/chunks/1909-98243a0473be2aae.js +0 -1
  116. package/.next/static/chunks/4477-cda153702c7812d2.js +0 -1
  117. package/.next/static/chunks/4607-a668ea431c41e60e.js +0 -1
  118. package/.next/static/chunks/4853-0082a1e1b820a293.js +0 -1
  119. package/.next/static/chunks/5520-32e29b8bbff59f44.js +0 -1
  120. package/.next/static/chunks/app/layout-e728d45f193e3b95.js +0 -1
  121. package/.next/static/chunks/app/learn/page-fc0bf8bce602526b.js +0 -7
  122. package/.next/static/chunks/app/map/page-847b374e7dfed924.js +0 -1
  123. package/.next/static/chunks/app/page-ec00130a7a249f14.js +0 -1
  124. package/.next/static/chunks/app/plan/page-1108bdf804b8a1bd.js +0 -11
  125. package/.next/static/chunks/app/s/[token]/page-2fc7806fc2f205a5.js +0 -1
  126. package/.next/static/chunks/app/settings/page-7e86fd456b92c248.js +0 -1
  127. package/.next/static/css/6eabb17c2a2081f2.css +0 -1
  128. /package/.next/static/{zI2f5SCpeUG4MfjJNbXnf → ms-hAcPFSz7LxuiDMzzcP}/_buildManifest.js +0 -0
  129. /package/.next/static/{zI2f5SCpeUG4MfjJNbXnf → ms-hAcPFSz7LxuiDMzzcP}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4752],{2982:(t,n,r)=>{r.d(n,{A:()=>i});var e=r(17434);function i(t){var n,r,i,o=(0,e.A)(.1);function u(t){for(var e,o=0,u=n.length;o<u;++o)e=n[o],e.vx+=(i[o]-e.x)*r[o]*t}function a(){if(n){var e,u=n.length;for(e=0,r=Array(u),i=Array(u);e<u;++e)r[e]=isNaN(i[e]=+t(n[e],e,n))?0:+o(n[e],e,n)}}return"function"!=typeof t&&(t=(0,e.A)(null==t?0:+t)),u.initialize=function(t){n=t,a()},u.strength=function(t){return arguments.length?(o="function"==typeof t?t:(0,e.A)(+t),a(),u):o},u.x=function(n){return arguments.length?(t="function"==typeof n?n:(0,e.A)(+n),a(),u):t},u}},7679:(t,n,r)=>{r.d(n,{A:()=>h,x:()=>o,y:()=>u});var e=r(32521),i=r(87977);function o(t){return t.x}function u(t){return t.y}var a=Math.PI*(3-Math.sqrt(5));function h(t){let n;var r,o=1,u=.001,h=1-Math.pow(.001,1/300),f=0,s=.6,l=new Map,c=(0,i.O1)(y),x=(0,e.A)("tick","end"),v=(n=1,()=>(n=(1664525*n+0x3c6ef35f)%0x100000000)/0x100000000);function y(){d(),x.call("tick",r),o<u&&(c.stop(),x.call("end",r))}function d(n){var e,i,u=t.length;void 0===n&&(n=1);for(var a=0;a<n;++a)for(o+=(f-o)*h,l.forEach(function(t){t(o)}),e=0;e<u;++e)null==(i=t[e]).fx?i.x+=i.vx*=s:(i.x=i.fx,i.vx=0),null==i.fy?i.y+=i.vy*=s:(i.y=i.fy,i.vy=0);return r}function g(){for(var n,r=0,e=t.length;r<e;++r){if((n=t[r]).index=r,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),isNaN(n.x)||isNaN(n.y)){var i=10*Math.sqrt(.5+r),o=r*a;n.x=i*Math.cos(o),n.y=i*Math.sin(o)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function _(n){return n.initialize&&n.initialize(t,v),n}return null==t&&(t=[]),g(),r={tick:d,restart:function(){return c.restart(y),r},stop:function(){return c.stop(),r},nodes:function(n){return arguments.length?(t=n,g(),l.forEach(_),r):t},alpha:function(t){return arguments.length?(o=+t,r):o},alphaMin:function(t){return arguments.length?(u=+t,r):u},alphaDecay:function(t){return arguments.length?(h=+t,r):+h},alphaTarget:function(t){return arguments.length?(f=+t,r):f},velocityDecay:function(t){return arguments.length?(s=1-t,r):1-s},randomSource:function(t){return arguments.length?(v=t,l.forEach(_),r):v},force:function(t,n){return arguments.length>1?(null==n?l.delete(t):l.set(t,_(n)),r):l.get(t)},find:function(n,r,e){var i,o,u,a,h,f=0,s=t.length;for(null==e?e=1/0:e*=e,f=0;f<s;++f)(u=(i=n-(a=t[f]).x)*i+(o=r-a.y)*o)<e&&(h=a,e=u);return h},on:function(t,n){return arguments.length>1?(x.on(t,n),r):x.on(t)}}}},15330:(t,n,r)=>{r.d(n,{A:()=>e});let e=(0,r(30772).A)("undo-2",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]])},15629:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(53891),i=r(17434),o=r(93958),u=r(7679);function a(){var t,n,r,a,h,f=(0,i.A)(-30),s=1,l=1/0,c=.81;function x(r){var i,o=t.length,h=(0,e.A)(t,u.x,u.y).visitAfter(y);for(a=r,i=0;i<o;++i)n=t[i],h.visit(d)}function v(){if(t){var n,r,e=t.length;for(n=0,h=Array(e);n<e;++n)h[(r=t[n]).index]=+f(r,n,t)}}function y(t){var n,r,e,i,o,u=0,a=0;if(t.length){for(e=i=o=0;o<4;++o)(n=t[o])&&(r=Math.abs(n.value))&&(u+=n.value,a+=r,e+=r*n.x,i+=r*n.y);t.x=e/a,t.y=i/a}else{(n=t).x=n.data.x,n.y=n.data.y;do u+=h[n.data.index];while(n=n.next)}t.value=u}function d(t,e,i,u){if(!t.value)return!0;var f=t.x-n.x,x=t.y-n.y,v=u-e,y=f*f+x*x;if(v*v/c<y)return y<l&&(0===f&&(y+=(f=(0,o.A)(r))*f),0===x&&(y+=(x=(0,o.A)(r))*x),y<s&&(y=Math.sqrt(s*y)),n.vx+=f*t.value*a/y,n.vy+=x*t.value*a/y),!0;if(!t.length&&!(y>=l)){(t.data!==n||t.next)&&(0===f&&(y+=(f=(0,o.A)(r))*f),0===x&&(y+=(x=(0,o.A)(r))*x),y<s&&(y=Math.sqrt(s*y)));do t.data!==n&&(v=h[t.data.index]*a/y,n.vx+=f*v,n.vy+=x*v);while(t=t.next)}}return x.initialize=function(n,e){t=n,r=e,v()},x.strength=function(t){return arguments.length?(f="function"==typeof t?t:(0,i.A)(+t),v(),x):f},x.distanceMin=function(t){return arguments.length?(s=t*t,x):Math.sqrt(s)},x.distanceMax=function(t){return arguments.length?(l=t*t,x):Math.sqrt(l)},x.theta=function(t){return arguments.length?(c=t*t,x):Math.sqrt(c)},x}},17434:(t,n,r)=>{r.d(n,{A:()=>e});function e(t){return function(){return t}}},53891:(t,n,r)=>{function e(t,n,r,e){if(isNaN(n)||isNaN(r))return t;var i,o,u,a,h,f,s,l,c,x=t._root,v={data:e},y=t._x0,d=t._y0,g=t._x1,_=t._y1;if(!x)return t._root=v,t;for(;x.length;)if((f=n>=(o=(y+g)/2))?y=o:g=o,(s=r>=(u=(d+_)/2))?d=u:_=u,i=x,!(x=x[l=s<<1|f]))return i[l]=v,t;if(a=+t._x.call(null,x.data),h=+t._y.call(null,x.data),n===a&&r===h)return v.next=x,i?i[l]=v:t._root=v,t;do i=i?i[l]=[,,,,]:t._root=[,,,,],(f=n>=(o=(y+g)/2))?y=o:g=o,(s=r>=(u=(d+_)/2))?d=u:_=u;while((l=s<<1|f)==(c=(h>=u)<<1|a>=o));return i[c]=x,i[l]=v,t}function i(t,n,r,e,i){this.node=t,this.x0=n,this.y0=r,this.x1=e,this.y1=i}function o(t){return t[0]}function u(t){return t[1]}function a(t,n,r){var e=new h(null==n?o:n,null==r?u:r,NaN,NaN,NaN,NaN);return null==t?e:e.addAll(t)}function h(t,n,r,e,i,o){this._x=t,this._y=n,this._x0=r,this._y0=e,this._x1=i,this._y1=o,this._root=void 0}function f(t){for(var n={data:t.data},r=n;t=t.next;)r=r.next={data:t.data};return n}r.d(n,{A:()=>a});var s=a.prototype=h.prototype;s.copy=function(){var t,n,r=new h(this._x,this._y,this._x0,this._y0,this._x1,this._y1),e=this._root;if(!e)return r;if(!e.length)return r._root=f(e),r;for(t=[{source:e,target:r._root=[,,,,]}];e=t.pop();)for(var i=0;i<4;++i)(n=e.source[i])&&(n.length?t.push({source:n,target:e.target[i]=[,,,,]}):e.target[i]=f(n));return r},s.add=function(t){let n=+this._x.call(null,t),r=+this._y.call(null,t);return e(this.cover(n,r),n,r,t)},s.addAll=function(t){var n,r,i,o,u=t.length,a=Array(u),h=Array(u),f=1/0,s=1/0,l=-1/0,c=-1/0;for(r=0;r<u;++r)!(isNaN(i=+this._x.call(null,n=t[r]))||isNaN(o=+this._y.call(null,n)))&&(a[r]=i,h[r]=o,i<f&&(f=i),i>l&&(l=i),o<s&&(s=o),o>c&&(c=o));if(f>l||s>c)return this;for(this.cover(f,s).cover(l,c),r=0;r<u;++r)e(this,a[r],h[r],t[r]);return this},s.cover=function(t,n){if(isNaN(t*=1)||isNaN(n*=1))return this;var r=this._x0,e=this._y0,i=this._x1,o=this._y1;if(isNaN(r))i=(r=Math.floor(t))+1,o=(e=Math.floor(n))+1;else{for(var u,a,h=i-r||1,f=this._root;r>t||t>=i||e>n||n>=o;)switch(a=(n<e)<<1|t<r,(u=[,,,,])[a]=f,f=u,h*=2,a){case 0:i=r+h,o=e+h;break;case 1:r=i-h,o=e+h;break;case 2:i=r+h,e=o-h;break;case 3:r=i-h,e=o-h}this._root&&this._root.length&&(this._root=f)}return this._x0=r,this._y0=e,this._x1=i,this._y1=o,this},s.data=function(){var t=[];return this.visit(function(n){if(!n.length)do t.push(n.data);while(n=n.next)}),t},s.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},s.find=function(t,n,r){var e,o,u,a,h,f,s,l=this._x0,c=this._y0,x=this._x1,v=this._y1,y=[],d=this._root;for(d&&y.push(new i(d,l,c,x,v)),null==r?r=1/0:(l=t-r,c=n-r,x=t+r,v=n+r,r*=r);f=y.pop();)if((d=f.node)&&!((o=f.x0)>x)&&!((u=f.y0)>v)&&!((a=f.x1)<l)&&!((h=f.y1)<c))if(d.length){var g=(o+a)/2,_=(u+h)/2;y.push(new i(d[3],g,_,a,h),new i(d[2],o,_,g,h),new i(d[1],g,u,a,_),new i(d[0],o,u,g,_)),(s=(n>=_)<<1|t>=g)&&(f=y[y.length-1],y[y.length-1]=y[y.length-1-s],y[y.length-1-s]=f)}else{var p=t-this._x.call(null,d.data),A=n-this._y.call(null,d.data),N=p*p+A*A;if(N<r){var w=Math.sqrt(r=N);l=t-w,c=n-w,x=t+w,v=n+w,e=d.data}}return e},s.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(u=+this._y.call(null,t)))return this;var n,r,e,i,o,u,a,h,f,s,l,c,x=this._root,v=this._x0,y=this._y0,d=this._x1,g=this._y1;if(!x)return this;if(x.length)for(;;){if((f=o>=(a=(v+d)/2))?v=a:d=a,(s=u>=(h=(y+g)/2))?y=h:g=h,n=x,!(x=x[l=s<<1|f]))return this;if(!x.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(r=n,c=l)}for(;x.data!==t;)if(e=x,!(x=x.next))return this;return((i=x.next)&&delete x.next,e)?i?e.next=i:delete e.next:n?(i?n[l]=i:delete n[l],(x=n[0]||n[1]||n[2]||n[3])&&x===(n[3]||n[2]||n[1]||n[0])&&!x.length&&(r?r[c]=x:this._root=x)):this._root=i,this},s.removeAll=function(t){for(var n=0,r=t.length;n<r;++n)this.remove(t[n]);return this},s.root=function(){return this._root},s.size=function(){var t=0;return this.visit(function(n){if(!n.length)do++t;while(n=n.next)}),t},s.visit=function(t){var n,r,e,o,u,a,h=[],f=this._root;for(f&&h.push(new i(f,this._x0,this._y0,this._x1,this._y1));n=h.pop();)if(!t(f=n.node,e=n.x0,o=n.y0,u=n.x1,a=n.y1)&&f.length){var s=(e+u)/2,l=(o+a)/2;(r=f[3])&&h.push(new i(r,s,l,u,a)),(r=f[2])&&h.push(new i(r,e,l,s,a)),(r=f[1])&&h.push(new i(r,s,o,u,l)),(r=f[0])&&h.push(new i(r,e,o,s,l))}return this},s.visitAfter=function(t){var n,r=[],e=[];for(this._root&&r.push(new i(this._root,this._x0,this._y0,this._x1,this._y1));n=r.pop();){var o=n.node;if(o.length){var u,a=n.x0,h=n.y0,f=n.x1,s=n.y1,l=(a+f)/2,c=(h+s)/2;(u=o[0])&&r.push(new i(u,a,h,l,c)),(u=o[1])&&r.push(new i(u,l,h,f,c)),(u=o[2])&&r.push(new i(u,a,c,l,s)),(u=o[3])&&r.push(new i(u,l,c,f,s))}e.push(n)}for(;n=e.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},s.x=function(t){return arguments.length?(this._x=t,this):this._x},s.y=function(t){return arguments.length?(this._y=t,this):this._y}},60976:(t,n,r)=>{r.d(n,{A:()=>e});let e=(0,r(30772).A)("redo-2",[["path",{d:"m15 14 5-5-5-5",key:"12vg1m"}],["path",{d:"M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13",key:"6uklza"}]])},64385:(t,n,r)=>{r.d(n,{A:()=>i});var e=r(17434);function i(t){var n,r,i,o=(0,e.A)(.1);function u(t){for(var e,o=0,u=n.length;o<u;++o)e=n[o],e.vy+=(i[o]-e.y)*r[o]*t}function a(){if(n){var e,u=n.length;for(e=0,r=Array(u),i=Array(u);e<u;++e)r[e]=isNaN(i[e]=+t(n[e],e,n))?0:+o(n[e],e,n)}}return"function"!=typeof t&&(t=(0,e.A)(null==t?0:+t)),u.initialize=function(t){n=t,a()},u.strength=function(t){return arguments.length?(o="function"==typeof t?t:(0,e.A)(+t),a(),u):o},u.y=function(n){return arguments.length?(t="function"==typeof n?n:(0,e.A)(+n),a(),u):t},u}},79176:(t,n,r)=>{r.d(n,{A:()=>h});var e=r(53891),i=r(17434),o=r(93958);function u(t){return t.x+t.vx}function a(t){return t.y+t.vy}function h(t){var n,r,h,f=1,s=1;function l(){for(var t,i,l,x,v,y,d,g=n.length,_=0;_<s;++_)for(t=0,i=(0,e.A)(n,u,a).visitAfter(c);t<g;++t)d=(y=r[(l=n[t]).index])*y,x=l.x+l.vx,v=l.y+l.vy,i.visit(p);function p(t,n,r,e,i){var u=t.data,a=t.r,s=y+a;if(u){if(u.index>l.index){var c=x-u.x-u.vx,g=v-u.y-u.vy,_=c*c+g*g;_<s*s&&(0===c&&(_+=(c=(0,o.A)(h))*c),0===g&&(_+=(g=(0,o.A)(h))*g),_=(s-(_=Math.sqrt(_)))/_*f,l.vx+=(c*=_)*(s=(a*=a)/(d+a)),l.vy+=(g*=_)*s,u.vx-=c*(s=1-s),u.vy-=g*s)}return}return n>x+s||e<x-s||r>v+s||i<v-s}}function c(t){if(t.data)return t.r=r[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function x(){if(n){var e,i,o=n.length;for(e=0,r=Array(o);e<o;++e)r[(i=n[e]).index]=+t(i,e,n)}}return"function"!=typeof t&&(t=(0,i.A)(null==t?1:+t)),l.initialize=function(t,r){n=t,h=r,x()},l.iterations=function(t){return arguments.length?(s=+t,l):s},l.strength=function(t){return arguments.length?(f=+t,l):f},l.radius=function(n){return arguments.length?(t="function"==typeof n?n:(0,i.A)(+n),x(),l):t},l}},93958:(t,n,r)=>{r.d(n,{A:()=>e});function e(t){return(t()-.5)*1e-6}},98766:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(17434),i=r(93958);function o(t){return t.index}function u(t,n){var r=t.get(n);if(!r)throw Error("node not found: "+n);return r}function a(t){var n,r,a,h,f,s,l=o,c=function(t){return 1/Math.min(h[t.source.index],h[t.target.index])},x=(0,e.A)(30),v=1;function y(e){for(var o=0,u=t.length;o<v;++o)for(var a,h,l,c,x,y,d,g=0;g<u;++g)h=(a=t[g]).source,y=((y=Math.sqrt((c=(l=a.target).x+l.vx-h.x-h.vx||(0,i.A)(s))*c+(x=l.y+l.vy-h.y-h.vy||(0,i.A)(s))*x))-r[g])/y*e*n[g],c*=y,x*=y,l.vx-=c*(d=f[g]),l.vy-=x*d,h.vx+=c*(d=1-d),h.vy+=x*d}function d(){if(a){var e,i,o=a.length,s=t.length,c=new Map(a.map((t,n)=>[l(t,n,a),t]));for(e=0,h=Array(o);e<s;++e)(i=t[e]).index=e,"object"!=typeof i.source&&(i.source=u(c,i.source)),"object"!=typeof i.target&&(i.target=u(c,i.target)),h[i.source.index]=(h[i.source.index]||0)+1,h[i.target.index]=(h[i.target.index]||0)+1;for(e=0,f=Array(s);e<s;++e)i=t[e],f[e]=h[i.source.index]/(h[i.source.index]+h[i.target.index]);n=Array(s),g(),r=Array(s),_()}}function g(){if(a)for(var r=0,e=t.length;r<e;++r)n[r]=+c(t[r],r,t)}function _(){if(a)for(var n=0,e=t.length;n<e;++n)r[n]=+x(t[n],n,t)}return null==t&&(t=[]),y.initialize=function(t,n){a=t,s=n,d()},y.links=function(n){return arguments.length?(t=n,d(),y):t},y.id=function(t){return arguments.length?(l=t,y):l},y.iterations=function(t){return arguments.length?(v=+t,y):v},y.strength=function(t){return arguments.length?(c="function"==typeof t?t:(0,e.A)(+t),g(),y):c},y.distance=function(t){return arguments.length?(x="function"==typeof t?t:(0,e.A)(+t),_(),y):x},y}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4853],{44853:(e,t,n)=>{n.d(t,{DbMapClient:()=>ey});var a=n(95155),s=n(12115),o=n(80277),l=n(73321),r=n(81750),i=n(6266);n(53255);var d=n(32133),c=n(81499),m=n(51128),p=n(65738),u=n(9005),h=n(2125),f=n(91337),x=n(18874);let b=(0,s.createContext)(null);function g(){let e=(0,s.useContext)(b);if(!e)throw Error("useDbEdit must be used inside DbEditContext");return e}var y=n(29523),k=n(70221),j=n(95635),v=n(17918);let w={danger:"bg-red-500/15 text-red-300",warn:"bg-amber-500/15 text-amber-300"};function N({badges:e,className:t}){return e.length?(0,a.jsx)("span",{className:(0,f.cn)("flex shrink-0 items-center gap-0.5",t),children:e.map(e=>(0,a.jsx)("span",{title:e.title,className:(0,f.cn)("rounded px-1 text-[8px] font-semibold uppercase tracking-wide",w[e.tone]),children:e.label},e.label))}):null}let C=/pass(word)?|token|secret|api[_-]?key|credential|priv(ate)?[_-]?key|hash|salt/i,T=/auth|login|logout|session|token|password|oauth|sso|credential/i,M="nodrag nopan",S=j.x;function E({onClick:e,title:t}){return(0,a.jsx)("button",{type:"button",title:t,onClick:t=>{t.stopPropagation(),e()},className:(0,f.cn)(M,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-border bg-card text-muted-foreground opacity-0 shadow-md transition-all group-hover/row:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45] dark:border-white/15 dark:bg-[#242428]"),children:(0,a.jsx)(d.A,{className:"size-3"})})}function I({c:e,fkTargets:t}){let n=t?.[e.name];return(0,a.jsx)("span",{title:n?`→ ${n}`:e.type,className:"ml-auto min-w-0 truncate font-mono text-[11px] text-muted-foreground/80",children:n?(0,a.jsxs)(a.Fragment,{children:["→\xa0",n]}):e.type})}let $=(0,s.memo)(function({id:e,data:t,selected:n}){var o;let l,r,i="DRAFT"===t.source,d="added"===t.diffStatus?"#7bd389":"modified"===t.diffStatus?"#ffb86b":"#4ea1ff",b="added"===t.diffStatus||"modified"===t.diffStatus,w="added"===t.diffStatus?"new":"modified"===t.diffStatus?"modify":"in plan",T=t.diffChanges?.length?t.diffChanges.join("\n"):"in this plan — no column change",$=i?d:(0,x.qA)(t.domain),A=(o={domain:t.domain,columns:t.columns},l=[],(r=o.columns.filter(e=>C.test(e.name)).map(e=>e.name)).length&&l.push({label:"secrets",tone:"danger",title:`stores credentials: ${r.join(", ")}`}),o.domain&&/auth/i.test(o.domain)&&l.push({label:"auth",tone:"warn",title:"auth-domain table"}),l),P=g(),[D,z]=(0,s.useState)(t.name),[F,R]=(0,s.useState)(t.columns),[O,L]=(0,s.useState)(!1);(0,s.useEffect)(()=>{z(t.name),R(t.columns)},[t.rev]);let B=e=>e.stopPropagation(),K=t=>{R(t),P.patchTable(e,{columns:t})},U=(t.pins??[]).filter(e=>null===e.column),_=e=>(t.pins??[]).filter(t=>t.column===e),Z=function(e,t,n,a=!1,s){return Math.min(312,Math.max(240,Math.round(8*e.length)+90,...t.map(e=>{if(a){let t=s?.[e.name],a=n?.[e.name];return Math.round(7.3*Math.max(6,e.name.length+1)+(a?(a.length+2)*8:t?.kind==="modified"?8*t.detail.length:64))+94}let t=n?.[e.name]?n[e.name].length+2:e.type.length;return Math.round(7.3*e.name.length+6.7*t)+64})))}(t.name,i?F:t.columns,t.fkTargets,i,t.diffColumns),H=(0,f.cn)("relative rounded-xl border bg-card/95 text-card-foreground shadow-[0_18px_50px_-22px_rgba(0,0,0,0.9)] backdrop-blur dark:bg-[#161618]/95",n&&"ring-2 ring-[var(--accent,#f5b942)]"),G=(0,y.k)(k.fE);return"full"!==G?(0,a.jsxs)("div",{className:(0,f.cn)(H,"border-border px-3 py-2.5","far"===G&&!P.readOnly&&"!opacity-0"),style:{width:Z},children:[(0,a.jsx)(j.x,{}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"inline-block size-2 shrink-0 rounded-full",style:{background:$}}),(0,a.jsx)("span",{className:"truncate font-mono text-[15px] font-semibold",children:t.name})]})]}):i?(0,a.jsxs)("div",{className:(0,f.cn)(H,"group/card"),style:{width:Z,borderColor:`${d}59`},children:[(0,a.jsx)(S,{}),(0,a.jsxs)("div",{className:"group/row relative flex items-center gap-1.5 rounded-t-[11px] px-3 py-2",style:{background:`${d}14`},children:[(0,a.jsx)("input",{value:D,onChange:e=>z(e.target.value),onBlur:()=>{let n=D.trim();n&&n!==t.name&&P.patchTable(e,{name:n})},onKeyDown:e=>{B(e),"Enter"===e.key&&e.currentTarget.blur()},placeholder:"table",className:(0,f.cn)(M,"min-w-0 flex-1 bg-transparent font-mono text-[13px] font-semibold tracking-tight outline-none")}),(0,a.jsx)(N,{badges:A}),(0,a.jsx)("span",{title:T,className:(0,f.cn)("shrink-0 rounded-md border px-1.5 py-px font-mono text-[9px] font-semibold uppercase tracking-[0.14em]",!b&&"border-border bg-[var(--ink-active)] text-muted-foreground dark:border-white/15 dark:bg-white/5"),style:b?{background:`${d}1f`,borderColor:`${d}55`,color:d}:void 0,children:w}),(0,a.jsx)("button",{type:"button",onClick:t=>{B(t),O?P.deleteTable(e):L(!0)},onBlur:()=>L(!1),title:"Delete table",className:(0,f.cn)(M,"shrink-0 transition-all",O?"text-red-300":"text-muted-foreground opacity-0 hover:text-red-300 group-hover/card:opacity-100"),children:(0,a.jsx)(p.A,{className:"size-3"})}),U.length>0?(0,a.jsx)(v.e0,{pins:U,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-border dark:divide-white/[0.05]",children:[F.map((e,n)=>{let s=_(e.name),o=t.diffColumns?.[e.name],l=o?.kind==="added"?{background:"#7bd38914",boxShadow:"inset 2px 0 0 #7bd389"}:o?.kind==="modified"?{background:"#ffb86b14",boxShadow:"inset 2px 0 0 #ffb86b"}:void 0;return(0,a.jsxs)("div",{style:l,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=>{B(e),K(F.map((e,t)=>t===n?{...e,isPk:!e.isPk}:e))},title:"Primary key",className:(0,f.cn)(M,"shrink-0",e.isPk?"text-amber-300/90":"text-muted-foreground/40 hover:text-amber-300"),children:(0,a.jsx)(c.A,{className:"size-3"})}),(0,a.jsx)("button",{type:"button",onClick:e=>{B(e),K(F.map((e,t)=>t===n?{...e,isFk:!e.isFk}:e))},title:"Foreign key",className:(0,f.cn)(M,"shrink-0",e.isFk?"text-sky-400/80":"text-muted-foreground/40 hover:text-sky-400"),children:(0,a.jsx)(m.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:()=>K(F),onKeyDown:B,placeholder:"column",style:{width:`${Math.max(6,e.name.length+1)}ch`},className:(0,f.cn)(M,"shrink-0 bg-transparent font-mono outline-none")}),(0,a.jsx)("span",{"aria-hidden":!0,className:"flex-1"}),t.fkTargets?.[e.name]?(0,a.jsxs)("span",{title:`→ ${t.fkTargets[e.name]}`,className:"min-w-0 shrink truncate text-right font-mono text-[11px] text-muted-foreground/80",children:["→\xa0",t.fkTargets[e.name]]}):o?.kind==="modified"?(0,a.jsx)("span",{title:`was changed — ${o.detail}`,className:(0,f.cn)(M,"min-w-0 shrink truncate text-right font-mono text-[11px] font-medium text-[#ffb86b]"),children:o.detail}):(0,a.jsx)("input",{value:e.type,onChange:e=>R(t=>t.map((t,a)=>a===n?{...t,type:e.target.value}:t)),onBlur:()=>K(F),onKeyDown:B,placeholder:"type",title:e.type,className:(0,f.cn)(M,"w-16 min-w-0 shrink bg-transparent text-right font-mono text-[11px] outline-none",o?.kind==="added"?"text-[#7bd389]":"text-muted-foreground/80")}),(0,a.jsx)("button",{type:"button",onClick:e=>{B(e),K(F.filter((e,t)=>t!==n))},title:"Remove column",className:(0,f.cn)(M,"shrink-0 text-muted-foreground/40 opacity-0 transition-opacity hover:text-red-300 group-hover/card:opacity-100"),children:(0,a.jsx)(u.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=>{B(e),K([...F,{name:"",type:"text",isPk:!1,isFk:!1,nullable:!0,note:null}])},className:(0,f.cn)(M,"flex w-full items-center gap-1 px-3 py-1.5 text-[10px] text-muted-foreground hover:text-foreground"),children:[(0,a.jsx)(h.A,{className:"size-3"})," column"]})]})]}):(0,a.jsxs)("div",{className:H,style:{width:Z,borderColor:`${$}3d`},children:[(0,a.jsx)(S,{}),(0,a.jsxs)("div",{className:"group/row relative flex items-center justify-between rounded-t-[11px] px-3 py-2",style:{background:`${$}14`},children:[(0,a.jsxs)("span",{className:"flex min-w-0 flex-1 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 shrink-0 rounded-full bg-emerald-400"}),(0,a.jsx)("span",{className:"truncate",title:t.name,children:t.name})]}),(0,a.jsxs)("span",{className:"flex shrink-0 items-center gap-1.5",children:["INTROSPECTION"!==t.source&&(0,a.jsx)("span",{title:"planned — not yet detected in code",className:"shrink-0 rounded-md border border-[#f5b942]/35 bg-[#f5b942]/10 px-1.5 py-px font-mono text-[9px] font-semibold uppercase tracking-[0.14em] text-[#f5b942]",children:"planned"}),(0,a.jsx)(N,{badges:A}),t.domain&&(0,a.jsx)("span",{className:(0,f.cn)("text-[9px] uppercase tracking-[0.14em]",(0,x.gG)(t.domain)),children:t.domain})]}),U.length>0?(0,a.jsx)(v.e0,{pins:U,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-border dark:divide-white/[0.05]",children:t.columns.map(e=>{let n=_(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)(c.A,{className:"size-3 shrink-0 text-amber-300/90"}):e.isFk?(0,a.jsx)(m.A,{className:"size-3 shrink-0 text-sky-400/80"}):(0,a.jsx)("span",{className:"size-3 shrink-0"}),(0,a.jsx)("span",{className:"shrink-0 whitespace-nowrap font-mono",children:e.name}),(0,a.jsx)(I,{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)})})]})}),A="nodrag nopan",P=["GET","POST","PUT","PATCH","DELETE"],D=(0,s.memo)(function({id:e,data:t,selected:n}){var o;let l,r=x.e6[t.method]??"#8a8a8a",i="DRAFT"===t.source,c="added"===t.diffStatus?"#7bd389":"modified"===t.diffStatus?"#ffb86b":"#4ea1ff",m="added"===t.diffStatus?"new":"modified"===t.diffStatus?"changed":"draft",u=t.diffChanges?.length?t.diffChanges.join("\n"):"draft",h=(o={method:t.method,domain:t.domain,path:t.path},l=[],/^delete$/i.test(o.method.trim())&&l.push({label:"DELETE",tone:"danger",title:"destructive: deletes data"}),(o.domain&&/auth/i.test(o.domain)||T.test(o.path))&&l.push({label:"auth",tone:"warn",title:"auth-related endpoint"}),l),b=g(),[w,C]=(0,s.useState)(t.path),[M,S]=(0,s.useState)(!1);(0,s.useEffect)(()=>{C(t.path)},[t.rev]);let E=e=>e.stopPropagation(),I=(0,y.k)(k.fE);return"full"!==I?(0,a.jsxs)("div",{className:(0,f.cn)("relative flex w-[300px] items-center gap-2 rounded-lg border border-border bg-card/95 px-2.5 py-2 text-card-foreground backdrop-blur dark:bg-[#161618]/95",n&&"ring-2 ring-[var(--accent,#f5b942)]","far"===I&&!b.readOnly&&"!opacity-0"),children:[(0,a.jsx)(j.x,{}),(0,a.jsx)("span",{className:(0,f.cn)("shrink-0 font-mono text-[12px] font-bold",(0,x.VY)(t.method)),children:t.method}),(0,a.jsx)("span",{title:t.path,className:"truncate font-mono text-[13px]",children:t.path})]}):(0,a.jsxs)("div",{className:(0,f.cn)("group relative flex w-[300px] items-center gap-2 rounded-lg border bg-card/95 px-2.5 py-1.5 text-card-foreground shadow-[0_12px_36px_-18px_rgba(0,0,0,0.9)] backdrop-blur dark:bg-[#161618]/95",i?"border-dashed":"border-border",n&&"ring-2 ring-[var(--accent,#f5b942)]"),style:i?{borderColor:`${c}66`,background:`${c}0f`}:void 0,children:[(0,a.jsx)(j.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"}),i?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("select",{value:t.method,onChange:t=>b.patchEndpoint(e,{method:t.target.value}),onPointerDown:E,className:(0,f.cn)(A,"shrink-0 rounded bg-transparent text-[10px] font-bold outline-none",(0,x.VY)(t.method)),title:"Method",children:P.map(e=>(0,a.jsx)("option",{value:e,className:"bg-card text-foreground",children:e},e))}),(0,a.jsx)("input",{value:w,title:w,onChange:e=>C(e.target.value),onBlur:()=>{let n=w.trim();n&&n!==t.path&&b.patchEndpoint(e,{path:n})},onKeyDown:e=>{E(e),"Enter"===e.key&&e.currentTarget.blur()},className:(0,f.cn)(A,"min-w-0 flex-1 bg-transparent font-mono text-[11px] outline-none")}),(0,a.jsx)(N,{badges:h}),(0,a.jsx)("span",{title:u,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=>{E(t),M?b.deleteEndpoint(e):S(!0)},onBlur:()=>S(!1),title:"Delete",className:(0,f.cn)(A,"shrink-0 transition-colors",M?"text-red-300":"text-muted-foreground hover:text-red-300"),children:(0,a.jsx)(p.A,{className:"size-3"})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:(0,f.cn)("rounded px-1.5 py-0.5 text-[10px] font-bold",(0,x.VY)(t.method)),style:{background:`${r}22`},children:t.method}),(0,a.jsx)("span",{title:t.path,className:"min-w-0 flex-1 break-all font-mono text-[11px] leading-tight [-webkit-box-orient:vertical] [-webkit-line-clamp:2] [display:-webkit-box] overflow-hidden",children:t.path}),"INTROSPECTION"!==t.source&&(0,a.jsx)("span",{title:"planned — not yet detected in code",className:"shrink-0 rounded-md border border-[#f5b942]/35 bg-[#f5b942]/10 px-1.5 py-px font-mono text-[8px] font-semibold uppercase tracking-[0.14em] text-[#f5b942]",children:"planned"}),(0,a.jsx)(N,{badges:h}),(0,a.jsx)("button",{type:"button",onClick:t=>{E(t),M?b.deleteRealEndpoint(e):S(!0)},onBlur:()=>S(!1),title:M?"Click again to delete":"Delete endpoint",className:(0,f.cn)(A,"shrink-0 opacity-0 transition-opacity group-hover:opacity-100",M?"text-red-300 opacity-100":"text-muted-foreground hover:text-red-300"),children:(0,a.jsx)(p.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=>{E(e),t.onComment?.(`${t.method} ${t.path}`)},className:(0,f.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-border bg-card text-muted-foreground opacity-0 shadow-md transition-all group-hover:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45] dark:border-white/15 dark:bg-[#242428]"),children:(0,a.jsx)(d.A,{className:"size-3"})})]})});var z=n(54698),F=n(64329),R=n(4474);let O=[{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 L({draftGraph:e}){let[t,n]=(0,s.useState)(null);if(0===e.tables.length)return null;async function o(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:"}),O.map(e=>(0,a.jsx)(R.$,{size:"sm",variant:"outline",className:"h-6 px-2 text-[11px]",onClick:()=>o(e),children:t===e.id?"✓":e.label},e.id))]})]})}function B({selected:e,tables:t,relations:n,endpoints:s,draftGraph:o,onClose:l,commentsContent:r,commentsCount:i=0,activeTab:d,onTabChange:c,onAddComment:m,topOffset:p}){let u=new Map(t.map(e=>[e.id,e.name])),h=!!r,f=d??"details",b=e?.kind==="table"?t.find(t=>t.id===e.id):null,g=e?.kind==="endpoint"?s.find(t=>t.id===e.id):null,y=b?b.name:g?`${g.method} ${g.path}`:null;return(0,a.jsxs)(F.p_,{topOffset:p,children:[(0,a.jsx)(F.aO,{tabs:h?{active:f,count:i,onChange:e=>c?.(e)}:null,breadcrumb:b?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:(0,x.gG)(b.domain),children:b.domain??"table"}),(0,a.jsx)("span",{children:" \xb7 table"})]}):g?(0,a.jsxs)(a.Fragment,{children:[g.domain??"api",(0,a.jsx)("span",{children:" \xb7 endpoint"})]}):"Database",comment:m&&y&&"details"===f?{title:`Comment on this ${e?.kind==="endpoint"?"endpoint":"table"}`,onClick:()=>m(y)}:null,onClose:l}),(0,a.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:"comments"===f&&h?(0,a.jsx)("div",{className:"px-4 py-3",children:r}):(0,a.jsxs)(a.Fragment,{children:[o.tables.length>0&&(0,a.jsx)("div",{className:"border-b border-border px-4 py-3",children:(0,a.jsx)(L,{draftGraph:o})}),(0,a.jsx)("div",{className:"px-4 py-3",children:b?(0,a.jsx)(K,{table:b,relations:n,endpoints:s,nameById:u}):g?(0,a.jsx)(U,{ep:g,nameById:u}):(0,a.jsx)(_,{tables:t,relations:n,endpoints:s})})]})})]})}function K({table:e,relations:t,endpoints:n,nameById:s}){let o=t.filter(t=>t.fromTableId===e.id),l=t.filter(t=>t.toTableId===e.id),r=n.map(t=>({e:t,u:t.tables.find(t=>t.tableId===e.id)})).filter(e=>e.u);return(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"font-mono text-base font-semibold leading-snug",children:e.name}),e.description&&(0,a.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:e.description}),(0,a.jsx)(F.aU,{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)(c.A,{className:"size-3 text-amber-500 dark:text-amber-400"}):e.isFk?(0,a.jsx)(m.A,{className:"size-3 text-sky-500 dark: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))})}),o.length>0&&(0,a.jsx)(F.aU,{title:"References (FK out)",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:[e.fromColumn," → ",s.get(e.toTableId),".",e.toColumn]},e.id))})}),l.length>0&&(0,a.jsx)(F.aU,{title:"Referenced by (FK in)",children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:l.map(e=>(0,a.jsxs)("li",{className:"font-mono text-muted-foreground",children:[s.get(e.fromTableId),".",e.fromColumn]},e.id))})}),r.length>0&&(0,a.jsx)(F.aU,{title:`Used by endpoints (${r.length})`,children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:r.map(({e,u:t})=>(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:(0,f.cn)("font-bold",(0,x.VY)(e.method)),children:e.method}),(0,a.jsx)("span",{className:"truncate font-mono",children:e.path}),(0,a.jsx)("span",{className:(0,f.cn)("ml-auto",(0,x.gX)(t.access)),children:t.access})]},e.id))})})]})}function U({ep:e,nameById:t}){return(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:(0,f.cn)("rounded px-1.5 py-0.5 text-[11px] font-bold",(0,x.VY)(e.method)),style:{background:`${x.e6[e.method]}22`},children:e.method}),(0,a.jsx)("h2",{className:"mt-2 font-mono text-sm font-semibold leading-snug",children:e.path}),e.description&&(0,a.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:e.description}),(0,a.jsx)(F.aU,{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:(0,f.cn)("ml-auto",(0,x.gX)(e.access)),children:e.access})]},e.tableId))})})]})}function _({tables:e,relations:t,endpoints:n}){return(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-base font-semibold",children:"Database"}),(0,a.jsx)("p",{className:"mt-1 text-xs leading-relaxed 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:"mt-4 flex gap-8 border-t border-border pt-3",children:[(0,a.jsx)(F.ZB,{label:"tables",value:e.length}),(0,a.jsx)(F.ZB,{label:"FKs",value:t.length}),(0,a.jsx)(F.ZB,{label:"endpoints",value:n.length})]}),(0,a.jsx)(F.aU,{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)(c.A,{className:"size-3 text-amber-500 dark:text-amber-400"})," primary key"]}),(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)(m.A,{className:"size-3 text-sky-500 dark: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)"})]})})]})}var Z=n(56614),H=n(9991),G=n(40654),V=n(14983),W=n(62311);let q=new Set(["GET","HEAD","OPTIONS"]);var Y=n(44267),J=n(94014);function Q(e){return 36+30*Math.max(0,e)+16}let X="Unattached",ee=e=>(e??"").trim()||"—";function et(e,t){let n=new Map(e.map(e=>[e.id,e.name])),a=new Map;for(let e of t)for(let t of e.uses)n.has(t.tableId)&&a.set(t.tableId,(a.get(t.tableId)??0)+1);return new Map(t.map(e=>[e.id,function(e,t,n){let a=new Map;for(let n of e.uses)t.has(n.tableId)&&a.set(n.tableId,(a.get(n.tableId)??0)+1);let s=null;for(let[e,o]of a){if(null===s){s=e;continue}let l=a.get(s);if(o>l){s=e;continue}if(o<l)continue;let r=n?.get(e)??0,i=n?.get(s)??0;r<i?s=e:r===i&&0>t.get(e).localeCompare(t.get(s))&&(s=e)}return s}(e,n,a)]))}let en=(e,t)=>e.path.localeCompare(t.path)||e.method.localeCompare(t.method)||e.id.localeCompare(t.id);var ea=n(70947);let es=e=>e.trim().toLowerCase();var eo=n(2060),el=n(85618),er=n(80846),ei=n(17356),ed=n(45486),ec=n(15330),em=n(60976),ep=n(64577),eu=n(24692),eh=n(45437);let ef={dbTable:$,endpoint:D,annotation:v.Sh},ex={deletable:eu.I,annotation:eh.L},eb="beacon:db-draft",eg={proposedAt:0,status:"pending",tables:[],relations:[],endpoints:[]};function ey({tables:e,relations:t,endpoints:n,draft:d,workspaceId:c,embedded:m=!1,diffBase:u,draftRef:h,onEdit:g,controlRef:j,commentsContent:w,commentsCount:N=0,onAddComment:C,annotations:T,onPinClick:M,onUpdateComment:S,onRemoveComment:E,boardAnnotations:I,readOnly:$=!1}){let A=(0,l.useRouter)(),P=e.length+(d?.tables.length??0),D=n.length+(d?.endpoints.length??0),[F,R]=(0,s.useState)(D>0&&(m||0===P)),[O,L]=(0,s.useState)(null),[K,U]=(0,s.useState)(null),[_,eu]=(0,s.useState)(null),[eh,ek]=(0,s.useState)(!1),[ej,ev]=(0,s.useState)(!1),ew=(0,eo.G)(),[eN,eC]=(0,s.useState)("details"),[eT,eM]=(0,s.useState)(!1),[eS,eE]=(0,s.useState)(""),eI=(0,s.useRef)(null),{tool:e$,setTool:eA,flowProps:eP}=(0,o.e)();(0,s.useEffect)(()=>{if(!$)return;let e=0,t=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>eI.current?.fitView({padding:.2,duration:0}))});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[$,d,F]),(0,s.useEffect)(()=>{if(j)return j.current={open:()=>{ek(!0),eC("details")},close:()=>{ek(!1),eC("details")},openComments:()=>{ek(!0),eC("comments")}},()=>{j&&(j.current=null)}},[j]);let[eD,ez]=(0,s.useState)(new Set),[eF,eR]=(0,s.useState)("full"),[eO,eL]=(0,s.useState)(new Set),[eB,eK]=(0,s.useState)(new Set),[eU,e_]=(0,s.useState)(()=>({past:[],present:d??eg,future:[],rev:0,edited:!1})),eZ=eU.present,eH=(0,s.useCallback)(e=>{e_(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}})},[]),eG=(0,s.useCallback)(e=>{e_(t=>{let n=e(t.present);return n===t.present?t:{...t,present:n}})},[]),eV=(0,s.useCallback)(()=>e_(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),[]),eW=(0,s.useCallback)(()=>e_(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),[]),eq=(0,s.useCallback)(e=>e_(t=>({past:[],present:e,future:[],rev:t.rev+1,edited:!1})),[]),eY=(0,s.useRef)(!1),eJ=d?.proposedAt??0;(0,s.useEffect)(()=>{let e=null;if(eY.current)d&&d.proposedAt!==eZ.proposedAt?e=d:!d&&(eZ.tables.length>0||eZ.endpoints.length>0)&&(e=eg);else{eY.current=!0;let t=null;try{let e=localStorage.getItem(eb);if(e){let n=JSON.parse(e);n.workspaceId===c&&n.doc&&d&&n.doc.proposedAt===d.proposedAt&&(t=n.doc)}}catch{}e=t??d??null}e&&eq(e)},[eJ]),(0,s.useEffect)(()=>{try{eZ.tables.length>0||eZ.endpoints.length>0?localStorage.setItem(eb,JSON.stringify({workspaceId:c,doc:eZ})):localStorage.removeItem(eb)}catch{}},[eZ,c]),(0,s.useEffect)(()=>{h&&(h.current=eZ)},[h,eZ]);let eQ=(0,s.useRef)(!1);(0,s.useEffect)(()=>{eU.edited&&!eQ.current&&(eQ.current=!0,g?.())},[eU.edited,g]);let eX=(0,s.useMemo)(()=>eZ.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})),[eZ]),e0=(0,s.useMemo)(()=>eZ.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}))})),[eZ]),e1=(0,s.useMemo)(()=>[...e,...eX],[e,eX]),e5=(0,s.useMemo)(()=>[...n,...e0],[n,e0]),e2=(0,s.useMemo)(()=>(function(e,t,n={}){let a=et(e,t),s=new Map,o=[];for(let e of[...t].sort(en)){let t=a.get(e.id)??null;if(t){let n=s.get(t);n?n.push(e):s.set(t,[e])}else o.push(e)}let l=e=>{let t=s.get(e.id)?.length??0;return Q(e.columnCount)+(t?10+60*t:0)+30},r=Array.from(new Set(e.map(e=>ee(e.domain)))),i=r.filter(e=>"—"!==e).sort(),d=r.includes("—")?[...i,"—"]:i,c=[];for(let t of d){let n=e.filter(e=>ee(e.domain)===t).sort((e,t)=>e.name.localeCompare(t.name)),a=n.reduce((e,t)=>e+l(t),0),s=Math.max(1,Math.min(12,n.length,Math.round(Math.sqrt(a/320)))),o=Array(s).fill(0),r=new Map;for(let e of n){let t=0;for(let e=1;e<s;e++)o[e]<o[t]&&(t=e);r.set(e.id,{x:320*t,y:o[t]}),o[t]+=l(e)}c.push({d:t,w:320*s,h:Math.max(...o,0),tableLocal:r})}let m=(0,J.Xi)(c.map(e=>({id:e.d,w:e.w,h:e.h})),{gapX:84,gapY:72,viewportAspect:n.viewportAspect,minBandW:960,aspectSlack:1.7}),p=new Map,u=new Map,h=0;for(let t of c){let n=m.get(t.d);for(let a of e.filter(e=>t.tableLocal.has(e.id))){let e=t.tableLocal.get(a.id),o=n.x+e.x,l=n.y+e.y;p.set(a.id,{x:o,y:l}),(s.get(a.id)??[]).forEach((e,t)=>{u.set(e.id,{x:o,y:l+Q(a.columnCount)+10+60*t})})}h=Math.max(h,n.y+t.h)}if(o.length){let e=h+72,t=Math.max(1,Math.min(4,Math.ceil(Math.sqrt(o.length/2))));o.forEach((n,a)=>{u.set(n.id,{x:a%t*300,y:e+60*Math.floor(a/t)})})}return{tables:p,endpoints:u}})(e1.map(e=>({id:e.id,name:e.name,domain:e.domain,columnCount:e.columns.length})),[]).tables,[e1]),e3=(0,s.useMemo)(()=>new Map,[]),e4=(0,s.useMemo)(()=>m?function(e,t){let n=new Map(e.map(e=>[es(e.name),e])),a=new Map;for(let e of t){let t=n.get(es(e.name));if(!t){a.set(e.id,{status:"added",changes:["new table"],columns:{}});continue}let{changes:s,columns:o}=function(e,t){let n=new Map(e.map(e=>[es(e.name),e])),a=new Set(t.map(e=>es(e.name))),s=[],o={};for(let e of t){let t=n.get(es(e.name));if(!t){s.push(`+ column ${e.name} (${e.type})`),o[e.name]={kind:"added",detail:"new column"};continue}let a=[],l=[];if(es(t.type)!==es(e.type)&&(a.push(`type ${t.type}→${e.type}`),l.push(`${t.type}→${e.type}`)),t.isPk!==e.isPk){let t=e.isPk?"now PK":"no longer PK";a.push(t),l.push(t)}if(t.isFk!==e.isFk){let t=e.isFk?"now FK":"no longer FK";a.push(t),l.push(t)}if(t.nullable!==e.nullable){let t=e.nullable?"now nullable":"now required";a.push(t),l.push(t)}a.length&&(s.push(`~ column ${e.name}: ${a.join(", ")}`),o[e.name]={kind:"modified",detail:l.join(" \xb7 ")})}for(let t of e)a.has(es(t.name))||s.push(`- column ${t.name}`);return{changes:s,columns:o}}(t.columns,e.columns);a.set(e.id,{status:s.length?"modified":"unchanged",changes:s,columns:o})}return a}(u?.tables??e,eX):e3,[m,u,e,eX,e3]),e6=(0,s.useMemo)(()=>m?function(e,t){let n=e=>`${es(e.method)} ${es(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:[],columns:{}}:{status:"added",changes:["new endpoint"],columns:{}});return s}(u?.endpoints??n,e0):e3,[m,u,n,e0,e3]),e8=(0,s.useMemo)(()=>[...t,...eZ.relations.map(e=>({id:e.id,fromTableId:e.fromTableId,toTableId:e.toTableId,fromColumn:e.fromColumn,toColumn:e.toColumn,label:e.label}))],[t,eZ.relations]),e9=(0,s.useMemo)(()=>{let e=new Map;for(let t of e5)for(let n of t.tables)e.set(n.tableId,(e.get(n.tableId)??0)+1);return e},[e5]),e7=(0,s.useMemo)(()=>{let e=new Map;return e1.forEach(t=>e.set(t.id,t.x)),e5.forEach(t=>e.set(t.id,t.x)),e},[e1,e5]),te=(0,s.useMemo)(()=>{let e=new Map;return e1.forEach(t=>e.set(t.id,t.y)),e5.forEach(t=>e.set(t.id,t.y)),e},[e1,e5]),tt=(0,s.useMemo)(()=>{let e=new Map(e1.map(e=>[e.id,e.name])),t=new Map;for(let n of e8){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},[e8,e1]),tn=void 0!==I,[ta,ts]=(0,s.useState)(I??[]);(0,s.useEffect)(()=>{I&&ts(I)},[I]);let to=(0,s.useMemo)(()=>({tables:e1.map(e=>({id:e.id,name:e.name,columns:e.columns.map(e=>e.name)})),endpoints:e5.map(e=>({id:e.id,method:e.method,path:e.path}))}),[e1,e5]),tl=(0,s.useMemo)(()=>{if(tn){let e=new Set([...e1.map(e=>e.id),...e5.map(e=>e.id)]);return ta.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((T??[]).map(e=>[e.id,e.comment]));return(0,z.m)(T??[],to).map(t=>({id:t.annotationId,n:t.n,targetId:t.targetId,column:t.column,text:e.get(t.annotationId)??"",x:null,y:null}))},[tn,ta,T,to,e1,e5]),tr=(0,s.useMemo)(()=>{let e=new Map;for(let t of tl){let n=e.get(t.targetId)??[];n.push({id:t.id,n:t.n,column:t.column}),e.set(t.targetId,n)}return e},[tl]),ti=(0,s.useMemo)(()=>new Map(tl.map(e=>[`anno-${e.id}`,e.targetId])),[tl]),td=(0,s.useCallback)(async e=>{let t=(0,z.m)([{id:"_",excerpt:e}],to)[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();ts(t=>[...t,e])}},[to]),tc=(0,s.useCallback)((e,t)=>{ts(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)})},[]),tm=(0,s.useCallback)(e=>{ts(t=>t.filter(t=>t.id!==e)),fetch(`/api/board-annotations/${e}`,{method:"DELETE"})},[]),tp=tn?td:C,tu=(0,s.useCallback)((e,t)=>{let n=(e7.get(t)??0)-(e7.get(e)??0),a=(te.get(t)??0)-(te.get(e)??0);return Math.abs(n)>=Math.abs(a)?n>=0?{sourceHandle:"sr",targetHandle:"tl"}:{sourceHandle:"sl",targetHandle:"tr"}:a>=0?{sourceHandle:"sb",targetHandle:"tt"}:{sourceHandle:"st",targetHandle:"tb"}},[e7,te]),th=(0,s.useMemo)(()=>new Set([...eZ.tables.map(e=>e.id),...eZ.endpoints.map(e=>e.id)]),[eZ]),tf=(0,s.useMemo)(()=>new Set(e.map(e=>e.id)),[e]),tx=(0,s.useCallback)(()=>{let e=e1.map(e=>({id:e.id,type:"dbTable",position:F?{x:e.x,y:e.y}:e2.get(e.id)??{x:e.x,y:e.y},data:{name:e.name,domain:e.domain,columns:e.columns,usageCount:e9.get(e.id)??0,source:e.source,rev:eU.rev,diffStatus:e4.get(e.id)?.status,diffChanges:e4.get(e.id)?.changes,diffColumns:e4.get(e.id)?.columns,fkTargets:tt.get(e.id),pins:tr.get(e.id),onPinClick:M,onComment:tp}})),t=e5.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:eU.rev,diffStatus:e6.get(e.id)?.status,diffChanges:e6.get(e.id)?.changes,pins:tr.get(e.id),onPinClick:M,onComment:tp}})),n=new Map,a=new Map(e1.map(e=>[e.id,e])),s=new Map(e5.map(e=>[e.id,e]));return[...e,...t,...tl.map(e=>{let t=a.get(e.targetId),o=s.get(e.targetId),l=t?.x??o?.x??0,r=t?.y??o?.y??0,i=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??l+26,y:e.y??r+i+64+112*d},data:{n:e.n,text:e.text,annotationId:e.id,onClick:tn||S?void 0:M,editable:tn||!!S,onChangeText:tn?(e,t)=>tc(e,{body:t}):S,onDelete:tn?tm:E}}})]},[e1,e5,F,e2,e9,eU.rev,e4,e6,tt,tr,tl,tn,M,S,E,tp,tc,tm]),[tb,tg,ty]=(0,r.ck)(tx()),tk=(0,s.useRef)(F);(0,s.useEffect)(()=>{let e=tk.current!==F;tk.current=F,tg(t=>{let n=new Map(t.map(e=>[e.id,e.position]));return tx().map(t=>e&&"dbTable"===t.type?t:{...t,position:n.get(t.id)??t.position})}),e&&requestAnimationFrame(()=>eI.current?.fitView({duration:500,padding:.15,minZoom:.2,maxZoom:.9}))},[tx,tg,F]);let tj=(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})})},[]),tv=(0,s.useCallback)((e,t)=>{var n;let{x:a,y:s}=t.position,o=(n={readOnly:$,nodeId:t.id,isDraft:th.has(t.id),boardMode:tn}).readOnly?"none":n.nodeId.startsWith("anno-")?n.boardMode?"annotation":"none":n.isDraft?"draft":"real";"annotation"===o?tc(t.id.slice(5),{x:a,y:s}):"draft"===o?eG(e=>e.tables.some(e=>e.id===t.id)?{...e,tables:e.tables.map(e=>e.id===t.id?{...e,x:a,y:s}:e)}:e.endpoints.some(e=>e.id===t.id)?{...e,endpoints:e.endpoints.map(e=>e.id===t.id?{...e,x:a,y:s}:e)}:e):"real"===o&&tj("endpoint"===t.type?"endpoint":"table",t.id,a,s)},[$,th,eG,tj,tn,tc]),tw=(0,s.useMemo)(()=>e8.map(e=>({id:`fk-${e.id}`,source:e.fromTableId,target:e.toTableId,...tu(e.fromTableId,e.toTableId),type:"deletable",label:e.label??void 0,markerEnd:{type:i.TG.ArrowClosed,color:"#6b6b6b"},style:{stroke:"#6b6b6b"}})),[e8,tu]),tN=(0,s.useMemo)(()=>e5.flatMap(e=>e.tables.map(t=>{let n=x.ru[t.access]??"#5a5a5a";return{id:`u-${e.id}-${t.tableId}`,source:e.id,target:t.tableId,...tu(e.id,t.tableId),type:"default",markerEnd:{type:i.TG.ArrowClosed,color:n},style:{stroke:n,strokeDasharray:"4 4",opacity:.7}}})),[e5,tu]),tC=(0,s.useMemo)(()=>F?[...tw,...tN]:tw,[tw,tN,F]),tT=(0,s.useMemo)(()=>tl.map(e=>({id:`annoe-${e.id}`,source:e.targetId,sourceHandle:`pin-${e.id}`,target:`anno-${e.id}`,targetHandle:"in",type:"annotation",selectable:!1,zIndex:30,style:{stroke:v.V5,strokeWidth:1.5,opacity:.9}})),[tl]),tM=O?.id??_,tS=(0,s.useMemo)(()=>{if(K){let e=tC.find(e=>e.id===K);return e?new Set([e.source,e.target]):null}return tM?(0,x.F1)(tM,tC):null},[tM,K,tC]),tE=(0,s.useMemo)(()=>new Map(e1.map(e=>[e.id,{domain:e.domain,source:e.source}])),[e1]),tI=(0,s.useMemo)(()=>new Map(e5.map(e=>[e.id,{method:e.method,source:e.source}])),[e5]),t$=(0,s.useMemo)(()=>{let e=new Set;if(!F)for(let t of tI.keys())e.add(t);for(let[t,n]of tE)!eD.size||n.domain&&eD.has(n.domain)||e.add(t),eO.size&&!eO.has(n.source)&&e.add(t);for(let[t,n]of tI)eB.size&&!eB.has(n.method)&&e.add(t),eO.size&&!eO.has(n.source)&&e.add(t);return e},[F,tE,tI,eD,eO,eB]),tA=eS.trim().length>0,tP=(0,s.useMemo)(()=>{if(!tA)return null;let e=new Set;for(let t of e1)!t$.has(t.id)&&(0,V.Qk)((0,V.jF)(t),eS)&&e.add(t.id);for(let t of e5)!t$.has(t.id)&&(0,V.Qk)((0,V.sQ)(t),eS)&&e.add(t.id);return e},[e1,e5,t$,eS,tA]),tD=(0,s.useMemo)(()=>tA?[...(0,V.r2)(e1.filter(e=>!t$.has(e.id)),eS,e=>(0,V.jF)(e),e=>({id:e.id,label:e.name,sublabel:e.domain??"table",kind:"table"})),...(0,V.r2)(e5.filter(e=>!t$.has(e.id)),eS,e=>(0,V.sQ)(e),e=>({id:e.id,label:e.path,sublabel:e.method,kind:"endpoint"}))].slice(0,12):[],[e1,e5,t$,eS,tA]),tz=(0,s.useCallback)(e=>{eE(""),L(tI.has(e)?{id:e,kind:"endpoint"}:{id:e,kind:"table"}),U(null),ek(!0),eC("details");let t=eI.current?.getNode(e);if(!t||!eI.current)return;let n=t.measured?.width??220,a=t.measured?.height??80;eI.current.setCenter(t.position.x+n/2,t.position.y+a/2,{zoom:.9,duration:600})},[tI]),tF=tP??tS,tR=(0,s.useMemo)(()=>tb.map(e=>{if(e.id.startsWith("anno-")){let t=ti.get(e.id),n=!!t&&t$.has(t);return!!e.hidden!==n?{...e,hidden:n}:e}let t=t$.has(e.id);if(!tF)return t?{...e,hidden:t}:e;let n=tF.has(e.id),a=tP?V.Uy:.45;return{...e,hidden:t,style:{...e.style,opacity:n?1:a,boxShadow:n&&tP?V.RU:e.style?.boxShadow,borderRadius:n&&tP?"dbTable"===e.type?"var(--radius-xl)":"var(--radius-lg)":e.style?.borderRadius,transition:"opacity 120ms, box-shadow 120ms"}}}),[tb,t$,tF,tP,ti]),tO=(0,s.useMemo)(()=>{let e=new Map(e1.map(e=>[e.id,(e.domain??"").trim()||"—"])),t=et(e1,e5.map(e=>({id:e.id,method:e.method,path:e.path,uses:e.tables.map(e=>({tableId:e.tableId}))})));return new Map(e5.map(n=>{let a=t.get(n.id);return[n.id,a?e.get(a):X]}))},[e1,e5]),tL=(0,s.useMemo)(()=>{let e=[];for(let t of tb)if(!t$.has(t.id))if("dbTable"===t.type){let n=t.data;e.push({id:t.id,group:(n.domain??"").trim()||"—",x:t.position.x,y:t.position.y,w:t.measured?.width??280,h:t.measured?.height??38+28*n.columns.length})}else"endpoint"===t.type&&e.push({id:t.id,group:tO.get(t.id)??X,x:t.position.x,y:t.position.y,w:t.measured?.width??240,h:t.measured?.height??50});return(0,Y.S)(e)},[tb,t$,tO]),tB=(0,s.useMemo)(()=>tP?tC.map(e=>{let t=t$.has(e.source)||t$.has(e.target);return tP.has(e.source)&&tP.has(e.target)?{...e,hidden:t,style:{...e.style,opacity:1}}:{...e,hidden:t,label:void 0,style:{...e.style,opacity:.08}}}):tC.map(e=>{let t=t$.has(e.source)||t$.has(e.target);return tM||K?(K?e.id===K:tM&&(e.source===tM||e.target===tM))?{...e,hidden:t,zIndex:20,style:{...e.style,opacity:1,strokeWidth:2.5}}:{...e,hidden:t,selectable:!1,label:void 0,markerEnd:void 0,style:{...e.style,opacity:.08}}:{...e,hidden:t,label:void 0}}),[tC,tM,K,t$,tP]),tK=(0,s.useMemo)(()=>Array.from(new Set(e1.map(e=>e.domain).filter(e=>!!e))).sort(),[e1]),tU=(0,s.useMemo)(()=>Array.from(new Set([...e1.map(e=>e.source),...e5.map(e=>e.source)])).sort(),[e1,e5]),t_=(0,s.useMemo)(()=>Array.from(new Set(e5.map(e=>e.method))).sort(),[e5]);function tZ(e,t){t(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}let tH=+!F+eD.size+eO.size+eB.size,tG=(0,s.useCallback)(()=>{R(!0),ez(new Set),eL(new Set),eK(new Set)},[]),tV=(0,s.useCallback)(e=>{let{source:t,target:n}=e;t&&n&&t!==n&&eH(e=>{if(!(e.tables.some(e=>e.id===n)||tf.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,q.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,tf]),tW=(0,s.useMemo)(()=>({readOnly:$,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&&A.refresh()})}}),[$,eH,A]);(0,s.useEffect)(()=>{let e=e=>{if(!(e.metaKey||e.ctrlKey))return;let t=e.target;if(t&&/^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName))return;let n=e.key.toLowerCase();"z"===n?(e.preventDefault(),e.shiftKey?eW():eV()):"y"===n&&(e.preventDefault(),eW())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[eV,eW]);let tq=(0,s.useCallback)(async()=>{eM(!0);try{if((await fetch("/api/draft/approve",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(eZ)})).ok){try{localStorage.removeItem(eb)}catch{}eq(eg),A.refresh()}}finally{eM(!1)}},[eZ,eq,A]),tY=(0,s.useCallback)(async()=>{eM(!0);try{await fetch("/api/draft",{method:"DELETE"})}catch{}try{localStorage.removeItem(eb)}catch{}eq(eg),A.refresh(),eM(!1)},[eq,A]),tJ=(0,s.useMemo)(()=>{let e;return e=new Map(eZ.tables.map(e=>[e.id,e.name])),{tables:eZ.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:eZ.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:eZ.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}]:[]})}))}},[eZ]),tQ=eZ.tables.length>0||eZ.endpoints.length>0,tX=eU.past.length>0,t0=eU.future.length>0;return(0,a.jsx)(b.Provider,{value:tW,children:(0,a.jsxs)("div",{className:(0,f.cn)("canvas-dots relative w-full",m?"h-full":"h-screen",ej&&"rf-panning"),children:[(0,a.jsxs)(r.Gc,{...eP,nodes:tR,edges:"far"===eF?[...tB,...tT].map(e=>({...e,hidden:!0})):[...tB,...tT.map(e=>({...e,hidden:t$.has(e.source)}))],nodeTypes:ef,edgeTypes:ex,nodesConnectable:!$,connectionMode:i.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:e=>{eI.current=e},onNodesChange:ty,onMoveStart:()=>ev(!0),onMoveEnd:()=>ev(!1),onConnect:tV,onNodeMouseEnter:(e,t)=>{"annotation"!==t.type&&eu(t.id)},onNodeMouseLeave:()=>eu(null),onNodeClick:(e,t)=>{if("annotation"===t.type){let e=t.data;e.editable||M?.(e.annotationId);return}let n="endpoint"===t.type?"endpoint":"table";L({id:t.id,kind:n}),U(null),ek(!0),eC("details")},onEdgeClick:(e,t)=>{U(t.id),L(null)},onPaneClick:()=>{L(null),U(null),ek(!1)},onNodeDragStop:tv,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-")||th.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:$?null:["Backspace","Delete"],colorMode:ew,fitView:!0,fitViewOptions:{padding:.15,minZoom:.38,maxZoom:.9},minZoom:.15,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,a.jsx)(ea.Z,{regions:tL,tone:"category",lod:eF}),(0,a.jsx)(y.J,{onLod:eR,thresholds:k.fE}),(0,a.jsx)(r.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-border [&_button]:!border-border [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),!m&&(0,a.jsx)(r.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!overflow-hidden !rounded-xl !border !border-border !bg-card/50 !backdrop-blur",nodeColor:"#555"}),(0,a.jsx)(r.Zk,{position:"bottom-left",style:{marginBottom:118},children:(0,a.jsx)(o.H,{tool:e$,onChange:eA})}),!m&&(0,a.jsx)(r.Zk,{position:"bottom-center",className:"!mb-4",children:(0,a.jsx)("div",{className:"glass flex items-center rounded-full p-0.5",children:(0,a.jsxs)("button",{type:"button",disabled:eT,title:"Re-arrange the board — domain clusters with endpoints docked under their tables",onClick:async()=>{eM(!0);try{let e=window.innerWidth/window.innerHeight;await fetch("/api/db/arrange",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({viewportAspect:e})}),A.refresh()}finally{eM(!1)}},className:"flex h-6 items-center gap-1.5 rounded-full px-3 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-[var(--ink-hover)] hover:text-foreground disabled:opacity-40",children:[(0,a.jsx)(el.A,{className:"size-3"}),eT?"Arranging…":"Arrange"]})})}),!m&&(0,a.jsx)(r.Zk,{position:"top-right",className:(0,f.cn)("glass rounded-full px-1 py-0.5 transition-[margin] duration-200",eh&&"!mr-[352px]"),children:(0,a.jsx)(W.Z,{active:"DATABASE",tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"},{value:"FILES",label:"Files",href:"/map?view=FILES"}]})}),(0,a.jsxs)(r.Zk,{position:"top-right",className:(0,f.cn)("!mt-14 flex items-center gap-1 transition-[margin] duration-200",eh&&"!mr-[352px]",m&&"hidden"),children:[(0,a.jsx)(H.X,{query:eS,onQuery:eE,hits:tD,placeholder:"Find a table, column, endpoint…",onPick:tz,onZoomToMatches:()=>{tP?.size&&eI.current?.fitView({nodes:[...tP].map(e=>({id:e})),duration:600,padding:.2})}}),(0,a.jsx)(G.e,{defaultSelection:"DATABASE"}),(0,a.jsxs)(Z.er,{title:"Filters",trigger:(e,t)=>(0,a.jsxs)("button",{type:"button",onClick:t,title:"Filters",className:(0,f.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",e||tH>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,a.jsx)(er.A,{className:"size-4"}),tH>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:tH})]}),children:[(0,a.jsx)(Z.r1,{title:"Show",children:(0,a.jsx)(Z.vu,{tone:"accent",on:F,onClick:()=>R(e=>!e),children:"endpoints"})}),tK.length>0&&(0,a.jsx)(Z.r1,{title:"Domain",children:tK.map(e=>(0,a.jsx)(Z.vu,{on:eD.has(e),onClick:()=>tZ(e,ez),children:e},e))}),t_.length>0&&(0,a.jsx)(Z.r1,{title:"Method",children:t_.map(e=>(0,a.jsx)(Z.vu,{on:eB.has(e),onClick:()=>tZ(e,eK),children:e},e))}),tU.length>0&&(0,a.jsx)(Z.r1,{title:"Source",children:tU.map(e=>(0,a.jsx)(Z.vu,{on:eO.has(e),onClick:()=>tZ(e,eL),children:e.toLowerCase()},e))}),tH>0&&(0,a.jsx)("button",{type:"button",onClick:tG,className:"mt-1 w-full rounded-md border border-border px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-[var(--ink-hover)] hover:text-foreground",children:"clear filters"})]}),(0,a.jsx)(Z.er,{title:"Legend",trigger:(e,t)=>(0,a.jsx)("button",{type:"button",onClick:t,title:"Legend",className:(0,f.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)(ei.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 border border-border bg-white/[0.06] px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-foreground/80",children:"table"}),(0,a.jsx)("span",{children:"a database table \xb7 its columns"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"inline-block rounded border border-border bg-white/[0.06] px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-foreground/80",children:"endpoint"}),(0,a.jsx)("span",{children:"an API route \xb7 reads / writes tables"})]}),(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"})]})]})}),!eh&&(0,a.jsx)("button",{onClick:()=>ek(!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)(ed.A,{className:"size-4"})})]}),tQ&&(0,a.jsxs)(r.Zk,{position:"bottom-center",className:"glass flex items-center gap-1 rounded-xl p-1.5",children:[(0,a.jsxs)("button",{onClick:eV,disabled:!tX,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-[var(--ink-hover)] hover:text-foreground disabled:opacity-30 disabled:hover:bg-transparent",children:[(0,a.jsx)(ec.A,{className:"size-3.5"})," undo"]}),(0,a.jsxs)("button",{onClick:eW,disabled:!t0,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-[var(--ink-hover)] hover:text-foreground disabled:opacity-30 disabled:hover:bg-transparent",children:[(0,a.jsx)(em.A,{className:"size-3.5"})," redo"]}),!m&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"mx-1 h-4 w-px bg-border"}),(0,a.jsxs)("button",{onClick:tY,disabled:eT,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)(p.A,{className:"size-3.5"})," discard"]}),(0,a.jsxs)("button",{onClick:tq,disabled:eT,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)(ep.A,{className:"size-3.5"})," approve draft"]})]})]})]}),eh&&(0,a.jsx)(B,{selected:O,tables:e1,relations:e8,endpoints:e5,draftGraph:tJ,onClose:()=>{ek(!1),eC("details")},commentsContent:w,commentsCount:N,activeTab:eN,onTabChange:eC,onAddComment:tp,topOffset:m?64:void 0})]})})}}}]);