@lunora/studio 1.0.0-alpha.147 → 1.0.0-alpha.148

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 (71) hide show
  1. package/dist/index.mjs +1 -1
  2. package/dist/packem_chunks/ExportImportPanel.mjs +1 -1
  3. package/dist/packem_chunks/SqlEditorPanel.mjs +7 -7
  4. package/dist/packem_chunks/TableEditor.mjs +1 -1
  5. package/dist/packem_chunks/payments-panel.mjs +1 -1
  6. package/dist/packem_shared/{DataBrowser-Bpj-0P1G.mjs → DataBrowser-B0XdZT2Z.mjs} +1 -1
  7. package/dist/packem_shared/wire-codec-oeb8YWV3.mjs +1 -0
  8. package/dist/standalone/{chunk-T3VYCKM7.js → chunk-3WOJTY4R.js} +1 -1
  9. package/dist/standalone/{chunk-HRYPE4NU.js → chunk-4FRHYJK4.js} +1 -1
  10. package/dist/standalone/{chunk-LFDP6ANM.js → chunk-4MDOVJ4W.js} +1 -1
  11. package/dist/standalone/{chunk-4XIC6MLF.js → chunk-66I57F5M.js} +1 -1
  12. package/dist/standalone/{chunk-NZ57KZSG.js → chunk-6C4VJUM5.js} +1 -1
  13. package/dist/standalone/{chunk-OSLV4PT6.js → chunk-6DX7WXXT.js} +1 -1
  14. package/dist/standalone/chunk-6UKUXEBW.js +8 -0
  15. package/dist/standalone/{chunk-GWW7SJR6.js → chunk-7ROGUMLR.js} +1 -1
  16. package/dist/standalone/{chunk-KCEVLJ65.js → chunk-7WRJROPR.js} +1 -1
  17. package/dist/standalone/{chunk-2GPQJLCR.js → chunk-7ZETHOUS.js} +1 -1
  18. package/dist/standalone/{chunk-DLT5B4TL.js → chunk-AHK42KDL.js} +1 -1
  19. package/dist/standalone/{chunk-2GZVY7CX.js → chunk-AMZKMGKY.js} +1 -1
  20. package/dist/standalone/{chunk-4R6AMNIM.js → chunk-APXBR22Z.js} +1 -1
  21. package/dist/standalone/{chunk-ZYCM7BV2.js → chunk-AUWQMDAX.js} +1 -1
  22. package/dist/standalone/{chunk-HR42URDR.js → chunk-AX2APCG6.js} +1 -1
  23. package/dist/standalone/{chunk-QNSRFASE.js → chunk-C4YXQWPA.js} +1 -1
  24. package/dist/standalone/{chunk-7IY5BR52.js → chunk-CVZI7XHR.js} +1 -1
  25. package/dist/standalone/{chunk-GIOZAYBS.js → chunk-D3PZ6MIM.js} +1 -1
  26. package/dist/standalone/{chunk-WWXSQVPE.js → chunk-DCUJOJLT.js} +1 -1
  27. package/dist/standalone/{chunk-2Z5PSAHC.js → chunk-DEXFM45H.js} +1 -1
  28. package/dist/standalone/{chunk-CZY6LNTK.js → chunk-DRYRBVT5.js} +1 -1
  29. package/dist/standalone/{chunk-VWFNJLMK.js → chunk-DSFSMWDN.js} +1 -1
  30. package/dist/standalone/{chunk-WXRI2LBR.js → chunk-FLNL5VTQ.js} +1 -1
  31. package/dist/standalone/{chunk-OEVYSTUL.js → chunk-GB2JAHPX.js} +1 -1
  32. package/dist/standalone/{chunk-EERTS7JH.js → chunk-GJZHLAVK.js} +1 -1
  33. package/dist/standalone/{chunk-JWPJS6AI.js → chunk-GV7UT4HH.js} +1 -1
  34. package/dist/standalone/{chunk-SLFPZM2C.js → chunk-H5ZCOPNG.js} +1 -1
  35. package/dist/standalone/{chunk-JY4ANRPG.js → chunk-IODDEC5H.js} +1 -1
  36. package/dist/standalone/{chunk-RDYIEOYN.js → chunk-J5NCVH3C.js} +1 -1
  37. package/dist/standalone/{chunk-GDB2JX2H.js → chunk-J77YHYKR.js} +1 -1
  38. package/dist/standalone/{chunk-YCEVUCMI.js → chunk-JKUQYLWD.js} +1 -1
  39. package/dist/standalone/{chunk-7BRTPMJO.js → chunk-K5F2JKWT.js} +1 -1
  40. package/dist/standalone/{chunk-6UG4S7I7.js → chunk-KASSSQS4.js} +1 -1
  41. package/dist/standalone/{chunk-5EWLJXES.js → chunk-KB45MOFE.js} +1 -1
  42. package/dist/standalone/{chunk-FIACUWE5.js → chunk-KCQPXMOO.js} +1 -1
  43. package/dist/standalone/{chunk-JOYK6ITY.js → chunk-KLME5CLU.js} +1 -1
  44. package/dist/standalone/{chunk-3CGQYQDZ.js → chunk-KRXMPCR7.js} +1 -1
  45. package/dist/standalone/{chunk-R5QR5EZZ.js → chunk-L47XJL6L.js} +1 -1
  46. package/dist/standalone/{chunk-KJ4YYMID.js → chunk-N6EJBSDR.js} +1 -1
  47. package/dist/standalone/{chunk-5OFSVXDU.js → chunk-NOVVYTNU.js} +1 -1
  48. package/dist/standalone/chunk-OVTMYZN2.js +1 -0
  49. package/dist/standalone/{chunk-XVX3KH35.js → chunk-P4CS3RZR.js} +1 -1
  50. package/dist/standalone/{chunk-2LOBQ4CX.js → chunk-PUP4LTHC.js} +1 -1
  51. package/dist/standalone/{chunk-XHM5CP2I.js → chunk-QFS5WAWF.js} +1 -1
  52. package/dist/standalone/{chunk-3KDC7UYQ.js → chunk-SFIEPF3L.js} +1 -1
  53. package/dist/standalone/chunk-SFLWRGXV.js +1 -0
  54. package/dist/standalone/{chunk-VLCHF5SE.js → chunk-SI7NMHGS.js} +1 -1
  55. package/dist/standalone/{chunk-VGJ6HFCF.js → chunk-V23FBXTK.js} +1 -1
  56. package/dist/standalone/{chunk-VWXU7LIX.js → chunk-VEWOXE6L.js} +1 -1
  57. package/dist/standalone/{chunk-6DQKYWZI.js → chunk-VO3YI35Z.js} +1 -1
  58. package/dist/standalone/{chunk-PIGJKRDD.js → chunk-VZRWYNKZ.js} +1 -1
  59. package/dist/standalone/{chunk-BVRZVNKL.js → chunk-XFZGJQY4.js} +1 -1
  60. package/dist/standalone/{chunk-5K2UDZLN.js → chunk-XJDQG6VV.js} +1 -1
  61. package/dist/standalone/{chunk-XZCNX7YU.js → chunk-XTLR2A7C.js} +1 -1
  62. package/dist/standalone/{chunk-MNGNHBOS.js → chunk-XVONF2UL.js} +1 -1
  63. package/dist/standalone/{chunk-LK4TLRSU.js → chunk-YSX56MFQ.js} +1 -1
  64. package/dist/standalone/{chunk-N74RUMRA.js → chunk-ZD7TZD5E.js} +1 -1
  65. package/dist/standalone/{chunk-KQFH6FFC.js → chunk-ZXRRPWQV.js} +1 -1
  66. package/dist/standalone/studio.js +1 -1
  67. package/package.json +4 -4
  68. package/dist/packem_shared/wire-codec-C0jSa3ZC.mjs +0 -1
  69. package/dist/standalone/chunk-LSWAITBZ.js +0 -1
  70. package/dist/standalone/chunk-QYEQOTRN.js +0 -8
  71. package/dist/standalone/chunk-ZTDD3M5D.js +0 -1
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{StudioApp as r}from"./packem_shared/StudioApp-B5jLGbeH.mjs";import{CommandPalette as a,openCommandPalette as f}from"./packem_shared/CommandPalette-CSdz9zax.mjs";import{S as m}from"./packem_shared/studio-OqNyRY1N.mjs";import{ConfirmButton as l}from"./packem_shared/ConfirmButton-DU4p72Er.mjs";import{default as s}from"./packem_shared/ConnectionBadge-B_8fcft2.mjs";import{ErrorBoundary as d}from"./packem_shared/ErrorBoundary-BWNF98VF.mjs";import{ShardInput as P}from"./packem_shared/ShardInput-C6mjgAh4.mjs";import{default as A}from"./packem_chunks/AdvisorHealthPanel.mjs";import{DEFAULT_INSIGHT_THRESHOLDS as I,deriveInsights as T}from"./packem_shared/DEFAULT_INSIGHT_THRESHOLDS-D5YMT0gM.mjs";import{InsightsPanel as g}from"./packem_chunks/InsightsPanel.mjs";import{default as F}from"./packem_chunks/SecurityAdvisorPanel.mjs";import{default as h}from"./packem_shared/ApiDocsPanel-BImfQhyJ.mjs";import{default as C}from"./packem_shared/ApiReferencePanel-B4i-KeOf.mjs";import{default as O}from"./packem_chunks/ApiTab.mjs";import{default as N}from"./packem_shared/OpenRpcReferencePanel-BKJEX7we.mjs";import{DataBrowser as U}from"./packem_shared/DataBrowser-Bpj-0P1G.mjs";import{DataFilters as b,toFilterClauses as v}from"./packem_shared/DataFilters-3nbW0uax.mjs";import{GlobalDataBrowser as y}from"./packem_shared/GlobalDataBrowser-BTbqR6Wc.mjs";import{TableEditor as q}from"./packem_chunks/TableEditor.mjs";import{ExportImportPanel as V}from"./packem_chunks/ExportImportPanel.mjs";import{MigrationsPanel as j}from"./packem_shared/MigrationsPanel-BPWzFdxC.mjs";import{PitrPanel as z}from"./packem_chunks/PitrPanel.mjs";import{FunctionRunner as Q}from"./packem_chunks/FunctionRunner.mjs";import{FunctionStatsPanel as Y}from"./packem_chunks/FunctionStatsPanel.mjs";import{DeploymentHealthPanel as $}from"./packem_chunks/DeploymentHealthPanel.mjs";import{H as oe}from"./packem_shared/home-panel-DCUKd8Uk.mjs";import{AuditPanel as te}from"./packem_chunks/AuditPanel.mjs";import{LogsPanel as fe}from"./packem_chunks/LogsPanel.mjs";import{MailPanel as me}from"./packem_chunks/MailPanel.mjs";import{ScheduledJobs as le}from"./packem_shared/ScheduledJobs-B4DPADwk.mjs";import{default as se}from"./packem_chunks/NotificationsPanel.mjs";import{HealthPanel as de}from"./packem_chunks/HealthPanel.mjs";import{aggregateMetrics as Pe,shardsToAggregate as Se}from"./packem_shared/aggregateMetrics-CY05xrYU.mjs";import{MetricsPanel as ce}from"./packem_chunks/MetricsPanel.mjs";import{SchemaViewer as Te}from"./packem_chunks/SchemaViewer.mjs";import{SettingsPanel as ge}from"./packem_chunks/SettingsPanel.mjs";import{SqlEditorPanel as Fe}from"./packem_chunks/SqlEditorPanel.mjs";import{FileBrowser as he}from"./packem_chunks/FileBrowser.mjs";import{DEFAULT_AUTO_REFRESH_MS as Ce,useAutoRefresh as He}from"./packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.mjs";import{default as Le}from"./packem_shared/useDebounced-DVeQ5-oW.mjs";import{DEFAULT_LOCALE as Me,createStudioI18n as Ue,studioI18n as Be,useT as be}from"./packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{StudioI18nProvider as we}from"./packem_shared/StudioI18nProvider-fVsCSs5L.mjs";import{ADMIN_FUNCTIONS as Ge,ADMIN_FUNCTION_PREFIX as qe}from"./packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{default as Ve}from"./packem_shared/STUDIO_ROOT_CLASS-C6MccdVk.mjs";export{Ge as ADMIN_FUNCTIONS,qe as ADMIN_FUNCTION_PREFIX,A as AdvisorHealthPanel,h as ApiDocsPanel,C as ApiReferencePanel,O as ApiTab,te as AuditPanel,a as CommandPalette,l as ConfirmButton,s as ConnectionBadge,Ce as DEFAULT_AUTO_REFRESH_MS,I as DEFAULT_INSIGHT_THRESHOLDS,Me as DEFAULT_LOCALE,U as DataBrowser,b as DataFilters,$ as DeploymentHealthPanel,d as ErrorBoundary,V as ExportImportPanel,he as FileBrowser,Q as FunctionRunner,Y as FunctionStatsPanel,y as GlobalDataBrowser,de as HealthPanel,oe as HomePanel,g as InsightsPanel,fe as LogsPanel,me as MailPanel,ce as MetricsPanel,j as MigrationsPanel,se as NotificationsPanel,N as OpenRpcReferencePanel,z as PitrPanel,Ve as STUDIO_ROOT_CLASS,le as ScheduledJobs,Te as SchemaViewer,F as SecurityAdvisorPanel,ge as SettingsPanel,P as ShardInput,Fe as SqlEditorPanel,m as Studio,r as StudioApp,we as StudioI18nProvider,q as TableEditor,Pe as aggregateMetrics,Ue as createStudioI18n,T as deriveInsights,f as openCommandPalette,Se as shardsToAggregate,Be as studioI18n,v as toFilterClauses,He as useAutoRefresh,Le as useDebounced,be as useT};
1
+ import{StudioApp as r}from"./packem_shared/StudioApp-B5jLGbeH.mjs";import{CommandPalette as a,openCommandPalette as f}from"./packem_shared/CommandPalette-CSdz9zax.mjs";import{S as m}from"./packem_shared/studio-OqNyRY1N.mjs";import{ConfirmButton as l}from"./packem_shared/ConfirmButton-DU4p72Er.mjs";import{default as s}from"./packem_shared/ConnectionBadge-B_8fcft2.mjs";import{ErrorBoundary as d}from"./packem_shared/ErrorBoundary-BWNF98VF.mjs";import{ShardInput as P}from"./packem_shared/ShardInput-C6mjgAh4.mjs";import{default as A}from"./packem_chunks/AdvisorHealthPanel.mjs";import{DEFAULT_INSIGHT_THRESHOLDS as I,deriveInsights as T}from"./packem_shared/DEFAULT_INSIGHT_THRESHOLDS-D5YMT0gM.mjs";import{InsightsPanel as g}from"./packem_chunks/InsightsPanel.mjs";import{default as F}from"./packem_chunks/SecurityAdvisorPanel.mjs";import{default as h}from"./packem_shared/ApiDocsPanel-BImfQhyJ.mjs";import{default as C}from"./packem_shared/ApiReferencePanel-B4i-KeOf.mjs";import{default as O}from"./packem_chunks/ApiTab.mjs";import{default as N}from"./packem_shared/OpenRpcReferencePanel-BKJEX7we.mjs";import{DataBrowser as U}from"./packem_shared/DataBrowser-B0XdZT2Z.mjs";import{DataFilters as b,toFilterClauses as v}from"./packem_shared/DataFilters-3nbW0uax.mjs";import{GlobalDataBrowser as y}from"./packem_shared/GlobalDataBrowser-BTbqR6Wc.mjs";import{TableEditor as q}from"./packem_chunks/TableEditor.mjs";import{ExportImportPanel as V}from"./packem_chunks/ExportImportPanel.mjs";import{MigrationsPanel as j}from"./packem_shared/MigrationsPanel-BPWzFdxC.mjs";import{PitrPanel as z}from"./packem_chunks/PitrPanel.mjs";import{FunctionRunner as Q}from"./packem_chunks/FunctionRunner.mjs";import{FunctionStatsPanel as Y}from"./packem_chunks/FunctionStatsPanel.mjs";import{DeploymentHealthPanel as $}from"./packem_chunks/DeploymentHealthPanel.mjs";import{H as oe}from"./packem_shared/home-panel-DCUKd8Uk.mjs";import{AuditPanel as te}from"./packem_chunks/AuditPanel.mjs";import{LogsPanel as fe}from"./packem_chunks/LogsPanel.mjs";import{MailPanel as me}from"./packem_chunks/MailPanel.mjs";import{ScheduledJobs as le}from"./packem_shared/ScheduledJobs-B4DPADwk.mjs";import{default as se}from"./packem_chunks/NotificationsPanel.mjs";import{HealthPanel as de}from"./packem_chunks/HealthPanel.mjs";import{aggregateMetrics as Pe,shardsToAggregate as Se}from"./packem_shared/aggregateMetrics-CY05xrYU.mjs";import{MetricsPanel as ce}from"./packem_chunks/MetricsPanel.mjs";import{SchemaViewer as Te}from"./packem_chunks/SchemaViewer.mjs";import{SettingsPanel as ge}from"./packem_chunks/SettingsPanel.mjs";import{SqlEditorPanel as Fe}from"./packem_chunks/SqlEditorPanel.mjs";import{FileBrowser as he}from"./packem_chunks/FileBrowser.mjs";import{DEFAULT_AUTO_REFRESH_MS as Ce,useAutoRefresh as He}from"./packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.mjs";import{default as Le}from"./packem_shared/useDebounced-DVeQ5-oW.mjs";import{DEFAULT_LOCALE as Me,createStudioI18n as Ue,studioI18n as Be,useT as be}from"./packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{StudioI18nProvider as we}from"./packem_shared/StudioI18nProvider-fVsCSs5L.mjs";import{ADMIN_FUNCTIONS as Ge,ADMIN_FUNCTION_PREFIX as qe}from"./packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{default as Ve}from"./packem_shared/STUDIO_ROOT_CLASS-C6MccdVk.mjs";export{Ge as ADMIN_FUNCTIONS,qe as ADMIN_FUNCTION_PREFIX,A as AdvisorHealthPanel,h as ApiDocsPanel,C as ApiReferencePanel,O as ApiTab,te as AuditPanel,a as CommandPalette,l as ConfirmButton,s as ConnectionBadge,Ce as DEFAULT_AUTO_REFRESH_MS,I as DEFAULT_INSIGHT_THRESHOLDS,Me as DEFAULT_LOCALE,U as DataBrowser,b as DataFilters,$ as DeploymentHealthPanel,d as ErrorBoundary,V as ExportImportPanel,he as FileBrowser,Q as FunctionRunner,Y as FunctionStatsPanel,y as GlobalDataBrowser,de as HealthPanel,oe as HomePanel,g as InsightsPanel,fe as LogsPanel,me as MailPanel,ce as MetricsPanel,j as MigrationsPanel,se as NotificationsPanel,N as OpenRpcReferencePanel,z as PitrPanel,Ve as STUDIO_ROOT_CLASS,le as ScheduledJobs,Te as SchemaViewer,F as SecurityAdvisorPanel,ge as SettingsPanel,P as ShardInput,Fe as SqlEditorPanel,m as Studio,r as StudioApp,we as StudioI18nProvider,q as TableEditor,Pe as aggregateMetrics,Ue as createStudioI18n,T as deriveInsights,f as openCommandPalette,Se as shardsToAggregate,Be as studioI18n,v as toFilterClauses,He as useAutoRefresh,Le as useDebounced,be as useT};
@@ -1,3 +1,3 @@
1
- import{c as xe}from"react/compiler-runtime";import{LunoraError as ae}from"@lunora/errors";import{useLunora as he}from"@lunora/react";import{useState as q}from"react";import{e as be,d as ge}from"../packem_shared/wire-codec-C0jSa3ZC.mjs";import{ConfirmButton as Ne}from"../packem_shared/ConfirmButton-DU4p72Er.mjs";import{ShardInput as ye}from"../packem_shared/ShardInput-C6mjgAh4.mjs";import{B as Se}from"../packem_shared/button-q0UYSmrn.mjs";import{a as ie,C as ce}from"../packem_shared/card--2hKx4L2.mjs";import{T as we}from"../packem_shared/textarea--40GKAyz.mjs";import{a as Ie}from"../packem_shared/use-admin-query-BKXiqLci.mjs";import{useT as _e}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as ee}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{c as fe,d as de,b as le,f as me}from"../packem_shared/internal-B6haJbiP.mjs";import{r as pe}from"../packem_shared/shard-history-CaO3C4KQ.mjs";import{jsx as s,jsxs as b}from"react/jsx-runtime";const je=fe(ee.exportShard),ve=fe(ee.importShard),Ce=u=>u.map(e=>JSON.stringify(be(e))).join(`
1
+ import{c as xe}from"react/compiler-runtime";import{LunoraError as ae}from"@lunora/errors";import{useLunora as he}from"@lunora/react";import{useState as q}from"react";import{e as be,d as ge}from"../packem_shared/wire-codec-oeb8YWV3.mjs";import{ConfirmButton as Ne}from"../packem_shared/ConfirmButton-DU4p72Er.mjs";import{ShardInput as ye}from"../packem_shared/ShardInput-C6mjgAh4.mjs";import{B as Se}from"../packem_shared/button-q0UYSmrn.mjs";import{a as ie,C as ce}from"../packem_shared/card--2hKx4L2.mjs";import{T as we}from"../packem_shared/textarea--40GKAyz.mjs";import{a as Ie}from"../packem_shared/use-admin-query-BKXiqLci.mjs";import{useT as _e}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as ee}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{c as fe,d as de,b as le,f as me}from"../packem_shared/internal-B6haJbiP.mjs";import{r as pe}from"../packem_shared/shard-history-CaO3C4KQ.mjs";import{jsx as s,jsxs as b}from"react/jsx-runtime";const je=fe(ee.exportShard),ve=fe(ee.importShard),Ce=u=>u.map(e=>JSON.stringify(be(e))).join(`
2
2
  `),Te=u=>{const e=[],te=u.split(`
3
3
  `);for(const[n,g]of te.entries()){const t=g.trim();if(t==="")continue;const r=ge(JSON.parse(t));if(typeof r!="object"||r===null)throw new ae("INTERNAL",`line ${(n+1).toString()}: expected a { table, doc } object`);const x=r;if(typeof x.table!="string"||typeof x.doc!="object"||x.doc===null||Array.isArray(x.doc))throw new ae("INTERNAL",`line ${(n+1).toString()}: expected a { table, doc } object`);e.push(x)}return e},Ue=u=>{const e=xe(94),{initialShardKey:te}=u,n=he(),g=Ie(),t=_e(),[r,x]=q(te??""),[l,oe]=q(""),[c,F]=q(!1),[z,H]=q(null),[a,re]=q(null),[N,ne]=q(null);let G;e[0]!==n||e[1]!==r?(G=async()=>{F(!0),H(null),re(null);try{const i=await n.query(je,{},de(r));pe(r),oe(Ce(i.rows)),ne(i.rows.length)}catch(i){H(le(i))}F(!1)},e[0]=n,e[1]=r,e[2]=G):G=e[2];const W=G;let Q;e[3]!==n||e[4]!==g||e[5]!==l||e[6]!==r||e[7]!==t?(Q=async()=>{F(!0),H(null),re(null),ne(null);let i;try{i=Te(l)}catch(o){H(t("Invalid NDJSON: {message}",{message:le(o)})),F(!1);return}try{const o=await n.query(ve,{rows:i},de(r));pe(r),re(o),g(ee.readTablePage),g(ee.listTables)}catch(o){H(le(o))}F(!1)},e[3]=n,e[4]=g,e[5]=l,e[6]=r,e[7]=t,e[8]=Q):Q=e[8];const U=Q;let y,S,w,d,I,m,p,_,j,f,v;if(e[9]!==c||e[10]!==N||e[11]!==W||e[12]!==a||e[13]!==U||e[14]!==l||e[15]!==r||e[16]!==t){const i=a===null?0:Object.values(a.inserted).reduce(Ae,0);let o;e[28]!==W?(o=()=>{me(W())},e[28]=W,e[29]=o):o=e[29];const X=o;let Y;e[30]!==U?(Y=()=>{me(U())},e[30]=U,e[31]=Y):Y=e[31];const se=Y;let Z;e[32]===Symbol.for("react.memo_cache_sentinel")?(Z=h=>{oe(h.target.value)},e[32]=Z):Z=e[32];const ue=Z;v="flex flex-col gap-4",w="lunora-export-import";let O;e[33]!==t?(O=t("Export"),e[33]=t,e[34]=O):O=e[34];let R;e[35]!==O?(R=s("header",{className:"border-b border-border px-4 py-3",children:s("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:O})}),e[35]=O,e[36]=R):R=e[36];let E;e[37]!==r?(E=s(ye,{onChange:x,testId:"ei-shard-input",value:r}),e[37]=r,e[38]=E):E=e[38];let L;e[39]!==t?(L=t("Export"),e[39]=t,e[40]=L):L=e[40];let D;e[41]!==c||e[42]!==X||e[43]!==L?(D=s(Se,{"data-testid":"ei-export",disabled:c,onClick:X,type:"button",children:L}),e[41]=c,e[42]=X,e[43]=L,e[44]=D):D=e[44];let $;e[45]!==E||e[46]!==D?($=b("div",{className:"flex flex-wrap items-center gap-2",children:[E,D]}),e[45]=E,e[46]=D,e[47]=$):$=e[47];let B;e[48]!==N||e[49]!==t?(B=N!==null&&s("p",{className:"text-sm text-muted-foreground","data-testid":"ei-export-result",children:t("Exported {count} rows.",{count:N})}),e[48]=N,e[49]=t,e[50]=B):B=e[50];let J;e[51]!==$||e[52]!==B?(J=b(ie,{className:"flex flex-col gap-3 p-4",children:[$,B]}),e[51]=$,e[52]=B,e[53]=J):J=e[53],e[54]!==R||e[55]!==J?(d=b(ce,{className:"gap-0 py-0 rounded-xl border border-border bg-card shadow-xs",children:[R,J]}),e[54]=R,e[55]=J,e[56]=d):d=e[56],S=ce,j="gap-0 py-0 rounded-xl border border-border bg-card shadow-xs";let P;e[57]!==t?(P=t("Import"),e[57]=t,e[58]=P):P=e[58],e[59]!==P?(f=s("header",{className:"border-b border-border px-4 py-3",children:s("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:P})}),e[59]=P,e[60]=f):f=e[60],y=ie,I="flex flex-col gap-3 p-4",e[61]!==l?(m=s(we,{"aria-label":"NDJSON",className:"font-mono text-xs min-h-40 rounded-md","data-testid":"ei-ndjson",onChange:ue,placeholder:'{"table":"messages","doc":{…}}',value:l}),e[61]=l,e[62]=m):m=e[62];let k;e[63]!==t?(k=t("Import (writes rows)?"),e[63]=t,e[64]=k):k=e[64];let K;e[65]!==c||e[66]!==l?(K=c||l.trim()==="",e[65]=c,e[66]=l,e[67]=K):K=e[67];let M;e[68]!==t?(M=t("Import"),e[68]=t,e[69]=M):M=e[69],e[70]!==se||e[71]!==k||e[72]!==K||e[73]!==M?(p=s("div",{className:"flex flex-wrap items-center gap-2",children:s(Ne,{confirmLabel:k,disabled:K,onConfirm:se,testId:"ei-import",children:M})}),e[70]=se,e[71]=k,e[72]=K,e[73]=M,e[74]=p):p=e[74],_=a!==null&&b("div",{className:"flex flex-col gap-2","data-testid":"ei-import-result",children:[s("p",{className:"text-sm text-muted-foreground",children:t("Inserted {inserted}, {conflicts} conflicts, {errors} errors.",{conflicts:a.conflicts,errors:a.errors.length,inserted:i})}),a.errors.length>0&&s("ul",{className:"flex flex-col gap-1","data-testid":"ei-import-errors",children:a.errors.map(h=>s("li",{className:"text-xs text-destructive",children:t("line {line} ({table}): {message}",{line:h.line,message:h.message,table:h.table})},`${h.table}-${h.line.toString()}`))})]}),e[9]=c,e[10]=N,e[11]=W,e[12]=a,e[13]=U,e[14]=l,e[15]=r,e[16]=t,e[17]=y,e[18]=S,e[19]=w,e[20]=d,e[21]=I,e[22]=m,e[23]=p,e[24]=_,e[25]=j,e[26]=f,e[27]=v}else y=e[17],S=e[18],w=e[19],d=e[20],I=e[21],m=e[22],p=e[23],_=e[24],j=e[25],f=e[26],v=e[27];let C;e[75]!==y||e[76]!==I||e[77]!==m||e[78]!==p||e[79]!==_?(C=b(y,{className:I,children:[m,p,_]}),e[75]=y,e[76]=I,e[77]=m,e[78]=p,e[79]=_,e[80]=C):C=e[80];let T;e[81]!==S||e[82]!==C||e[83]!==j||e[84]!==f?(T=b(S,{className:j,children:[f,C]}),e[81]=S,e[82]=C,e[83]=j,e[84]=f,e[85]=T):T=e[85];let A;e[86]!==z?(A=z!==null&&s("p",{className:"text-sm text-destructive","data-testid":"ei-error",role:"alert",children:z}),e[86]=z,e[87]=A):A=e[87];let V;return e[88]!==w||e[89]!==d||e[90]!==T||e[91]!==A||e[92]!==v?(V=b("div",{className:v,"data-testid":w,children:[d,T,A]}),e[88]=w,e[89]=d,e[90]=T,e[91]=A,e[92]=v,e[93]=V):V=e[93],V};function Ae(u,e){return u+e}export{Ue as ExportImportPanel};
@@ -1,8 +1,8 @@
1
- import{c as Y}from"react/compiler-runtime";import{useLunora as Ue}from"@lunora/react";import{useState as ce,useMemo as Ge,useCallback as ht,useEffect as Ne,useRef as Ce,useId as pt}from"react";import{ADMIN_FUNCTIONS as _e}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{u as Fe,n as et,b as je,r as Re,s as bt}from"../packem_shared/browser-storage-BH1MxLZs.mjs";import{d as qe,f as ue,c as Oe,b as gt}from"../packem_shared/internal-B6haJbiP.mjs";import{r as xt}from"../packem_shared/shard-history-CaO3C4KQ.mjs";import{u as vt}from"../packem_shared/use-sql-assistant-BhIMDQHV.mjs";import yt from"../packem_shared/useDebounced-DVeQ5-oW.mjs";import{useT as de}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{c as fe}from"../packem_shared/utils-bhneXptQ.mjs";import{jsxs as F,jsx as b,Fragment as He}from"react/jsx-runtime";import{I as St}from"../packem_shared/input-CXhxesPC.mjs";import{S as wt,a as Ct}from"../packem_shared/sql-result-table-C5y0jwaK.mjs";import{ShardInput as Nt}from"../packem_shared/ShardInput-C6mjgAh4.mjs";import{A as kt}from"../packem_shared/alert-PB5W11MM.mjs";import{E as Et}from"../packem_shared/grid-features-Dl7bCGRN.mjs";const Pe="x",Tt={'"':'"',"'":"'","[":"]","`":"`"},tt=(l,e)=>{let n=e+2;for(;n<l.length&&l[n]!==`
2
- `;)n+=1;return n},nt=(l,e)=>{const n=l.indexOf("*/",e+2);return n===-1?-1:n+2},st=l=>{const e=l.split("");let n=0;for(;n<l.length;){const t=l[n]??"",o=Tt[t];if(t==="-"&&l[n+1]==="-"){const s=tt(l,n);e.fill(Pe,n,s),n=s}else if(t==="/"&&l[n+1]==="*"){const s=nt(l,n);if(s===-1)return;e.fill(Pe,n,s),n=s}else if(o!==void 0){let s=n+1;for(;s<l.length;)if(l[s]!==o)s+=1;else if(o!=="]"&&l[s+1]===o)s+=2;else break;if(s>=l.length)return;e.fill(Pe,n,s+1),n=s+1}else n+=1}for(let t=0;t<l.length;t+=1)l[t]===`
1
+ import{c as Y}from"react/compiler-runtime";import{useLunora as Qe}from"@lunora/react";import{useState as ce,useMemo as Ke,useCallback as ht,useEffect as Ne,useRef as Ce,useId as pt}from"react";import{ADMIN_FUNCTIONS as _e}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{u as We,n as et,b as Ue,r as Re,s as bt}from"../packem_shared/browser-storage-BH1MxLZs.mjs";import{d as qe,f as ue,c as Oe,b as gt}from"../packem_shared/internal-B6haJbiP.mjs";import{r as xt}from"../packem_shared/shard-history-CaO3C4KQ.mjs";import{u as vt}from"../packem_shared/use-sql-assistant-BhIMDQHV.mjs";import yt from"../packem_shared/useDebounced-DVeQ5-oW.mjs";import{useT as de}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{c as fe}from"../packem_shared/utils-bhneXptQ.mjs";import{jsxs as F,jsx as b,Fragment as He}from"react/jsx-runtime";import{I as St}from"../packem_shared/input-CXhxesPC.mjs";import{S as wt,a as Ct}from"../packem_shared/sql-result-table-C5y0jwaK.mjs";import{ShardInput as Nt}from"../packem_shared/ShardInput-C6mjgAh4.mjs";import{A as kt}from"../packem_shared/alert-PB5W11MM.mjs";import{E as Et}from"../packem_shared/grid-features-Dl7bCGRN.mjs";const Tt="x",Ge=" ",Rt={'"':'"',"'":"'","[":"]","`":"`"},tt=(l,e)=>{let n=e+2;for(;n<l.length&&l[n]!==`
2
+ `;)n+=1;return n},nt=(l,e)=>{const n=l.indexOf("*/",e+2);return n===-1?-1:n+2},st=l=>{const e=l.split("");let n=0;for(;n<l.length;){const t=l[n]??"",o=Rt[t];if(t==="-"&&l[n+1]==="-"){const s=tt(l,n);e.fill(Ge,n,s),n=s}else if(t==="/"&&l[n+1]==="*"){const s=nt(l,n);if(s===-1)return;e.fill(Ge,n,s),n=s}else if(o!==void 0){let s=n+1;for(;s<l.length;)if(l[s]!==o)s+=1;else if(o!=="]"&&l[s+1]===o)s+=2;else break;if(s>=l.length)return;e.fill(Tt,n,s+1),n=s+1}else n+=1}for(let t=0;t<l.length;t+=1)l[t]===`
3
3
  `&&(e[t]=`
4
- `);return e.join("")},Rt=/^(?:explain\s+(?:query\s+plan\s+)?)?(?:select|with)\b/iu,Lt=/\b(?:alter|attach|create|delete|detach|drop|insert|pragma|reindex|replace|truncate|update|vacuum)\b/iu,It=/^\w+/u,qt=/;\s*$/u,At=/\s/u,ot=l=>{let e=0;for(;e<l.length;){const n=l[e];if(n!==void 0&&At.test(n))e+=1;else if(n==="-"&&l[e+1]==="-")e=tt(l,e);else if(n==="/"&&l[e+1]==="*"){const t=nt(l,e);if(t===-1)break;e=t}else break}return e},_t=l=>{const e=ot(l),n=l.slice(e).trimEnd();if(n==="")return{code:"SQL_EMPTY",message:"the query is empty"};const t=n.replace(qt,""),o=(st(t)??t).indexOf(";");if(o!==-1)return{code:"SQL_MULTIPLE_STATEMENTS",length:1,message:"only a single statement may be run",offset:e+o};const s="the SQL editor is read-only — only SELECT / WITH / EXPLAIN queries are allowed";if(!Rt.test(t))return{code:"SQL_NOT_READONLY",length:It.exec(t)?.[0].length??1,message:s,offset:e};const r=Lt.exec(t);if(r!==null)return{code:"SQL_NOT_READONLY",length:r[0].length,message:`${s} (\`${r[0].toUpperCase()}\` is not allowed)`,offset:e+r.index}},Ot=/^explain\b/iu,Dt=l=>Ot.test(l.slice(ot(l)))?l:`EXPLAIN QUERY PLAN ${l}`,Qe=(l,e)=>{const n=l.trim();if(n==="")return[];const t=e+l.indexOf(n),o=_t(n);return[o===void 0?{offset:t,sql:n}:{offset:t,rejection:o,sql:n}]},lt=l=>{const e=st(l);if(e===void 0)return Qe(l,0);const n=[];let t=0;for(let o=0;o<=e.length;o+=1)o!==e.length&&e[o]!==";"||(n.push(...Qe(l.slice(t,o),t)),t=o+1);return n},Mt=["ORDER BY","GROUP BY","LEFT JOIN","RIGHT JOIN","INNER JOIN","OUTER JOIN","CROSS JOIN","EXPLAIN QUERY PLAN","SELECT","DISTINCT","FROM","WHERE","HAVING","LIMIT","OFFSET","JOIN","ON","AND","OR","AS","ASC","DESC","WITH","UNION","EXPLAIN"],$t=["FROM","WHERE","ORDER BY","GROUP BY","HAVING","LIMIT","OFFSET","UNION","JOIN","LEFT JOIN","RIGHT JOIN","INNER JOIN","OUTER JOIN","CROSS JOIN"],Ae=String.fromCodePoint(0),Bt=new RegExp(`${Ae}${String.raw`(\d+)`}${Ae}`,"gu"),Ht=Mt.map(l=>({pattern:new RegExp(String.raw`\b${l.replaceAll(" ",String.raw`\s+`)}\b`,"giu"),replacement:l})),Pt=$t.map(l=>({pattern:new RegExp(String.raw`\s+${l.replaceAll(" ",String.raw`\s+`)}\b`,"gu"),replacement:`
5
- ${l}`})),Wt=l=>{const e=[];let t=l.replaceAll(/'(?:[^']|'')*'/gu,o=>(e.push(o),`${Ae}${(e.length-1).toString()}${Ae}`)).replaceAll(/\s+/gu," ").trim();for(const{pattern:o,replacement:s}of Ht)t=t.replaceAll(o,s);for(const{pattern:o,replacement:s}of Pt)t=t.replaceAll(o,s);return t=t.replaceAll(Bt,(o,s)=>e[Number(s)]??""),t},Ft=/\b(?:from|join)\s+([a-z_][\w$]*)(?:\s+(?:as\s+)?([a-z_][\w$]*))?/giu,Qt=/(?:\bwith\s+(?:recursive\s+)?|,\s*)([a-z_][\w$]*)\s+as\s*\(/giu,Ut=new Set(["cross","full","group","having","inner","join","left","limit","offset","on","order","right","union","using","where","window"]),jt=/[^\n]/gu,zt=(l,e)=>{const n=l[e];if(n==="'"){let t=e+1;for(;t<l.length&&l[t]!=="'";)t+=1;return Math.min(t+1,l.length)}if(n==="-"&&l[e+1]==="-"){const t=l.indexOf(`
6
- `,e);return t===-1?l.length:t}if(n==="/"&&l[e+1]==="*"){const t=l.indexOf("*/",e+2);return t===-1?l.length:t+2}return-1},Yt=l=>{let e="",n=0;for(;n<l.length;){const t=zt(l,n);t===-1?(e+=l.slice(n,n+1),n+=1):(e+=l.slice(n,t).replaceAll(jt," "),n=t)}return e},Kt=l=>{const e=new Set;for(const n of l.matchAll(Qt))e.add((n[1]??"").toLowerCase());return e},Gt=(l,e)=>{const n=new Map;for(const t of l.matchAll(Ft)){const o=(t[1]??"").toLowerCase(),s=(t[2]??"").toLowerCase();e.has(o)&&(n.set(o,o),s!==""&&!Ut.has(s)&&n.set(s,o))}return n},rt=(l,e)=>{const n=Yt(l),t=new Set(e.map(o=>o.toLowerCase()));return{ctes:Kt(n),masked:n,targets:Gt(n,t)}},Jt=/^(?:__lunora|sqlite_)/iu,Vt=/\b(?:from|join)\s+([a-z_][\w$]*)/giu,Xt=/\b([a-z_][\w$]*)\.([a-z_][\w$]*)/giu,Zt=new Set(["cross","full","group","having","inner","join","lateral","left","limit","offset","order","right","select","union","where","window"]),en=(l,e,n)=>{const t=[];for(const o of l.matchAll(Vt)){const s=o[1]??"",r=s.toLowerCase();!e.has(r)&&!n.has(r)&&!Zt.has(r)&&!Jt.test(s)&&t.push({length:s.length,message:`unknown table \`${s}\``,offset:o.index+o[0].length-s.length,severity:"error",source:"schema"})}return t},tn=(l,e,n)=>{const t=[],o=new Map;for(const[s,r]of Object.entries(e.columns))o.set(s.toLowerCase(),new Set(r.map(i=>i.toLowerCase())));for(const s of l.matchAll(Xt)){const r=(s[1]??"").toLowerCase(),i=s[2]??"",c=n.get(r),a=c===void 0?void 0:o.get(c);a!==void 0&&!a.has(i.toLowerCase())&&t.push({length:i.length,message:`\`${c??""}\` has no column \`${i}\``,offset:s.index+s[0].length-i.length,severity:"error",source:"schema"})}return t},nn=(l,e)=>{if(l.trim()==="")return[];const n=lt(l),t=new Set(e.tables.map(s=>s.toLowerCase())),o=[];for(const s of n){const{offset:r,rejection:i}=s;if(i!==void 0){i.code!=="SQL_EMPTY"&&o.push({length:i.length,message:i.message,offset:i.offset===void 0?r:r+i.offset,severity:"error",source:"gate"});continue}const{ctes:c,masked:a,targets:m}=rt(s.sql,e.tables);o.push(...[...en(a,t,c),...tn(a,e,m)].map(g=>({...g,offset:g.offset===void 0?r:r+g.offset})))}return o},sn=Oe(_e.lintSql),on=600,ln=(l,e,n)=>{const t=Ue(),[o,s]=ce([]),r=Ge(()=>nn(l,e),[l,e]),i=yt(l,on),a=r.some(f=>f.source==="gate")||i.trim()==="",m=ht(async f=>{try{const v=await t.query(sn,{sql:i},qe(n));f.cancelled||s(v.diagnostics??[])}catch{f.cancelled||s([])}},[t,i,n]);Ne(()=>{if(a){s([]);return}const f={cancelled:!1};return ue(m(f)),()=>{f.cancelled=!0}},[m,a]);const g=i===l;return Ge(()=>g?[...r,...o]:r,[r,o,g])},Le=8,rn=["AND","ASC","AS","BY","COUNT","DESC","DISTINCT","EXPLAIN","FROM","GROUP","HAVING","INNER","JOIN","LEFT","LIKE","LIMIT","NOT","NULL","OFFSET","ON","ORDER","OR","QUERY","SELECT","WHERE","WITH"],an=new Set(["AND","BY","HAVING","ON","OR","SELECT","WHERE"]),cn=/[\w$]/,it=l=>l!==void 0&&cn.test(l),at=l=>{let e=l.length;for(;e>0&&it(l[e-1]);)e-=1;return l.slice(e)},ct=(l,e)=>{let n=e;for(;n>0&&it(l[n-1]);)n-=1;return{end:e,start:n,text:l.slice(n,e)}},Je=(l,e)=>{const n=l.slice(0,e).trimEnd();return n.endsWith(".")||an.has(at(n).toUpperCase())},dn=(l,e,n)=>{const t=l.slice(0,e);if(!t.endsWith("."))return;const o=at(t.slice(0,-1));if(o!=="")return rt(l,n).targets.get(o.toLowerCase())??o},ze=(l,e)=>l.toLowerCase().startsWith(e.toLowerCase()),Ve=(l,e,n,t)=>{const o=[];for(const s of l)if(ze(s,e)&&(o.push(t(s)),o.length>=n))break;return o},un=(l,e,n)=>{const t=new Map;for(const[o,s]of Object.entries(l.columns))for(const r of s)if(ze(r,e)&&!t.has(r)&&(t.set(r,o),t.size>=n))return[...t].map(([i,c])=>({detail:c,kind:"column",label:i}));return[...t].map(([o,s])=>({detail:s,kind:"column",label:o}))},fn=(l,e,n)=>{const t=ct(l,e),o=dn(l,t.start,n.tables);if(o!==void 0){const a=n.columns[o]??n.columns[o.toLowerCase()]??[];return Ve(a,t.text,Le,m=>({detail:o,kind:"column",label:m}))}if(t.text===""&&!Je(l,t.start))return[];const s=Ve(n.tables,t.text,Le,a=>({kind:"table",label:a})),r=un(n,t.text,Le),i=rn.flatMap(a=>t.text!==""&&ze(a,t.text)&&a.toLowerCase()!==t.text.toLowerCase()?[{kind:"keyword",label:a}]:[]);return(Je(l,t.start)?[...r,...s,...i]:[...s,...r,...i]).slice(0,Le)},mn=(l,e,n)=>{const t=ct(l,e),o=l.slice(0,t.start)+n.label+l.slice(t.end);return{caret:t.start+n.label.length,value:o}},hn=["boxSizing","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","lineHeight","paddingBottom","paddingLeft","paddingRight","paddingTop","tabSize","textIndent","textTransform","width","wordSpacing"],pn=(l,e)=>{const n=globalThis.getComputedStyle(l),t=globalThis.document.createElement("div"),{style:o}=t;o.position="absolute",o.visibility="hidden",o.whiteSpace="pre-wrap",o.overflowWrap="break-word";for(const c of hn)o[c]=n[c];t.textContent=l.value.slice(0,Math.max(0,e));const s=globalThis.document.createElement("span");s.textContent=l.value.slice(Math.max(0,e))||".",t.append(s),globalThis.document.body.append(t);const r=s.offsetLeft-l.scrollLeft,i=s.offsetTop-l.scrollTop;return t.remove(),{left:r,top:i}},bn=(l,e,n)=>{const t=Y(16),[o,s]=ce(null);let r;t[0]!==l||t[1]!==e?(r=(x,h)=>{const C=fn(x,h,l);if(C.length===0){s(null);return}const y=e.current,{left:p,top:k}=y===null?{left:0,top:0}:pn(y,h);s(N=>N!==null&&N.active===0&&N.left===p&&N.top===k&&N.suggestions.length===C.length&&N.suggestions.every((T,q)=>{const E=C.at(q);return T.kind===E?.kind&&T.label===E.label&&T.detail===E.detail})?N:{active:0,left:p,suggestions:C,top:k})},t[0]=l,t[1]=e,t[2]=r):r=t[2];const i=r;let c;t[3]===Symbol.for("react.memo_cache_sentinel")?(c=()=>{s(null)},t[3]=c):c=t[3];const a=c;let m;t[4]===Symbol.for("react.memo_cache_sentinel")?(m=x=>{s(h=>{if(h===null)return h;const C=h.suggestions.length,y=(h.active+x+C)%C;return{...h,active:y}})},t[4]=m):m=t[4];const g=m;let f;t[5]!==n||t[6]!==o||t[7]!==e?(f=x=>{const h=e.current;if(o===null||h===null)return!1;const C=o.suggestions[x??o.active];if(C===void 0)return!1;const y=mn(h.value,h.selectionStart,C);return n(y.value),s(null),requestAnimationFrame(()=>{const p=e.current;p!==null&&(p.focus(),p.setSelectionRange(y.caret,y.caret))}),!0},t[5]=n,t[6]=o,t[7]=e,t[8]=f):f=t[8];const v=f;let d;t[9]!==v?(d=()=>v(),t[9]=v,t[10]=d):d=t[10];const S=d;let u;return t[11]!==S||t[12]!==v||t[13]!==i||t[14]!==o?(u={close:a,commit:S,commitAt:v,move:g,refresh:i,state:o},t[11]=S,t[12]=v,t[13]=i,t[14]=o,t[15]=u):u=t[15],u},gn={column:"column",keyword:"keyword",table:"table"},xn=20,vn=l=>{const e=Y(17),{listboxId:n,onPick:t,state:o}=l,s=de();let r;e[0]!==o?(r=o===null?void 0:{left:o.left,top:o.top+xn},e[0]=o,e[1]=r):r=e[1];const i=r;if(o===null)return null;let c;if(e[2]!==n||e[3]!==t||e[4]!==o.active||e[5]!==o.suggestions||e[6]!==s){let m;e[8]!==n||e[9]!==t||e[10]!==o.active||e[11]!==s?(m=(g,f)=>F("li",{"aria-selected":f===o.active,className:fe("flex cursor-pointer items-center gap-2 px-2 py-1 text-[13px]",f===o.active?"bg-accent text-accent-foreground":"text-foreground"),"data-testid":"sql-autocomplete-item",id:`${n}-opt-${f.toString()}`,onMouseDown:v=>{v.preventDefault(),t(f)},role:"option",children:[b("span",{className:"truncate font-mono",children:g.label}),g.detail!==void 0&&b("span",{className:"ms-auto truncate text-xs text-muted-foreground",children:g.detail}),b("span",{className:"shrink-0 font-mono text-[10px] tracking-wide text-muted-foreground/70 uppercase",children:s(gn[g.kind])})]},`${g.kind}:${g.label}`),e[8]=n,e[9]=t,e[10]=o.active,e[11]=s,e[12]=m):m=e[12],c=o.suggestions.map(m),e[2]=n,e[3]=t,e[4]=o.active,e[5]=o.suggestions,e[6]=s,e[7]=c}else c=e[7];let a;return e[13]!==n||e[14]!==i||e[15]!==c?(a=b("ul",{className:"absolute z-30 max-h-56 w-72 overflow-auto rounded-md border border-border bg-popover py-1 text-popover-foreground shadow-md","data-testid":"sql-autocomplete",id:n,role:"listbox",style:i,children:c}),e[13]=n,e[14]=i,e[15]=c,e[16]=a):a=e[16],a},yn=Oe(_e.listTables),Sn=Oe(_e.readTablePage),wn=l=>{const e=Y(16),n=Ue();let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t=[],e[0]=t):t=e[0];const[o,s]=ce(t);let r;e[1]===Symbol.for("react.memo_cache_sentinel")?(r={},e[1]=r):r=e[1];const[i,c]=ce(r);let a;e[2]===Symbol.for("react.memo_cache_sentinel")?(a=new Set,e[2]=a):a=e[2];const m=Ce(a);let g,f;e[3]!==n||e[4]!==l?(g=()=>{const h={cancelled:!1};return ue((async()=>{try{const y=await n.query(yn,{},qe(l));h.cancelled||(s(y.map(Nn)),c({}),m.current=new Set)}catch{h.cancelled||(s([]),c({}),m.current=new Set)}})()),()=>{h.cancelled=!0}},f=[n,l],e[3]=n,e[4]=l,e[5]=g,e[6]=f):(g=e[5],f=e[6]),Ne(g,f);let v;e[7]!==n||e[8]!==l?(v=h=>{if(m.current.has(h))return;m.current.add(h),ue((async()=>{try{const y=await n.query(Sn,{limit:1,offset:0,table:h},qe(l));c(p=>({...p,[h]:y.columns}))}catch{m.current.delete(h)}})())},e[7]=n,e[8]=l,e[9]=v):v=e[9];const d=v;let S;e[10]!==i||e[11]!==o?(S={columns:i,tables:o},e[10]=i,e[11]=o,e[12]=S):S=e[12];const u=S;let x;return e[13]!==d||e[14]!==u?(x={probe:d,schema:u},e[13]=d,e[14]=u,e[15]=x):x=e[15],x},We=/\b(?:from|join|update|into)\s+([a-z_][\w$]*)|\b([a-z_][\w$]*)\s*\./gi,Cn=l=>{const e=new Set;We.lastIndex=0;let n=We.exec(l);for(;n!==null;)e.add(n[1]??n[2]),n=We.exec(l);return[...e]};function Nn(l){return l.name}const kn=l=>{const e=Y(34),{onSubmit:n,probe:t,schema:o,setDraft:s}=l,r=pt(),i=Ce(null),c=Ce(null),a=Ce(null),m=bn(o,a,s),{close:g,commit:f,commitAt:v,move:d,refresh:S,state:u}=m;let x;e[0]!==v?(x=w=>{v(w)},e[0]=v,e[1]=x):x=e[1];const h=x;let C;e[2]!==S?(C=()=>{const w=a.current;w!==null&&w===document.activeElement&&S(w.value,w.selectionStart)},e[2]=S,e[3]=C):C=e[3];let y;e[4]!==S||e[5]!==o?(y=[S,o],e[4]=S,e[5]=o,e[6]=y):y=e[6],Ne(C,y);let p;e[7]!==t||e[8]!==S||e[9]!==s?(p=w=>{const{selectionStart:W,value:R}=w.target;s(R);for(const M of Cn(R))t(M);S(R,W)},e[7]=t,e[8]=S,e[9]=s,e[10]=p):p=e[10];const k=p;let N;e[11]!==S?(N=w=>{const W=w.currentTarget;S(W.value,W.selectionStart)},e[11]=S,e[12]=N):N=e[12];const L=N;let T;e[13]!==u||e[14]!==g||e[15]!==f||e[16]!==d||e[17]!==n?(T=w=>{if(u!==null){if(w.key==="ArrowDown"){w.preventDefault(),d(1);return}if(w.key==="ArrowUp"){w.preventDefault(),d(-1);return}if(w.key==="Escape"){w.preventDefault(),g();return}if((w.key==="Enter"||w.key==="Tab")&&!w.metaKey&&!w.ctrlKey&&f()){w.preventDefault();return}}(w.metaKey||w.ctrlKey)&&w.key==="Enter"&&(w.preventDefault(),n())},e[13]=u,e[14]=g,e[15]=f,e[16]=d,e[17]=n,e[18]=T):T=e[18];const q=T;let E;e[19]!==g?(E=()=>{requestAnimationFrame(()=>{g()})},e[19]=g,e[20]=E):E=e[20];const A=E;let _;e[21]===Symbol.for("react.memo_cache_sentinel")?(_=w=>{const{scrollLeft:W,scrollTop:R}=w.currentTarget;i.current!==null&&(i.current.scrollTop=R),c.current!==null&&(c.current.scrollTop=R,c.current.scrollLeft=W)},e[21]=_):_=e[21];const I=_;let B;e[22]===Symbol.for("react.memo_cache_sentinel")?(B=w=>{const W=a.current;W===null||w.offset===void 0||(W.focus(),W.setSelectionRange(w.offset,w.offset+(w.length??0)))},e[22]=B):B=e[22];const D=B;let P;e[23]!==k||e[24]!==A||e[25]!==q||e[26]!==L?(P={onBlur:A,onChange:k,onKeyDown:q,onScroll:I,onSelect:L},e[23]=k,e[24]=A,e[25]=q,e[26]=L,e[27]=P):P=e[27];let O;return e[28]!==u||e[29]!==g||e[30]!==r||e[31]!==h||e[32]!==P?(O={autocompleteState:u,closeAutocomplete:g,handlers:P,listboxId:r,onPickSuggestion:h,editorRef:a,gutterRef:i,overlayRef:c,revealDiagnostic:D},e[28]=u,e[29]=g,e[30]=r,e[31]=h,e[32]=P,e[33]=O):O=e[33],O},En="lunora-studio-sql-tabs",Tn="lunora-studio-sql-active-tab",Ye=12,we=(l="",e="")=>({activeId:null,id:et("tab"),name:e,sql:l}),Rn=()=>je(Tn,""),Ln=l=>{const e=Y(16),[n,t]=Fe(En),[o,s]=Rn(),[r]=ce(l);let i,c;e[0]!==r||e[1]!==t||e[2]!==n.length?(i=()=>{n.length===0&&t([r])},c=[r,t,n.length],e[0]=r,e[1]=t,e[2]=n.length,e[3]=i,e[4]=c):(i=e[3],c=e[4]),Ne(i,c);let a;e[5]!==r||e[6]!==n?(a=n.length===0?[r]:n,e[5]=r,e[6]=n,e[7]=a):a=e[7];const m=a;let g;e[8]!==o||e[9]!==m?(g=m.some(d=>d.id===o)?o:m[0]?.id??"",e[8]=o,e[9]=m,e[10]=g):g=e[10];const f=g;let v;return e[11]!==f||e[12]!==s||e[13]!==t||e[14]!==m?(v={activeId:f,setActiveId:s,setTabs:t,tabs:m},e[11]=f,e[12]=s,e[13]=t,e[14]=m,e[15]=v):v=e[15],v},dt=l=>l.activeId===null&&l.sql.trim()!=="",In=(l,e)=>[...l,e].slice(-Ye),qn=(l,e,n)=>{const t=l.findIndex(r=>r.id===e);if(t===-1)return{activeId:l[0]?.id??"",tabs:[...l]};const o=l.filter(r=>r.id!==e);if(o.length===0){const r=n();return{activeId:r.id,tabs:[r]}}return{activeId:o[Math.min(t,o.length-1)].id,tabs:o}},An=(l,e)=>{const n=l.filter(t=>t.id===e);return n.length===0?{activeId:l[0]?.id??"",tabs:[...l]}:{activeId:e,tabs:n}},_n=(l,e,n)=>{const t=l.findIndex(s=>s.id===e);if(t===-1)return{activeId:n,tabs:[...l]};const o=l.slice(0,t+1);return{activeId:o.some(s=>s.id===n)?n:e,tabs:o}},On=l=>{const e=l();return{activeId:e.id,tabs:[e]}},Dn=(l,e,n)=>{if(l==="others")return e.filter(t=>t.id!==n);if(l==="right"){const t=e.findIndex(o=>o.id===n);return t===-1?[]:e.slice(t+1)}return[...e]},Xe={error:null,pane:"results",result:null,running:!1},Mn=l=>{const e=Y(66),{activeId:n,setActiveId:t,setTabs:o,tabs:s}=Ln(l);let r;e[0]===Symbol.for("react.memo_cache_sentinel")?(r={},e[0]=r):r=e[0];const[i,c]=ce(r),[a,m]=ce(null),[g,f]=ce(null);let v;e[1]!==n||e[2]!==s?(v=s.find(H=>H.id===n)??s[0]??we(),e[1]=n,e[2]=s,e[3]=v):v=e[3];const d=v,S=i[d.id]??Xe;let u;e[4]!==d.id||e[5]!==o?(u=H=>{o(j=>j.map(z=>z.id===d.id?{...z,...H}:z))},e[4]=d.id,e[5]=o,e[6]=u):u=e[6];const x=u;let h;e[7]!==d.id?(h=H=>{c(j=>{const z=j[d.id]??Xe;return{...j,[d.id]:{...z,...H}}})},e[7]=d.id,e[8]=h):h=e[8];const C=h;let y;e[9]!==t||e[10]!==o||e[11]!==s.length?(y=()=>{if(s.length>=Ye)return;const H=we();o(j=>In(j,H)),t(H.id)},e[9]=t,e[10]=o,e[11]=s.length,e[12]=y):y=e[12];const p=y;let k;e[13]!==t||e[14]!==o?(k=H=>{m(null),f(null),o(H.tabs),t(H.activeId);const j=new Set(H.tabs.map($n));c(z=>Object.fromEntries(Object.entries(z).filter(J=>{const[me]=J;return j.has(me)})))},e[13]=t,e[14]=o,e[15]=k):k=e[15];const N=k;let L;e[16]!==N||e[17]!==s?(L=H=>{N(qn(s,H,we))},e[16]=N,e[17]=s,e[18]=L):L=e[18];const T=L;let q;e[19]!==n||e[20]!==N||e[21]!==s?(q=(H,j)=>{N(H==="others"?An(s,j):H==="right"?_n(s,j,n):On(we))},e[19]=n,e[20]=N,e[21]=s,e[22]=q):q=e[22];const E=q;let A;e[23]!==E||e[24]!==a||e[25]!==s?(A=H=>{a!==null&&(Dn(H,s,a.id).some(Bn)?f(H):E(H,a.id))},e[23]=E,e[24]=a,e[25]=s,e[26]=A):A=e[26];const _=A;let I;e[27]===Symbol.for("react.memo_cache_sentinel")?(I=(H,j)=>{j.preventDefault(),f(null),m({id:H,x:j.clientX,y:j.clientY})},e[27]=I):I=e[27];const B=I;let D;e[28]===Symbol.for("react.memo_cache_sentinel")?(D=()=>{m(null),f(null)},e[28]=D):D=e[28];const P=D;let O;e[29]===Symbol.for("react.memo_cache_sentinel")?(O=H=>{H.preventDefault(),m(null),f(null)},e[29]=O):O=e[29];const w=O;let W;e[30]!==_?(W=()=>{_("others")},e[30]=_,e[31]=W):W=e[31];const R=W;let M;e[32]!==_?(M=()=>{_("right")},e[32]=_,e[33]=M):M=e[33];const U=M;let $;e[34]!==_?($=()=>{_("all")},e[34]=_,e[35]=$):$=e[35];const X=$;let Z;e[36]!==E||e[37]!==g||e[38]!==a?(Z=()=>{a!==null&&g!==null&&E(g,a.id),f(null)},e[36]=E,e[37]=g,e[38]=a,e[39]=Z):Z=e[39];const ee=Z;let te;e[40]===Symbol.for("react.memo_cache_sentinel")?(te=()=>{f(null)},e[40]=te):te=e[40];const ie=te;let G;e[41]!==a?(G=a===null?void 0:{left:a.x,top:a.y},e[41]=a,e[42]=G):G=e[42];const Q=G;let ne;e[43]!==o?(ne=H=>{o(j=>j.map(z=>z.activeId===H?{...z,activeId:null}:z))},e[43]=o,e[44]=ne):ne=e[44];const se=ne;let oe;e[45]!==o?(oe=(H,j)=>{o(z=>z.map(J=>J.id===H?{...J,name:j}:J))},e[45]=o,e[46]=oe):oe=e[46];const le=oe;let re;return e[47]!==d||e[48]!==n||e[49]!==p||e[50]!==T||e[51]!==ee||e[52]!==X||e[53]!==R||e[54]!==U||e[55]!==S||e[56]!==C||e[57]!==x||e[58]!==g||e[59]!==le||e[60]!==t||e[61]!==a||e[62]!==Q||e[63]!==s||e[64]!==se?(re={activeTab:d,activeTabId:n,addEditorTab:p,cancelBulk:ie,closeEditorTab:T,closeTabMenu:P,confirmBulk:ee,menuStyle:Q,onBackdropContextMenu:w,onCloseAll:X,onCloseOthers:R,onCloseToRight:U,openTabMenu:B,output:S,patchActiveOutput:C,patchActiveTab:x,pendingBulk:g,renameTab:le,setActiveTabId:t,tabMenu:a,tabs:s,unlinkQuery:se},e[47]=d,e[48]=n,e[49]=p,e[50]=T,e[51]=ee,e[52]=X,e[53]=R,e[54]=U,e[55]=S,e[56]=C,e[57]=x,e[58]=g,e[59]=le,e[60]=t,e[61]=a,e[62]=Q,e[63]=s,e[64]=se,e[65]=re):re=e[65],re};function $n(l){return l.id}function Bn(l){return dt(l)}const Hn="lunora-studio-sql-queries",Se="lunora-studio-sql-history",Pn="lunora-studio-sql-remember-history",Wn=25,Fn=l=>{const e=Y(41),{loadIntoActiveTab:n,unlinkQuery:t}=l,o=de(),[s,r]=Fe(Hn),[i,c]=je(Pn,!1),[a,m]=Fe(Se,i?"local":"session");let g,f;e[0]!==i?(g=()=>{i||Re(Se,"local")},f=[i],e[0]=i,e[1]=g,e[2]=f):(g=e[1],f=e[2]),Ne(g,f);const[v,d]=ce(""),S=Ce(null);let u;e[3]!==m?(u=R=>{m(M=>M[0]?.sql===R?M:[{at:Date.now(),sql:R},...M.filter($=>$.sql!==R)].slice(0,Wn))},e[3]=m,e[4]=u):u=e[4];const x=u;let h;e[5]!==n||e[6]!==r||e[7]!==o?(h=()=>{const R={id:et("q"),name:o("Untitled query"),sql:""};r(M=>[R,...M]),n("",R.id)},e[5]=n,e[6]=r,e[7]=o,e[8]=h):h=e[8];const C=h;let y;e[9]!==n||e[10]!==s?(y=R=>{const M=s.find(U=>U.id===R);M!==void 0&&(n(M.sql,R),S.current?.querySelector(`[data-testid="sql-query-${R}"]`)?.scrollIntoView({block:"nearest"}))},e[9]=n,e[10]=s,e[11]=y):y=e[11];const p=y;let k;e[12]!==r||e[13]!==t?(k=R=>{r(M=>M.filter(U=>U.id!==R)),t(R)},e[12]=r,e[13]=t,e[14]=k):k=e[14];const N=k;let L;e[15]!==n?(L=R=>{n(R.currentTarget.dataset.sql??"",null)},e[15]=n,e[16]=L):L=e[16];const T=L;let q;e[17]!==n?(q=R=>{n(R.currentTarget.dataset.sql??"",null)},e[17]=n,e[18]=q):q=e[18];const E=q;let A;e[19]!==m?(A=()=>{m([]),Re(Se,"local"),Re(Se,"session")},e[19]=m,e[20]=A):A=e[20];const _=A;let I;e[21]!==a||e[22]!==c?(I=R=>{bt(Se,a,R?"local":"session"),R||Re(Se,"local"),c(R)},e[21]=a,e[22]=c,e[23]=I):I=e[23];const B=I;let D;e[24]===Symbol.for("react.memo_cache_sentinel")?(D=R=>{d(R.target.value)},e[24]=D):D=e[24];const P=D;let O;e[25]!==r?(O=(R,M)=>{r(U=>U.map($=>$.id===R?{...$,sql:M}:$))},e[25]=r,e[26]=O):O=e[26];const w=O;let W;return e[27]!==_||e[28]!==N||e[29]!==a||e[30]!==E||e[31]!==T||e[32]!==C||e[33]!==s||e[34]!==x||e[35]!==i||e[36]!==v||e[37]!==p||e[38]!==B||e[39]!==w?(W={clearHistory:_,deleteQuery:N,history:a,listRef:S,loadFromHistory:E,loadTemplate:T,newQuery:C,onSearchChange:P,queries:s,recordHistory:x,rememberHistory:i,search:v,selectQuery:p,setRememberHistory:B,updateQuerySql:w},e[27]=_,e[28]=N,e[29]=a,e[30]=E,e[31]=T,e[32]=C,e[33]=s,e[34]=x,e[35]=i,e[36]=v,e[37]=p,e[38]=B,e[39]=w,e[40]=W):W=e[40],W},ut="p-3 font-mono text-xs leading-5 whitespace-pre-wrap break-words",Qn=(l,e)=>{const n=[];for(const o of l){if(o.offset===void 0||o.length===void 0||o.length<=0)continue;const s=Math.max(0,Math.min(o.offset,e)),r=Math.max(s,Math.min(o.offset+o.length,e));s!==r&&n.push({end:r,severity:o.severity,start:s})}n.sort((o,s)=>o.start-s.start);const t=[];for(const o of n)o.start>=(t.at(-1)?.end??0)&&t.push(o);return t},Un=l=>l==="unsafe-response"?"The model returned a statement that is not read-only, so it was discarded.":l==="empty-response"?"The model returned nothing usable.":"The model could not be reached.",jn=l=>{const e=Y(51),{assistant:n,failed:t,onGenerated:o}=l,s=de(),[r,i]=ce("");if(n.unavailable)return null;let c;e[0]!==n?(c=n.pending("sql"),e[0]=n,e[1]=c):c=e[1];const a=c;let m;if(e[2]!==n||e[3]!==t||e[4]!==o||e[5]!==a||e[6]!==r||e[7]!==s){const g=n.reason("sql");let f;e[9]!==n||e[10]!==t||e[11]!==o||e[12]!==r?(f=E=>{const A=r.trim();if(A===""&&!E)return;ue((async()=>{const I=await n.generate(A===""?"fix the failing statement":A,E?t:void 0);I!==void 0&&o(I)})())},e[9]=n,e[10]=t,e[11]=o,e[12]=r,e[13]=f):f=e[13];const v=f;let d;e[14]!==s?(d=s("Describe the query you want"),e[14]=s,e[15]=d):d=e[15];let S;e[16]===Symbol.for("react.memo_cache_sentinel")?(S=E=>{i(E.target.value)},e[16]=S):S=e[16];let u;e[17]!==v?(u=E=>{E.key==="Enter"&&(E.preventDefault(),v(!1))},e[17]=v,e[18]=u):u=e[18];let x;e[19]!==s?(x=s("Describe the query you want"),e[19]=s,e[20]=x):x=e[20];let h;e[21]!==a||e[22]!==r||e[23]!==d||e[24]!==u||e[25]!==x?(h=b(St,{"aria-label":d,className:"h-7 flex-1 text-xs","data-testid":"sql-assistant-prompt",disabled:a,onChange:S,onKeyDown:u,placeholder:x,value:r}),e[21]=a,e[22]=r,e[23]=d,e[24]=u,e[25]=x,e[26]=h):h=e[26];const C=a&&"opacity-60";let y;e[27]!==C?(y=fe("rounded-md border border-border px-2 py-1 text-xs outline-none transition-colors hover:bg-accent focus-visible:bg-accent",C),e[27]=C,e[28]=y):y=e[28];let p;e[29]!==a||e[30]!==r?(p=a||r.trim()==="",e[29]=a,e[30]=r,e[31]=p):p=e[31];let k;e[32]!==v?(k=()=>{v(!1)},e[32]=v,e[33]=k):k=e[33];let N;e[34]!==a||e[35]!==s?(N=s(a?"Thinking…":"Draft SQL"),e[34]=a,e[35]=s,e[36]=N):N=e[36];let L;e[37]!==y||e[38]!==p||e[39]!==k||e[40]!==N?(L=b("button",{className:y,"data-testid":"sql-assistant-generate",disabled:p,onClick:k,type:"button",children:N}),e[37]=y,e[38]=p,e[39]=k,e[40]=N,e[41]=L):L=e[41];let T;e[42]!==t||e[43]!==a||e[44]!==v||e[45]!==s?(T=t!==void 0&&b("button",{className:"rounded-md border border-border px-2 py-1 text-xs outline-none transition-colors hover:bg-accent focus-visible:bg-accent","data-testid":"sql-assistant-fix",disabled:a,onClick:()=>{v(!0)},type:"button",children:s("Fix this")}),e[42]=t,e[43]=a,e[44]=v,e[45]=s,e[46]=T):T=e[46];let q;e[47]!==L||e[48]!==T||e[49]!==h?(q=F("div",{className:"flex items-center gap-2",children:[h,L,T]}),e[47]=L,e[48]=T,e[49]=h,e[50]=q):q=e[50],m=F("div",{className:"flex flex-col gap-1 border-b border-border px-3 py-2","data-testid":"sql-assistant",children:[q,g!==void 0&&b("p",{className:"text-[11px] text-muted-foreground","data-testid":"sql-assistant-reason",role:"status",children:Un(g)})]}),e[2]=n,e[3]=t,e[4]=o,e[5]=a,e[6]=r,e[7]=s,e[8]=m}else m=e[8];return m},zn=l=>{const e=Y(8),{diagnostics:n,draft:t,scrollRef:o}=l;let s,r;if(e[0]!==n||e[1]!==t){r=Symbol.for("react.early_return_sentinel");e:{const a=Qn(n,t.length);if(a.length===0){r=null;break e}s=[];let m=0;for(const[g,f]of a.entries())f.start>m&&s.push(t.slice(m,f.start)),s.push(b("span",{className:fe("decoration-wavy underline underline-offset-4",f.severity==="error"?"decoration-destructive":"decoration-amber-500"),children:t.slice(f.start,f.end)},`${f.start.toString()}-${g.toString()}`)),m=f.end;s.push(t.slice(m))}e[0]=n,e[1]=t,e[2]=s,e[3]=r}else s=e[2],r=e[3];if(r!==Symbol.for("react.early_return_sentinel"))return r;let i;e[4]===Symbol.for("react.memo_cache_sentinel")?(i=fe("pointer-events-none absolute inset-0 overflow-hidden text-transparent",ut),e[4]=i):i=e[4];let c;return e[5]!==s||e[6]!==o?(c=b("div",{"aria-hidden":"true",className:i,"data-testid":"sql-diagnostics-overlay",ref:o,children:s}),e[5]=s,e[6]=o,e[7]=c):c=e[7],c},Yn={gate:"read-only",plan:"plan",schema:"schema",syntax:"syntax"},Kn=l=>{const e=Y(10),{diagnostics:n,onSelect:t}=l,o=de();if(n.length===0)return null;let s;e[0]!==o?(s=o("SQL problems"),e[0]=o,e[1]=s):s=e[1];let r;if(e[2]!==n||e[3]!==t){let c;e[5]!==t?(c=(a,m)=>b("li",{children:F("button",{className:"flex w-full items-start gap-2 px-3 py-1 text-start text-xs outline-none hover:bg-accent focus-visible:bg-accent","data-testid":"sql-problem",onClick:()=>{t(a)},type:"button",children:[b("span",{className:fe("mt-px shrink-0 rounded px-1 font-mono text-[10px] uppercase",a.severity==="error"?"bg-destructive/15 text-destructive":"bg-amber-500/15 text-amber-600"),children:Yn[a.source]}),b("span",{className:"min-w-0 text-muted-foreground",children:a.message})]})},`${a.source}-${(a.offset??m).toString()}-${m.toString()}`),e[5]=t,e[6]=c):c=e[6],r=n.map(c),e[2]=n,e[3]=t,e[4]=r}else r=e[4];let i;return e[7]!==s||e[8]!==r?(i=b("ul",{"aria-label":s,className:"max-h-24 shrink-0 overflow-y-auto border-t border-border bg-muted/30","data-testid":"sql-problems",children:r}),e[7]=s,e[8]=r,e[9]=i):i=e[9],i},Gn={minWidth:"2.75rem",paddingInline:"0.5rem"},Jn=l=>{const e=Y(64),{assistant:n,autocomplete:t,diagnostics:o,draft:s,failed:r,handlers:i,editorRef:c,gutterRef:a,listboxId:m,onGenerated:g,onPickSuggestion:f,onRevealDiagnostic:v,overlayRef:d}=l,S=de();let u,x,h,C,y,p,k,N;if(e[0]!==n||e[1]!==s||e[2]!==r||e[3]!==a||e[4]!==g){const W=s.split(`
7
- `).length;k="flex min-h-0 min-w-0 flex-1 flex-col",e[13]!==n||e[14]!==r||e[15]!==g?(N=b(jn,{assistant:n,failed:r,onGenerated:g}),e[13]=n,e[14]=r,e[15]=g,e[16]=N):N=e[16],p="flex min-h-0 min-w-0 flex-1",u="true",x="shrink-0 select-none overflow-hidden border-e border-border bg-muted/30 py-3 text-end font-mono text-xs leading-5 text-muted-foreground/60",h=a,C=Gn,y=Array.from({length:W},Vn),e[0]=n,e[1]=s,e[2]=r,e[3]=a,e[4]=g,e[5]=u,e[6]=x,e[7]=h,e[8]=C,e[9]=y,e[10]=p,e[11]=k,e[12]=N}else u=e[5],x=e[6],h=e[7],C=e[8],y=e[9],p=e[10],k=e[11],N=e[12];let L;e[17]!==u||e[18]!==x||e[19]!==h||e[20]!==C||e[21]!==y?(L=b("div",{"aria-hidden":u,className:x,ref:h,style:C,children:y}),e[17]=u,e[18]=x,e[19]=h,e[20]=C,e[21]=y,e[22]=L):L=e[22];let T;e[23]!==o||e[24]!==s||e[25]!==d?(T=b(zn,{diagnostics:o,draft:s,scrollRef:d}),e[23]=o,e[24]=s,e[25]=d,e[26]=T):T=e[26];let q;e[27]!==t||e[28]!==m?(q=t===null?void 0:`${m}-opt-${t.active.toString()}`,e[27]=t,e[28]=m,e[29]=q):q=e[29];const E=t===null?void 0:m,A=t!==null;let _;e[30]!==S?(_=S("SQL query"),e[30]=S,e[31]=_):_=e[31];let I;e[32]!==s||e[33]!==c||e[34]!==i.onBlur||e[35]!==i.onChange||e[36]!==i.onKeyDown||e[37]!==i.onScroll||e[38]!==i.onSelect||e[39]!==q||e[40]!==E||e[41]!==A||e[42]!==_?(I=b("textarea",{"aria-activedescendant":q,"aria-autocomplete":"list","aria-controls":E,"aria-expanded":A,"aria-label":_,className:`relative size-full resize-none bg-transparent outline-none ${ut}`,"data-testid":"sql-input",onBlur:i.onBlur,onChange:i.onChange,onKeyDown:i.onKeyDown,onScroll:i.onScroll,onSelect:i.onSelect,placeholder:"SELECT * FROM …",ref:c,role:"combobox",spellCheck:!1,value:s}),e[32]=s,e[33]=c,e[34]=i.onBlur,e[35]=i.onChange,e[36]=i.onKeyDown,e[37]=i.onScroll,e[38]=i.onSelect,e[39]=q,e[40]=E,e[41]=A,e[42]=_,e[43]=I):I=e[43];let B;e[44]!==t||e[45]!==m||e[46]!==f?(B=b(vn,{listboxId:m,onPick:f,state:t}),e[44]=t,e[45]=m,e[46]=f,e[47]=B):B=e[47];let D;e[48]!==T||e[49]!==I||e[50]!==B?(D=F("div",{className:"relative min-w-0 flex-1 bg-background",children:[T,I,B]}),e[48]=T,e[49]=I,e[50]=B,e[51]=D):D=e[51];let P;e[52]!==D||e[53]!==p||e[54]!==L?(P=F("div",{className:p,children:[L,D]}),e[52]=D,e[53]=p,e[54]=L,e[55]=P):P=e[55];let O;e[56]!==o||e[57]!==v?(O=b(Kn,{diagnostics:o,onSelect:v}),e[56]=o,e[57]=v,e[58]=O):O=e[58];let w;return e[59]!==P||e[60]!==O||e[61]!==k||e[62]!==N?(w=F("div",{className:k,children:[N,P,O]}),e[59]=P,e[60]=O,e[61]=k,e[62]=N,e[63]=w):w=e[63],w};function Vn(l,e){return b("div",{children:e+1},e)}const ft=[{label:"List tables",sql:"SELECT name FROM sqlite_master WHERE type = 'table' ORDER BY name;"},{label:"Table row count",sql:"SELECT COUNT(*) AS rows FROM messages;"},{label:"Recent rows",sql:"SELECT id, _creationTime, __doc__ FROM messages ORDER BY _creationTime DESC LIMIT 50;"},{label:"Index list",sql:"SELECT name, tbl_name FROM sqlite_master WHERE type = 'index' ORDER BY tbl_name;"}],Xn=l=>{const e=Y(29),{active:n,onDelete:t,onSelect:o,query:s}=l,r=de();let i;e[0]!==o||e[1]!==s.id?(i=()=>{o(s.id)},e[0]=o,e[1]=s.id,e[2]=i):i=e[2];const c=i;let a;e[3]!==t||e[4]!==s.id?(a=k=>{k.stopPropagation(),t(s.id)},e[3]=t,e[4]=s.id,e[5]=a):a=e[5];const m=a,g=n?"bg-sidebar-accent font-medium text-foreground":"text-muted-foreground";let f;e[6]!==g?(f=fe("flex min-w-0 flex-1 items-center gap-2 rounded-md px-2 py-1.5 text-start text-[13px] outline-none transition-colors hover:bg-sidebar-accent focus-visible:bg-sidebar-accent",g),e[6]=g,e[7]=f):f=e[7];const v=`sql-query-${s.id}`;let d;e[8]===Symbol.for("react.memo_cache_sentinel")?(d=b("svg",{"aria-hidden":"true",className:"size-3.5 shrink-0 opacity-70",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:b("path",{d:"M4 6h16M4 12h10M4 18h7"})}),e[8]=d):d=e[8];let S;e[9]!==s.name?(S=b("span",{className:"truncate",children:s.name}),e[9]=s.name,e[10]=S):S=e[10];let u;e[11]!==n||e[12]!==c||e[13]!==f||e[14]!==v||e[15]!==S?(u=F("button",{"aria-pressed":n,className:f,"data-testid":v,onClick:c,type:"button",children:[d,S]}),e[11]=n,e[12]=c,e[13]=f,e[14]=v,e[15]=S,e[16]=u):u=e[16];let x;e[17]!==r?(x=r("Delete query"),e[17]=r,e[18]=x):x=e[18];let h;e[19]!==r?(h=r("Delete query"),e[19]=r,e[20]=h):h=e[20];let C;e[21]===Symbol.for("react.memo_cache_sentinel")?(C=b("svg",{"aria-hidden":"true",className:"size-3.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:b("path",{d:"M5 7h14M9 7V5h6v2m-1 0v12H10V7M7 7v13h10V7"})}),e[21]=C):C=e[21];let y;e[22]!==m||e[23]!==h||e[24]!==x?(y=b("button",{"aria-label":x,className:"me-1 hidden size-6 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-destructive/10 hover:text-destructive group-hover/q:flex",onClick:m,title:h,type:"button",children:C}),e[22]=m,e[23]=h,e[24]=x,e[25]=y):y=e[25];let p;return e[26]!==y||e[27]!==u?(p=F("li",{className:"group/q flex items-center",children:[u,y]}),e[26]=y,e[27]=u,e[28]=p):p=e[28],p},Ze="sql-history-remember",Zn=(l,e)=>{const n=e.trim().toLowerCase();return n===""?[...l]:l.filter(t=>t.name.toLowerCase().includes(n))},es=l=>{const e=Y(66),{activeId:n,history:t,listRef:o,onClearHistory:s,onDelete:r,onLoadHistory:i,onLoadTemplate:c,onNew:a,onSearchChange:m,onSelect:g,onToggleRememberHistory:f,queries:v,rememberHistory:d,search:S}=l,u=de();let x,h,C,y,p;if(e[0]!==n||e[1]!==o||e[2]!==r||e[3]!==a||e[4]!==m||e[5]!==g||e[6]!==f||e[7]!==v||e[8]!==S||e[9]!==u){const I=Zn(v,S);let B;e[15]!==f?(B=$=>{f($.target.checked)},e[15]=f,e[16]=B):B=e[16],x=B,C="flex h-full w-64 shrink-0 flex-col border-e border-border bg-sidebar";let D;e[17]!==u?(D=u("Search queries…"),e[17]=u,e[18]=D):D=e[18];let P;e[19]!==m||e[20]!==S||e[21]!==D?(P=b("input",{className:"h-8 min-w-0 flex-1 rounded-md border border-border bg-background px-2 text-xs outline-none focus-visible:border-ring","data-testid":"sql-search",onChange:m,placeholder:D,type:"text",value:S}),e[19]=m,e[20]=S,e[21]=D,e[22]=P):P=e[22];let O;e[23]!==u?(O=u("New query"),e[23]=u,e[24]=O):O=e[24];let w;e[25]!==u?(w=u("New query"),e[25]=u,e[26]=w):w=e[26];let W;e[27]===Symbol.for("react.memo_cache_sentinel")?(W=b("svg",{"aria-hidden":"true",className:"size-4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.7,viewBox:"0 0 24 24",children:b("path",{d:"M12 5v14M5 12h14"})}),e[27]=W):W=e[27];let R;e[28]!==a||e[29]!==O||e[30]!==w?(R=b("button",{"aria-label":O,className:"flex size-8 shrink-0 items-center justify-center rounded-md border border-border text-foreground outline-none transition-colors hover:bg-accent focus-visible:bg-accent","data-testid":"sql-new",onClick:a,title:w,type:"button",children:W}),e[28]=a,e[29]=O,e[30]=w,e[31]=R):R=e[31],e[32]!==R||e[33]!==P?(y=F("div",{className:"flex shrink-0 items-center gap-2 border-b border-border p-2",children:[P,R]}),e[32]=R,e[33]=P,e[34]=y):y=e[34],h="flex flex-1 flex-col gap-4 overflow-y-auto p-2";let M;e[35]!==u?(M=u("Private"),e[35]=u,e[36]=M):M=e[36];let U;e[37]!==M?(U=b("p",{className:"px-1 pb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:M}),e[37]=M,e[38]=U):U=e[38],p=F("div",{children:[U,I.length===0?b("p",{className:"px-1 py-2 text-xs text-muted-foreground","data-testid":"sql-private-empty",children:u("No saved queries yet — they save to this browser as you type.")}):b("ul",{className:"flex flex-col gap-px","data-testid":"sql-private",ref:o,children:I.map($=>b(Xn,{active:n===$.id,onDelete:r,onSelect:g,query:$},$.id))})]}),e[0]=n,e[1]=o,e[2]=r,e[3]=a,e[4]=m,e[5]=g,e[6]=f,e[7]=v,e[8]=S,e[9]=u,e[10]=x,e[11]=h,e[12]=C,e[13]=y,e[14]=p}else x=e[10],h=e[11],C=e[12],y=e[13],p=e[14];let k;e[39]!==u?(k=u("Reference"),e[39]=u,e[40]=k):k=e[40];let N;e[41]!==k?(N=b("p",{className:"px-1 pb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:k}),e[41]=k,e[42]=N):N=e[42];let L;e[43]!==c?(L=ft.map(I=>b("li",{children:F("button",{className:"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-start text-[13px] text-muted-foreground outline-none transition-colors hover:bg-sidebar-accent hover:text-foreground focus-visible:bg-sidebar-accent","data-sql":I.sql,onClick:c,type:"button",children:[b("svg",{"aria-hidden":"true",className:"size-3.5 shrink-0 opacity-70",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:b("path",{d:"M7 4h7l4 4v12H7zM14 4v4h4"})}),I.label]})},I.label)),e[43]=c,e[44]=L):L=e[44];let T;e[45]!==L?(T=b("ul",{className:"flex flex-col gap-px",children:L}),e[45]=L,e[46]=T):T=e[46];let q;e[47]!==N||e[48]!==T?(q=F("div",{children:[N,T]}),e[47]=N,e[48]=T,e[49]=q):q=e[49];let E;e[50]!==t||e[51]!==s||e[52]!==i||e[53]!==x||e[54]!==d||e[55]!==u?(E=t.length>0&&F("div",{children:[F("div",{className:"flex items-center justify-between px-1 pb-1",children:[b("p",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:u("History")}),b("button",{className:"rounded px-1 text-[11px] text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:text-foreground","data-testid":"sql-history-clear",onClick:s,type:"button",children:u("Clear history")})]}),F("label",{className:"flex cursor-pointer items-center gap-1.5 px-1 pb-1.5 text-[11px] text-muted-foreground",htmlFor:Ze,children:[b("input",{checked:d,"data-testid":"sql-history-remember",id:Ze,onChange:x,type:"checkbox"}),u("Keep history on this browser")]}),b("ul",{className:"flex flex-col gap-px","data-testid":"sql-history",children:t.map(I=>b("li",{children:F("button",{className:"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-start text-[13px] text-muted-foreground outline-none transition-colors hover:bg-sidebar-accent hover:text-foreground focus-visible:bg-sidebar-accent","data-sql":I.sql,"data-testid":"sql-history-item",onClick:i,title:I.sql,type:"button",children:[b("svg",{"aria-hidden":"true",className:"size-3.5 shrink-0 opacity-70",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:b("path",{d:"M12 8v4l3 2M12 21a9 9 0 1 1 0-18 9 9 0 0 1 0 18Z"})}),b("span",{className:"truncate font-mono",children:I.sql})]})},`${I.at.toString()}:${I.sql}`))})]}),e[50]=t,e[51]=s,e[52]=i,e[53]=x,e[54]=d,e[55]=u,e[56]=E):E=e[56];let A;e[57]!==h||e[58]!==E||e[59]!==p||e[60]!==q?(A=F("div",{className:h,children:[p,q,E]}),e[57]=h,e[58]=E,e[59]=p,e[60]=q,e[61]=A):A=e[61];let _;return e[62]!==A||e[63]!==C||e[64]!==y?(_=F("aside",{className:C,children:[y,A]}),e[62]=A,e[63]=C,e[64]=y,e[65]=_):_=e[65],_},Ie=l=>`border-b-2 px-3 py-2 text-sm outline-none transition-colors ${l?"border-foreground font-medium text-foreground":"border-transparent text-muted-foreground hover:text-foreground"}`,ts=l=>{const e=Y(96),{assistant:n,chart:t,className:o,error:s,onFormat:r,onInferChart:i,onRun:c,onSelectStatement:a,onShardKeyChange:m,onShowChart:g,onShowExplain:f,onShowResults:v,onToggleSplit:d,pane:S,result:u,running:x,script:h,shardKey:C,splitView:y}=l,p=de(),k=S==="results";let N;e[0]!==k?(N=Ie(k),e[0]=k,e[1]=N):N=e[1];let L;e[2]!==p?(L=p("Results"),e[2]=p,e[3]=L):L=e[3];let T;e[4]!==v||e[5]!==N||e[6]!==L?(T=b("button",{className:N,"data-testid":"sql-tab-results",onClick:v,type:"button",children:L}),e[4]=v,e[5]=N,e[6]=L,e[7]=T):T=e[7];const q=S==="chart";let E;e[8]!==q?(E=Ie(q),e[8]=q,e[9]=E):E=e[9];let A;e[10]!==p?(A=p("Chart"),e[10]=p,e[11]=A):A=e[11];let _;e[12]!==g||e[13]!==E||e[14]!==A?(_=b("button",{className:E,"data-testid":"sql-tab-chart",onClick:g,type:"button",children:A}),e[12]=g,e[13]=E,e[14]=A,e[15]=_):_=e[15];let I;e[16]!==n||e[17]!==i||e[18]!==S||e[19]!==u||e[20]!==p?(I=!n.unavailable&&S==="chart"&&u!==null&&b("button",{className:Ie(!1),"data-testid":"sql-infer-chart",disabled:n.pending("chart"),onClick:i,type:"button",children:n.pending("chart")?p("Thinking…"):p("Suggest chart")}),e[16]=n,e[17]=i,e[18]=S,e[19]=u,e[20]=p,e[21]=I):I=e[21];const B=S==="explain";let D;e[22]!==B?(D=Ie(B),e[22]=B,e[23]=D):D=e[23];let P;e[24]!==p?(P=p("Explain"),e[24]=p,e[25]=P):P=e[25];let O;e[26]!==f||e[27]!==D||e[28]!==P?(O=b("button",{className:D,"data-testid":"sql-tab-explain",onClick:f,type:"button",children:P}),e[26]=f,e[27]=D,e[28]=P,e[29]=O):O=e[29];let w;e[30]!==p?(w=p("Split editor and results"),e[30]=p,e[31]=w):w=e[31];const W=`inline-flex items-center rounded-md border border-border px-2 py-1.5 outline-none transition-colors hover:bg-accent focus-visible:bg-accent ${y?"bg-accent text-foreground":"text-muted-foreground"}`;let R;e[32]!==p?(R=p("Split editor and results"),e[32]=p,e[33]=R):R=e[33];let M;e[34]===Symbol.for("react.memo_cache_sentinel")?(M=F("svg",{"aria-hidden":"true",className:"size-4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.7,viewBox:"0 0 24 24",children:[b("rect",{height:"16",rx:"2",width:"18",x:"3",y:"4"}),b("path",{d:"M12 4v16"})]}),e[34]=M):M=e[34];let U;e[35]!==d||e[36]!==y||e[37]!==w||e[38]!==W||e[39]!==R?(U=b("button",{"aria-label":w,"aria-pressed":y,className:W,"data-testid":"sql-split-toggle",onClick:d,title:R,type:"button",children:M}),e[35]=d,e[36]=y,e[37]=w,e[38]=W,e[39]=R,e[40]=U):U=e[40];let $;e[41]!==u?($=u!==null&&u.columns.length>0&&b(Et,{columns:u.columns,name:"query-result",rows:u.rows}),e[41]=u,e[42]=$):$=e[42];let X;e[43]!==p?(X=p("Format"),e[43]=p,e[44]=X):X=e[44];let Z;e[45]!==r||e[46]!==x||e[47]!==X?(Z=b("button",{className:"inline-flex items-center rounded-md border border-border px-3 py-1.5 text-xs font-medium text-foreground outline-none transition-colors hover:bg-accent focus-visible:bg-accent disabled:pointer-events-none disabled:opacity-50","data-testid":"sql-format",disabled:x,onClick:r,type:"button",children:X}),e[45]=r,e[46]=x,e[47]=X,e[48]=Z):Z=e[48];let ee;e[49]!==m||e[50]!==C?(ee=b(Nt,{onChange:m,testId:"sql-shard-input",value:C}),e[49]=m,e[50]=C,e[51]=ee):ee=e[51];let te;e[52]!==x||e[53]!==p?(te=p(x?"Running…":"Run"),e[52]=x,e[53]=p,e[54]=te):te=e[54];let ie;e[55]===Symbol.for("react.memo_cache_sentinel")?(ie=b("kbd",{className:"rounded border border-primary-foreground/30 px-1 font-sans text-[10px]",children:"⌘↵"}),e[55]=ie):ie=e[55];let G;e[56]!==c||e[57]!==x||e[58]!==te?(G=F("button",{className:"inline-flex items-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground outline-none transition-colors hover:bg-primary/90 focus-visible:bg-primary/90 disabled:pointer-events-none disabled:opacity-50","data-testid":"sql-run",disabled:x,onClick:c,type:"button",children:[te,ie]}),e[56]=c,e[57]=x,e[58]=te,e[59]=G):G=e[59];let Q;e[60]!==U||e[61]!==$||e[62]!==Z||e[63]!==ee||e[64]!==G?(Q=F("div",{className:"ms-auto flex items-center gap-2",children:[U,$,Z,ee,G]}),e[60]=U,e[61]=$,e[62]=Z,e[63]=ee,e[64]=G,e[65]=Q):Q=e[65];let ne;e[66]!==O||e[67]!==Q||e[68]!==T||e[69]!==_||e[70]!==I?(ne=F("div",{className:"flex shrink-0 items-center gap-2 border-b border-border pe-2",children:[T,_,I,O,Q]}),e[66]=O,e[67]=Q,e[68]=T,e[69]=_,e[70]=I,e[71]=ne):ne=e[71];let se;e[72]!==a||e[73]!==h?(se=h!==void 0&&b("div",{className:"flex shrink-0 flex-wrap items-center gap-1 border-b border-border px-3 py-1.5","data-testid":"sql-statements",children:h.runs.map((z,J)=>b("button",{"aria-pressed":J===h.selected,className:`rounded-md border px-2 py-0.5 font-mono text-[11px] outline-none transition-colors ${J===h.selected?"border-foreground text-foreground":"border-border text-muted-foreground hover:text-foreground"} ${z.error===null?"":"border-destructive/50 text-destructive"}`,"data-testid":`sql-statement-${J.toString()}`,onClick:()=>{a(J)},title:z.sql,type:"button",children:J+1},`${J.toString()}:${z.sql}`))}),e[72]=a,e[73]=h,e[74]=se):se=e[74];let oe;e[75]!==s?(oe=s!==null&&b(kt,{className:"m-3 font-mono text-xs",testId:"sql-error",variant:"destructive",children:s}),e[75]=s,e[76]=oe):oe=e[76];let le;e[77]!==s||e[78]!==u||e[79]!==p?(le=s===null&&u===null&&b("p",{className:"p-4 text-sm text-muted-foreground","data-testid":"sql-empty",children:p("Click Run to execute your query.")}),e[77]=s,e[78]=u,e[79]=p,e[80]=le):le=e[80];let re;e[81]!==t||e[82]!==s||e[83]!==S||e[84]!==u||e[85]!==p?(re=s===null&&u!==null&&F("div",{"data-testid":"sql-result",children:[S==="chart"?b(wt,{axes:t,result:u}):b(Ct,{result:u}),b("p",{className:"border-t border-border px-3 py-1.5 text-xs text-muted-foreground","data-testid":"sql-count",children:u.truncated?p("Showing the first {max} of {count} rows.",{count:u.rowCount,max:u.rows.length}):p("{count} rows",{count:u.rowCount})})]}),e[81]=t,e[82]=s,e[83]=S,e[84]=u,e[85]=p,e[86]=re):re=e[86];let H;e[87]!==oe||e[88]!==le||e[89]!==re?(H=F("div",{className:"min-h-0 flex-1 overflow-auto",children:[oe,le,re]}),e[87]=oe,e[88]=le,e[89]=re,e[90]=H):H=e[90];let j;return e[91]!==o||e[92]!==ne||e[93]!==se||e[94]!==H?(j=F("div",{className:o,children:[ne,se,H]}),e[91]=o,e[92]=ne,e[93]=se,e[94]=H,e[95]=j):j=e[95],j},ns=(l,e)=>l.trim()===""?e:(l.split(`
8
- `)[0]??l).slice(0,24),ss=l=>{l?.focus(),l?.select()},os=l=>{const e=Y(14),{initial:n,onCancel:t,onCommit:o,placeholder:s,testId:r}=l,i=de();let c;e[0]!==o?(c=d=>{o(d.currentTarget.value.trim())},e[0]=o,e[1]=c):c=e[1];const a=c;let m;e[2]!==t||e[3]!==o?(m=d=>{d.key==="Enter"?o(d.currentTarget.value.trim()):d.key==="Escape"&&t()},e[2]=t,e[3]=o,e[4]=m):m=e[4];const g=m;let f;e[5]!==i?(f=i("Tab title"),e[5]=i,e[6]=f):f=e[6];let v;return e[7]!==n||e[8]!==a||e[9]!==g||e[10]!==s||e[11]!==f||e[12]!==r?(v=b("input",{"aria-label":f,className:"w-40 rounded border border-ring bg-background px-1 py-0.5 text-xs outline-none","data-testid":r,defaultValue:n,onBlur:a,onKeyDown:g,placeholder:s,ref:ss,type:"text"}),e[7]=n,e[8]=a,e[9]=g,e[10]=s,e[11]=f,e[12]=r,e[13]=v):v=e[13],v},ls=l=>{const e=Y(29),{idBase:n,onDiscard:t,onKeep:o}=l,s=de(),r=`sql-tab-close-prompt-${n}`;let i;e[0]!==s?(i=s("Discard?"),e[0]=s,e[1]=i):i=e[1];let c;e[2]!==i?(c=b("span",{className:"text-[11px] text-muted-foreground",children:i}),e[2]=i,e[3]=c):c=e[3];let a;e[4]!==s?(a=s("Discard changes"),e[4]=s,e[5]=a):a=e[5];const m=`sql-tab-close-confirm-${n}`;let g;e[6]!==s?(g=s("Discard changes"),e[6]=s,e[7]=g):g=e[7];let f;e[8]===Symbol.for("react.memo_cache_sentinel")?(f=b("svg",{"aria-hidden":"true",className:"size-3",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.4,viewBox:"0 0 24 24",children:b("path",{d:"M5 13l4 4L19 7"})}),e[8]=f):f=e[8];let v;e[9]!==t||e[10]!==a||e[11]!==m||e[12]!==g?(v=b("button",{"aria-label":a,className:"flex size-5 items-center justify-center rounded text-destructive hover:bg-destructive/10","data-testid":m,onClick:t,title:g,type:"button",children:f}),e[9]=t,e[10]=a,e[11]=m,e[12]=g,e[13]=v):v=e[13];let d;e[14]!==s?(d=s("Keep editing"),e[14]=s,e[15]=d):d=e[15];const S=`sql-tab-close-cancel-${n}`;let u;e[16]!==s?(u=s("Keep editing"),e[16]=s,e[17]=u):u=e[17];let x;e[18]===Symbol.for("react.memo_cache_sentinel")?(x=b("svg",{"aria-hidden":"true",className:"size-3",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.4,viewBox:"0 0 24 24",children:b("path",{d:"M6 6l12 12M18 6 6 18"})}),e[18]=x):x=e[18];let h;e[19]!==o||e[20]!==S||e[21]!==u||e[22]!==d?(h=b("button",{"aria-label":d,className:"flex size-5 items-center justify-center rounded text-muted-foreground hover:bg-accent","data-testid":S,onClick:o,title:u,type:"button",children:x}),e[19]=o,e[20]=S,e[21]=u,e[22]=d,e[23]=h):h=e[23];let C;return e[24]!==r||e[25]!==h||e[26]!==c||e[27]!==v?(C=F("span",{className:"flex shrink-0 items-center gap-1","data-testid":r,role:"group",children:[c,v,h]}),e[24]=r,e[25]=h,e[26]=c,e[27]=v,e[28]=C):C=e[28],C},rs=l=>{const e=Y(47),{active:n,canClose:t,onClose:o,onMenu:s,onRename:r,onSelect:i,tab:c}=l,a=de(),[m,g]=ce(!1),[f,v]=ce(!1);let d;e[0]!==s||e[1]!==c.id?(d=$=>{s(c.id,$)},e[0]=s,e[1]=c.id,e[2]=d):d=e[2];const S=d;let u;e[3]!==i||e[4]!==c.id?(u=()=>{i(c.id)},e[3]=i,e[4]=c.id,e[5]=u):u=e[5];const x=u;let h;e[6]===Symbol.for("react.memo_cache_sentinel")?(h=()=>{g(!0)},e[6]=h):h=e[6];const C=h;let y;e[7]!==o||e[8]!==c?(y=$=>{$.stopPropagation(),dt(c)?v(!0):o(c.id)},e[7]=o,e[8]=c,e[9]=y):y=e[9];const p=y;let k;e[10]!==o||e[11]!==c.id?(k=$=>{$.stopPropagation(),v(!1),o(c.id)},e[10]=o,e[11]=c.id,e[12]=k):k=e[12];const N=k;let L;e[13]===Symbol.for("react.memo_cache_sentinel")?(L=$=>{$.stopPropagation(),v(!1)},e[13]=L):L=e[13];const T=L;let q;e[14]!==r||e[15]!==c.id?(q=$=>{r(c.id,$),g(!1)},e[14]=r,e[15]=c.id,e[16]=q):q=e[16];const E=q;let A;e[17]===Symbol.for("react.memo_cache_sentinel")?(A=()=>{g(!1)},e[17]=A):A=e[17];const _=A;let I;e[18]!==c.name?(I=c.name.trim(),e[18]=c.name,e[19]=I):I=e[19];const B=I;let D;e[20]!==a||e[21]!==c.sql?(D=ns(c.sql,a("Untitled")),e[20]=a,e[21]=c.sql,e[22]=D):D=e[22];const P=D,O=n?"bg-background text-foreground":"bg-muted/40 text-muted-foreground hover:text-foreground";let w;e[23]!==O?(w=fe("group/tab flex shrink-0 items-center gap-1 border-e border-border ps-3 pe-1.5 text-xs",O),e[23]=O,e[24]=w):w=e[24];const W=`sql-tab-${c.id}`;let R;e[25]!==n||e[26]!==E||e[27]!==B||e[28]!==P||e[29]!==m||e[30]!==x||e[31]!==a||e[32]!==c.id?(R=m?b(os,{initial:B,onCancel:_,onCommit:E,placeholder:P,testId:`sql-tab-rename-${c.id}`}):b("button",{"aria-pressed":n,className:"max-w-40 truncate py-1.5 outline-none","data-testid":`sql-tab-select-${c.id}`,onClick:x,onDoubleClick:C,title:a("Double-click to rename"),type:"button",children:B===""?P:B}),e[25]=n,e[26]=E,e[27]=B,e[28]=P,e[29]=m,e[30]=x,e[31]=a,e[32]=c.id,e[33]=R):R=e[33];let M;e[34]!==t||e[35]!==N||e[36]!==f||e[37]!==p||e[38]!==a||e[39]!==c.id?(M=t&&(f?b(ls,{idBase:c.id,onDiscard:N,onKeep:T}):b("button",{"aria-label":a("Close tab"),className:"flex size-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-destructive/10 hover:text-destructive","data-testid":`sql-tab-close-${c.id}`,onClick:p,title:a("Close tab"),type:"button",children:b("svg",{"aria-hidden":"true",className:"size-3",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,viewBox:"0 0 24 24",children:b("path",{d:"M6 6l12 12M18 6 6 18"})})})),e[34]=t,e[35]=N,e[36]=f,e[37]=p,e[38]=a,e[39]=c.id,e[40]=M):M=e[40];let U;return e[41]!==S||e[42]!==w||e[43]!==W||e[44]!==R||e[45]!==M?(U=F("div",{className:w,"data-testid":W,onContextMenu:S,children:[R,M]}),e[41]=S,e[42]=w,e[43]=W,e[44]=R,e[45]=M,e[46]=U):U=e[46],U},is=l=>{const e=Y(43),{model:n,onSelect:t}=l,o=de(),{activeTab:s,addEditorTab:r,cancelBulk:i,closeEditorTab:c,closeTabMenu:a,confirmBulk:m,menuStyle:g,onBackdropContextMenu:f,onCloseAll:v,onCloseOthers:d,onCloseToRight:S,openTabMenu:u,pendingBulk:x,renameTab:h,tabMenu:C,tabs:y}=n;let p;if(e[0]!==s||e[1]!==c||e[2]!==t||e[3]!==u||e[4]!==h||e[5]!==y){let I;e[7]!==s||e[8]!==c||e[9]!==t||e[10]!==u||e[11]!==h||e[12]!==y.length?(I=B=>b(rs,{active:B.id===s.id,canClose:y.length>1,onClose:c,onMenu:u,onRename:h,onSelect:t,tab:B},B.id),e[7]=s,e[8]=c,e[9]=t,e[10]=u,e[11]=h,e[12]=y.length,e[13]=I):I=e[13],p=y.map(I),e[0]=s,e[1]=c,e[2]=t,e[3]=u,e[4]=h,e[5]=y,e[6]=p}else p=e[6];let k;e[14]!==o?(k=o("New tab"),e[14]=o,e[15]=k):k=e[15];const N=y.length>=Ye;let L;e[16]!==o?(L=o("New tab"),e[16]=o,e[17]=L):L=e[17];let T;e[18]===Symbol.for("react.memo_cache_sentinel")?(T=b("svg",{"aria-hidden":"true",className:"size-4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.7,viewBox:"0 0 24 24",children:b("path",{d:"M12 5v14M5 12h14"})}),e[18]=T):T=e[18];let q;e[19]!==r||e[20]!==k||e[21]!==N||e[22]!==L?(q=b("button",{"aria-label":k,className:"flex size-8 shrink-0 items-center justify-center text-muted-foreground outline-none transition-colors hover:bg-accent hover:text-foreground focus-visible:bg-accent disabled:pointer-events-none disabled:opacity-40","data-testid":"sql-tab-add",disabled:N,onClick:r,title:L,type:"button",children:T}),e[19]=r,e[20]=k,e[21]=N,e[22]=L,e[23]=q):q=e[23];let E;e[24]!==p||e[25]!==q?(E=F("div",{className:"flex shrink-0 items-stretch overflow-x-auto border-b border-border bg-muted/30","data-testid":"sql-tab-strip",role:"tablist",children:[p,q]}),e[24]=p,e[25]=q,e[26]=E):E=e[26];let A;e[27]!==i||e[28]!==a||e[29]!==m||e[30]!==g||e[31]!==f||e[32]!==v||e[33]!==d||e[34]!==S||e[35]!==x||e[36]!==o||e[37]!==C||e[38]!==y?(A=C!==null&&F(He,{children:[b("div",{className:"fixed inset-0 z-40","data-testid":"sql-tab-menu-backdrop",onClick:a,onContextMenu:f,role:"presentation"}),b("div",{className:"fixed z-50 min-w-44 rounded-md border border-border bg-popover py-1 text-popover-foreground shadow-md","data-testid":"sql-tab-menu",role:"menu",style:g,children:x===null?F(He,{children:[b("button",{className:"flex w-full items-center px-3 py-1.5 text-start text-xs outline-none hover:bg-accent focus-visible:bg-accent disabled:pointer-events-none disabled:opacity-40","data-testid":"sql-tab-menu-close-others",disabled:y.length<=1,onClick:d,role:"menuitem",type:"button",children:o("Close other tabs")}),b("button",{className:"flex w-full items-center px-3 py-1.5 text-start text-xs outline-none hover:bg-accent focus-visible:bg-accent disabled:pointer-events-none disabled:opacity-40","data-testid":"sql-tab-menu-close-right",disabled:y.findIndex(I=>I.id===C.id)>=y.length-1,onClick:S,role:"menuitem",type:"button",children:o("Close tabs to the right")}),b("button",{className:"flex w-full items-center px-3 py-1.5 text-start text-xs outline-none hover:bg-accent focus-visible:bg-accent","data-testid":"sql-tab-menu-close-all",onClick:v,role:"menuitem",type:"button",children:o("Close all tabs")})]}):F("div",{className:"px-3 py-1.5","data-testid":"sql-tab-menu-confirm",children:[b("p",{className:"pb-1.5 text-xs text-muted-foreground",children:o("Discard unsaved tabs?")}),F("div",{className:"flex items-center gap-1.5",children:[b("button",{className:"rounded px-2 py-1 text-xs font-medium text-destructive outline-none hover:bg-destructive/10 focus-visible:bg-destructive/10","data-testid":"sql-tab-menu-confirm-discard",onClick:m,type:"button",children:o("Discard")}),b("button",{className:"rounded px-2 py-1 text-xs text-muted-foreground outline-none hover:bg-accent focus-visible:bg-accent","data-testid":"sql-tab-menu-confirm-cancel",onClick:i,type:"button",children:o("Cancel")})]})]})})]}),e[27]=i,e[28]=a,e[29]=m,e[30]=g,e[31]=f,e[32]=v,e[33]=d,e[34]=S,e[35]=x,e[36]=o,e[37]=C,e[38]=y,e[39]=A):A=e[39];let _;return e[40]!==E||e[41]!==A?(_=F(He,{children:[E,A]}),e[40]=E,e[41]=A,e[42]=_):_=e[42],_},as=Oe(_e.runSql),cs="lunora-studio-sql-split-view",ds=()=>we(ft[0]?.sql??""),Rs=l=>{const e=Y(112),{initialShardKey:n}=l,t=Ue(),o=Mn(ds),{activeTab:s,output:r,patchActiveOutput:i,patchActiveTab:c,setActiveTabId:a,unlinkQuery:m}=o;let g;e[0]!==i||e[1]!==c?(g=(K,ae)=>{c({activeId:ae,sql:K}),i({chart:void 0,error:null,failed:void 0,result:null,script:void 0})},e[0]=i,e[1]=c,e[2]=g):g=e[2];const f=g;let v;e[3]!==f||e[4]!==m?(v={loadIntoActiveTab:f,unlinkQuery:m},e[3]=f,e[4]=m,e[5]=v):v=e[5];const d=Fn(v),{recordHistory:S,updateQuerySql:u}=d,x=s.sql,{activeId:h}=s,{chart:C,error:y,failed:p,result:k,running:N}=r,L=r.pane,[T,q]=ce(n??""),[E,A]=je(cs,!1),{probe:_,schema:I}=wn(T);let B;e[6]!==h||e[7]!==c||e[8]!==u?(B=K=>{c({sql:K}),h!==null&&u(h,K)},e[6]=h,e[7]=c,e[8]=u,e[9]=B):B=e[9];const D=B,P=ln(x,I,T),O=vt(T);let w;e[10]!==O||e[11]!==i||e[12]!==k?(w=()=>{if(k===null)return;ue((async()=>{const ae=await O.inferChart({columns:k.columns,rowCount:k.rowCount,types:Object.fromEntries(k.columns.map(V=>[V,typeof(k.rows[0]?.[V]??"")]))});i({chart:ae})})())},e[10]=O,e[11]=i,e[12]=k,e[13]=w):w=e[13];const W=w;let R;e[14]!==t||e[15]!==S||e[16]!==T?(R=async K=>{try{const ae=await t.query(as,{sql:K},qe(T));return S(K),{error:null,result:ae,sql:K}}catch(ae){return{error:gt(ae),result:null,sql:K}}},e[14]=t,e[15]=S,e[16]=T,e[17]=R):R=e[17];const M=R;let U;e[18]!==x||e[19]!==i||e[20]!==M||e[21]!==T?(U=async K=>{if(x.trim()==="")return;i({running:!0});const ae=K==="explain"?Qe(Dt(x),0):lt(x),V=[];for(const Te of ae){const mt={error:Te.rejection?.message??"",result:null,sql:Te.sql};V.push(Te.rejection===void 0?await M(Te.sql):mt)}xt(T);const Ke=Math.max(V.length-1,0),ye=V[Ke];i({chart:void 0,error:ye?.error??null,failed:ye?.error===null||ye===void 0?void 0:{error:ye.error,sql:ye.sql},pane:K,result:ye?.result??null,running:!1,script:V.length>1?{runs:V,selected:Ke}:void 0})},e[18]=x,e[19]=i,e[20]=M,e[21]=T,e[22]=U):U=e[22];const $=U;let X;e[23]!==r.script?.runs||e[24]!==i?(X=K=>{const ae=r.script?.runs,V=ae?.[K];ae===void 0||V===void 0||i({chart:void 0,error:V.error,failed:V.error===null?void 0:{error:V.error,sql:V.sql},result:V.result,script:{runs:ae,selected:K}})},e[23]=r.script?.runs,e[24]=i,e[25]=X):X=e[25];const Z=X;let ee;e[26]!==$?(ee=()=>{ue($("results"))},e[26]=$,e[27]=ee):ee=e[27];const te=ee;let ie;e[28]!==r.pane||e[29]!==$?(ie=()=>{ue($(r.pane))},e[28]=r.pane,e[29]=$,e[30]=ie):ie=e[30];let G;e[31]!==_||e[32]!==I||e[33]!==D||e[34]!==ie?(G={onSubmit:ie,probe:_,schema:I,setDraft:D},e[31]=_,e[32]=I,e[33]=D,e[34]=ie,e[35]=G):G=e[35];const Q=kn(G),{closeAutocomplete:ne}=Q;let se;e[36]!==x||e[37]!==D?(se=()=>{D(Wt(x))},e[36]=x,e[37]=D,e[38]=se):se=e[38];const oe=se;let le;e[39]!==ne||e[40]!==a?(le=K=>{ne(),a(K)},e[39]=ne,e[40]=a,e[41]=le):le=e[41];const re=le;let H;e[42]!==i?(H=()=>{i({pane:"results"})},e[42]=i,e[43]=H):H=e[43];const j=H;let z;e[44]!==$?(z=()=>{ue($("explain"))},e[44]=$,e[45]=z):z=e[45];const J=z;let me;e[46]!==i?(me=()=>{i({pane:"chart"})},e[46]=i,e[47]=me):me=e[47];const De=me;let ke;e[48]!==A||e[49]!==E?(ke=()=>{A(!E)},e[48]=A,e[49]=E,e[50]=ke):ke=e[50];const Me=ke,$e=E?"flex min-h-0 flex-1 flex-row":"flex min-h-0 flex-1 flex-col",Be=E?"flex w-2/5 min-h-0 min-w-0 shrink-0 flex-col border-s border-border":"flex h-2/5 min-h-0 shrink-0 flex-col border-t border-border";let he;e[51]!==h||e[52]!==d.clearHistory||e[53]!==d.deleteQuery||e[54]!==d.history||e[55]!==d.listRef||e[56]!==d.loadFromHistory||e[57]!==d.loadTemplate||e[58]!==d.newQuery||e[59]!==d.onSearchChange||e[60]!==d.queries||e[61]!==d.rememberHistory||e[62]!==d.search||e[63]!==d.selectQuery||e[64]!==d.setRememberHistory?(he=b(es,{activeId:h,history:d.history,listRef:d.listRef,onClearHistory:d.clearHistory,onDelete:d.deleteQuery,onLoadHistory:d.loadFromHistory,onLoadTemplate:d.loadTemplate,onNew:d.newQuery,onSearchChange:d.onSearchChange,onSelect:d.selectQuery,onToggleRememberHistory:d.setRememberHistory,queries:d.queries,rememberHistory:d.rememberHistory,search:d.search}),e[51]=h,e[52]=d.clearHistory,e[53]=d.deleteQuery,e[54]=d.history,e[55]=d.listRef,e[56]=d.loadFromHistory,e[57]=d.loadTemplate,e[58]=d.newQuery,e[59]=d.onSearchChange,e[60]=d.queries,e[61]=d.rememberHistory,e[62]=d.search,e[63]=d.selectQuery,e[64]=d.setRememberHistory,e[65]=he):he=e[65];let pe;e[66]!==o||e[67]!==re?(pe=b(is,{model:o,onSelect:re}),e[66]=o,e[67]=re,e[68]=pe):pe=e[68];let be;e[69]!==O||e[70]!==P||e[71]!==x||e[72]!==p||e[73]!==D||e[74]!==Q.autocompleteState||e[75]!==Q.editorRef||e[76]!==Q.gutterRef||e[77]!==Q.handlers||e[78]!==Q.listboxId||e[79]!==Q.onPickSuggestion||e[80]!==Q.overlayRef||e[81]!==Q.revealDiagnostic?(be=b(Jn,{assistant:O,autocomplete:Q.autocompleteState,diagnostics:P,draft:x,editorRef:Q.editorRef,failed:p,gutterRef:Q.gutterRef,handlers:Q.handlers,listboxId:Q.listboxId,onGenerated:D,onPickSuggestion:Q.onPickSuggestion,onRevealDiagnostic:Q.revealDiagnostic,overlayRef:Q.overlayRef}),e[69]=O,e[70]=P,e[71]=x,e[72]=p,e[73]=D,e[74]=Q.autocompleteState,e[75]=Q.editorRef,e[76]=Q.gutterRef,e[77]=Q.handlers,e[78]=Q.listboxId,e[79]=Q.onPickSuggestion,e[80]=Q.overlayRef,e[81]=Q.revealDiagnostic,e[82]=be):be=e[82];let ge;e[83]!==O||e[84]!==y||e[85]!==oe||e[86]!==W||e[87]!==C||e[88]!==te||e[89]!==Z||e[90]!==r.script||e[91]!==k||e[92]!==Be||e[93]!==N||e[94]!==T||e[95]!==De||e[96]!==J||e[97]!==j||e[98]!==E||e[99]!==L||e[100]!==Me?(ge=b(ts,{assistant:O,chart:C,className:Be,error:y,onFormat:oe,onInferChart:W,onRun:te,onSelectStatement:Z,onShardKeyChange:q,onShowChart:De,onShowExplain:J,onShowResults:j,onToggleSplit:Me,pane:L,result:k,running:N,script:r.script,shardKey:T,splitView:E}),e[83]=O,e[84]=y,e[85]=oe,e[86]=W,e[87]=C,e[88]=te,e[89]=Z,e[90]=r.script,e[91]=k,e[92]=Be,e[93]=N,e[94]=T,e[95]=De,e[96]=J,e[97]=j,e[98]=E,e[99]=L,e[100]=Me,e[101]=ge):ge=e[101];let xe;e[102]!==be||e[103]!==ge||e[104]!==$e?(xe=F("div",{className:$e,children:[be,ge]}),e[102]=be,e[103]=ge,e[104]=$e,e[105]=xe):xe=e[105];let ve;e[106]!==pe||e[107]!==xe?(ve=F("div",{className:"flex min-w-0 flex-1 flex-col",children:[pe,xe]}),e[106]=pe,e[107]=xe,e[108]=ve):ve=e[108];let Ee;return e[109]!==he||e[110]!==ve?(Ee=F("div",{className:"flex h-full min-w-0","data-testid":"lunora-sql-editor",children:[he,ve]}),e[109]=he,e[110]=ve,e[111]=Ee):Ee=e[111],Ee};export{Rs as SqlEditorPanel};
4
+ `);return e.join("")},Lt=/^(?:explain\s+(?:query\s+plan\s+)?)?(?:select|with)\b/iu,It=/\b(?:alter|attach|create|delete|detach|drop|insert|pragma|reindex|replace|truncate|update|vacuum)\b/iu,qt=/^\w+/u,At=/;\s*$/u,_t=/\s/u,ot=l=>{let e=0;for(;e<l.length;){const n=l[e];if(n!==void 0&&_t.test(n))e+=1;else if(n==="-"&&l[e+1]==="-")e=tt(l,e);else if(n==="/"&&l[e+1]==="*"){const t=nt(l,e);if(t===-1)break;e=t}else break}return e},Ot=l=>{const e=ot(l),n=l.slice(e).trimEnd();if(n==="")return{code:"SQL_EMPTY",message:"the query is empty"};const o=(st(n)??n).replace(At,""),s=n.slice(0,o.length),r=o.indexOf(";");if(r!==-1)return{code:"SQL_MULTIPLE_STATEMENTS",length:1,message:"only a single statement may be run",offset:e+r};const i="the SQL editor is read-only — only SELECT / WITH / EXPLAIN queries are allowed";if(!Lt.test(s))return{code:"SQL_NOT_READONLY",length:qt.exec(s)?.[0].length??1,message:i,offset:e};const c=It.exec(s);if(c!==null)return{code:"SQL_NOT_READONLY",length:c[0].length,message:`${i} (\`${c[0].toUpperCase()}\` is not allowed)`,offset:e+c.index}},Dt=/^explain\b/iu,Mt=l=>Dt.test(l.slice(ot(l)))?l:`EXPLAIN QUERY PLAN ${l}`,Fe=(l,e)=>{const n=l.trim();if(n==="")return[];const t=e+l.indexOf(n),o=Ot(n);return o?.code==="SQL_EMPTY"?[]:[o===void 0?{offset:t,sql:n}:{offset:t,rejection:o,sql:n}]},lt=l=>{const e=st(l);if(e===void 0)return Fe(l,0);const n=[];let t=0;for(let o=0;o<=e.length;o+=1)o!==e.length&&e[o]!==";"||(n.push(...Fe(l.slice(t,o),t)),t=o+1);return n},$t=["ORDER BY","GROUP BY","LEFT JOIN","RIGHT JOIN","INNER JOIN","OUTER JOIN","CROSS JOIN","EXPLAIN QUERY PLAN","SELECT","DISTINCT","FROM","WHERE","HAVING","LIMIT","OFFSET","JOIN","ON","AND","OR","AS","ASC","DESC","WITH","UNION","EXPLAIN"],Bt=["FROM","WHERE","ORDER BY","GROUP BY","HAVING","LIMIT","OFFSET","UNION","JOIN","LEFT JOIN","RIGHT JOIN","INNER JOIN","OUTER JOIN","CROSS JOIN"],Ae=String.fromCodePoint(0),Ht=new RegExp(`${Ae}${String.raw`(\d+)`}${Ae}`,"gu"),Pt=$t.map(l=>({pattern:new RegExp(String.raw`\b${l.replaceAll(" ",String.raw`\s+`)}\b`,"giu"),replacement:l})),Wt=Bt.map(l=>({pattern:new RegExp(String.raw`\s+${l.replaceAll(" ",String.raw`\s+`)}\b`,"gu"),replacement:`
5
+ ${l}`})),Ft=l=>{const e=[];let t=l.replaceAll(/'(?:[^']|'')*'/gu,o=>(e.push(o),`${Ae}${(e.length-1).toString()}${Ae}`)).replaceAll(/\s+/gu," ").trim();for(const{pattern:o,replacement:s}of Pt)t=t.replaceAll(o,s);for(const{pattern:o,replacement:s}of Wt)t=t.replaceAll(o,s);return t=t.replaceAll(Ht,(o,s)=>e[Number(s)]??""),t},Qt=/\b(?:from|join)\s+([a-z_][\w$]*)(?:\s+(?:as\s+)?([a-z_][\w$]*))?/giu,Ut=/(?:\bwith\s+(?:recursive\s+)?|,\s*)([a-z_][\w$]*)\s+as\s*\(/giu,jt=new Set(["cross","full","group","having","inner","join","left","limit","offset","on","order","right","union","using","where","window"]),zt=/[^\n]/gu,Yt=(l,e)=>{const n=l[e];if(n==="'"){let t=e+1;for(;t<l.length&&l[t]!=="'";)t+=1;return Math.min(t+1,l.length)}if(n==="-"&&l[e+1]==="-"){const t=l.indexOf(`
6
+ `,e);return t===-1?l.length:t}if(n==="/"&&l[e+1]==="*"){const t=l.indexOf("*/",e+2);return t===-1?l.length:t+2}return-1},Kt=l=>{let e="",n=0;for(;n<l.length;){const t=Yt(l,n);t===-1?(e+=l.slice(n,n+1),n+=1):(e+=l.slice(n,t).replaceAll(zt," "),n=t)}return e},Gt=l=>{const e=new Set;for(const n of l.matchAll(Ut))e.add((n[1]??"").toLowerCase());return e},Jt=(l,e)=>{const n=new Map;for(const t of l.matchAll(Qt)){const o=(t[1]??"").toLowerCase(),s=(t[2]??"").toLowerCase();e.has(o)&&(n.set(o,o),s!==""&&!jt.has(s)&&n.set(s,o))}return n},rt=(l,e)=>{const n=Kt(l),t=new Set(e.map(o=>o.toLowerCase()));return{ctes:Gt(n),masked:n,targets:Jt(n,t)}},Vt=/^(?:__lunora|sqlite_)/iu,Xt=/\b(?:from|join)\s+([a-z_][\w$]*)/giu,Zt=/\b([a-z_][\w$]*)\.([a-z_][\w$]*)/giu,en=new Set(["cross","full","group","having","inner","join","lateral","left","limit","offset","order","right","select","union","where","window"]),tn=(l,e,n)=>{const t=[];for(const o of l.matchAll(Xt)){const s=o[1]??"",r=s.toLowerCase();!e.has(r)&&!n.has(r)&&!en.has(r)&&!Vt.test(s)&&t.push({length:s.length,message:`unknown table \`${s}\``,offset:o.index+o[0].length-s.length,severity:"error",source:"schema"})}return t},nn=(l,e,n)=>{const t=[],o=new Map;for(const[s,r]of Object.entries(e.columns))o.set(s.toLowerCase(),new Set(r.map(i=>i.toLowerCase())));for(const s of l.matchAll(Zt)){const r=(s[1]??"").toLowerCase(),i=s[2]??"",c=n.get(r),a=c===void 0?void 0:o.get(c);a!==void 0&&!a.has(i.toLowerCase())&&t.push({length:i.length,message:`\`${c??""}\` has no column \`${i}\``,offset:s.index+s[0].length-i.length,severity:"error",source:"schema"})}return t},sn=(l,e)=>{if(l.trim()==="")return[];const n=lt(l),t=new Set(e.tables.map(s=>s.toLowerCase())),o=[];for(const s of n){const{offset:r,rejection:i}=s;if(i!==void 0){o.push({length:i.length,message:i.message,offset:i.offset===void 0?r:r+i.offset,severity:"error",source:"gate"});continue}const{ctes:c,masked:a,targets:m}=rt(s.sql,e.tables);o.push(...[...tn(a,t,c),...nn(a,e,m)].map(g=>({...g,offset:g.offset===void 0?r:r+g.offset})))}return o},on=Oe(_e.lintSql),ln=600,rn=(l,e,n)=>{const t=Qe(),[o,s]=ce([]),r=Ke(()=>sn(l,e),[l,e]),i=yt(l,ln),a=r.some(f=>f.source==="gate")||i.trim()==="",m=ht(async f=>{try{const v=await t.query(on,{sql:i},qe(n));f.cancelled||s(v.diagnostics??[])}catch{f.cancelled||s([])}},[t,i,n]);Ne(()=>{if(a){s([]);return}const f={cancelled:!1};return ue(m(f)),()=>{f.cancelled=!0}},[m,a]);const g=i===l;return Ke(()=>g?[...r,...o]:r,[r,o,g])},Le=8,an=["AND","ASC","AS","BY","COUNT","DESC","DISTINCT","EXPLAIN","FROM","GROUP","HAVING","INNER","JOIN","LEFT","LIKE","LIMIT","NOT","NULL","OFFSET","ON","ORDER","OR","QUERY","SELECT","WHERE","WITH"],cn=new Set(["AND","BY","HAVING","ON","OR","SELECT","WHERE"]),dn=/[\w$]/,it=l=>l!==void 0&&dn.test(l),at=l=>{let e=l.length;for(;e>0&&it(l[e-1]);)e-=1;return l.slice(e)},ct=(l,e)=>{let n=e;for(;n>0&&it(l[n-1]);)n-=1;return{end:e,start:n,text:l.slice(n,e)}},Je=(l,e)=>{const n=l.slice(0,e).trimEnd();return n.endsWith(".")||cn.has(at(n).toUpperCase())},un=(l,e,n)=>{const t=l.slice(0,e);if(!t.endsWith("."))return;const o=at(t.slice(0,-1));if(o!=="")return rt(l,n).targets.get(o.toLowerCase())??o},je=(l,e)=>l.toLowerCase().startsWith(e.toLowerCase()),Ve=(l,e,n,t)=>{const o=[];for(const s of l)if(je(s,e)&&(o.push(t(s)),o.length>=n))break;return o},fn=(l,e,n)=>{const t=new Map;for(const[o,s]of Object.entries(l.columns))for(const r of s)if(je(r,e)&&!t.has(r)&&(t.set(r,o),t.size>=n))return[...t].map(([i,c])=>({detail:c,kind:"column",label:i}));return[...t].map(([o,s])=>({detail:s,kind:"column",label:o}))},mn=(l,e,n)=>{const t=ct(l,e),o=un(l,t.start,n.tables);if(o!==void 0){const a=n.columns[o]??n.columns[o.toLowerCase()]??[];return Ve(a,t.text,Le,m=>({detail:o,kind:"column",label:m}))}if(t.text===""&&!Je(l,t.start))return[];const s=Ve(n.tables,t.text,Le,a=>({kind:"table",label:a})),r=fn(n,t.text,Le),i=an.flatMap(a=>t.text!==""&&je(a,t.text)&&a.toLowerCase()!==t.text.toLowerCase()?[{kind:"keyword",label:a}]:[]);return(Je(l,t.start)?[...r,...s,...i]:[...s,...r,...i]).slice(0,Le)},hn=(l,e,n)=>{const t=ct(l,e),o=l.slice(0,t.start)+n.label+l.slice(t.end);return{caret:t.start+n.label.length,value:o}},pn=["boxSizing","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","lineHeight","paddingBottom","paddingLeft","paddingRight","paddingTop","tabSize","textIndent","textTransform","width","wordSpacing"],bn=(l,e)=>{const n=globalThis.getComputedStyle(l),t=globalThis.document.createElement("div"),{style:o}=t;o.position="absolute",o.visibility="hidden",o.whiteSpace="pre-wrap",o.overflowWrap="break-word";for(const c of pn)o[c]=n[c];t.textContent=l.value.slice(0,Math.max(0,e));const s=globalThis.document.createElement("span");s.textContent=l.value.slice(Math.max(0,e))||".",t.append(s),globalThis.document.body.append(t);const r=s.offsetLeft-l.scrollLeft,i=s.offsetTop-l.scrollTop;return t.remove(),{left:r,top:i}},gn=(l,e,n)=>{const t=Y(16),[o,s]=ce(null);let r;t[0]!==l||t[1]!==e?(r=(x,h)=>{const C=mn(x,h,l);if(C.length===0){s(null);return}const y=e.current,{left:p,top:k}=y===null?{left:0,top:0}:bn(y,h);s(N=>N!==null&&N.active===0&&N.left===p&&N.top===k&&N.suggestions.length===C.length&&N.suggestions.every((T,q)=>{const E=C.at(q);return T.kind===E?.kind&&T.label===E.label&&T.detail===E.detail})?N:{active:0,left:p,suggestions:C,top:k})},t[0]=l,t[1]=e,t[2]=r):r=t[2];const i=r;let c;t[3]===Symbol.for("react.memo_cache_sentinel")?(c=()=>{s(null)},t[3]=c):c=t[3];const a=c;let m;t[4]===Symbol.for("react.memo_cache_sentinel")?(m=x=>{s(h=>{if(h===null)return h;const C=h.suggestions.length,y=(h.active+x+C)%C;return{...h,active:y}})},t[4]=m):m=t[4];const g=m;let f;t[5]!==n||t[6]!==o||t[7]!==e?(f=x=>{const h=e.current;if(o===null||h===null)return!1;const C=o.suggestions[x??o.active];if(C===void 0)return!1;const y=hn(h.value,h.selectionStart,C);return n(y.value),s(null),requestAnimationFrame(()=>{const p=e.current;p!==null&&(p.focus(),p.setSelectionRange(y.caret,y.caret))}),!0},t[5]=n,t[6]=o,t[7]=e,t[8]=f):f=t[8];const v=f;let d;t[9]!==v?(d=()=>v(),t[9]=v,t[10]=d):d=t[10];const S=d;let u;return t[11]!==S||t[12]!==v||t[13]!==i||t[14]!==o?(u={close:a,commit:S,commitAt:v,move:g,refresh:i,state:o},t[11]=S,t[12]=v,t[13]=i,t[14]=o,t[15]=u):u=t[15],u},xn={column:"column",keyword:"keyword",table:"table"},vn=20,yn=l=>{const e=Y(17),{listboxId:n,onPick:t,state:o}=l,s=de();let r;e[0]!==o?(r=o===null?void 0:{left:o.left,top:o.top+vn},e[0]=o,e[1]=r):r=e[1];const i=r;if(o===null)return null;let c;if(e[2]!==n||e[3]!==t||e[4]!==o.active||e[5]!==o.suggestions||e[6]!==s){let m;e[8]!==n||e[9]!==t||e[10]!==o.active||e[11]!==s?(m=(g,f)=>F("li",{"aria-selected":f===o.active,className:fe("flex cursor-pointer items-center gap-2 px-2 py-1 text-[13px]",f===o.active?"bg-accent text-accent-foreground":"text-foreground"),"data-testid":"sql-autocomplete-item",id:`${n}-opt-${f.toString()}`,onMouseDown:v=>{v.preventDefault(),t(f)},role:"option",children:[b("span",{className:"truncate font-mono",children:g.label}),g.detail!==void 0&&b("span",{className:"ms-auto truncate text-xs text-muted-foreground",children:g.detail}),b("span",{className:"shrink-0 font-mono text-[10px] tracking-wide text-muted-foreground/70 uppercase",children:s(xn[g.kind])})]},`${g.kind}:${g.label}`),e[8]=n,e[9]=t,e[10]=o.active,e[11]=s,e[12]=m):m=e[12],c=o.suggestions.map(m),e[2]=n,e[3]=t,e[4]=o.active,e[5]=o.suggestions,e[6]=s,e[7]=c}else c=e[7];let a;return e[13]!==n||e[14]!==i||e[15]!==c?(a=b("ul",{className:"absolute z-30 max-h-56 w-72 overflow-auto rounded-md border border-border bg-popover py-1 text-popover-foreground shadow-md","data-testid":"sql-autocomplete",id:n,role:"listbox",style:i,children:c}),e[13]=n,e[14]=i,e[15]=c,e[16]=a):a=e[16],a},Sn=Oe(_e.listTables),wn=Oe(_e.readTablePage),Cn=l=>{const e=Y(16),n=Qe();let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t=[],e[0]=t):t=e[0];const[o,s]=ce(t);let r;e[1]===Symbol.for("react.memo_cache_sentinel")?(r={},e[1]=r):r=e[1];const[i,c]=ce(r);let a;e[2]===Symbol.for("react.memo_cache_sentinel")?(a=new Set,e[2]=a):a=e[2];const m=Ce(a);let g,f;e[3]!==n||e[4]!==l?(g=()=>{const h={cancelled:!1};return ue((async()=>{try{const y=await n.query(Sn,{},qe(l));h.cancelled||(s(y.map(kn)),c({}),m.current=new Set)}catch{h.cancelled||(s([]),c({}),m.current=new Set)}})()),()=>{h.cancelled=!0}},f=[n,l],e[3]=n,e[4]=l,e[5]=g,e[6]=f):(g=e[5],f=e[6]),Ne(g,f);let v;e[7]!==n||e[8]!==l?(v=h=>{if(m.current.has(h))return;m.current.add(h),ue((async()=>{try{const y=await n.query(wn,{limit:1,offset:0,table:h},qe(l));c(p=>({...p,[h]:y.columns}))}catch{m.current.delete(h)}})())},e[7]=n,e[8]=l,e[9]=v):v=e[9];const d=v;let S;e[10]!==i||e[11]!==o?(S={columns:i,tables:o},e[10]=i,e[11]=o,e[12]=S):S=e[12];const u=S;let x;return e[13]!==d||e[14]!==u?(x={probe:d,schema:u},e[13]=d,e[14]=u,e[15]=x):x=e[15],x},Pe=/\b(?:from|join|update|into)\s+([a-z_][\w$]*)|\b([a-z_][\w$]*)\s*\./gi,Nn=l=>{const e=new Set;Pe.lastIndex=0;let n=Pe.exec(l);for(;n!==null;)e.add(n[1]??n[2]),n=Pe.exec(l);return[...e]};function kn(l){return l.name}const En=l=>{const e=Y(34),{onSubmit:n,probe:t,schema:o,setDraft:s}=l,r=pt(),i=Ce(null),c=Ce(null),a=Ce(null),m=gn(o,a,s),{close:g,commit:f,commitAt:v,move:d,refresh:S,state:u}=m;let x;e[0]!==v?(x=w=>{v(w)},e[0]=v,e[1]=x):x=e[1];const h=x;let C;e[2]!==S?(C=()=>{const w=a.current;w!==null&&w===document.activeElement&&S(w.value,w.selectionStart)},e[2]=S,e[3]=C):C=e[3];let y;e[4]!==S||e[5]!==o?(y=[S,o],e[4]=S,e[5]=o,e[6]=y):y=e[6],Ne(C,y);let p;e[7]!==t||e[8]!==S||e[9]!==s?(p=w=>{const{selectionStart:W,value:R}=w.target;s(R);for(const M of Nn(R))t(M);S(R,W)},e[7]=t,e[8]=S,e[9]=s,e[10]=p):p=e[10];const k=p;let N;e[11]!==S?(N=w=>{const W=w.currentTarget;S(W.value,W.selectionStart)},e[11]=S,e[12]=N):N=e[12];const L=N;let T;e[13]!==u||e[14]!==g||e[15]!==f||e[16]!==d||e[17]!==n?(T=w=>{if(u!==null){if(w.key==="ArrowDown"){w.preventDefault(),d(1);return}if(w.key==="ArrowUp"){w.preventDefault(),d(-1);return}if(w.key==="Escape"){w.preventDefault(),g();return}if((w.key==="Enter"||w.key==="Tab")&&!w.metaKey&&!w.ctrlKey&&f()){w.preventDefault();return}}(w.metaKey||w.ctrlKey)&&w.key==="Enter"&&(w.preventDefault(),n())},e[13]=u,e[14]=g,e[15]=f,e[16]=d,e[17]=n,e[18]=T):T=e[18];const q=T;let E;e[19]!==g?(E=()=>{requestAnimationFrame(()=>{g()})},e[19]=g,e[20]=E):E=e[20];const A=E;let _;e[21]===Symbol.for("react.memo_cache_sentinel")?(_=w=>{const{scrollLeft:W,scrollTop:R}=w.currentTarget;i.current!==null&&(i.current.scrollTop=R),c.current!==null&&(c.current.scrollTop=R,c.current.scrollLeft=W)},e[21]=_):_=e[21];const I=_;let B;e[22]===Symbol.for("react.memo_cache_sentinel")?(B=w=>{const W=a.current;W===null||w.offset===void 0||(W.focus(),W.setSelectionRange(w.offset,w.offset+(w.length??0)))},e[22]=B):B=e[22];const D=B;let P;e[23]!==k||e[24]!==A||e[25]!==q||e[26]!==L?(P={onBlur:A,onChange:k,onKeyDown:q,onScroll:I,onSelect:L},e[23]=k,e[24]=A,e[25]=q,e[26]=L,e[27]=P):P=e[27];let O;return e[28]!==u||e[29]!==g||e[30]!==r||e[31]!==h||e[32]!==P?(O={autocompleteState:u,closeAutocomplete:g,handlers:P,listboxId:r,onPickSuggestion:h,editorRef:a,gutterRef:i,overlayRef:c,revealDiagnostic:D},e[28]=u,e[29]=g,e[30]=r,e[31]=h,e[32]=P,e[33]=O):O=e[33],O},Tn="lunora-studio-sql-tabs",Rn="lunora-studio-sql-active-tab",ze=12,we=(l="",e="")=>({activeId:null,id:et("tab"),name:e,sql:l}),Ln=()=>Ue(Rn,""),In=l=>{const e=Y(16),[n,t]=We(Tn),[o,s]=Ln(),[r]=ce(l);let i,c;e[0]!==r||e[1]!==t||e[2]!==n.length?(i=()=>{n.length===0&&t([r])},c=[r,t,n.length],e[0]=r,e[1]=t,e[2]=n.length,e[3]=i,e[4]=c):(i=e[3],c=e[4]),Ne(i,c);let a;e[5]!==r||e[6]!==n?(a=n.length===0?[r]:n,e[5]=r,e[6]=n,e[7]=a):a=e[7];const m=a;let g;e[8]!==o||e[9]!==m?(g=m.some(d=>d.id===o)?o:m[0]?.id??"",e[8]=o,e[9]=m,e[10]=g):g=e[10];const f=g;let v;return e[11]!==f||e[12]!==s||e[13]!==t||e[14]!==m?(v={activeId:f,setActiveId:s,setTabs:t,tabs:m},e[11]=f,e[12]=s,e[13]=t,e[14]=m,e[15]=v):v=e[15],v},dt=l=>l.activeId===null&&l.sql.trim()!=="",qn=(l,e)=>[...l,e].slice(-ze),An=(l,e,n)=>{const t=l.findIndex(r=>r.id===e);if(t===-1)return{activeId:l[0]?.id??"",tabs:[...l]};const o=l.filter(r=>r.id!==e);if(o.length===0){const r=n();return{activeId:r.id,tabs:[r]}}return{activeId:o[Math.min(t,o.length-1)].id,tabs:o}},_n=(l,e)=>{const n=l.filter(t=>t.id===e);return n.length===0?{activeId:l[0]?.id??"",tabs:[...l]}:{activeId:e,tabs:n}},On=(l,e,n)=>{const t=l.findIndex(s=>s.id===e);if(t===-1)return{activeId:n,tabs:[...l]};const o=l.slice(0,t+1);return{activeId:o.some(s=>s.id===n)?n:e,tabs:o}},Dn=l=>{const e=l();return{activeId:e.id,tabs:[e]}},Mn=(l,e,n)=>{if(l==="others")return e.filter(t=>t.id!==n);if(l==="right"){const t=e.findIndex(o=>o.id===n);return t===-1?[]:e.slice(t+1)}return[...e]},Xe={error:null,pane:"results",result:null,running:!1},$n=l=>{const e=Y(66),{activeId:n,setActiveId:t,setTabs:o,tabs:s}=In(l);let r;e[0]===Symbol.for("react.memo_cache_sentinel")?(r={},e[0]=r):r=e[0];const[i,c]=ce(r),[a,m]=ce(null),[g,f]=ce(null);let v;e[1]!==n||e[2]!==s?(v=s.find(H=>H.id===n)??s[0]??we(),e[1]=n,e[2]=s,e[3]=v):v=e[3];const d=v,S=i[d.id]??Xe;let u;e[4]!==d.id||e[5]!==o?(u=H=>{o(j=>j.map(z=>z.id===d.id?{...z,...H}:z))},e[4]=d.id,e[5]=o,e[6]=u):u=e[6];const x=u;let h;e[7]!==d.id?(h=H=>{c(j=>{const z=j[d.id]??Xe;return{...j,[d.id]:{...z,...H}}})},e[7]=d.id,e[8]=h):h=e[8];const C=h;let y;e[9]!==t||e[10]!==o||e[11]!==s.length?(y=()=>{if(s.length>=ze)return;const H=we();o(j=>qn(j,H)),t(H.id)},e[9]=t,e[10]=o,e[11]=s.length,e[12]=y):y=e[12];const p=y;let k;e[13]!==t||e[14]!==o?(k=H=>{m(null),f(null),o(H.tabs),t(H.activeId);const j=new Set(H.tabs.map(Bn));c(z=>Object.fromEntries(Object.entries(z).filter(J=>{const[me]=J;return j.has(me)})))},e[13]=t,e[14]=o,e[15]=k):k=e[15];const N=k;let L;e[16]!==N||e[17]!==s?(L=H=>{N(An(s,H,we))},e[16]=N,e[17]=s,e[18]=L):L=e[18];const T=L;let q;e[19]!==n||e[20]!==N||e[21]!==s?(q=(H,j)=>{N(H==="others"?_n(s,j):H==="right"?On(s,j,n):Dn(we))},e[19]=n,e[20]=N,e[21]=s,e[22]=q):q=e[22];const E=q;let A;e[23]!==E||e[24]!==a||e[25]!==s?(A=H=>{a!==null&&(Mn(H,s,a.id).some(Hn)?f(H):E(H,a.id))},e[23]=E,e[24]=a,e[25]=s,e[26]=A):A=e[26];const _=A;let I;e[27]===Symbol.for("react.memo_cache_sentinel")?(I=(H,j)=>{j.preventDefault(),f(null),m({id:H,x:j.clientX,y:j.clientY})},e[27]=I):I=e[27];const B=I;let D;e[28]===Symbol.for("react.memo_cache_sentinel")?(D=()=>{m(null),f(null)},e[28]=D):D=e[28];const P=D;let O;e[29]===Symbol.for("react.memo_cache_sentinel")?(O=H=>{H.preventDefault(),m(null),f(null)},e[29]=O):O=e[29];const w=O;let W;e[30]!==_?(W=()=>{_("others")},e[30]=_,e[31]=W):W=e[31];const R=W;let M;e[32]!==_?(M=()=>{_("right")},e[32]=_,e[33]=M):M=e[33];const U=M;let $;e[34]!==_?($=()=>{_("all")},e[34]=_,e[35]=$):$=e[35];const X=$;let Z;e[36]!==E||e[37]!==g||e[38]!==a?(Z=()=>{a!==null&&g!==null&&E(g,a.id),f(null)},e[36]=E,e[37]=g,e[38]=a,e[39]=Z):Z=e[39];const ee=Z;let te;e[40]===Symbol.for("react.memo_cache_sentinel")?(te=()=>{f(null)},e[40]=te):te=e[40];const ie=te;let G;e[41]!==a?(G=a===null?void 0:{left:a.x,top:a.y},e[41]=a,e[42]=G):G=e[42];const Q=G;let ne;e[43]!==o?(ne=H=>{o(j=>j.map(z=>z.activeId===H?{...z,activeId:null}:z))},e[43]=o,e[44]=ne):ne=e[44];const se=ne;let oe;e[45]!==o?(oe=(H,j)=>{o(z=>z.map(J=>J.id===H?{...J,name:j}:J))},e[45]=o,e[46]=oe):oe=e[46];const le=oe;let re;return e[47]!==d||e[48]!==n||e[49]!==p||e[50]!==T||e[51]!==ee||e[52]!==X||e[53]!==R||e[54]!==U||e[55]!==S||e[56]!==C||e[57]!==x||e[58]!==g||e[59]!==le||e[60]!==t||e[61]!==a||e[62]!==Q||e[63]!==s||e[64]!==se?(re={activeTab:d,activeTabId:n,addEditorTab:p,cancelBulk:ie,closeEditorTab:T,closeTabMenu:P,confirmBulk:ee,menuStyle:Q,onBackdropContextMenu:w,onCloseAll:X,onCloseOthers:R,onCloseToRight:U,openTabMenu:B,output:S,patchActiveOutput:C,patchActiveTab:x,pendingBulk:g,renameTab:le,setActiveTabId:t,tabMenu:a,tabs:s,unlinkQuery:se},e[47]=d,e[48]=n,e[49]=p,e[50]=T,e[51]=ee,e[52]=X,e[53]=R,e[54]=U,e[55]=S,e[56]=C,e[57]=x,e[58]=g,e[59]=le,e[60]=t,e[61]=a,e[62]=Q,e[63]=s,e[64]=se,e[65]=re):re=e[65],re};function Bn(l){return l.id}function Hn(l){return dt(l)}const Pn="lunora-studio-sql-queries",Se="lunora-studio-sql-history",Wn="lunora-studio-sql-remember-history",Fn=25,Qn=l=>{const e=Y(41),{loadIntoActiveTab:n,unlinkQuery:t}=l,o=de(),[s,r]=We(Pn),[i,c]=Ue(Wn,!1),[a,m]=We(Se,i?"local":"session");let g,f;e[0]!==i?(g=()=>{i||Re(Se,"local")},f=[i],e[0]=i,e[1]=g,e[2]=f):(g=e[1],f=e[2]),Ne(g,f);const[v,d]=ce(""),S=Ce(null);let u;e[3]!==m?(u=R=>{m(M=>M[0]?.sql===R?M:[{at:Date.now(),sql:R},...M.filter($=>$.sql!==R)].slice(0,Fn))},e[3]=m,e[4]=u):u=e[4];const x=u;let h;e[5]!==n||e[6]!==r||e[7]!==o?(h=()=>{const R={id:et("q"),name:o("Untitled query"),sql:""};r(M=>[R,...M]),n("",R.id)},e[5]=n,e[6]=r,e[7]=o,e[8]=h):h=e[8];const C=h;let y;e[9]!==n||e[10]!==s?(y=R=>{const M=s.find(U=>U.id===R);M!==void 0&&(n(M.sql,R),S.current?.querySelector(`[data-testid="sql-query-${R}"]`)?.scrollIntoView({block:"nearest"}))},e[9]=n,e[10]=s,e[11]=y):y=e[11];const p=y;let k;e[12]!==r||e[13]!==t?(k=R=>{r(M=>M.filter(U=>U.id!==R)),t(R)},e[12]=r,e[13]=t,e[14]=k):k=e[14];const N=k;let L;e[15]!==n?(L=R=>{n(R.currentTarget.dataset.sql??"",null)},e[15]=n,e[16]=L):L=e[16];const T=L;let q;e[17]!==n?(q=R=>{n(R.currentTarget.dataset.sql??"",null)},e[17]=n,e[18]=q):q=e[18];const E=q;let A;e[19]!==m?(A=()=>{m([]),Re(Se,"local"),Re(Se,"session")},e[19]=m,e[20]=A):A=e[20];const _=A;let I;e[21]!==a||e[22]!==c?(I=R=>{bt(Se,a,R?"local":"session"),R||Re(Se,"local"),c(R)},e[21]=a,e[22]=c,e[23]=I):I=e[23];const B=I;let D;e[24]===Symbol.for("react.memo_cache_sentinel")?(D=R=>{d(R.target.value)},e[24]=D):D=e[24];const P=D;let O;e[25]!==r?(O=(R,M)=>{r(U=>U.map($=>$.id===R?{...$,sql:M}:$))},e[25]=r,e[26]=O):O=e[26];const w=O;let W;return e[27]!==_||e[28]!==N||e[29]!==a||e[30]!==E||e[31]!==T||e[32]!==C||e[33]!==s||e[34]!==x||e[35]!==i||e[36]!==v||e[37]!==p||e[38]!==B||e[39]!==w?(W={clearHistory:_,deleteQuery:N,history:a,listRef:S,loadFromHistory:E,loadTemplate:T,newQuery:C,onSearchChange:P,queries:s,recordHistory:x,rememberHistory:i,search:v,selectQuery:p,setRememberHistory:B,updateQuerySql:w},e[27]=_,e[28]=N,e[29]=a,e[30]=E,e[31]=T,e[32]=C,e[33]=s,e[34]=x,e[35]=i,e[36]=v,e[37]=p,e[38]=B,e[39]=w,e[40]=W):W=e[40],W},ut="p-3 font-mono text-xs leading-5 whitespace-pre-wrap break-words",Un=(l,e)=>{const n=[];for(const o of l){if(o.offset===void 0||o.length===void 0||o.length<=0)continue;const s=Math.max(0,Math.min(o.offset,e)),r=Math.max(s,Math.min(o.offset+o.length,e));s!==r&&n.push({end:r,severity:o.severity,start:s})}n.sort((o,s)=>o.start-s.start);const t=[];for(const o of n)o.start>=(t.at(-1)?.end??0)&&t.push(o);return t},jn=l=>l==="unsafe-response"?"The model returned a statement that is not read-only, so it was discarded.":l==="empty-response"?"The model returned nothing usable.":"The model could not be reached.",zn=l=>{const e=Y(51),{assistant:n,failed:t,onGenerated:o}=l,s=de(),[r,i]=ce("");if(n.unavailable)return null;let c;e[0]!==n?(c=n.pending("sql"),e[0]=n,e[1]=c):c=e[1];const a=c;let m;if(e[2]!==n||e[3]!==t||e[4]!==o||e[5]!==a||e[6]!==r||e[7]!==s){const g=n.reason("sql");let f;e[9]!==n||e[10]!==t||e[11]!==o||e[12]!==r?(f=E=>{const A=r.trim();if(A===""&&!E)return;ue((async()=>{const I=await n.generate(A===""?"fix the failing statement":A,E?t:void 0);I!==void 0&&o(I)})())},e[9]=n,e[10]=t,e[11]=o,e[12]=r,e[13]=f):f=e[13];const v=f;let d;e[14]!==s?(d=s("Describe the query you want"),e[14]=s,e[15]=d):d=e[15];let S;e[16]===Symbol.for("react.memo_cache_sentinel")?(S=E=>{i(E.target.value)},e[16]=S):S=e[16];let u;e[17]!==v?(u=E=>{E.key==="Enter"&&(E.preventDefault(),v(!1))},e[17]=v,e[18]=u):u=e[18];let x;e[19]!==s?(x=s("Describe the query you want"),e[19]=s,e[20]=x):x=e[20];let h;e[21]!==a||e[22]!==r||e[23]!==d||e[24]!==u||e[25]!==x?(h=b(St,{"aria-label":d,className:"h-7 flex-1 text-xs","data-testid":"sql-assistant-prompt",disabled:a,onChange:S,onKeyDown:u,placeholder:x,value:r}),e[21]=a,e[22]=r,e[23]=d,e[24]=u,e[25]=x,e[26]=h):h=e[26];const C=a&&"opacity-60";let y;e[27]!==C?(y=fe("rounded-md border border-border px-2 py-1 text-xs outline-none transition-colors hover:bg-accent focus-visible:bg-accent",C),e[27]=C,e[28]=y):y=e[28];let p;e[29]!==a||e[30]!==r?(p=a||r.trim()==="",e[29]=a,e[30]=r,e[31]=p):p=e[31];let k;e[32]!==v?(k=()=>{v(!1)},e[32]=v,e[33]=k):k=e[33];let N;e[34]!==a||e[35]!==s?(N=s(a?"Thinking…":"Draft SQL"),e[34]=a,e[35]=s,e[36]=N):N=e[36];let L;e[37]!==y||e[38]!==p||e[39]!==k||e[40]!==N?(L=b("button",{className:y,"data-testid":"sql-assistant-generate",disabled:p,onClick:k,type:"button",children:N}),e[37]=y,e[38]=p,e[39]=k,e[40]=N,e[41]=L):L=e[41];let T;e[42]!==t||e[43]!==a||e[44]!==v||e[45]!==s?(T=t!==void 0&&b("button",{className:"rounded-md border border-border px-2 py-1 text-xs outline-none transition-colors hover:bg-accent focus-visible:bg-accent","data-testid":"sql-assistant-fix",disabled:a,onClick:()=>{v(!0)},type:"button",children:s("Fix this")}),e[42]=t,e[43]=a,e[44]=v,e[45]=s,e[46]=T):T=e[46];let q;e[47]!==L||e[48]!==T||e[49]!==h?(q=F("div",{className:"flex items-center gap-2",children:[h,L,T]}),e[47]=L,e[48]=T,e[49]=h,e[50]=q):q=e[50],m=F("div",{className:"flex flex-col gap-1 border-b border-border px-3 py-2","data-testid":"sql-assistant",children:[q,g!==void 0&&b("p",{className:"text-[11px] text-muted-foreground","data-testid":"sql-assistant-reason",role:"status",children:jn(g)})]}),e[2]=n,e[3]=t,e[4]=o,e[5]=a,e[6]=r,e[7]=s,e[8]=m}else m=e[8];return m},Yn=l=>{const e=Y(8),{diagnostics:n,draft:t,scrollRef:o}=l;let s,r;if(e[0]!==n||e[1]!==t){r=Symbol.for("react.early_return_sentinel");e:{const a=Un(n,t.length);if(a.length===0){r=null;break e}s=[];let m=0;for(const[g,f]of a.entries())f.start>m&&s.push(t.slice(m,f.start)),s.push(b("span",{className:fe("decoration-wavy underline underline-offset-4",f.severity==="error"?"decoration-destructive":"decoration-amber-500"),children:t.slice(f.start,f.end)},`${f.start.toString()}-${g.toString()}`)),m=f.end;s.push(t.slice(m))}e[0]=n,e[1]=t,e[2]=s,e[3]=r}else s=e[2],r=e[3];if(r!==Symbol.for("react.early_return_sentinel"))return r;let i;e[4]===Symbol.for("react.memo_cache_sentinel")?(i=fe("pointer-events-none absolute inset-0 overflow-hidden text-transparent",ut),e[4]=i):i=e[4];let c;return e[5]!==s||e[6]!==o?(c=b("div",{"aria-hidden":"true",className:i,"data-testid":"sql-diagnostics-overlay",ref:o,children:s}),e[5]=s,e[6]=o,e[7]=c):c=e[7],c},Kn={gate:"read-only",plan:"plan",schema:"schema",syntax:"syntax"},Gn=l=>{const e=Y(10),{diagnostics:n,onSelect:t}=l,o=de();if(n.length===0)return null;let s;e[0]!==o?(s=o("SQL problems"),e[0]=o,e[1]=s):s=e[1];let r;if(e[2]!==n||e[3]!==t){let c;e[5]!==t?(c=(a,m)=>b("li",{children:F("button",{className:"flex w-full items-start gap-2 px-3 py-1 text-start text-xs outline-none hover:bg-accent focus-visible:bg-accent","data-testid":"sql-problem",onClick:()=>{t(a)},type:"button",children:[b("span",{className:fe("mt-px shrink-0 rounded px-1 font-mono text-[10px] uppercase",a.severity==="error"?"bg-destructive/15 text-destructive":"bg-amber-500/15 text-amber-600"),children:Kn[a.source]}),b("span",{className:"min-w-0 text-muted-foreground",children:a.message})]})},`${a.source}-${(a.offset??m).toString()}-${m.toString()}`),e[5]=t,e[6]=c):c=e[6],r=n.map(c),e[2]=n,e[3]=t,e[4]=r}else r=e[4];let i;return e[7]!==s||e[8]!==r?(i=b("ul",{"aria-label":s,className:"max-h-24 shrink-0 overflow-y-auto border-t border-border bg-muted/30","data-testid":"sql-problems",children:r}),e[7]=s,e[8]=r,e[9]=i):i=e[9],i},Jn={minWidth:"2.75rem",paddingInline:"0.5rem"},Vn=l=>{const e=Y(64),{assistant:n,autocomplete:t,diagnostics:o,draft:s,failed:r,handlers:i,editorRef:c,gutterRef:a,listboxId:m,onGenerated:g,onPickSuggestion:f,onRevealDiagnostic:v,overlayRef:d}=l,S=de();let u,x,h,C,y,p,k,N;if(e[0]!==n||e[1]!==s||e[2]!==r||e[3]!==a||e[4]!==g){const W=s.split(`
7
+ `).length;k="flex min-h-0 min-w-0 flex-1 flex-col",e[13]!==n||e[14]!==r||e[15]!==g?(N=b(zn,{assistant:n,failed:r,onGenerated:g}),e[13]=n,e[14]=r,e[15]=g,e[16]=N):N=e[16],p="flex min-h-0 min-w-0 flex-1",u="true",x="shrink-0 select-none overflow-hidden border-e border-border bg-muted/30 py-3 text-end font-mono text-xs leading-5 text-muted-foreground/60",h=a,C=Jn,y=Array.from({length:W},Xn),e[0]=n,e[1]=s,e[2]=r,e[3]=a,e[4]=g,e[5]=u,e[6]=x,e[7]=h,e[8]=C,e[9]=y,e[10]=p,e[11]=k,e[12]=N}else u=e[5],x=e[6],h=e[7],C=e[8],y=e[9],p=e[10],k=e[11],N=e[12];let L;e[17]!==u||e[18]!==x||e[19]!==h||e[20]!==C||e[21]!==y?(L=b("div",{"aria-hidden":u,className:x,ref:h,style:C,children:y}),e[17]=u,e[18]=x,e[19]=h,e[20]=C,e[21]=y,e[22]=L):L=e[22];let T;e[23]!==o||e[24]!==s||e[25]!==d?(T=b(Yn,{diagnostics:o,draft:s,scrollRef:d}),e[23]=o,e[24]=s,e[25]=d,e[26]=T):T=e[26];let q;e[27]!==t||e[28]!==m?(q=t===null?void 0:`${m}-opt-${t.active.toString()}`,e[27]=t,e[28]=m,e[29]=q):q=e[29];const E=t===null?void 0:m,A=t!==null;let _;e[30]!==S?(_=S("SQL query"),e[30]=S,e[31]=_):_=e[31];let I;e[32]!==s||e[33]!==c||e[34]!==i.onBlur||e[35]!==i.onChange||e[36]!==i.onKeyDown||e[37]!==i.onScroll||e[38]!==i.onSelect||e[39]!==q||e[40]!==E||e[41]!==A||e[42]!==_?(I=b("textarea",{"aria-activedescendant":q,"aria-autocomplete":"list","aria-controls":E,"aria-expanded":A,"aria-label":_,className:`relative size-full resize-none bg-transparent outline-none ${ut}`,"data-testid":"sql-input",onBlur:i.onBlur,onChange:i.onChange,onKeyDown:i.onKeyDown,onScroll:i.onScroll,onSelect:i.onSelect,placeholder:"SELECT * FROM …",ref:c,role:"combobox",spellCheck:!1,value:s}),e[32]=s,e[33]=c,e[34]=i.onBlur,e[35]=i.onChange,e[36]=i.onKeyDown,e[37]=i.onScroll,e[38]=i.onSelect,e[39]=q,e[40]=E,e[41]=A,e[42]=_,e[43]=I):I=e[43];let B;e[44]!==t||e[45]!==m||e[46]!==f?(B=b(yn,{listboxId:m,onPick:f,state:t}),e[44]=t,e[45]=m,e[46]=f,e[47]=B):B=e[47];let D;e[48]!==T||e[49]!==I||e[50]!==B?(D=F("div",{className:"relative min-w-0 flex-1 bg-background",children:[T,I,B]}),e[48]=T,e[49]=I,e[50]=B,e[51]=D):D=e[51];let P;e[52]!==D||e[53]!==p||e[54]!==L?(P=F("div",{className:p,children:[L,D]}),e[52]=D,e[53]=p,e[54]=L,e[55]=P):P=e[55];let O;e[56]!==o||e[57]!==v?(O=b(Gn,{diagnostics:o,onSelect:v}),e[56]=o,e[57]=v,e[58]=O):O=e[58];let w;return e[59]!==P||e[60]!==O||e[61]!==k||e[62]!==N?(w=F("div",{className:k,children:[N,P,O]}),e[59]=P,e[60]=O,e[61]=k,e[62]=N,e[63]=w):w=e[63],w};function Xn(l,e){return b("div",{children:e+1},e)}const ft=[{label:"List tables",sql:"SELECT name FROM sqlite_master WHERE type = 'table' ORDER BY name;"},{label:"Table row count",sql:"SELECT COUNT(*) AS rows FROM messages;"},{label:"Recent rows",sql:"SELECT id, _creationTime, __doc__ FROM messages ORDER BY _creationTime DESC LIMIT 50;"},{label:"Index list",sql:"SELECT name, tbl_name FROM sqlite_master WHERE type = 'index' ORDER BY tbl_name;"}],Zn=l=>{const e=Y(29),{active:n,onDelete:t,onSelect:o,query:s}=l,r=de();let i;e[0]!==o||e[1]!==s.id?(i=()=>{o(s.id)},e[0]=o,e[1]=s.id,e[2]=i):i=e[2];const c=i;let a;e[3]!==t||e[4]!==s.id?(a=k=>{k.stopPropagation(),t(s.id)},e[3]=t,e[4]=s.id,e[5]=a):a=e[5];const m=a,g=n?"bg-sidebar-accent font-medium text-foreground":"text-muted-foreground";let f;e[6]!==g?(f=fe("flex min-w-0 flex-1 items-center gap-2 rounded-md px-2 py-1.5 text-start text-[13px] outline-none transition-colors hover:bg-sidebar-accent focus-visible:bg-sidebar-accent",g),e[6]=g,e[7]=f):f=e[7];const v=`sql-query-${s.id}`;let d;e[8]===Symbol.for("react.memo_cache_sentinel")?(d=b("svg",{"aria-hidden":"true",className:"size-3.5 shrink-0 opacity-70",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:b("path",{d:"M4 6h16M4 12h10M4 18h7"})}),e[8]=d):d=e[8];let S;e[9]!==s.name?(S=b("span",{className:"truncate",children:s.name}),e[9]=s.name,e[10]=S):S=e[10];let u;e[11]!==n||e[12]!==c||e[13]!==f||e[14]!==v||e[15]!==S?(u=F("button",{"aria-pressed":n,className:f,"data-testid":v,onClick:c,type:"button",children:[d,S]}),e[11]=n,e[12]=c,e[13]=f,e[14]=v,e[15]=S,e[16]=u):u=e[16];let x;e[17]!==r?(x=r("Delete query"),e[17]=r,e[18]=x):x=e[18];let h;e[19]!==r?(h=r("Delete query"),e[19]=r,e[20]=h):h=e[20];let C;e[21]===Symbol.for("react.memo_cache_sentinel")?(C=b("svg",{"aria-hidden":"true",className:"size-3.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:b("path",{d:"M5 7h14M9 7V5h6v2m-1 0v12H10V7M7 7v13h10V7"})}),e[21]=C):C=e[21];let y;e[22]!==m||e[23]!==h||e[24]!==x?(y=b("button",{"aria-label":x,className:"me-1 hidden size-6 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-destructive/10 hover:text-destructive group-hover/q:flex",onClick:m,title:h,type:"button",children:C}),e[22]=m,e[23]=h,e[24]=x,e[25]=y):y=e[25];let p;return e[26]!==y||e[27]!==u?(p=F("li",{className:"group/q flex items-center",children:[u,y]}),e[26]=y,e[27]=u,e[28]=p):p=e[28],p},Ze="sql-history-remember",es=(l,e)=>{const n=e.trim().toLowerCase();return n===""?[...l]:l.filter(t=>t.name.toLowerCase().includes(n))},ts=l=>{const e=Y(66),{activeId:n,history:t,listRef:o,onClearHistory:s,onDelete:r,onLoadHistory:i,onLoadTemplate:c,onNew:a,onSearchChange:m,onSelect:g,onToggleRememberHistory:f,queries:v,rememberHistory:d,search:S}=l,u=de();let x,h,C,y,p;if(e[0]!==n||e[1]!==o||e[2]!==r||e[3]!==a||e[4]!==m||e[5]!==g||e[6]!==f||e[7]!==v||e[8]!==S||e[9]!==u){const I=es(v,S);let B;e[15]!==f?(B=$=>{f($.target.checked)},e[15]=f,e[16]=B):B=e[16],x=B,C="flex h-full w-64 shrink-0 flex-col border-e border-border bg-sidebar";let D;e[17]!==u?(D=u("Search queries…"),e[17]=u,e[18]=D):D=e[18];let P;e[19]!==m||e[20]!==S||e[21]!==D?(P=b("input",{className:"h-8 min-w-0 flex-1 rounded-md border border-border bg-background px-2 text-xs outline-none focus-visible:border-ring","data-testid":"sql-search",onChange:m,placeholder:D,type:"text",value:S}),e[19]=m,e[20]=S,e[21]=D,e[22]=P):P=e[22];let O;e[23]!==u?(O=u("New query"),e[23]=u,e[24]=O):O=e[24];let w;e[25]!==u?(w=u("New query"),e[25]=u,e[26]=w):w=e[26];let W;e[27]===Symbol.for("react.memo_cache_sentinel")?(W=b("svg",{"aria-hidden":"true",className:"size-4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.7,viewBox:"0 0 24 24",children:b("path",{d:"M12 5v14M5 12h14"})}),e[27]=W):W=e[27];let R;e[28]!==a||e[29]!==O||e[30]!==w?(R=b("button",{"aria-label":O,className:"flex size-8 shrink-0 items-center justify-center rounded-md border border-border text-foreground outline-none transition-colors hover:bg-accent focus-visible:bg-accent","data-testid":"sql-new",onClick:a,title:w,type:"button",children:W}),e[28]=a,e[29]=O,e[30]=w,e[31]=R):R=e[31],e[32]!==R||e[33]!==P?(y=F("div",{className:"flex shrink-0 items-center gap-2 border-b border-border p-2",children:[P,R]}),e[32]=R,e[33]=P,e[34]=y):y=e[34],h="flex flex-1 flex-col gap-4 overflow-y-auto p-2";let M;e[35]!==u?(M=u("Private"),e[35]=u,e[36]=M):M=e[36];let U;e[37]!==M?(U=b("p",{className:"px-1 pb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:M}),e[37]=M,e[38]=U):U=e[38],p=F("div",{children:[U,I.length===0?b("p",{className:"px-1 py-2 text-xs text-muted-foreground","data-testid":"sql-private-empty",children:u("No saved queries yet — they save to this browser as you type.")}):b("ul",{className:"flex flex-col gap-px","data-testid":"sql-private",ref:o,children:I.map($=>b(Zn,{active:n===$.id,onDelete:r,onSelect:g,query:$},$.id))})]}),e[0]=n,e[1]=o,e[2]=r,e[3]=a,e[4]=m,e[5]=g,e[6]=f,e[7]=v,e[8]=S,e[9]=u,e[10]=x,e[11]=h,e[12]=C,e[13]=y,e[14]=p}else x=e[10],h=e[11],C=e[12],y=e[13],p=e[14];let k;e[39]!==u?(k=u("Reference"),e[39]=u,e[40]=k):k=e[40];let N;e[41]!==k?(N=b("p",{className:"px-1 pb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:k}),e[41]=k,e[42]=N):N=e[42];let L;e[43]!==c?(L=ft.map(I=>b("li",{children:F("button",{className:"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-start text-[13px] text-muted-foreground outline-none transition-colors hover:bg-sidebar-accent hover:text-foreground focus-visible:bg-sidebar-accent","data-sql":I.sql,onClick:c,type:"button",children:[b("svg",{"aria-hidden":"true",className:"size-3.5 shrink-0 opacity-70",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:b("path",{d:"M7 4h7l4 4v12H7zM14 4v4h4"})}),I.label]})},I.label)),e[43]=c,e[44]=L):L=e[44];let T;e[45]!==L?(T=b("ul",{className:"flex flex-col gap-px",children:L}),e[45]=L,e[46]=T):T=e[46];let q;e[47]!==N||e[48]!==T?(q=F("div",{children:[N,T]}),e[47]=N,e[48]=T,e[49]=q):q=e[49];let E;e[50]!==t||e[51]!==s||e[52]!==i||e[53]!==x||e[54]!==d||e[55]!==u?(E=t.length>0&&F("div",{children:[F("div",{className:"flex items-center justify-between px-1 pb-1",children:[b("p",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:u("History")}),b("button",{className:"rounded px-1 text-[11px] text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:text-foreground","data-testid":"sql-history-clear",onClick:s,type:"button",children:u("Clear history")})]}),F("label",{className:"flex cursor-pointer items-center gap-1.5 px-1 pb-1.5 text-[11px] text-muted-foreground",htmlFor:Ze,children:[b("input",{checked:d,"data-testid":"sql-history-remember",id:Ze,onChange:x,type:"checkbox"}),u("Keep history on this browser")]}),b("ul",{className:"flex flex-col gap-px","data-testid":"sql-history",children:t.map(I=>b("li",{children:F("button",{className:"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-start text-[13px] text-muted-foreground outline-none transition-colors hover:bg-sidebar-accent hover:text-foreground focus-visible:bg-sidebar-accent","data-sql":I.sql,"data-testid":"sql-history-item",onClick:i,title:I.sql,type:"button",children:[b("svg",{"aria-hidden":"true",className:"size-3.5 shrink-0 opacity-70",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:b("path",{d:"M12 8v4l3 2M12 21a9 9 0 1 1 0-18 9 9 0 0 1 0 18Z"})}),b("span",{className:"truncate font-mono",children:I.sql})]})},`${I.at.toString()}:${I.sql}`))})]}),e[50]=t,e[51]=s,e[52]=i,e[53]=x,e[54]=d,e[55]=u,e[56]=E):E=e[56];let A;e[57]!==h||e[58]!==E||e[59]!==p||e[60]!==q?(A=F("div",{className:h,children:[p,q,E]}),e[57]=h,e[58]=E,e[59]=p,e[60]=q,e[61]=A):A=e[61];let _;return e[62]!==A||e[63]!==C||e[64]!==y?(_=F("aside",{className:C,children:[y,A]}),e[62]=A,e[63]=C,e[64]=y,e[65]=_):_=e[65],_},Ie=l=>`border-b-2 px-3 py-2 text-sm outline-none transition-colors ${l?"border-foreground font-medium text-foreground":"border-transparent text-muted-foreground hover:text-foreground"}`,ns=l=>{const e=Y(96),{assistant:n,chart:t,className:o,error:s,onFormat:r,onInferChart:i,onRun:c,onSelectStatement:a,onShardKeyChange:m,onShowChart:g,onShowExplain:f,onShowResults:v,onToggleSplit:d,pane:S,result:u,running:x,script:h,shardKey:C,splitView:y}=l,p=de(),k=S==="results";let N;e[0]!==k?(N=Ie(k),e[0]=k,e[1]=N):N=e[1];let L;e[2]!==p?(L=p("Results"),e[2]=p,e[3]=L):L=e[3];let T;e[4]!==v||e[5]!==N||e[6]!==L?(T=b("button",{className:N,"data-testid":"sql-tab-results",onClick:v,type:"button",children:L}),e[4]=v,e[5]=N,e[6]=L,e[7]=T):T=e[7];const q=S==="chart";let E;e[8]!==q?(E=Ie(q),e[8]=q,e[9]=E):E=e[9];let A;e[10]!==p?(A=p("Chart"),e[10]=p,e[11]=A):A=e[11];let _;e[12]!==g||e[13]!==E||e[14]!==A?(_=b("button",{className:E,"data-testid":"sql-tab-chart",onClick:g,type:"button",children:A}),e[12]=g,e[13]=E,e[14]=A,e[15]=_):_=e[15];let I;e[16]!==n||e[17]!==i||e[18]!==S||e[19]!==u||e[20]!==p?(I=!n.unavailable&&S==="chart"&&u!==null&&b("button",{className:Ie(!1),"data-testid":"sql-infer-chart",disabled:n.pending("chart"),onClick:i,type:"button",children:n.pending("chart")?p("Thinking…"):p("Suggest chart")}),e[16]=n,e[17]=i,e[18]=S,e[19]=u,e[20]=p,e[21]=I):I=e[21];const B=S==="explain";let D;e[22]!==B?(D=Ie(B),e[22]=B,e[23]=D):D=e[23];let P;e[24]!==p?(P=p("Explain"),e[24]=p,e[25]=P):P=e[25];let O;e[26]!==f||e[27]!==D||e[28]!==P?(O=b("button",{className:D,"data-testid":"sql-tab-explain",onClick:f,type:"button",children:P}),e[26]=f,e[27]=D,e[28]=P,e[29]=O):O=e[29];let w;e[30]!==p?(w=p("Split editor and results"),e[30]=p,e[31]=w):w=e[31];const W=`inline-flex items-center rounded-md border border-border px-2 py-1.5 outline-none transition-colors hover:bg-accent focus-visible:bg-accent ${y?"bg-accent text-foreground":"text-muted-foreground"}`;let R;e[32]!==p?(R=p("Split editor and results"),e[32]=p,e[33]=R):R=e[33];let M;e[34]===Symbol.for("react.memo_cache_sentinel")?(M=F("svg",{"aria-hidden":"true",className:"size-4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.7,viewBox:"0 0 24 24",children:[b("rect",{height:"16",rx:"2",width:"18",x:"3",y:"4"}),b("path",{d:"M12 4v16"})]}),e[34]=M):M=e[34];let U;e[35]!==d||e[36]!==y||e[37]!==w||e[38]!==W||e[39]!==R?(U=b("button",{"aria-label":w,"aria-pressed":y,className:W,"data-testid":"sql-split-toggle",onClick:d,title:R,type:"button",children:M}),e[35]=d,e[36]=y,e[37]=w,e[38]=W,e[39]=R,e[40]=U):U=e[40];let $;e[41]!==u?($=u!==null&&u.columns.length>0&&b(Et,{columns:u.columns,name:"query-result",rows:u.rows}),e[41]=u,e[42]=$):$=e[42];let X;e[43]!==p?(X=p("Format"),e[43]=p,e[44]=X):X=e[44];let Z;e[45]!==r||e[46]!==x||e[47]!==X?(Z=b("button",{className:"inline-flex items-center rounded-md border border-border px-3 py-1.5 text-xs font-medium text-foreground outline-none transition-colors hover:bg-accent focus-visible:bg-accent disabled:pointer-events-none disabled:opacity-50","data-testid":"sql-format",disabled:x,onClick:r,type:"button",children:X}),e[45]=r,e[46]=x,e[47]=X,e[48]=Z):Z=e[48];let ee;e[49]!==m||e[50]!==C?(ee=b(Nt,{onChange:m,testId:"sql-shard-input",value:C}),e[49]=m,e[50]=C,e[51]=ee):ee=e[51];let te;e[52]!==x||e[53]!==p?(te=p(x?"Running…":"Run"),e[52]=x,e[53]=p,e[54]=te):te=e[54];let ie;e[55]===Symbol.for("react.memo_cache_sentinel")?(ie=b("kbd",{className:"rounded border border-primary-foreground/30 px-1 font-sans text-[10px]",children:"⌘↵"}),e[55]=ie):ie=e[55];let G;e[56]!==c||e[57]!==x||e[58]!==te?(G=F("button",{className:"inline-flex items-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground outline-none transition-colors hover:bg-primary/90 focus-visible:bg-primary/90 disabled:pointer-events-none disabled:opacity-50","data-testid":"sql-run",disabled:x,onClick:c,type:"button",children:[te,ie]}),e[56]=c,e[57]=x,e[58]=te,e[59]=G):G=e[59];let Q;e[60]!==U||e[61]!==$||e[62]!==Z||e[63]!==ee||e[64]!==G?(Q=F("div",{className:"ms-auto flex items-center gap-2",children:[U,$,Z,ee,G]}),e[60]=U,e[61]=$,e[62]=Z,e[63]=ee,e[64]=G,e[65]=Q):Q=e[65];let ne;e[66]!==O||e[67]!==Q||e[68]!==T||e[69]!==_||e[70]!==I?(ne=F("div",{className:"flex shrink-0 items-center gap-2 border-b border-border pe-2",children:[T,_,I,O,Q]}),e[66]=O,e[67]=Q,e[68]=T,e[69]=_,e[70]=I,e[71]=ne):ne=e[71];let se;e[72]!==a||e[73]!==h?(se=h!==void 0&&b("div",{className:"flex shrink-0 flex-wrap items-center gap-1 border-b border-border px-3 py-1.5","data-testid":"sql-statements",children:h.runs.map((z,J)=>b("button",{"aria-pressed":J===h.selected,className:`rounded-md border px-2 py-0.5 font-mono text-[11px] outline-none transition-colors ${J===h.selected?"border-foreground text-foreground":"border-border text-muted-foreground hover:text-foreground"} ${z.error===null?"":"border-destructive/50 text-destructive"}`,"data-testid":`sql-statement-${J.toString()}`,onClick:()=>{a(J)},title:z.sql,type:"button",children:J+1},`${J.toString()}:${z.sql}`))}),e[72]=a,e[73]=h,e[74]=se):se=e[74];let oe;e[75]!==s?(oe=s!==null&&b(kt,{className:"m-3 font-mono text-xs",testId:"sql-error",variant:"destructive",children:s}),e[75]=s,e[76]=oe):oe=e[76];let le;e[77]!==s||e[78]!==u||e[79]!==p?(le=s===null&&u===null&&b("p",{className:"p-4 text-sm text-muted-foreground","data-testid":"sql-empty",children:p("Click Run to execute your query.")}),e[77]=s,e[78]=u,e[79]=p,e[80]=le):le=e[80];let re;e[81]!==t||e[82]!==s||e[83]!==S||e[84]!==u||e[85]!==p?(re=s===null&&u!==null&&F("div",{"data-testid":"sql-result",children:[S==="chart"?b(wt,{axes:t,result:u}):b(Ct,{result:u}),b("p",{className:"border-t border-border px-3 py-1.5 text-xs text-muted-foreground","data-testid":"sql-count",children:u.truncated?p("Showing the first {max} of {count} rows.",{count:u.rowCount,max:u.rows.length}):p("{count} rows",{count:u.rowCount})})]}),e[81]=t,e[82]=s,e[83]=S,e[84]=u,e[85]=p,e[86]=re):re=e[86];let H;e[87]!==oe||e[88]!==le||e[89]!==re?(H=F("div",{className:"min-h-0 flex-1 overflow-auto",children:[oe,le,re]}),e[87]=oe,e[88]=le,e[89]=re,e[90]=H):H=e[90];let j;return e[91]!==o||e[92]!==ne||e[93]!==se||e[94]!==H?(j=F("div",{className:o,children:[ne,se,H]}),e[91]=o,e[92]=ne,e[93]=se,e[94]=H,e[95]=j):j=e[95],j},ss=(l,e)=>l.trim()===""?e:(l.split(`
8
+ `)[0]??l).slice(0,24),os=l=>{l?.focus(),l?.select()},ls=l=>{const e=Y(14),{initial:n,onCancel:t,onCommit:o,placeholder:s,testId:r}=l,i=de();let c;e[0]!==o?(c=d=>{o(d.currentTarget.value.trim())},e[0]=o,e[1]=c):c=e[1];const a=c;let m;e[2]!==t||e[3]!==o?(m=d=>{d.key==="Enter"?o(d.currentTarget.value.trim()):d.key==="Escape"&&t()},e[2]=t,e[3]=o,e[4]=m):m=e[4];const g=m;let f;e[5]!==i?(f=i("Tab title"),e[5]=i,e[6]=f):f=e[6];let v;return e[7]!==n||e[8]!==a||e[9]!==g||e[10]!==s||e[11]!==f||e[12]!==r?(v=b("input",{"aria-label":f,className:"w-40 rounded border border-ring bg-background px-1 py-0.5 text-xs outline-none","data-testid":r,defaultValue:n,onBlur:a,onKeyDown:g,placeholder:s,ref:os,type:"text"}),e[7]=n,e[8]=a,e[9]=g,e[10]=s,e[11]=f,e[12]=r,e[13]=v):v=e[13],v},rs=l=>{const e=Y(29),{idBase:n,onDiscard:t,onKeep:o}=l,s=de(),r=`sql-tab-close-prompt-${n}`;let i;e[0]!==s?(i=s("Discard?"),e[0]=s,e[1]=i):i=e[1];let c;e[2]!==i?(c=b("span",{className:"text-[11px] text-muted-foreground",children:i}),e[2]=i,e[3]=c):c=e[3];let a;e[4]!==s?(a=s("Discard changes"),e[4]=s,e[5]=a):a=e[5];const m=`sql-tab-close-confirm-${n}`;let g;e[6]!==s?(g=s("Discard changes"),e[6]=s,e[7]=g):g=e[7];let f;e[8]===Symbol.for("react.memo_cache_sentinel")?(f=b("svg",{"aria-hidden":"true",className:"size-3",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.4,viewBox:"0 0 24 24",children:b("path",{d:"M5 13l4 4L19 7"})}),e[8]=f):f=e[8];let v;e[9]!==t||e[10]!==a||e[11]!==m||e[12]!==g?(v=b("button",{"aria-label":a,className:"flex size-5 items-center justify-center rounded text-destructive hover:bg-destructive/10","data-testid":m,onClick:t,title:g,type:"button",children:f}),e[9]=t,e[10]=a,e[11]=m,e[12]=g,e[13]=v):v=e[13];let d;e[14]!==s?(d=s("Keep editing"),e[14]=s,e[15]=d):d=e[15];const S=`sql-tab-close-cancel-${n}`;let u;e[16]!==s?(u=s("Keep editing"),e[16]=s,e[17]=u):u=e[17];let x;e[18]===Symbol.for("react.memo_cache_sentinel")?(x=b("svg",{"aria-hidden":"true",className:"size-3",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.4,viewBox:"0 0 24 24",children:b("path",{d:"M6 6l12 12M18 6 6 18"})}),e[18]=x):x=e[18];let h;e[19]!==o||e[20]!==S||e[21]!==u||e[22]!==d?(h=b("button",{"aria-label":d,className:"flex size-5 items-center justify-center rounded text-muted-foreground hover:bg-accent","data-testid":S,onClick:o,title:u,type:"button",children:x}),e[19]=o,e[20]=S,e[21]=u,e[22]=d,e[23]=h):h=e[23];let C;return e[24]!==r||e[25]!==h||e[26]!==c||e[27]!==v?(C=F("span",{className:"flex shrink-0 items-center gap-1","data-testid":r,role:"group",children:[c,v,h]}),e[24]=r,e[25]=h,e[26]=c,e[27]=v,e[28]=C):C=e[28],C},is=l=>{const e=Y(47),{active:n,canClose:t,onClose:o,onMenu:s,onRename:r,onSelect:i,tab:c}=l,a=de(),[m,g]=ce(!1),[f,v]=ce(!1);let d;e[0]!==s||e[1]!==c.id?(d=$=>{s(c.id,$)},e[0]=s,e[1]=c.id,e[2]=d):d=e[2];const S=d;let u;e[3]!==i||e[4]!==c.id?(u=()=>{i(c.id)},e[3]=i,e[4]=c.id,e[5]=u):u=e[5];const x=u;let h;e[6]===Symbol.for("react.memo_cache_sentinel")?(h=()=>{g(!0)},e[6]=h):h=e[6];const C=h;let y;e[7]!==o||e[8]!==c?(y=$=>{$.stopPropagation(),dt(c)?v(!0):o(c.id)},e[7]=o,e[8]=c,e[9]=y):y=e[9];const p=y;let k;e[10]!==o||e[11]!==c.id?(k=$=>{$.stopPropagation(),v(!1),o(c.id)},e[10]=o,e[11]=c.id,e[12]=k):k=e[12];const N=k;let L;e[13]===Symbol.for("react.memo_cache_sentinel")?(L=$=>{$.stopPropagation(),v(!1)},e[13]=L):L=e[13];const T=L;let q;e[14]!==r||e[15]!==c.id?(q=$=>{r(c.id,$),g(!1)},e[14]=r,e[15]=c.id,e[16]=q):q=e[16];const E=q;let A;e[17]===Symbol.for("react.memo_cache_sentinel")?(A=()=>{g(!1)},e[17]=A):A=e[17];const _=A;let I;e[18]!==c.name?(I=c.name.trim(),e[18]=c.name,e[19]=I):I=e[19];const B=I;let D;e[20]!==a||e[21]!==c.sql?(D=ss(c.sql,a("Untitled")),e[20]=a,e[21]=c.sql,e[22]=D):D=e[22];const P=D,O=n?"bg-background text-foreground":"bg-muted/40 text-muted-foreground hover:text-foreground";let w;e[23]!==O?(w=fe("group/tab flex shrink-0 items-center gap-1 border-e border-border ps-3 pe-1.5 text-xs",O),e[23]=O,e[24]=w):w=e[24];const W=`sql-tab-${c.id}`;let R;e[25]!==n||e[26]!==E||e[27]!==B||e[28]!==P||e[29]!==m||e[30]!==x||e[31]!==a||e[32]!==c.id?(R=m?b(ls,{initial:B,onCancel:_,onCommit:E,placeholder:P,testId:`sql-tab-rename-${c.id}`}):b("button",{"aria-pressed":n,className:"max-w-40 truncate py-1.5 outline-none","data-testid":`sql-tab-select-${c.id}`,onClick:x,onDoubleClick:C,title:a("Double-click to rename"),type:"button",children:B===""?P:B}),e[25]=n,e[26]=E,e[27]=B,e[28]=P,e[29]=m,e[30]=x,e[31]=a,e[32]=c.id,e[33]=R):R=e[33];let M;e[34]!==t||e[35]!==N||e[36]!==f||e[37]!==p||e[38]!==a||e[39]!==c.id?(M=t&&(f?b(rs,{idBase:c.id,onDiscard:N,onKeep:T}):b("button",{"aria-label":a("Close tab"),className:"flex size-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-destructive/10 hover:text-destructive","data-testid":`sql-tab-close-${c.id}`,onClick:p,title:a("Close tab"),type:"button",children:b("svg",{"aria-hidden":"true",className:"size-3",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,viewBox:"0 0 24 24",children:b("path",{d:"M6 6l12 12M18 6 6 18"})})})),e[34]=t,e[35]=N,e[36]=f,e[37]=p,e[38]=a,e[39]=c.id,e[40]=M):M=e[40];let U;return e[41]!==S||e[42]!==w||e[43]!==W||e[44]!==R||e[45]!==M?(U=F("div",{className:w,"data-testid":W,onContextMenu:S,children:[R,M]}),e[41]=S,e[42]=w,e[43]=W,e[44]=R,e[45]=M,e[46]=U):U=e[46],U},as=l=>{const e=Y(43),{model:n,onSelect:t}=l,o=de(),{activeTab:s,addEditorTab:r,cancelBulk:i,closeEditorTab:c,closeTabMenu:a,confirmBulk:m,menuStyle:g,onBackdropContextMenu:f,onCloseAll:v,onCloseOthers:d,onCloseToRight:S,openTabMenu:u,pendingBulk:x,renameTab:h,tabMenu:C,tabs:y}=n;let p;if(e[0]!==s||e[1]!==c||e[2]!==t||e[3]!==u||e[4]!==h||e[5]!==y){let I;e[7]!==s||e[8]!==c||e[9]!==t||e[10]!==u||e[11]!==h||e[12]!==y.length?(I=B=>b(is,{active:B.id===s.id,canClose:y.length>1,onClose:c,onMenu:u,onRename:h,onSelect:t,tab:B},B.id),e[7]=s,e[8]=c,e[9]=t,e[10]=u,e[11]=h,e[12]=y.length,e[13]=I):I=e[13],p=y.map(I),e[0]=s,e[1]=c,e[2]=t,e[3]=u,e[4]=h,e[5]=y,e[6]=p}else p=e[6];let k;e[14]!==o?(k=o("New tab"),e[14]=o,e[15]=k):k=e[15];const N=y.length>=ze;let L;e[16]!==o?(L=o("New tab"),e[16]=o,e[17]=L):L=e[17];let T;e[18]===Symbol.for("react.memo_cache_sentinel")?(T=b("svg",{"aria-hidden":"true",className:"size-4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.7,viewBox:"0 0 24 24",children:b("path",{d:"M12 5v14M5 12h14"})}),e[18]=T):T=e[18];let q;e[19]!==r||e[20]!==k||e[21]!==N||e[22]!==L?(q=b("button",{"aria-label":k,className:"flex size-8 shrink-0 items-center justify-center text-muted-foreground outline-none transition-colors hover:bg-accent hover:text-foreground focus-visible:bg-accent disabled:pointer-events-none disabled:opacity-40","data-testid":"sql-tab-add",disabled:N,onClick:r,title:L,type:"button",children:T}),e[19]=r,e[20]=k,e[21]=N,e[22]=L,e[23]=q):q=e[23];let E;e[24]!==p||e[25]!==q?(E=F("div",{className:"flex shrink-0 items-stretch overflow-x-auto border-b border-border bg-muted/30","data-testid":"sql-tab-strip",role:"tablist",children:[p,q]}),e[24]=p,e[25]=q,e[26]=E):E=e[26];let A;e[27]!==i||e[28]!==a||e[29]!==m||e[30]!==g||e[31]!==f||e[32]!==v||e[33]!==d||e[34]!==S||e[35]!==x||e[36]!==o||e[37]!==C||e[38]!==y?(A=C!==null&&F(He,{children:[b("div",{className:"fixed inset-0 z-40","data-testid":"sql-tab-menu-backdrop",onClick:a,onContextMenu:f,role:"presentation"}),b("div",{className:"fixed z-50 min-w-44 rounded-md border border-border bg-popover py-1 text-popover-foreground shadow-md","data-testid":"sql-tab-menu",role:"menu",style:g,children:x===null?F(He,{children:[b("button",{className:"flex w-full items-center px-3 py-1.5 text-start text-xs outline-none hover:bg-accent focus-visible:bg-accent disabled:pointer-events-none disabled:opacity-40","data-testid":"sql-tab-menu-close-others",disabled:y.length<=1,onClick:d,role:"menuitem",type:"button",children:o("Close other tabs")}),b("button",{className:"flex w-full items-center px-3 py-1.5 text-start text-xs outline-none hover:bg-accent focus-visible:bg-accent disabled:pointer-events-none disabled:opacity-40","data-testid":"sql-tab-menu-close-right",disabled:y.findIndex(I=>I.id===C.id)>=y.length-1,onClick:S,role:"menuitem",type:"button",children:o("Close tabs to the right")}),b("button",{className:"flex w-full items-center px-3 py-1.5 text-start text-xs outline-none hover:bg-accent focus-visible:bg-accent","data-testid":"sql-tab-menu-close-all",onClick:v,role:"menuitem",type:"button",children:o("Close all tabs")})]}):F("div",{className:"px-3 py-1.5","data-testid":"sql-tab-menu-confirm",children:[b("p",{className:"pb-1.5 text-xs text-muted-foreground",children:o("Discard unsaved tabs?")}),F("div",{className:"flex items-center gap-1.5",children:[b("button",{className:"rounded px-2 py-1 text-xs font-medium text-destructive outline-none hover:bg-destructive/10 focus-visible:bg-destructive/10","data-testid":"sql-tab-menu-confirm-discard",onClick:m,type:"button",children:o("Discard")}),b("button",{className:"rounded px-2 py-1 text-xs text-muted-foreground outline-none hover:bg-accent focus-visible:bg-accent","data-testid":"sql-tab-menu-confirm-cancel",onClick:i,type:"button",children:o("Cancel")})]})]})})]}),e[27]=i,e[28]=a,e[29]=m,e[30]=g,e[31]=f,e[32]=v,e[33]=d,e[34]=S,e[35]=x,e[36]=o,e[37]=C,e[38]=y,e[39]=A):A=e[39];let _;return e[40]!==E||e[41]!==A?(_=F(He,{children:[E,A]}),e[40]=E,e[41]=A,e[42]=_):_=e[42],_},cs=Oe(_e.runSql),ds="lunora-studio-sql-split-view",us=()=>we(ft[0]?.sql??""),Ls=l=>{const e=Y(112),{initialShardKey:n}=l,t=Qe(),o=$n(us),{activeTab:s,output:r,patchActiveOutput:i,patchActiveTab:c,setActiveTabId:a,unlinkQuery:m}=o;let g;e[0]!==i||e[1]!==c?(g=(K,ae)=>{c({activeId:ae,sql:K}),i({chart:void 0,error:null,failed:void 0,result:null,script:void 0})},e[0]=i,e[1]=c,e[2]=g):g=e[2];const f=g;let v;e[3]!==f||e[4]!==m?(v={loadIntoActiveTab:f,unlinkQuery:m},e[3]=f,e[4]=m,e[5]=v):v=e[5];const d=Qn(v),{recordHistory:S,updateQuerySql:u}=d,x=s.sql,{activeId:h}=s,{chart:C,error:y,failed:p,result:k,running:N}=r,L=r.pane,[T,q]=ce(n??""),[E,A]=Ue(ds,!1),{probe:_,schema:I}=Cn(T);let B;e[6]!==h||e[7]!==c||e[8]!==u?(B=K=>{c({sql:K}),h!==null&&u(h,K)},e[6]=h,e[7]=c,e[8]=u,e[9]=B):B=e[9];const D=B,P=rn(x,I,T),O=vt(T);let w;e[10]!==O||e[11]!==i||e[12]!==k?(w=()=>{if(k===null)return;ue((async()=>{const ae=await O.inferChart({columns:k.columns,rowCount:k.rowCount,types:Object.fromEntries(k.columns.map(V=>[V,typeof(k.rows[0]?.[V]??"")]))});i({chart:ae})})())},e[10]=O,e[11]=i,e[12]=k,e[13]=w):w=e[13];const W=w;let R;e[14]!==t||e[15]!==S||e[16]!==T?(R=async K=>{try{const ae=await t.query(cs,{sql:K},qe(T));return S(K),{error:null,result:ae,sql:K}}catch(ae){return{error:gt(ae),result:null,sql:K}}},e[14]=t,e[15]=S,e[16]=T,e[17]=R):R=e[17];const M=R;let U;e[18]!==x||e[19]!==i||e[20]!==M||e[21]!==T?(U=async K=>{if(x.trim()==="")return;i({running:!0});const ae=K==="explain"?Fe(Mt(x),0):lt(x),V=[];for(const Te of ae){const mt={error:Te.rejection?.message??"",result:null,sql:Te.sql};V.push(Te.rejection===void 0?await M(Te.sql):mt)}xt(T);const Ye=Math.max(V.length-1,0),ye=V[Ye];i({chart:void 0,error:ye?.error??null,failed:ye?.error===null||ye===void 0?void 0:{error:ye.error,sql:ye.sql},pane:K,result:ye?.result??null,running:!1,script:V.length>1?{runs:V,selected:Ye}:void 0})},e[18]=x,e[19]=i,e[20]=M,e[21]=T,e[22]=U):U=e[22];const $=U;let X;e[23]!==r.script?.runs||e[24]!==i?(X=K=>{const ae=r.script?.runs,V=ae?.[K];ae===void 0||V===void 0||i({chart:void 0,error:V.error,failed:V.error===null?void 0:{error:V.error,sql:V.sql},result:V.result,script:{runs:ae,selected:K}})},e[23]=r.script?.runs,e[24]=i,e[25]=X):X=e[25];const Z=X;let ee;e[26]!==$?(ee=()=>{ue($("results"))},e[26]=$,e[27]=ee):ee=e[27];const te=ee;let ie;e[28]!==r.pane||e[29]!==$?(ie=()=>{ue($(r.pane))},e[28]=r.pane,e[29]=$,e[30]=ie):ie=e[30];let G;e[31]!==_||e[32]!==I||e[33]!==D||e[34]!==ie?(G={onSubmit:ie,probe:_,schema:I,setDraft:D},e[31]=_,e[32]=I,e[33]=D,e[34]=ie,e[35]=G):G=e[35];const Q=En(G),{closeAutocomplete:ne}=Q;let se;e[36]!==x||e[37]!==D?(se=()=>{D(Ft(x))},e[36]=x,e[37]=D,e[38]=se):se=e[38];const oe=se;let le;e[39]!==ne||e[40]!==a?(le=K=>{ne(),a(K)},e[39]=ne,e[40]=a,e[41]=le):le=e[41];const re=le;let H;e[42]!==i?(H=()=>{i({pane:"results"})},e[42]=i,e[43]=H):H=e[43];const j=H;let z;e[44]!==$?(z=()=>{ue($("explain"))},e[44]=$,e[45]=z):z=e[45];const J=z;let me;e[46]!==i?(me=()=>{i({pane:"chart"})},e[46]=i,e[47]=me):me=e[47];const De=me;let ke;e[48]!==A||e[49]!==E?(ke=()=>{A(!E)},e[48]=A,e[49]=E,e[50]=ke):ke=e[50];const Me=ke,$e=E?"flex min-h-0 flex-1 flex-row":"flex min-h-0 flex-1 flex-col",Be=E?"flex w-2/5 min-h-0 min-w-0 shrink-0 flex-col border-s border-border":"flex h-2/5 min-h-0 shrink-0 flex-col border-t border-border";let he;e[51]!==h||e[52]!==d.clearHistory||e[53]!==d.deleteQuery||e[54]!==d.history||e[55]!==d.listRef||e[56]!==d.loadFromHistory||e[57]!==d.loadTemplate||e[58]!==d.newQuery||e[59]!==d.onSearchChange||e[60]!==d.queries||e[61]!==d.rememberHistory||e[62]!==d.search||e[63]!==d.selectQuery||e[64]!==d.setRememberHistory?(he=b(ts,{activeId:h,history:d.history,listRef:d.listRef,onClearHistory:d.clearHistory,onDelete:d.deleteQuery,onLoadHistory:d.loadFromHistory,onLoadTemplate:d.loadTemplate,onNew:d.newQuery,onSearchChange:d.onSearchChange,onSelect:d.selectQuery,onToggleRememberHistory:d.setRememberHistory,queries:d.queries,rememberHistory:d.rememberHistory,search:d.search}),e[51]=h,e[52]=d.clearHistory,e[53]=d.deleteQuery,e[54]=d.history,e[55]=d.listRef,e[56]=d.loadFromHistory,e[57]=d.loadTemplate,e[58]=d.newQuery,e[59]=d.onSearchChange,e[60]=d.queries,e[61]=d.rememberHistory,e[62]=d.search,e[63]=d.selectQuery,e[64]=d.setRememberHistory,e[65]=he):he=e[65];let pe;e[66]!==o||e[67]!==re?(pe=b(as,{model:o,onSelect:re}),e[66]=o,e[67]=re,e[68]=pe):pe=e[68];let be;e[69]!==O||e[70]!==P||e[71]!==x||e[72]!==p||e[73]!==D||e[74]!==Q.autocompleteState||e[75]!==Q.editorRef||e[76]!==Q.gutterRef||e[77]!==Q.handlers||e[78]!==Q.listboxId||e[79]!==Q.onPickSuggestion||e[80]!==Q.overlayRef||e[81]!==Q.revealDiagnostic?(be=b(Vn,{assistant:O,autocomplete:Q.autocompleteState,diagnostics:P,draft:x,editorRef:Q.editorRef,failed:p,gutterRef:Q.gutterRef,handlers:Q.handlers,listboxId:Q.listboxId,onGenerated:D,onPickSuggestion:Q.onPickSuggestion,onRevealDiagnostic:Q.revealDiagnostic,overlayRef:Q.overlayRef}),e[69]=O,e[70]=P,e[71]=x,e[72]=p,e[73]=D,e[74]=Q.autocompleteState,e[75]=Q.editorRef,e[76]=Q.gutterRef,e[77]=Q.handlers,e[78]=Q.listboxId,e[79]=Q.onPickSuggestion,e[80]=Q.overlayRef,e[81]=Q.revealDiagnostic,e[82]=be):be=e[82];let ge;e[83]!==O||e[84]!==y||e[85]!==oe||e[86]!==W||e[87]!==C||e[88]!==te||e[89]!==Z||e[90]!==r.script||e[91]!==k||e[92]!==Be||e[93]!==N||e[94]!==T||e[95]!==De||e[96]!==J||e[97]!==j||e[98]!==E||e[99]!==L||e[100]!==Me?(ge=b(ns,{assistant:O,chart:C,className:Be,error:y,onFormat:oe,onInferChart:W,onRun:te,onSelectStatement:Z,onShardKeyChange:q,onShowChart:De,onShowExplain:J,onShowResults:j,onToggleSplit:Me,pane:L,result:k,running:N,script:r.script,shardKey:T,splitView:E}),e[83]=O,e[84]=y,e[85]=oe,e[86]=W,e[87]=C,e[88]=te,e[89]=Z,e[90]=r.script,e[91]=k,e[92]=Be,e[93]=N,e[94]=T,e[95]=De,e[96]=J,e[97]=j,e[98]=E,e[99]=L,e[100]=Me,e[101]=ge):ge=e[101];let xe;e[102]!==be||e[103]!==ge||e[104]!==$e?(xe=F("div",{className:$e,children:[be,ge]}),e[102]=be,e[103]=ge,e[104]=$e,e[105]=xe):xe=e[105];let ve;e[106]!==pe||e[107]!==xe?(ve=F("div",{className:"flex min-w-0 flex-1 flex-col",children:[pe,xe]}),e[106]=pe,e[107]=xe,e[108]=ve):ve=e[108];let Ee;return e[109]!==he||e[110]!==ve?(Ee=F("div",{className:"flex h-full min-w-0","data-testid":"lunora-sql-editor",children:[he,ve]}),e[109]=he,e[110]=ve,e[111]=Ee):Ee=e[111],Ee};export{Ls as SqlEditorPanel};
@@ -1 +1 @@
1
- import{c as V}from"react/compiler-runtime";import{useLunora as k}from"@lunora/react";import{useNavigate as F,useRouter as L,useSearch as M}from"@tanstack/react-router";import{useState as Q,useEffect as A}from"react";import{T as w}from"../packem_shared/storage-tier-C2mKwYRj.mjs";import{u as P}from"../packem_shared/table-list-sidebar-DHG1UJC4.mjs";import{useT as q}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{s as J,d as D}from"../packem_shared/data-view-params-qoSTqjAj.mjs";import{f}from"../packem_shared/internal-B6haJbiP.mjs";import{l as K,s as O}from"../packem_shared/browser-storage-BH1MxLZs.mjs";import{DataBrowser as I}from"../packem_shared/DataBrowser-Bpj-0P1G.mjs";import{GlobalDataBrowser as X}from"../packem_shared/GlobalDataBrowser-BTbqR6Wc.mjs";import{jsx as v,jsxs as E}from"react/jsx-runtime";const N="lunora-studio-saved-queries",Y=50,$=r=>r!==null&&typeof r=="object"&&typeof r.name=="string"&&typeof r.view=="object"&&r.view!==null,S=()=>K(N).filter($),B=r=>{O(N,r)},z=(r,e)=>{const s=r.trim();if(s==="")return S();const o=[{name:s,view:e},...S().filter(b=>b.name!==s)].slice(0,Y);return B(o),o},H=r=>{const e=S().filter(s=>s.name!==r);return B(e),e},U=r=>{const e=V(15),{onChange:s,tier:o}=r,b=q();let d;e[0]!==s?(d=y=>{s(y.target.value)},e[0]=s,e[1]=d):d=e[1];const l=d;let h;e[2]!==b?(h=b("Storage tier"),e[2]=b,e[3]=h):h=e[3];let i;e[4]!==h?(i=v("span",{className:"font-mono text-[11px] tracking-wide uppercase text-muted-foreground",children:h}),e[4]=h,e[5]=i):i=e[5];const m=w[o];let n,g;e[6]===Symbol.for("react.memo_cache_sentinel")?(n=v("option",{value:"shard",children:w.shard.label}),g=v("option",{value:"global",children:w.global.label}),e[6]=n,e[7]=g):(n=e[6],g=e[7]);let c;e[8]!==l||e[9]!==m.title||e[10]!==o?(c=E("select",{className:"h-8 w-full rounded-md border border-border bg-background px-2 text-sm outline-none focus-visible:border-ring","data-testid":"table-editor-schema",id:"table-editor-schema",onChange:l,title:m.title,value:o,children:[n,g]}),e[8]=l,e[9]=m.title,e[10]=o,e[11]=c):c=e[11];let u;return e[12]!==i||e[13]!==c?(u=E("label",{className:"flex w-full flex-col gap-1",htmlFor:"table-editor-schema",children:[i,c]}),e[12]=i,e[13]=c,e[14]=u):u=e[14],u},W=()=>{try{f(globalThis.navigator.clipboard.writeText(globalThis.location.href))}catch{}},pe=({editable:r=!1,initialShardKey:e})=>{const s=k(),o=F(),b=L(),d=M({strict:!1}),l=J(d),h=P(d),i=()=>b.state.location.pathname.split("/").findLast(Boolean)==="data",m=l.tier??"shard",n=l.table,[g,c]=Q(()=>S()),[u,y]=Q(()=>new Set);A(()=>{f((async()=>{try{const a=await s.listGlobalTables();y(new Set(a.map(t=>t.name)))}catch{}})())},[s]),A(()=>{m==="shard"&&n!==void 0&&u.has(n)&&f(o({replace:!0,search:a=>({...a,schema:"global"}),to:"/data"}))},[u,o,n,m]);const R=a=>{f(o({search:t=>({...t,schema:a==="global"?"global":void 0,table:void 0}),to:"/data"}))},T=(a,t)=>{i()&&f(o({search:p=>({schema:p.schema,search:t?.search,shard:p.shard,table:a}),to:"/data"}))},C=a=>{f(o({search:t=>({...t,schema:"global",table:a}),to:"/data"}))},G=a=>{const t=D(a),{current:p}=h;(p.filters??void 0)===t.filters&&(p.order??void 0)===t.order&&(p.search??void 0)===t.search&&(p.shard??void 0)===t.shard||!i()||f(o({replace:!0,search:j=>({...j,filters:t.filters,order:t.order,search:t.search,shard:t.shard}),to:"/data"}))},_={onApplyQuery:a=>{const t=D(a.view);f(o({search:()=>({filters:t.filters,order:t.order,schema:t.schema,search:t.search,shard:t.shard,table:t.table}),to:"/data"}))},onCopyLink:W,onDeleteQuery:a=>{c(H(a))},onSaveQuery:(a,t)=>{c(z(a,t))},saved:g},x=v(U,{onChange:R,tier:m});return m==="global"?v(X,{initialTable:n,onSelectTable:T,schemaSwitch:x}):v(I,{editable:r,globalTableNames:u,initialFilters:l.filters,initialOrderBy:l.orderBy,initialPins:d.pins,initialSearch:l.search,initialShardKey:l.shard??e,onNavigateToGlobal:C,onSelectTable:T,onViewChange:G,queryBar:_,schemaSwitch:x,tableParam:n})};export{pe as TableEditor};
1
+ import{c as V}from"react/compiler-runtime";import{useLunora as k}from"@lunora/react";import{useNavigate as F,useRouter as L,useSearch as M}from"@tanstack/react-router";import{useState as Q,useEffect as A}from"react";import{T as w}from"../packem_shared/storage-tier-C2mKwYRj.mjs";import{u as P}from"../packem_shared/table-list-sidebar-DHG1UJC4.mjs";import{useT as q}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{s as J,d as D}from"../packem_shared/data-view-params-qoSTqjAj.mjs";import{f}from"../packem_shared/internal-B6haJbiP.mjs";import{l as K,s as O}from"../packem_shared/browser-storage-BH1MxLZs.mjs";import{DataBrowser as I}from"../packem_shared/DataBrowser-B0XdZT2Z.mjs";import{GlobalDataBrowser as X}from"../packem_shared/GlobalDataBrowser-BTbqR6Wc.mjs";import{jsx as v,jsxs as E}from"react/jsx-runtime";const N="lunora-studio-saved-queries",Y=50,$=r=>r!==null&&typeof r=="object"&&typeof r.name=="string"&&typeof r.view=="object"&&r.view!==null,S=()=>K(N).filter($),B=r=>{O(N,r)},z=(r,e)=>{const s=r.trim();if(s==="")return S();const o=[{name:s,view:e},...S().filter(b=>b.name!==s)].slice(0,Y);return B(o),o},H=r=>{const e=S().filter(s=>s.name!==r);return B(e),e},U=r=>{const e=V(15),{onChange:s,tier:o}=r,b=q();let d;e[0]!==s?(d=y=>{s(y.target.value)},e[0]=s,e[1]=d):d=e[1];const l=d;let h;e[2]!==b?(h=b("Storage tier"),e[2]=b,e[3]=h):h=e[3];let i;e[4]!==h?(i=v("span",{className:"font-mono text-[11px] tracking-wide uppercase text-muted-foreground",children:h}),e[4]=h,e[5]=i):i=e[5];const m=w[o];let n,g;e[6]===Symbol.for("react.memo_cache_sentinel")?(n=v("option",{value:"shard",children:w.shard.label}),g=v("option",{value:"global",children:w.global.label}),e[6]=n,e[7]=g):(n=e[6],g=e[7]);let c;e[8]!==l||e[9]!==m.title||e[10]!==o?(c=E("select",{className:"h-8 w-full rounded-md border border-border bg-background px-2 text-sm outline-none focus-visible:border-ring","data-testid":"table-editor-schema",id:"table-editor-schema",onChange:l,title:m.title,value:o,children:[n,g]}),e[8]=l,e[9]=m.title,e[10]=o,e[11]=c):c=e[11];let u;return e[12]!==i||e[13]!==c?(u=E("label",{className:"flex w-full flex-col gap-1",htmlFor:"table-editor-schema",children:[i,c]}),e[12]=i,e[13]=c,e[14]=u):u=e[14],u},W=()=>{try{f(globalThis.navigator.clipboard.writeText(globalThis.location.href))}catch{}},pe=({editable:r=!1,initialShardKey:e})=>{const s=k(),o=F(),b=L(),d=M({strict:!1}),l=J(d),h=P(d),i=()=>b.state.location.pathname.split("/").findLast(Boolean)==="data",m=l.tier??"shard",n=l.table,[g,c]=Q(()=>S()),[u,y]=Q(()=>new Set);A(()=>{f((async()=>{try{const a=await s.listGlobalTables();y(new Set(a.map(t=>t.name)))}catch{}})())},[s]),A(()=>{m==="shard"&&n!==void 0&&u.has(n)&&f(o({replace:!0,search:a=>({...a,schema:"global"}),to:"/data"}))},[u,o,n,m]);const R=a=>{f(o({search:t=>({...t,schema:a==="global"?"global":void 0,table:void 0}),to:"/data"}))},T=(a,t)=>{i()&&f(o({search:p=>({schema:p.schema,search:t?.search,shard:p.shard,table:a}),to:"/data"}))},C=a=>{f(o({search:t=>({...t,schema:"global",table:a}),to:"/data"}))},G=a=>{const t=D(a),{current:p}=h;(p.filters??void 0)===t.filters&&(p.order??void 0)===t.order&&(p.search??void 0)===t.search&&(p.shard??void 0)===t.shard||!i()||f(o({replace:!0,search:j=>({...j,filters:t.filters,order:t.order,search:t.search,shard:t.shard}),to:"/data"}))},_={onApplyQuery:a=>{const t=D(a.view);f(o({search:()=>({filters:t.filters,order:t.order,schema:t.schema,search:t.search,shard:t.shard,table:t.table}),to:"/data"}))},onCopyLink:W,onDeleteQuery:a=>{c(H(a))},onSaveQuery:(a,t)=>{c(z(a,t))},saved:g},x=v(U,{onChange:R,tier:m});return m==="global"?v(X,{initialTable:n,onSelectTable:T,schemaSwitch:x}):v(I,{editable:r,globalTableNames:u,initialFilters:l.filters,initialOrderBy:l.orderBy,initialPins:d.pins,initialSearch:l.search,initialShardKey:l.shard??e,onNavigateToGlobal:C,onSelectTable:T,onViewChange:G,queryBar:_,schemaSwitch:x,tableParam:n})};export{pe as TableEditor};
@@ -1 +1 @@
1
- import{a as j}from"../packem_shared/wire-codec-C0jSa3ZC.mjs";import{E as F}from"../packem_shared/error-alert-tf5zvSLV.mjs";import{B as N}from"../packem_shared/badge-r_5B4LHP.mjs";import{C as b,a as T}from"../packem_shared/card--2hKx4L2.mjs";import{E as S}from"../packem_shared/empty-state-D7jEML_T.mjs";import{T as A,a as L,b as y,c as l,d as E,e as o}from"../packem_shared/table-D0SBiDu-.mjs";import{u as v}from"../packem_shared/use-admin-query-BKXiqLci.mjs";import{useAutoRefresh as Q}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.mjs";import{u as H}from"../packem_shared/home-panel-DCUKd8Uk.mjs";import{useT as M}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as g}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{h as I}from"../packem_shared/internal-B6haJbiP.mjs";import{jsx as e,jsxs as i}from"react/jsx-runtime";const V=["subscriptions","events"],_={},P=new Set(["active","trialing"]),k=new Set(["past_due","unpaid"]),n=(s,r)=>{if(s[r]!==void 0)return s[r];const m=s.__doc__;return typeof m=="string"?j(m)?.[r]:void 0},a=s=>typeof s=="string"?s:typeof s=="number"||typeof s=="bigint"||typeof s=="boolean"?String(s):"",G=s=>P.has(s)?"default":k.has(s)?"destructive":"outline",se=({limit:s=100})=>{const r=M(),m=H(),{data:h}=v(g.listTables,_,{live:!0}),C=h!==void 0,R=Array.isArray(h)&&V.every(t=>h.some(c=>c.name===t)),p=m.payments&&R,d=v(g.readTablePage,{filters:[],limit:s,offset:0,orderBy:[],search:"",table:"subscriptions"},{enabled:p}),u=v(g.readTablePage,{filters:[],limit:25,offset:0,orderBy:[],search:"",table:"events"},{enabled:p});Q(()=>{p&&(d.refetch(),u.refetch())},!0);const f=d.data?.rows??[],B=u.data?.rows??[],w=d.error??u.error,D=d.error===null?u.errorSource:d.errorSource,x=f.filter(t=>P.has(a(n(t,"state")))).length,O=B.toSorted((t,c)=>Number(n(c,"processedAt")??0)-Number(n(t,"processedAt")??0));return C&&!p?e("div",{className:"flex flex-col gap-4","data-testid":"payments-panel",children:e(S,{description:r("No @lunora/payment tables found in this deployment. Declare the store tables (subscriptions, events, …) in lunora/schema.ts and wire `payment` on createShardDO() to sync customers and subscriptions."),testId:"payments-unconfigured",title:r("No payments configured")})}):i("div",{className:"flex flex-col gap-4","data-testid":"payments-panel",children:[e("div",{className:"flex items-center gap-2","data-testid":"payments-summary",children:i(b,{className:"justify-between gap-0 py-0",children:[i("div",{className:"flex flex-col gap-2.5 p-4",children:[e("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:r("Subscriptions")}),i("div",{className:"flex items-center gap-2",children:[e("span",{className:"text-2xl font-semibold tabular-nums text-foreground",children:x}),e(N,{variant:"default",children:r("{count} active",{count:x})})]})]}),e("div",{className:"border-t border-border bg-muted/50 px-4 py-2.5 text-[11px] text-muted-foreground",children:r("{total} total",{total:f.length})})]})}),w===null?void 0:e(F,{error:D}),f.length===0&&!d.isLoading?e(S,{testId:"payments-empty",title:r("No subscriptions yet")}):e(b,{className:"overflow-hidden py-0",children:e(T,{className:"px-0",children:i(A,{children:[e(L,{children:i(y,{children:[e(l,{children:r("Provider")}),e(l,{children:r("Reference")}),e(l,{children:r("Plan")}),e(l,{children:r("State")}),e(l,{children:r("Renews")})]})}),e(E,{children:f.map(t=>{const c=a(n(t,"state"));return i(y,{"data-testid":"payment-subscription-row",children:[e(o,{children:a(n(t,"provider"))}),e(o,{children:a(n(t,"referenceId"))}),e(o,{children:a(n(t,"priceId"))}),e(o,{children:e(N,{variant:G(c),children:c})}),e(o,{children:I(n(t,"currentPeriodEnd"))})]},a(n(t,"providerSubscriptionId")))})})]})})}),i(b,{className:"overflow-hidden py-0",children:[e("header",{className:"border-b border-border px-4 py-3",children:e("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:r("Recent webhook events")})}),e(T,{className:"px-0",children:e(A,{children:e(E,{children:O.map(t=>i(y,{"data-testid":"payment-event-row",children:[e(o,{children:a(n(t,"provider"))}),e(o,{className:"font-medium",children:a(n(t,"type"))}),e(o,{className:"text-muted-foreground",children:a(n(t,"providerEventId"))}),e(o,{children:I(n(t,"processedAt"))})]},a(n(t,"providerEventId"))))})})})]})]})};export{se as PaymentsPanel};
1
+ import{a as j}from"../packem_shared/wire-codec-oeb8YWV3.mjs";import{E as F}from"../packem_shared/error-alert-tf5zvSLV.mjs";import{B as N}from"../packem_shared/badge-r_5B4LHP.mjs";import{C as b,a as T}from"../packem_shared/card--2hKx4L2.mjs";import{E as S}from"../packem_shared/empty-state-D7jEML_T.mjs";import{T as A,a as L,b as y,c as l,d as E,e as o}from"../packem_shared/table-D0SBiDu-.mjs";import{u as v}from"../packem_shared/use-admin-query-BKXiqLci.mjs";import{useAutoRefresh as Q}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.mjs";import{u as H}from"../packem_shared/home-panel-DCUKd8Uk.mjs";import{useT as M}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as g}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{h as I}from"../packem_shared/internal-B6haJbiP.mjs";import{jsx as e,jsxs as i}from"react/jsx-runtime";const V=["subscriptions","events"],_={},P=new Set(["active","trialing"]),k=new Set(["past_due","unpaid"]),n=(s,r)=>{if(s[r]!==void 0)return s[r];const m=s.__doc__;return typeof m=="string"?j(m)?.[r]:void 0},a=s=>typeof s=="string"?s:typeof s=="number"||typeof s=="bigint"||typeof s=="boolean"?String(s):"",G=s=>P.has(s)?"default":k.has(s)?"destructive":"outline",se=({limit:s=100})=>{const r=M(),m=H(),{data:h}=v(g.listTables,_,{live:!0}),C=h!==void 0,R=Array.isArray(h)&&V.every(t=>h.some(c=>c.name===t)),p=m.payments&&R,d=v(g.readTablePage,{filters:[],limit:s,offset:0,orderBy:[],search:"",table:"subscriptions"},{enabled:p}),u=v(g.readTablePage,{filters:[],limit:25,offset:0,orderBy:[],search:"",table:"events"},{enabled:p});Q(()=>{p&&(d.refetch(),u.refetch())},!0);const f=d.data?.rows??[],B=u.data?.rows??[],w=d.error??u.error,D=d.error===null?u.errorSource:d.errorSource,x=f.filter(t=>P.has(a(n(t,"state")))).length,O=B.toSorted((t,c)=>Number(n(c,"processedAt")??0)-Number(n(t,"processedAt")??0));return C&&!p?e("div",{className:"flex flex-col gap-4","data-testid":"payments-panel",children:e(S,{description:r("No @lunora/payment tables found in this deployment. Declare the store tables (subscriptions, events, …) in lunora/schema.ts and wire `payment` on createShardDO() to sync customers and subscriptions."),testId:"payments-unconfigured",title:r("No payments configured")})}):i("div",{className:"flex flex-col gap-4","data-testid":"payments-panel",children:[e("div",{className:"flex items-center gap-2","data-testid":"payments-summary",children:i(b,{className:"justify-between gap-0 py-0",children:[i("div",{className:"flex flex-col gap-2.5 p-4",children:[e("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:r("Subscriptions")}),i("div",{className:"flex items-center gap-2",children:[e("span",{className:"text-2xl font-semibold tabular-nums text-foreground",children:x}),e(N,{variant:"default",children:r("{count} active",{count:x})})]})]}),e("div",{className:"border-t border-border bg-muted/50 px-4 py-2.5 text-[11px] text-muted-foreground",children:r("{total} total",{total:f.length})})]})}),w===null?void 0:e(F,{error:D}),f.length===0&&!d.isLoading?e(S,{testId:"payments-empty",title:r("No subscriptions yet")}):e(b,{className:"overflow-hidden py-0",children:e(T,{className:"px-0",children:i(A,{children:[e(L,{children:i(y,{children:[e(l,{children:r("Provider")}),e(l,{children:r("Reference")}),e(l,{children:r("Plan")}),e(l,{children:r("State")}),e(l,{children:r("Renews")})]})}),e(E,{children:f.map(t=>{const c=a(n(t,"state"));return i(y,{"data-testid":"payment-subscription-row",children:[e(o,{children:a(n(t,"provider"))}),e(o,{children:a(n(t,"referenceId"))}),e(o,{children:a(n(t,"priceId"))}),e(o,{children:e(N,{variant:G(c),children:c})}),e(o,{children:I(n(t,"currentPeriodEnd"))})]},a(n(t,"providerSubscriptionId")))})})]})})}),i(b,{className:"overflow-hidden py-0",children:[e("header",{className:"border-b border-border px-4 py-3",children:e("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:r("Recent webhook events")})}),e(T,{className:"px-0",children:e(A,{children:e(E,{children:O.map(t=>i(y,{"data-testid":"payment-event-row",children:[e(o,{children:a(n(t,"provider"))}),e(o,{className:"font-medium",children:a(n(t,"type"))}),e(o,{className:"text-muted-foreground",children:a(n(t,"providerEventId"))}),e(o,{children:I(n(t,"processedAt"))})]},a(n(t,"providerEventId"))))})})})]})]})};export{se as PaymentsPanel};