@lunora/studio 1.0.0-alpha.186 → 1.0.0-alpha.188
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.
- package/dist/index.mjs +1 -1
- package/dist/packem_chunks/FileBrowser.mjs +1 -1
- package/dist/packem_chunks/SqlEditorPanel.mjs +1 -1
- package/dist/packem_chunks/TableEditor.mjs +1 -1
- package/dist/packem_shared/{DataBrowser-BUFMFvNX.mjs → DataBrowser-zqK4s0IE.mjs} +2 -2
- package/dist/packem_shared/grid-features-Dm80ngyR.mjs +6 -0
- package/dist/standalone/{chunk-NO5VGTWP.js → chunk-2ZSZL5MV.js} +1 -1
- package/dist/standalone/{chunk-IZDX3F65.js → chunk-3KWRWXNU.js} +1 -1
- package/dist/standalone/{chunk-J53LW4GK.js → chunk-3NPBDMKP.js} +1 -1
- package/dist/standalone/{chunk-ZNYTH4BS.js → chunk-4HGBHKYE.js} +1 -1
- package/dist/standalone/{chunk-6DLHIMOI.js → chunk-5KYYY2JT.js} +1 -1
- package/dist/standalone/{chunk-BI2PP4AE.js → chunk-5P47LIVI.js} +1 -1
- package/dist/standalone/{chunk-N4GEA5GK.js → chunk-67NTQ3LZ.js} +1 -1
- package/dist/standalone/{chunk-Y76TQLLR.js → chunk-6IQMOEOF.js} +1 -1
- package/dist/standalone/{chunk-BG52HJBJ.js → chunk-6N434JI6.js} +1 -1
- package/dist/standalone/{chunk-B6BFVYFA.js → chunk-6VVWJZHQ.js} +1 -1
- package/dist/standalone/{chunk-U7YOMGYN.js → chunk-6Z52O4L5.js} +1 -1
- package/dist/standalone/{chunk-PJSZTRRT.js → chunk-APFRLQEI.js} +1 -1
- package/dist/standalone/chunk-BDO4YYBB.js +6 -0
- package/dist/standalone/{chunk-UDXIBUS6.js → chunk-BVQ4L3RU.js} +1 -1
- package/dist/standalone/{chunk-STS6SGNB.js → chunk-CREIQVKV.js} +3 -3
- package/dist/standalone/{chunk-C3UMVVZD.js → chunk-CUHUBIUI.js} +1 -1
- package/dist/standalone/chunk-E7V5U2MI.js +11 -0
- package/dist/standalone/{chunk-FUXL36RK.js → chunk-EAN22YRU.js} +1 -1
- package/dist/standalone/{chunk-VXQJWD3F.js → chunk-ED3ZEGZG.js} +1 -1
- package/dist/standalone/{chunk-AJU3V2XW.js → chunk-ET7C5ULF.js} +1 -1
- package/dist/standalone/{chunk-2FGXE3E5.js → chunk-FP4R4GOH.js} +1 -1
- package/dist/standalone/{chunk-QIPTFNQK.js → chunk-FQCAIFCH.js} +1 -1
- package/dist/standalone/{chunk-ORJB5XQH.js → chunk-FRTMV7KN.js} +1 -1
- package/dist/standalone/{chunk-WJPA7RPR.js → chunk-FRYN7JES.js} +1 -1
- package/dist/standalone/{chunk-PTRUAQYA.js → chunk-FYJSHANJ.js} +1 -1
- package/dist/standalone/{chunk-W5YA2J66.js → chunk-GG3N6GAU.js} +1 -1
- package/dist/standalone/{chunk-KE5T44IA.js → chunk-GPTMEL3H.js} +1 -1
- package/dist/standalone/{chunk-PAZ72JHQ.js → chunk-H5ZT3AWK.js} +1 -1
- package/dist/standalone/{chunk-CFN6A74K.js → chunk-HHQL672G.js} +1 -1
- package/dist/standalone/{chunk-N6CQJUDY.js → chunk-HMIN25NC.js} +1 -1
- package/dist/standalone/{chunk-AWN2GXCK.js → chunk-JYITKWA6.js} +1 -1
- package/dist/standalone/{chunk-FI3UY4QJ.js → chunk-KMRCIOIP.js} +1 -1
- package/dist/standalone/{chunk-3BN3N2CX.js → chunk-KRTYYF2O.js} +1 -1
- package/dist/standalone/{chunk-BNIDGSDE.js → chunk-L7HFSFJM.js} +1 -1
- package/dist/standalone/{chunk-ZWDPWM3I.js → chunk-LSMG224C.js} +1 -1
- package/dist/standalone/{chunk-YOKBLIIN.js → chunk-LTG5WFNX.js} +1 -1
- package/dist/standalone/{chunk-7SBL2ENI.js → chunk-MUGK2MFE.js} +1 -1
- package/dist/standalone/{chunk-6FTYD55M.js → chunk-MV2ZTAZK.js} +1 -1
- package/dist/standalone/{chunk-XSNWSHZ6.js → chunk-N7LXTFLY.js} +1 -1
- package/dist/standalone/{chunk-367RGUUX.js → chunk-N7XDHYUO.js} +1 -1
- package/dist/standalone/{chunk-6A34IMQS.js → chunk-NLVCQVMP.js} +1 -1
- package/dist/standalone/{chunk-WNVPC7FI.js → chunk-OB6NUAFL.js} +1 -1
- package/dist/standalone/{chunk-DLF7WRVK.js → chunk-ON2PLGFW.js} +1 -1
- package/dist/standalone/{chunk-VBDYQCRQ.js → chunk-Q5PUOBMG.js} +1 -1
- package/dist/standalone/{chunk-PGV42T2U.js → chunk-RKWYK227.js} +1 -1
- package/dist/standalone/{chunk-BWRPOIEI.js → chunk-SB4LBWDA.js} +1 -1
- package/dist/standalone/{chunk-DAAYIBSL.js → chunk-SMQFKS3F.js} +1 -1
- package/dist/standalone/{chunk-WD22LMYA.js → chunk-SZWB6H4J.js} +1 -1
- package/dist/standalone/{chunk-I57A5YB6.js → chunk-UH4LORKU.js} +1 -1
- package/dist/standalone/{chunk-Q6PUWGXK.js → chunk-UPAZZWAF.js} +1 -1
- package/dist/standalone/{chunk-6MJU7KID.js → chunk-VA5RLB7F.js} +1 -1
- package/dist/standalone/{chunk-CMO25UOM.js → chunk-WEE5O4P2.js} +1 -1
- package/dist/standalone/{chunk-ZTQSA34U.js → chunk-Y3AKVKUK.js} +1 -1
- package/dist/standalone/{chunk-62IKYVD3.js → chunk-YIXQ36NU.js} +1 -1
- package/dist/standalone/{chunk-AO3LNXNG.js → chunk-YQOGBOO3.js} +1 -1
- package/dist/standalone/{chunk-DK7IUHFW.js → chunk-Z7CZJS2Q.js} +1 -1
- package/dist/standalone/{chunk-DAXY4RAL.js → chunk-ZH5ESVYN.js} +1 -1
- package/dist/standalone/studio.js +1 -1
- package/package.json +5 -5
- package/dist/packem_shared/grid-features-CE8kcqsK.mjs +0 -6
- package/dist/standalone/chunk-M4POCI2J.js +0 -6
- package/dist/standalone/chunk-PYI2MI4Q.js +0 -11
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{StudioApp as r}from"./packem_shared/StudioApp-fYFz6zZQ.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-CigvHhCa.mjs";import{default as O}from"./packem_chunks/ApiTab.mjs";import{default as N}from"./packem_shared/OpenRpcReferencePanel-C6CM791D.mjs";import{DataBrowser as U}from"./packem_shared/DataBrowser-
|
|
1
|
+
import{StudioApp as r}from"./packem_shared/StudioApp-fYFz6zZQ.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-CigvHhCa.mjs";import{default as O}from"./packem_chunks/ApiTab.mjs";import{default as N}from"./packem_shared/OpenRpcReferencePanel-C6CM791D.mjs";import{DataBrowser as U}from"./packem_shared/DataBrowser-zqK4s0IE.mjs";import{DataFilters as b,toFilterClauses as v}from"./packem_shared/DataFilters-Cocu-WWE.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,4 +1,4 @@
|
|
|
1
|
-
import{c as U}from"react/compiler-runtime";import{useState as L,useEffect as ne,useRef as he,useMemo as ue,useCallback as st}from"react";import{ShardInput as lt}from"../packem_shared/ShardInput-C6mjgAh4.mjs";import{B as oe}from"../packem_shared/button-q0UYSmrn.mjs";import{E as we}from"../packem_shared/empty-state-D7jEML_T.mjs";import{useT as nt}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{S as ot}from"../packem_shared/grid-features-
|
|
1
|
+
import{c as U}from"react/compiler-runtime";import{useState as L,useEffect as ne,useRef as he,useMemo as ue,useCallback as st}from"react";import{ShardInput as lt}from"../packem_shared/ShardInput-C6mjgAh4.mjs";import{B as oe}from"../packem_shared/button-q0UYSmrn.mjs";import{E as we}from"../packem_shared/empty-state-D7jEML_T.mjs";import{useT as nt}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{S as ot}from"../packem_shared/grid-features-Dm80ngyR.mjs";import{C as rt,a as it}from"../packem_shared/card--2hKx4L2.mjs";import{C as Ce}from"../packem_shared/checkbox-CnS9cyCz.mjs";import{c as le,a as at,b as me,d as ct,T as dt,e as ee}from"../packem_shared/table-D0SBiDu-.mjs";import{l as Ne,f as P,b as Q,d as xe,c as Te,g as ft}from"../packem_shared/internal-B6haJbiP.mjs";import{ConfirmButton as ut}from"../packem_shared/ConfirmButton-DU4p72Er.mjs";import{B as ce}from"../packem_shared/badge-r_5B4LHP.mjs";import{jsx as r,jsxs as R,Fragment as ht}from"react/jsx-runtime";import{I as mt}from"../packem_shared/input-CXhxesPC.mjs";import{d as gt}from"../packem_shared/cf-links-CBJ5SywP.mjs";import{useLunora as pt}from"@lunora/react";import{useAutoRefresh as bt}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.mjs";import{ADMIN_FUNCTIONS as _e}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";const Ee=(d,e,t)=>{const{onCopy:s,onDelete:n,onDownload:l,onToggleSelect:a}=t,c=()=>{s(d.key)},o=()=>{l(d.key)},f=()=>{n(d.key)},h=()=>{a(d.key)};return{copy:c,download:o,name:d.key.slice(e.length),remove:f,toggle:h}},$e=d=>{const e=U(31),{busy:t,buttonClassName:s,copied:n,objectKey:l,onCopy:a,onDelete:c,onDownload:o,t:f}=d,h=`storage-copy-${l}`;let u;e[0]!==n||e[1]!==f?(u=f(n?"Copied":"Copy URL"),e[0]=n,e[1]=f,e[2]=u):u=e[2];let m;e[3]!==t||e[4]!==s||e[5]!==a||e[6]!==h||e[7]!==u?(m=r(oe,{className:s,"data-testid":h,disabled:t,onClick:a,size:"sm",type:"button",variant:"ghost",children:u}),e[3]=t,e[4]=s,e[5]=a,e[6]=h,e[7]=u,e[8]=m):m=e[8];const k=`storage-download-${l}`;let i;e[9]!==f?(i=f("Download"),e[9]=f,e[10]=i):i=e[10];let v;e[11]!==t||e[12]!==s||e[13]!==o||e[14]!==k||e[15]!==i?(v=r(oe,{className:s,"data-testid":k,disabled:t,onClick:o,size:"sm",type:"button",variant:"ghost",children:i}),e[11]=t,e[12]=s,e[13]=o,e[14]=k,e[15]=i,e[16]=v):v=e[16];let w;e[17]!==f?(w=f("Delete object?"),e[17]=f,e[18]=w):w=e[18];const x=`storage-delete-${l}`;let p;e[19]!==f?(p=f("Delete"),e[19]=f,e[20]=p):p=e[20];let b;e[21]!==t||e[22]!==c||e[23]!==w||e[24]!==x||e[25]!==p?(b=r(ut,{confirmLabel:w,disabled:t,onConfirm:c,testId:x,children:p}),e[21]=t,e[22]=c,e[23]=w,e[24]=x,e[25]=p,e[26]=b):b=e[26];let y;return e[27]!==b||e[28]!==m||e[29]!==v?(y=R(ht,{children:[m,v,b]}),e[27]=b,e[28]=m,e[29]=v,e[30]=y):y=e[30],y},Fe=d=>{const e=U(14),{objectKey:t,references:s,t:n}=d;if(s===void 0)return null;if(s.length===0){const h=`storage-orphan-${t}`;let u;e[0]!==n?(u=n("Orphan"),e[0]=n,e[1]=u):u=e[1];let m;return e[2]!==h||e[3]!==u?(m=r(ce,{"data-testid":h,variant:"warning",children:u}),e[2]=h,e[3]=u,e[4]=m):m=e[4],m}let l;e[5]!==s?(l=s.map(yt).join(`
|
|
2
2
|
`),e[5]=s,e[6]=l):l=e[6];const a=l,c=`storage-refs-${t}`;let o;e[7]!==s.length||e[8]!==n?(o=s.length===1?n("1 record"):n("{count} records",{count:s.length}),e[7]=s.length,e[8]=n,e[9]=o):o=e[9];let f;return e[10]!==a||e[11]!==c||e[12]!==o?(f=r(ce,{"data-testid":c,title:a,variant:"secondary",children:o}),e[10]=a,e[11]=c,e[12]=o,e[13]=f):f=e[13],f},Re=d=>{const e=U(7),{objectKey:t,onToggle:s,selected:n,t:l}=d;let a;e[0]!==l?(a=l("Select row"),e[0]=l,e[1]=a):a=e[1];const c=`storage-select-${t}`;let o;return e[2]!==s||e[3]!==n||e[4]!==a||e[5]!==c?(o=r(Ce,{"aria-label":a,checked:n,"data-testid":c,onCheckedChange:s}),e[2]=s,e[3]=n,e[4]=a,e[5]=c,e[6]=o):o=e[6],o};function yt(d){return`${d.table}·${d.id}`}const xt=d=>{const e=U(10),{colSpan:t,name:s,onEnter:n}=d;let l;e[0]!==s||e[1]!==n?(l=()=>{n(s)},e[0]=s,e[1]=n,e[2]=l):l=e[2];const a=l;let c;e[3]===Symbol.for("react.memo_cache_sentinel")?(c=r("svg",{"aria-hidden":"true",className:"size-4 text-muted-foreground",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:r("path",{d:"M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Z"})}),e[3]=c):c=e[3];let o;e[4]!==a||e[5]!==s?(o=R("button",{className:"inline-flex items-center gap-2 font-mono text-xs outline-none hover:text-foreground focus-visible:text-foreground","data-testid":"fb-folder",onClick:a,type:"button",children:[c,s]}),e[4]=a,e[5]=s,e[6]=o):o=e[6];let f;return e[7]!==t||e[8]!==o?(f=r(me,{children:r(ee,{colSpan:t,children:o})}),e[7]=t,e[8]=o,e[9]=f):f=e[9],f},vt=d=>{const e=U(37),{busy:t,copiedKey:s,handlers:n,object:l,prefix:a,references:c,selected:o,showReferences:f,t:h}=d;let u;e[0]!==n||e[1]!==l||e[2]!==a?(u=Ee(l,a,n),e[0]=n,e[1]=l,e[2]=a,e[3]=u):u=e[3];const{copy:m,download:k,name:i,remove:v,toggle:w}=u;let x;e[4]!==l.key||e[5]!==o||e[6]!==h||e[7]!==w?(x=r(ee,{className:"w-8",children:r(Re,{objectKey:l.key,onToggle:w,selected:o,t:h})}),e[4]=l.key,e[5]=o,e[6]=h,e[7]=w,e[8]=x):x=e[8];let p;e[9]!==i?(p=r(ee,{className:"font-mono text-xs",children:i}),e[9]=i,e[10]=p):p=e[10];let b;e[11]!==l.size?(b=Ne(l.size),e[11]=l.size,e[12]=b):b=e[12];let y;e[13]!==b?(y=r(ee,{className:"tabular-nums text-muted-foreground",children:b}),e[13]=b,e[14]=y):y=e[14];const N=l.httpMetadata?.contentType??"";let S;e[15]!==N?(S=r(ee,{children:N}),e[15]=N,e[16]=S):S=e[16];let C;e[17]!==l.key||e[18]!==c||e[19]!==f||e[20]!==h?(C=f&&r(ee,{children:r(Fe,{objectKey:l.key,references:c,t:h})}),e[17]=l.key,e[18]=c,e[19]=f,e[20]=h,e[21]=C):C=e[21];const _=s===l.key;let T;e[22]!==t||e[23]!==m||e[24]!==k||e[25]!==l.key||e[26]!==v||e[27]!==h||e[28]!==_?(T=r(ee,{className:"text-right",children:r("span",{className:"inline-flex items-center gap-1",children:r($e,{busy:t,copied:_,objectKey:l.key,onCopy:m,onDelete:v,onDownload:k,t:h})})}),e[22]=t,e[23]=m,e[24]=k,e[25]=l.key,e[26]=v,e[27]=h,e[28]=_,e[29]=T):T=e[29];let F;return e[30]!==T||e[31]!==x||e[32]!==p||e[33]!==y||e[34]!==S||e[35]!==C?(F=R(me,{"data-testid":"fb-row",children:[x,p,y,S,C,T]}),e[30]=T,e[31]=x,e[32]=p,e[33]=y,e[34]=S,e[35]=C,e[36]=F):F=e[36],F},kt=d=>{const e=U(65),{allSelected:t,busy:s,copiedKey:n,files:l,folders:a,handlers:c,onEnterFolder:o,prefix:f,references:h,selected:u,showReferences:m,someSelected:k,t:i,toggleSelectAll:v}=d;let w;e[0]!==i?(w=i("Select all rows"),e[0]=i,e[1]=w):w=e[1];let x;e[2]!==t||e[3]!==k||e[4]!==w||e[5]!==v?(x=r(le,{className:"w-8",children:r(Ce,{"aria-label":w,checked:t,"data-testid":"storage-select-all",indeterminate:k,onCheckedChange:v})}),e[2]=t,e[3]=k,e[4]=w,e[5]=v,e[6]=x):x=e[6];let p;e[7]!==i?(p=i("key"),e[7]=i,e[8]=p):p=e[8];let b;e[9]!==p?(b=r(le,{children:p}),e[9]=p,e[10]=b):b=e[10];let y;e[11]!==i?(y=i("size"),e[11]=i,e[12]=y):y=e[12];let N;e[13]!==y?(N=r(le,{children:y}),e[13]=y,e[14]=N):N=e[14];let S;e[15]!==i?(S=i("content-type"),e[15]=i,e[16]=S):S=e[16];let C;e[17]!==S?(C=r(le,{children:S}),e[17]=S,e[18]=C):C=e[18];let _;e[19]!==m||e[20]!==i?(_=m&&r(le,{children:i("used by")}),e[19]=m,e[20]=i,e[21]=_):_=e[21];let T;e[22]!==i?(T=i("Actions"),e[22]=i,e[23]=T):T=e[23];let F;e[24]!==T?(F=r(le,{"aria-label":T}),e[24]=T,e[25]=F):F=e[25];let E;e[26]!==F||e[27]!==x||e[28]!==b||e[29]!==N||e[30]!==C||e[31]!==_?(E=r(at,{children:R(me,{children:[x,b,N,C,_,F]})}),e[26]=F,e[27]=x,e[28]=b,e[29]=N,e[30]=C,e[31]=_,e[32]=E):E=e[32];let z;if(e[33]!==a||e[34]!==o||e[35]!==m){let D;e[37]!==o||e[38]!==m?(D=K=>r(xt,{colSpan:m?6:5,name:K,onEnter:o},K),e[37]=o,e[38]=m,e[39]=D):D=e[39],z=a.map(D),e[33]=a,e[34]=o,e[35]=m,e[36]=z}else z=e[36];let B;if(e[40]!==s||e[41]!==n||e[42]!==l||e[43]!==c||e[44]!==f||e[45]!==h||e[46]!==u||e[47]!==m||e[48]!==i){let D;e[50]!==s||e[51]!==n||e[52]!==c||e[53]!==f||e[54]!==h||e[55]!==u||e[56]!==m||e[57]!==i?(D=K=>r(vt,{busy:s,copiedKey:n,handlers:c,object:K,prefix:f,references:h[K.key],selected:u.has(K.key),showReferences:m,t:i},K.key),e[50]=s,e[51]=n,e[52]=c,e[53]=f,e[54]=h,e[55]=u,e[56]=m,e[57]=i,e[58]=D):D=e[58],B=l.map(D),e[40]=s,e[41]=n,e[42]=l,e[43]=c,e[44]=f,e[45]=h,e[46]=u,e[47]=m,e[48]=i,e[49]=B}else B=e[49];let j;e[59]!==z||e[60]!==B?(j=R(ct,{children:[z,B]}),e[59]=z,e[60]=B,e[61]=j):j=e[61];let I;return e[62]!==E||e[63]!==j?(I=r(rt,{className:"overflow-hidden py-0",children:r(it,{className:"px-0",children:R(dt,{"data-testid":"fb-table",children:[E,j]})})}),e[62]=E,e[63]=j,e[64]=I):I=e[64],I},St=[{label:"15m",seconds:900},{label:"1h",seconds:3600},{label:"24h",seconds:86400},{label:"7d",seconds:604800}],wt=3600,ve=(d,e)=>{if(e==="size")return d.size;if(e==="type")return d.httpMetadata?.contentType??"";if(e==="date"){if(d.uploaded===void 0)return 0;const t=new Date(d.uploaded).getTime();return Number.isNaN(t)?0:t}return e.startsWith("tag:")?d.customMetadata?.[e.slice(4)]??"":d.key},Ct=(d,e,t)=>{const s=t==="desc"?-1:1;return d.toSorted((n,l)=>{const a=ve(n,e),c=ve(l,e);return(typeof a=="number"&&typeof c=="number"?a-c:String(a).localeCompare(String(c)))*s})},Nt=(d,e)=>{const t=new Set,s=[];for(const n of d){const l=n.key.slice(e.length),a=l.indexOf("/");a===-1?s.push(n):t.add(l.slice(0,a+1))}return{files:s,folders:[...t].toSorted((n,l)=>n.localeCompare(l))}},Tt=d=>{const e=U(59),{bucket:t,buckets:s,busy:n,draftPrefix:l,expiry:a,fileInputRef:c,onBucketChange:o,onExpiryChange:f,onFileChange:h,onList:u,onPrefixChange:m,onUploadClick:k,t:i}=d;let v;e[0]!==m?(v=G=>{m(G.target.value)},e[0]=m,e[1]=v):v=e[1];const w=v;let x;e[2]!==o?(x=G=>{o(G.target.value)},e[2]=o,e[3]=x):x=e[3];const p=x;let b;e[4]!==f?(b=G=>{f(Number.parseInt(G.target.value,10))},e[4]=f,e[5]=b):b=e[5];const y=b;let N;e[6]!==t||e[7]!==s||e[8]!==p||e[9]!==i?(N=s.length>0&&r("select",{"aria-label":i("Bucket"),className:"h-8 rounded-md border border-border bg-background px-1 outline-none focus-visible:border-ring","data-testid":"fb-bucket",onChange:p,value:t,children:s.map(Et)}),e[6]=t,e[7]=s,e[8]=p,e[9]=i,e[10]=N):N=e[10];let S;e[11]!==i?(S=i("Key prefix"),e[11]=i,e[12]=S):S=e[12];let C;e[13]!==i?(C=i("key prefix (optional)"),e[13]=i,e[14]=C):C=e[14];let _;e[15]!==l||e[16]!==w||e[17]!==S||e[18]!==C?(_=r(mt,{"aria-label":S,className:"h-8 w-64 max-w-full","data-testid":"fb-prefix-input",onChange:w,placeholder:C,value:l}),e[15]=l,e[16]=w,e[17]=S,e[18]=C,e[19]=_):_=e[19];let T;e[20]!==i?(T=i("List"),e[20]=i,e[21]=T):T=e[21];let F;e[22]!==n||e[23]!==u||e[24]!==T?(F=r(oe,{"data-testid":"fb-list",disabled:n,onClick:u,size:"sm",type:"button",children:T}),e[22]=n,e[23]=u,e[24]=T,e[25]=F):F=e[25];let E;e[26]!==n||e[27]!==i?(E=i(n?"Uploading…":"Upload"),e[26]=n,e[27]=i,e[28]=E):E=e[28];let z;e[29]!==n||e[30]!==k||e[31]!==E?(z=r(oe,{"data-testid":"storage-upload",disabled:n,onClick:k,size:"sm",type:"button",variant:"outline",children:E}),e[29]=n,e[30]=k,e[31]=E,e[32]=z):z=e[32];let B;e[33]!==c||e[34]!==h?(B=r("input",{className:"hidden","data-testid":"storage-file-input",onChange:h,ref:c,type:"file"}),e[33]=c,e[34]=h,e[35]=B):B=e[35];let j;e[36]!==i?(j=i("Link expiry"),e[36]=i,e[37]=j):j=e[37];let I;e[38]!==i?(I=St.map(G=>r("option",{value:G.seconds,children:i(G.label)},G.seconds)),e[38]=i,e[39]=I):I=e[39];let D;e[40]!==a||e[41]!==y||e[42]!==I?(D=r("select",{className:"h-8 rounded-md border border-border bg-background px-1 tabular-nums outline-none focus-visible:border-ring","data-testid":"storage-expiry",id:"storage-expiry",onChange:y,value:a,children:I}),e[40]=a,e[41]=y,e[42]=I,e[43]=D):D=e[43];let K;e[44]!==j||e[45]!==D?(K=R("label",{className:"ml-auto flex items-center gap-1.5 text-xs text-muted-foreground",htmlFor:"storage-expiry",children:[j,D]}),e[44]=j,e[45]=D,e[46]=K):K=e[46];let A;e[47]!==i?(A=i("Open in Cloudflare"),e[47]=i,e[48]=A):A=e[48];let M;e[49]!==A?(M=r("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"fb-cf-link",href:gt,rel:"noreferrer",target:"_blank",children:A}),e[49]=A,e[50]=M):M=e[50];let H;return e[51]!==z||e[52]!==B||e[53]!==K||e[54]!==M||e[55]!==N||e[56]!==_||e[57]!==F?(H=R("div",{className:"flex flex-wrap items-center gap-2",children:[N,_,F,z,B,K,M]}),e[51]=z,e[52]=B,e[53]=K,e[54]=M,e[55]=N,e[56]=_,e[57]=F,e[58]=H):H=e[58],H},_t=d=>{const e=U(66),{onSortKeyChange:t,onThumbSizeChange:s,showGrid:n,showList:l,sortDirection:a,sortKey:c,t:o,tagKeys:f,thumbSize:h,toggleSortDirection:u,view:m}=d;let k;e[0]!==t?(k=V=>{t(V.target.value)},e[0]=t,e[1]=k):k=e[1];const i=k;let v;e[2]!==s?(v=V=>{s(Number.parseInt(V.target.value,10))},e[2]=s,e[3]=v):v=e[3];const w=v,x=m==="list";let p;e[4]!==o?(p=o("List"),e[4]=o,e[5]=p):p=e[5];let b;e[6]!==l||e[7]!==x||e[8]!==p?(b=r("button",{"aria-pressed":x,className:"px-2 py-1 outline-none transition-colors hover:bg-accent aria-pressed:bg-accent aria-pressed:text-accent-foreground","data-testid":"fb-view-list",onClick:l,type:"button",children:p}),e[6]=l,e[7]=x,e[8]=p,e[9]=b):b=e[9];const y=m==="grid";let N;e[10]!==o?(N=o("Grid"),e[10]=o,e[11]=N):N=e[11];let S;e[12]!==n||e[13]!==y||e[14]!==N?(S=r("button",{"aria-pressed":y,className:"border-s border-border px-2 py-1 outline-none transition-colors hover:bg-accent aria-pressed:bg-accent aria-pressed:text-accent-foreground","data-testid":"fb-view-grid",onClick:n,type:"button",children:N}),e[12]=n,e[13]=y,e[14]=N,e[15]=S):S=e[15];let C;e[16]!==b||e[17]!==S?(C=R("div",{className:"inline-flex overflow-hidden rounded-md border border-border",children:[b,S]}),e[16]=b,e[17]=S,e[18]=C):C=e[18];let _;e[19]!==o?(_=o("Sort"),e[19]=o,e[20]=_):_=e[20];let T;e[21]!==o?(T=o("Name"),e[21]=o,e[22]=T):T=e[22];let F;e[23]!==T?(F=r("option",{value:"name",children:T}),e[23]=T,e[24]=F):F=e[24];let E;e[25]!==o?(E=o("size"),e[25]=o,e[26]=E):E=e[26];let z;e[27]!==E?(z=r("option",{value:"size",children:E}),e[27]=E,e[28]=z):z=e[28];let B;e[29]!==o?(B=o("Type"),e[29]=o,e[30]=B):B=e[30];let j;e[31]!==B?(j=r("option",{value:"type",children:B}),e[31]=B,e[32]=j):j=e[32];let I;e[33]!==o?(I=o("Modified"),e[33]=o,e[34]=I):I=e[34];let D;e[35]!==I?(D=r("option",{value:"date",children:I}),e[35]=I,e[36]=D):D=e[36];let K;e[37]!==f?(K=f.map($t),e[37]=f,e[38]=K):K=e[38];let A;e[39]!==i||e[40]!==c||e[41]!==F||e[42]!==z||e[43]!==j||e[44]!==D||e[45]!==K?(A=R("select",{className:"h-8 rounded-md border border-border bg-background px-1 outline-none focus-visible:border-ring","data-testid":"fb-sort",id:"fb-sort",onChange:i,value:c,children:[F,z,j,D,K]}),e[39]=i,e[40]=c,e[41]=F,e[42]=z,e[43]=j,e[44]=D,e[45]=K,e[46]=A):A=e[46];let M;e[47]!==_||e[48]!==A?(M=R("label",{className:"flex items-center gap-1.5 text-muted-foreground",htmlFor:"fb-sort",children:[_,A]}),e[47]=_,e[48]=A,e[49]=M):M=e[49];let H;e[50]!==o?(H=o("Toggle sort direction"),e[50]=o,e[51]=H):H=e[51];const G=a==="asc"?"↑":"↓";let q;e[52]!==H||e[53]!==G||e[54]!==u?(q=r("button",{"aria-label":H,className:"flex size-8 items-center justify-center rounded-md border border-border tabular-nums outline-none transition-colors hover:bg-accent focus-visible:bg-accent","data-testid":"fb-sort-dir",onClick:u,type:"button",children:G}),e[52]=H,e[53]=G,e[54]=u,e[55]=q):q=e[55];let Y;e[56]!==w||e[57]!==o||e[58]!==h||e[59]!==m?(Y=m==="grid"&&R("label",{className:"ml-auto flex items-center gap-1.5 text-muted-foreground",htmlFor:"fb-thumb-size",children:[o("Thumbnail size"),r("input",{className:"accent-primary","data-testid":"fb-thumb-size",id:"fb-thumb-size",max:240,min:80,onChange:w,step:8,type:"range",value:h})]}),e[56]=w,e[57]=o,e[58]=h,e[59]=m,e[60]=Y):Y=e[60];let te;return e[61]!==M||e[62]!==q||e[63]!==Y||e[64]!==C?(te=R("div",{className:"flex flex-wrap items-center gap-2 text-xs","data-testid":"fb-controls",children:[C,M,q,Y]}),e[61]=M,e[62]=q,e[63]=Y,e[64]=C,e[65]=te):te=e[65],te};function Et(d){return r("option",{value:d,children:d},d)}function $t(d){return r("option",{value:`tag:${d}`,children:d},d)}const Ft=/\.(?:avif|bmp|gif|ico|jpe?g|png|svg|webp)$/iu,Rt=d=>(d.httpMetadata?.contentType??"").startsWith("image/")||Ft.test(d.key),zt=()=>{const d=U(1);let e;return d[0]===Symbol.for("react.memo_cache_sentinel")?(e=r("svg",{"aria-hidden":"true",className:"size-8 text-muted-foreground/60",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.4,viewBox:"0 0 24 24",children:r("path",{d:"M7 3h7l5 5v13a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Zm7 0v5h5"})}),d[0]=e):e=d[0],e},Dt=d=>{const e=U(13),{object:t,resolveUrl:s}=d,[n,l]=L(null),[a,c]=L(!1);let o;e[0]!==t?(o=Rt(t),e[0]=t,e[1]=o):o=e[1];const f=o;let h,u;e[2]!==f||e[3]!==t.key||e[4]!==s?(h=()=>{if(!f)return;const v={cancelled:!1};return P((async()=>{try{const w=await s(t.key);v.cancelled||l(w)}catch{v.cancelled||c(!0)}})()),()=>{v.cancelled=!0}},u=[f,t.key,s],e[2]=f,e[3]=t.key,e[4]=s,e[5]=h,e[6]=u):(h=e[5],u=e[6]),ne(h,u);let m;e[7]===Symbol.for("react.memo_cache_sentinel")?(m=()=>{c(!0)},e[7]=m):m=e[7];const k=m;let i;return e[8]!==a||e[9]!==f||e[10]!==t.key||e[11]!==n?(i=r("div",{className:"flex aspect-square w-full items-center justify-center overflow-hidden rounded-md border border-border bg-muted/30",children:f&&n!==null&&!a?r("img",{alt:t.key,className:"size-full object-cover",loading:"lazy",onError:k,src:n}):r(zt,{})}),e[8]=a,e[9]=f,e[10]=t.key,e[11]=n,e[12]=i):i=e[12],i},jt=d=>{const e=U(42),{busy:t,copiedKey:s,handlers:n,object:l,prefix:a,references:c,resolveUrl:o,selected:f,showReferences:h,t:u}=d;let m;e[0]!==n||e[1]!==l||e[2]!==a?(m=Ee(l,a,n),e[0]=n,e[1]=l,e[2]=a,e[3]=m):m=e[3];const{copy:k,download:i,name:v,remove:w,toggle:x}=m;let p;e[4]!==l||e[5]!==o?(p=r(Dt,{object:l,resolveUrl:o}),e[4]=l,e[5]=o,e[6]=p):p=e[6];let b;e[7]!==l.key||e[8]!==f||e[9]!==u||e[10]!==x?(b=r("span",{className:"absolute left-1.5 top-1.5 rounded bg-background/80 p-0.5",children:r(Re,{objectKey:l.key,onToggle:x,selected:f,t:u})}),e[7]=l.key,e[8]=f,e[9]=u,e[10]=x,e[11]=b):b=e[11];let y;e[12]!==p||e[13]!==b?(y=R("div",{className:"relative",children:[p,b]}),e[12]=p,e[13]=b,e[14]=y):y=e[14];let N;e[15]!==v?(N=r("p",{className:"truncate font-mono text-xs",title:v,children:v}),e[15]=v,e[16]=N):N=e[16];let S;e[17]!==l.size?(S=Ne(l.size),e[17]=l.size,e[18]=S):S=e[18];let C;e[19]!==S?(C=r("p",{className:"text-[11px] tabular-nums text-muted-foreground",children:S}),e[19]=S,e[20]=C):C=e[20];let _;e[21]!==l.key||e[22]!==c||e[23]!==h||e[24]!==u?(_=h&&r("div",{className:"mt-1",children:r(Fe,{objectKey:l.key,references:c,t:u})}),e[21]=l.key,e[22]=c,e[23]=h,e[24]=u,e[25]=_):_=e[25];let T;e[26]!==N||e[27]!==C||e[28]!==_?(T=R("div",{className:"min-w-0",children:[N,C,_]}),e[26]=N,e[27]=C,e[28]=_,e[29]=T):T=e[29];const F=s===l.key;let E;e[30]!==t||e[31]!==k||e[32]!==i||e[33]!==l.key||e[34]!==w||e[35]!==u||e[36]!==F?(E=r("div",{className:"flex items-center gap-1",children:r($e,{busy:t,buttonClassName:"h-7 px-2 text-xs",copied:F,objectKey:l.key,onCopy:k,onDelete:w,onDownload:i,t:u})}),e[30]=t,e[31]=k,e[32]=i,e[33]=l.key,e[34]=w,e[35]=u,e[36]=F,e[37]=E):E=e[37];let z;return e[38]!==E||e[39]!==y||e[40]!==T?(z=R("div",{className:"flex flex-col gap-1.5","data-testid":"fb-tile",children:[y,T,E]}),e[38]=E,e[39]=y,e[40]=T,e[41]=z):z=e[41],z},Kt=d=>{const e=U(9),{name:t,onEnter:s}=d;let n;e[0]!==t||e[1]!==s?(n=()=>{s(t)},e[0]=t,e[1]=s,e[2]=n):n=e[2];const l=n;let a;e[3]===Symbol.for("react.memo_cache_sentinel")?(a=r("span",{className:"flex aspect-square w-full items-center justify-center rounded-md border border-border bg-muted/30 transition-colors hover:bg-accent",children:r("svg",{"aria-hidden":"true",className:"size-10 text-muted-foreground",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.4,viewBox:"0 0 24 24",children:r("path",{d:"M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Z"})})}),e[3]=a):a=e[3];let c;e[4]!==t?(c=r("span",{className:"truncate font-mono text-xs",title:t,children:t}),e[4]=t,e[5]=c):c=e[5];let o;return e[6]!==l||e[7]!==c?(o=R("button",{className:"flex flex-col gap-1.5 text-left outline-none","data-testid":"fb-folder",onClick:l,type:"button",children:[a,c]}),e[6]=l,e[7]=c,e[8]=o):o=e[8],o},Lt=d=>{const e=U(34),{busy:t,copiedKey:s,files:n,folders:l,handlers:a,onEnterFolder:c,prefix:o,references:f,resolveUrl:h,selected:u,showReferences:m,size:k,t:i}=d;let v;e[0]!==k?(v=k.toString(),e[0]=k,e[1]=v):v=e[1];const w=`repeat(auto-fill, minmax(${v}px, 1fr))`;let x;e[2]!==w?(x={gridTemplateColumns:w},e[2]=w,e[3]=x):x=e[3];const p=x;let b;if(e[4]!==l||e[5]!==c){let S;e[7]!==c?(S=C=>r(Kt,{name:C,onEnter:c},C),e[7]=c,e[8]=S):S=e[8],b=l.map(S),e[4]=l,e[5]=c,e[6]=b}else b=e[6];let y;if(e[9]!==t||e[10]!==s||e[11]!==n||e[12]!==a||e[13]!==o||e[14]!==f||e[15]!==h||e[16]!==u||e[17]!==m||e[18]!==i){let S;e[20]!==t||e[21]!==s||e[22]!==a||e[23]!==o||e[24]!==f||e[25]!==h||e[26]!==u||e[27]!==m||e[28]!==i?(S=C=>r(jt,{busy:t,copiedKey:s,handlers:a,object:C,prefix:o,references:f[C.key],resolveUrl:h,selected:u.has(C.key),showReferences:m,t:i},C.key),e[20]=t,e[21]=s,e[22]=a,e[23]=o,e[24]=f,e[25]=h,e[26]=u,e[27]=m,e[28]=i,e[29]=S):S=e[29],y=n.map(S),e[9]=t,e[10]=s,e[11]=n,e[12]=a,e[13]=o,e[14]=f,e[15]=h,e[16]=u,e[17]=m,e[18]=i,e[19]=y}else y=e[19];let N;return e[30]!==p||e[31]!==b||e[32]!==y?(N=R("div",{className:"grid gap-4","data-testid":"fb-gallery",style:p,children:[b,y]}),e[30]=p,e[31]=b,e[32]=y,e[33]=N):N=e[33],N},Bt=d=>{const e=U(23),{reference:t,t:s}=d,n=`fb-dangling-${t.table}-${t.id}-${t.column}`,l=`${t.table}·${t.id}`;let a;e[0]!==l?(a=r(ce,{variant:"secondary",children:l}),e[0]=l,e[1]=a):a=e[1];let c;e[2]!==t.column?(c=r("span",{className:"text-muted-foreground",children:t.column}),e[2]=t.column,e[3]=c):c=e[3];let o;e[4]!==s?(o=s("→"),e[4]=s,e[5]=o):o=e[5];let f;e[6]!==o?(f=r("span",{className:"text-muted-foreground/60",children:o}),e[6]=o,e[7]=f):f=e[7];let h;e[8]!==t.key?(h=r("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-foreground",children:t.key}),e[8]=t.key,e[9]=h):h=e[9];let u;e[10]!==a||e[11]!==c||e[12]!==f||e[13]!==h?(u=R("span",{className:"flex flex-wrap items-center gap-1.5",children:[a,c,f,h]}),e[10]=a,e[11]=c,e[12]=f,e[13]=h,e[14]=u):u=e[14];let m;e[15]!==s?(m=s("Missing object"),e[15]=s,e[16]=m):m=e[16];let k;e[17]!==m?(k=r(ce,{className:"border-destructive/40 text-destructive",variant:"outline",children:m}),e[17]=m,e[18]=k):k=e[18];let i;return e[19]!==n||e[20]!==k||e[21]!==u?(i=R("li",{className:"flex flex-wrap items-center justify-between gap-2 rounded-md border border-border/60 px-3 py-2 text-xs","data-testid":n,children:[u,k]}),e[19]=n,e[20]=k,e[21]=u,e[22]=i):i=e[22],i},It=d=>{const e=U(42),{busy:t,onCheck:s,references:n,t:l,truncated:a}=d;let c;e[0]!==l?(c=l("Integrity"),e[0]=l,e[1]=c):c=e[1];let o;e[2]!==c?(o=r("span",{className:"font-mono text-[11px] uppercase tracking-wide text-muted-foreground",children:c}),e[2]=c,e[3]=o):o=e[3];let f;e[4]!==l?(f=l("Orphaned objects"),e[4]=l,e[5]=f):f=e[5];let h;e[6]!==f?(h=r("span",{className:"text-sm font-medium text-foreground",children:f}),e[6]=f,e[7]=h):h=e[7];let u;e[8]!==l?(u=l("Find records whose file reference points at an object the bucket no longer has."),e[8]=l,e[9]=u):u=e[9];let m;e[10]!==u?(m=r("span",{className:"text-xs text-muted-foreground",children:u}),e[10]=u,e[11]=m):m=e[11];let k;e[12]!==o||e[13]!==h||e[14]!==m?(k=R("div",{className:"flex flex-col gap-1",children:[o,h,m]}),e[12]=o,e[13]=h,e[14]=m,e[15]=k):k=e[15];let i;e[16]!==t||e[17]!==l?(i=l(t?"Checking…":"Check for orphans"),e[16]=t,e[17]=l,e[18]=i):i=e[18];let v;e[19]!==t||e[20]!==s||e[21]!==i?(v=r(oe,{"data-testid":"fb-orphans-check",disabled:t,onClick:s,size:"sm",type:"button",variant:"outline",children:i}),e[19]=t,e[20]=s,e[21]=i,e[22]=v):v=e[22];let w;e[23]!==k||e[24]!==v?(w=R("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[k,v]}),e[23]=k,e[24]=v,e[25]=w):w=e[25];let x;e[26]!==n||e[27]!==l||e[28]!==a?(x=a&&r("p",{className:"text-xs text-warning","data-testid":"fb-orphans-truncated",children:n===void 0||n.length===0?l("The bucket is larger than the scan's key limit, so dangling references could not be checked."):l("Showing the first {count} dangling references — the scan was truncated.",{count:n.length})}),e[26]=n,e[27]=l,e[28]=a,e[29]=x):x=e[29];let p;e[30]!==n?.length||e[31]!==l||e[32]!==a?(p=n?.length===0&&!a&&r(we,{description:l("Every record's file reference points at an object that exists in the bucket."),testId:"fb-orphans-empty",title:l("No dangling references.")}),e[30]=n?.length,e[31]=l,e[32]=a,e[33]=p):p=e[33];let b;e[34]!==n||e[35]!==l?(b=n!==void 0&&n.length>0&&r("ul",{className:"flex flex-col gap-1.5","data-testid":"fb-orphans-list",children:n.map(N=>r(Bt,{reference:N,t:l},`${N.table}·${N.id}·${N.column}`))}),e[34]=n,e[35]=l,e[36]=b):b=e[36];let y;return e[37]!==w||e[38]!==x||e[39]!==p||e[40]!==b?(y=R("section",{className:"flex flex-col gap-2 rounded-lg border border-border/60 p-3","data-testid":"fb-orphans",children:[w,x,p,b]}),e[37]=w,e[38]=x,e[39]=p,e[40]=b,e[41]=y):y=e[41],y},Ot=function(d,e){const t=U(18);let s;t[0]===Symbol.for("react.memo_cache_sentinel")?(s=new Set,t[0]=s):s=t[0];const[n,l]=L(s);let a;t[1]===Symbol.for("react.memo_cache_sentinel")?(a=x=>{l(p=>{const b=new Set(p);return b.has(x)?b.delete(x):b.add(x),b})},t[1]=a):a=t[1];const c=a;let o;t[2]===Symbol.for("react.memo_cache_sentinel")?(o=()=>{l(new Set)},t[2]=o):o=t[2];const f=o;let h,u,m;if(t[3]!==d||t[4]!==e||t[5]!==n){let x;t[9]!==e?(x=p=>e(p),t[9]=e,t[10]=x):x=t[10],u=d.map(x),h=u.length>0&&u.every(p=>n.has(p)),m=!h&&u.some(p=>n.has(p)),t[3]=d,t[4]=e,t[5]=n,t[6]=h,t[7]=u,t[8]=m}else h=t[6],u=t[7],m=t[8];const k=m;let i;t[11]!==u?(i=()=>{l(x=>u.every(p=>x.has(p))?new Set:new Set(u))},t[11]=u,t[12]=i):i=t[12];const v=i;let w;return t[13]!==h||t[14]!==n||t[15]!==k||t[16]!==v?(w={allSelected:h,clear:f,selected:n,someSelected:k,toggle:c,toggleAll:v},t[13]=h,t[14]=n,t[15]=k,t[16]=v,t[17]=w):w=t[17],w},At=Te(_e.storageReferences),Ut=Te(_e.storageOrphans),ke=1e4,Mt=1e3,Gt=async d=>{const e=[];let t,s=!0,n=!1;for(;s&&e.length<ke;){const l=await d.list({cursor:t,limit:Mt}),a=ke-e.length;for(const c of l.objects.slice(0,a))e.push(c.key);n||=l.objects.length>a,t=l.cursor,s=t!==void 0}return{liveKeys:e,truncated:n||s}},Ht=3600,Pt=(d,e)=>{if(!("document"in globalThis))return;const t=globalThis.document.createElement("a");t.href=d,t.download=e,t.rel="noopener",globalThis.document.body.append(t),t.click(),t.remove()},qt=d=>d.key,Vt=({initialPrefix:d,pageSize:e})=>{const t=pt(),[s,n]=L(d??""),[l,a]=L(d??""),[c,o]=L(wt),[f,h]=L("list"),[u,m]=L(128),[k,i]=L("name"),[v,w]=L("asc"),[x,p]=L(void 0),[b,y]=L(void 0),[N,S]=L(!1),[C,_]=L(void 0),[T,F]=L(void 0),[E,z]=L(""),[B,j]=L({}),[I,D]=L(!1),[K,A]=L(void 0),[M,H]=L(!1),[G,q]=L(!1),[Y,te]=L([]),[V,ge]=L(""),se=he(0),J=he(0);ne(()=>{const g={cancelled:!1};return P((async()=>{try{const $=await t.listStorageBuckets();if(!g.cancelled){te($);const[O]=$;O!==void 0&&ge(X=>X===""?O:X)}}catch{}})()),()=>{g.cancelled=!0}},[t]);const W=ue(()=>({list:g=>t.listStorageObjects({...g,bucket:V}),remove:g=>t.deleteStorageObject(g,{bucket:V}),signedUrl:(g,$)=>t.signedStorageUrl(g,{...$,bucket:V}),upload:g=>t.uploadStorageObject({...g,bucket:V})}),[V,t]),Z=st(async(g,$,O)=>{se.current+=1;const X=se.current;y(void 0),S(!0);try{const ie=await W.list({cursor:$,limit:e,prefix:g});if(X!==se.current)return;p(ye=>O&&ye!==void 0?[...ye,...ie.objects]:ie.objects),F(ie.cursor)}catch(ie){if(X!==se.current)return;O||p(void 0),y(Q(ie))}finally{X===se.current&&S(!1)}},[e,W]);ne(()=>{P(Z(d??"",void 0,!1))},[Z,d]);const ze=(x?.length??0)<=e;bt(()=>{P(Z(s,void 0,!1))},ze);const{files:de,folders:De}=Nt(x??[],s),je=ue(()=>{const g=new Set;for(const $ of de)for(const O of Object.keys($.customMetadata??{}))g.add(O);return[...g].toSorted(($,O)=>$.localeCompare(O))},[de]),ae=Ct(de,k,v),fe=ue(()=>[...new Set(ae.map(g=>g.key))].toSorted((g,$)=>g.localeCompare($)).join(`
|
|
3
3
|
`),[ae]);ne(()=>{const g=fe===""?[]:fe.split(`
|
|
4
4
|
`);if(g.length===0){j({});return}const $={current:!0};return P((async()=>{try{const O=await t.query(At,{keys:g},xe(E));$.current&&(j(O.references??{}),D(Object.keys(O.storageColumns??{}).length>0))}catch{$.current&&(j({}),D(!1))}})()),()=>{$.current=!1}},[t,fe,E]);const{allSelected:Ke,clear:re,selected:pe,someSelected:Le,toggle:Be,toggleAll:Ie}=Ot(ae,qt),Oe=()=>{n(l),re(),P(Z(l,void 0,!1))},Ae=()=>{P(Z(s,T,!0))},be=g=>{n(g),a(g),re(),P(Z(g,void 0,!1))},Ue=g=>{be(`${s}${g}`)},Me=g=>W.signedUrl(g,{expiresInSeconds:Ht}),Ge=()=>{h("list")},He=()=>{h("grid")},Pe=g=>{i(g)},qe=()=>{w(g=>g==="asc"?"desc":"asc")},Ve=g=>{m(g)},We=g=>{o(g)},Ze=()=>{y(void 0),S(!0),P((async()=>{try{for(const g of pe)await W.remove(g);await Z(s,void 0,!1),re()}catch(g){y(Q(g))}S(!1)})())},Xe=g=>{y(void 0),P((async()=>{try{const $=await W.signedUrl(g,{expiresInSeconds:c});ft($)&&_(g)}catch($){y(Q($))}})())},Ye=g=>{y(void 0),P((async()=>{try{const $=await W.signedUrl(g,{expiresInSeconds:c}),O=g.slice(g.lastIndexOf("/")+1)||g;Pt($,O)}catch($){y(Q($))}})())};ne(()=>{if(C===void 0)return;const g=globalThis.setTimeout(()=>{_(void 0)},2e3);return()=>{globalThis.clearTimeout(g)}},[C]);const Je=g=>{y(void 0),S(!0),P((async()=>{try{await W.remove(g),await Z(s,void 0,!1)}catch($){y(Q($))}S(!1)})())},Qe=g=>{const $=`${s}${g.name}`;y(void 0),S(!0),P((async()=>{try{const O=await g.arrayBuffer();await W.upload({body:O,contentType:g.type===""?void 0:g.type,key:$}),await Z(s,void 0,!1)}catch(O){y(Q(O))}S(!1)})())};ne(()=>{J.current+=1,A(void 0),q(!1)},[E]);const et=()=>{J.current+=1;const g=J.current;y(void 0),H(!0),P((async()=>{try{const{liveKeys:$,truncated:O}=await Gt(W);if(O)g===J.current&&(A(void 0),q(!0));else{const X=await t.query(Ut,{liveKeys:$},xe(E));g===J.current&&(A(X.references??[]),q(X.truncated===!0))}}catch($){g===J.current&&(A(void 0),q(!1),y(Q($)))}g===J.current&&H(!1)})())},tt=g=>{se.current+=1,J.current+=1,ge(g),n(d??""),a(d??""),p(void 0),A(void 0),q(!1),re()};return{allSelected:Ke,bucket:V,buckets:Y,bulkDelete:Ze,busy:N,checkOrphans:et,clearSelection:re,copiedKey:C,danglingBusy:M,danglingReferences:K,danglingTruncated:G,draftPrefix:l,enterFolder:Ue,error:b,expiry:c,files:ae,folders:De,hasObjects:x!==void 0&&x.length>0,hasStorageColumns:I,listFirst:Oe,loaded:x!==void 0,loadMore:Ae,navigate:be,nextCursor:T,onCopy:Xe,onDelete:Je,onDownload:Ye,onExpiryChange:We,onFile:Qe,onSortKeyChange:Pe,onThumbSizeChange:Ve,prefix:s,referenceShard:E,references:B,resolveUrl:Me,selectBucket:tt,selected:pe,setDraftPrefix:a,setReferenceShard:z,showGrid:He,showList:Ge,someSelected:Le,sortDirection:v,sortKey:k,tagKeys:je,thumbSize:u,toggleSelect:Be,toggleSelectAll:Ie,toggleSortDirection:qe,view:f}},Wt=100,Se=d=>{const e=U(6),{label:t,onNavigate:s,target:n}=d;let l;e[0]!==s||e[1]!==n?(l=()=>{s(n)},e[0]=s,e[1]=n,e[2]=l):l=e[2];const a=l;let c;return e[3]!==a||e[4]!==t?(c=r("button",{className:"rounded px-1 text-muted-foreground outline-none hover:text-foreground focus-visible:text-foreground",onClick:a,type:"button",children:t}),e[3]=a,e[4]=t,e[5]=c):c=e[5],c},Zt=d=>{const e=U(11),{onNavigate:t,prefix:s,t:n}=d;let l;if(e[0]!==t||e[1]!==s||e[2]!==n){const a=s.split("/").filter(Xt);let c;e[4]!==n?(c=n("Folder path"),e[4]=n,e[5]=c):c=e[5];let o;e[6]!==n?(o=n("root"),e[6]=n,e[7]=o):o=e[7];let f;e[8]!==t||e[9]!==o?(f=r(Se,{label:o,onNavigate:t,target:""}),e[8]=t,e[9]=o,e[10]=f):f=e[10],l=R("nav",{"aria-label":c,className:"flex flex-wrap items-center gap-0.5 text-xs","data-testid":"fb-breadcrumbs",children:[f,a.map((h,u)=>R("span",{className:"flex items-center gap-0.5",children:[r("span",{className:"text-muted-foreground/50",children:"/"}),r(Se,{label:h,onNavigate:t,target:`${a.slice(0,u+1).join("/")}/`})]},`${h}-${u.toString()}`))]}),e[0]=t,e[1]=s,e[2]=n,e[3]=l}else l=e[3];return l},ps=({initialPrefix:d,pageSize:e=Wt})=>{const t=nt(),s=Vt({initialPrefix:d,pageSize:e}),n=he(null),{onCopy:l,onDelete:a,onDownload:c,onFile:o,toggleSelect:f}=s,h={onCopy:l,onDelete:a,onDownload:c,onToggleSelect:f},u=()=>{n.current?.click()},m=i=>{const v=i.target,w=v.files?.[0];v.value="",w&&o(w)},k=s.loaded&&!s.hasObjects;return R("div",{className:"flex flex-col gap-3","data-testid":"lunora-file-browser",children:[r(Tt,{bucket:s.bucket,buckets:s.buckets,busy:s.busy,draftPrefix:s.draftPrefix,expiry:s.expiry,fileInputRef:n,onBucketChange:s.selectBucket,onExpiryChange:s.onExpiryChange,onFileChange:m,onList:s.listFirst,onPrefixChange:s.setDraftPrefix,onUploadClick:u,t}),s.loaded&&r(Zt,{onNavigate:s.navigate,prefix:s.prefix,t}),s.hasObjects&&r(_t,{onSortKeyChange:s.onSortKeyChange,onThumbSizeChange:s.onThumbSizeChange,showGrid:s.showGrid,showList:s.showList,sortDirection:s.sortDirection,sortKey:s.sortKey,t,tagKeys:s.tagKeys,thumbSize:s.thumbSize,toggleSortDirection:s.toggleSortDirection,view:s.view}),s.hasStorageColumns&&R("div",{className:"flex flex-wrap items-center gap-2","data-testid":"fb-references-shard",children:[r("label",{className:"text-xs text-muted-foreground",htmlFor:"fb-reference-shard-input",children:t("References shard")}),r(lt,{id:"fb-reference-shard-input",onChange:s.setReferenceShard,testId:"fb-reference-shard-input",value:s.referenceShard}),r("span",{className:"text-xs text-muted-foreground",children:t("Which shard's records are checked for references to these files. Empty = root shard.")})]}),s.hasStorageColumns&&r(It,{busy:s.danglingBusy,onCheck:s.checkOrphans,references:s.danglingReferences,t,truncated:s.danglingTruncated}),s.selected.size>0&&r(ot,{count:s.selected.size,editable:!0,onClear:s.clearSelection,onDelete:s.bulkDelete}),s.error!==void 0&&r("p",{className:"text-sm text-destructive","data-testid":"storage-error",role:"alert",children:s.error}),k&&r(we,{description:t("Objects you upload to your R2 buckets will appear here."),icon:R("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:[r("path",{d:"M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Z"}),r("path",{d:"M12 11v5m-2.5-2.5h5"})]}),testId:"fb-empty",title:t("No objects.")}),s.hasObjects&&s.view==="list"&&r(kt,{allSelected:s.allSelected,busy:s.busy,copiedKey:s.copiedKey,files:s.files,folders:s.folders,handlers:h,onEnterFolder:s.enterFolder,prefix:s.prefix,references:s.references,selected:s.selected,showReferences:s.hasStorageColumns,someSelected:s.someSelected,t,toggleSelectAll:s.toggleSelectAll}),s.hasObjects&&s.view==="grid"&&r(Lt,{busy:s.busy,copiedKey:s.copiedKey,files:s.files,folders:s.folders,handlers:h,onEnterFolder:s.enterFolder,prefix:s.prefix,references:s.references,resolveUrl:s.resolveUrl,selected:s.selected,showReferences:s.hasStorageColumns,size:s.thumbSize,t}),s.nextCursor!==void 0&&r("div",{children:r(oe,{"data-testid":"fb-next",disabled:s.busy,onClick:s.loadMore,size:"sm",type:"button",variant:"outline",children:t("Load more")})})]})};function Xt(d){return d!==""}export{ps as FileBrowser};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as Y}from"react/compiler-runtime";import{useLunora as Qe}from"@lunora/react";import{useState as ie,useMemo as Ke,useCallback as ht,useEffect as Ne,useRef as Ce,useId as pt}from"react";import{ADMIN_FUNCTIONS as qe}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{u as Fe,n as et,b as ze,r as Re,s as bt}from"../packem_shared/browser-storage-BH1MxLZs.mjs";import{d as _e,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 W,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-
|
|
1
|
+
import{c as Y}from"react/compiler-runtime";import{useLunora as Qe}from"@lunora/react";import{useState as ie,useMemo as Ke,useCallback as ht,useEffect as Ne,useRef as Ce,useId as pt}from"react";import{ADMIN_FUNCTIONS as qe}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{u as Fe,n as et,b as ze,r as Re,s as bt}from"../packem_shared/browser-storage-BH1MxLZs.mjs";import{d as _e,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 W,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-Dm80ngyR.mjs";const Tt="x",Ge=" ",Rt={'"':'"',"'":"'","[":"]","`":"`"},tt=(l,e)=>{let n=e+2;for(;n<l.length&&l[n]!==`
|
|
2
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
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|truncate|update|vacuum)\b|\breplace\b(?!\s*\()/iu,_t=/^\w+/u,At=/;\s*$/u,qt=/\s/u,ot=l=>{let e=0;for(;e<l.length;){const n=l[e];if(n!==void 0&&qt.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 c="the SQL editor is read-only — only SELECT / WITH / EXPLAIN queries are allowed";if(!Lt.test(s))return{code:"SQL_NOT_READONLY",length:_t.exec(s)?.[0].length??1,message:c,offset:e};const a=It.exec(s);if(a!==null)return{code:"SQL_NOT_READONLY",length:a[0].length,message:`${c} (\`${a[0].toUpperCase()}\` is not allowed)`,offset:e+a.index}},Dt=/^explain\b/iu,Mt=l=>Dt.test(l.slice(ot(l)))?l:`EXPLAIN QUERY PLAN ${l}`,We=(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 We(l,0);const n=[];let t=0;for(let o=0;o<=e.length;o+=1)o!==e.length&&e[o]!==";"||(n.push(...We(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})),Ft=Bt.map(l=>({pattern:new RegExp(String.raw`\s+${l.replaceAll(" ",String.raw`\s+`)}\b`,"gu"),replacement:`
|
|
@@ -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-
|
|
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-zqK4s0IE.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};
|