planche 0.9.2 → 0.9.4
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/app/assets/{B4S-lOKS.js → 2HDxyxt3.js} +1 -1
- package/app/assets/{W7D4Svcn.js → 2WcjYcT6.js} +1 -1
- package/app/assets/{G06qjCej.js → 34iJa-68.js} +1 -1
- package/app/assets/{CFUkTo-F.js → 62772Vyq.js} +1 -1
- package/app/assets/{XCH_yrJ8.js → 7hKKrols.js} +1 -1
- package/app/assets/92hmrkfN.css +2 -0
- package/app/assets/{CTnwm-29.js → AR0v7sKO.js} +1 -1
- package/app/assets/B5FoXN4H.js +1 -0
- package/app/assets/{DCHRj2vY.js → BB2_KYgp.js} +1 -1
- package/app/assets/{Bbx7_Uyd.js → BHsv1P4D.js} +1 -1
- package/app/assets/{D3lUezEb.js → BI5Ig187.js} +1 -1
- package/app/assets/{ByKF67UY.js → BRKvj3qd.js} +1 -1
- package/app/assets/{CFu5QMhX.js → BTpuv2bS.js} +1 -1
- package/app/assets/{BkXrfAoR.js → BVZGLNq_.js} +1 -1
- package/app/assets/{Djxg54qH.js → BWPrOT1U.js} +1 -1
- package/app/assets/{84VwJAQi.js → BaTnCkNR.js} +1 -1
- package/app/assets/{7jG9Xw-H.js → BdhjYiGI.js} +1 -1
- package/app/assets/{D8_hwGjG.js → BihjBM79.js} +1 -1
- package/app/assets/{BrVnzO7b.js → Bjx1jzlk.js} +1 -1
- package/app/assets/{7jD5h8Yx.js → BkujllIu.js} +1 -1
- package/app/assets/{BPPUDpI0.js → BtBUwOf0.js} +1 -1
- package/app/assets/{B9dhM8vw.js → Buf-_p3w.js} +1 -1
- package/app/assets/{CrlnxAGW.js → BvkNY7SP.js} +1 -1
- package/app/assets/{BGvsBpIS.js → C-8Bh-gu.js} +1 -1
- package/app/assets/{BMFLhX-x.js → C1JbR1mO.js} +1 -1
- package/app/assets/{DPyLA6Dl.js → C3AWL5gC.js} +1 -1
- package/app/assets/{BQ1Rcyw6.js → C3aiaYZP.js} +1 -1
- package/app/assets/{Cu_sGzNJ.js → C76CctEl.js} +1 -1
- package/app/assets/{DHZOxCSJ.js → C82F2LSh.js} +1 -1
- package/app/assets/{CoZCOAph.js → CCJEQIo6.js} +1 -1
- package/app/assets/{DzdX4vRD.js → CDfygETm.js} +1 -1
- package/app/assets/{BixvbqFe.js → CGpFMM6B.js} +1 -1
- package/app/assets/{BRZhVXRC.js → CH4cEkW4.js} +1 -1
- package/app/assets/{D9QeXBOk.js → CKUISE0C.js} +1 -1
- package/app/assets/{BNB62Dfu.js → CN1CF2CU.js} +1 -1
- package/app/assets/{D0Ya12SQ.js → CRYDH2ct.js} +1 -1
- package/app/assets/{BnJGrP6V.js → CZRhmV_L.js} +2 -2
- package/app/assets/{C1gqjEN3.js → C_qmv4pB.js} +1 -1
- package/app/assets/{CgQ0qqq4.js → CcaDuuFY.js} +1 -1
- package/app/assets/{D1kyupCL.js → Cm-pfCIP.js} +1 -1
- package/app/assets/{BDtsGuIR.js → Cme0nCT7.js} +2 -2
- package/app/assets/{BhX9zWzC.js → CoUCmmSB.js} +1 -1
- package/app/assets/{B7zF7RU4.js → CtsakJNi.js} +1 -1
- package/app/assets/{DNHPk-9r.js → Cw4TnfXm.js} +1 -1
- package/app/assets/{BYvM8E39.js → CxaujQob.js} +1 -1
- package/app/assets/{CYz610vE.js → CyX8oVsa.js} +1 -1
- package/app/assets/{CRnmOOqq.js → D-DAzfgs.js} +1 -1
- package/app/assets/{BPmMKRmE.js → D3VPMNTU.js} +1 -1
- package/app/assets/{CExE8dKz.js → D4DxtYTA.js} +185 -184
- package/app/assets/{C6712dxU.js → D4c1cZWk.js} +1 -1
- package/app/assets/{C1kpKIsO.js → DG0u2CPf.js} +1 -1
- package/app/assets/{CHx7zgT8.js → DKObYbZY.js} +1 -1
- package/app/assets/{DU-Eln5x.js → DOy06rIE.js} +1 -1
- package/app/assets/{aIFwnVFr.js → DPKD37gk.js} +1 -1
- package/app/assets/{DpEN2jyA.js → DT8Xdk78.js} +1 -1
- package/app/assets/{Do7KpDxk.js → DXExbVos.js} +1 -1
- package/app/assets/{BSziALTN.js → DXQPcWS6.js} +1 -1
- package/app/assets/{kXDKfUfE.js → DjsycSVl.js} +1 -1
- package/app/assets/{CiL8zoYm.js → Dya0zxo6.js} +1 -1
- package/app/assets/{DTkqO0Em.js → IqMoIce-.js} +1 -1
- package/app/assets/{CrhJJH3f.js → MeOkctzz.js} +1 -1
- package/app/assets/{DF7EZh_S.js → NL8WOYEo.js} +1 -1
- package/app/assets/{D8dVzi6I.js → Ngd1VEiY.js} +1 -1
- package/app/assets/UEkRIZwQ.js +1 -0
- package/app/assets/{BGuDcBB_.js → UJzcIbfW.js} +1 -1
- package/app/assets/{C77ZEZfM.js → W81Xd8P5.js} +1 -1
- package/app/assets/{DaBfnZOJ.js → Yn5aIyLX.js} +1 -1
- package/app/assets/{BMBWoD5w.js → _N3A-NTc.js} +1 -1
- package/app/assets/{qRIRkBN0.js → gvCOWBS0.js} +1 -1
- package/app/assets/{S7HbowYz.js → iz6RnRcO.js} +71 -71
- package/app/assets/{DzRyVlxz.js → kTwcxyaO.js} +1 -1
- package/app/assets/{tJkeLYCp.js → oXAkF219.js} +1 -1
- package/app/assets/{BTaXXwBP.js → pDR31rvF.js} +1 -1
- package/app/assets/{BEH9Jqkv.js → u9a-WHjb.js} +1 -1
- package/app/assets/{BbOETtQZ.js → yLCKuLgs.js} +1 -1
- package/app/assets/{CaU3pCK6.js → yfRSh-O-.js} +1 -1
- package/app/assets/{BjwrN_ch.js → zdvaVsTo.js} +1 -1
- package/app/index.html +20 -20
- package/package.json +1 -1
- package/app/assets/9gOj-Ty3.js +0 -1
- package/app/assets/BFw3KCAr.js +0 -1
- package/app/assets/w46wk7KI.css +0 -2
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{r as e}from"./hePW80VL.js";import{p as t}from"./
|
|
1
|
+
import{r as e}from"./hePW80VL.js";import{p as t}from"./CyX8oVsa.js";import{i as n,r,t as i}from"./C76CctEl.js";import{t as a}from"./CcaDuuFY.js";import{P as o,R as s}from"./iz6RnRcO.js";import{n as c}from"./BihjBM79.js";import{n as l}from"./C_qmv4pB.js";import{C as u}from"./BVZGLNq_.js";import{g as d}from"./CZRhmV_L.js";import{E as f,Ft as p,Gt as m,Mt as h,Nt as g,Yt as _,d as v,jt as y,pt as b,wt as x,y as S}from"./D4DxtYTA.js";import{a as C,c as w,d as T,f as E,h as D,i as O,l as k,m as A,n as j,o as M,p as N,r as P,s as F,t as I,u as L}from"./CtsakJNi.js";import{n as R}from"./BaTnCkNR.js";var z=e(t(),1),B=r(),V=300;function H({columns:e,rows:t,rowKey:r,readOnly:a,onEdit:o,onDelete:s,addColumns:c,onAdd:l,addExtra:u}){let{t:d}=n(),[f,m]=(0,z.useState)(null),[h,v]=(0,z.useState)(!1),[y,b]=(0,z.useState)({}),[S,C]=(0,z.useState)(!1),w=async e=>{v(!0);try{await e()}catch{}finally{v(!1)}},T=e=>w(async()=>{!f||!o||(await o(e,f.column,f.value),m(null))}),E=()=>w(async()=>{l&&(await l(y),b({}),C(!1))});return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[!a&&l&&c&&(0,B.jsx)(`div`,{className:`flex flex-shrink-0 flex-wrap items-center gap-2 border-b px-3 py-1.5`,children:S?(0,B.jsxs)(B.Fragment,{children:[c.map(e=>(0,B.jsx)(`input`,{className:`h-7 rounded border bg-background px-2 text-xs ${e.numeric?`w-24`:`min-w-40 flex-1`}`,placeholder:e.label,value:y[e.key]??``,onChange:t=>b({...y,[e.key]:t.target.value}),onKeyDown:e=>{e.key===`Enter`&&E()}},e.key)),u,(0,B.jsxs)(`button`,{type:`button`,disabled:h,onClick:()=>void E(),className:`flex h-7 items-center gap-1 rounded border border-primary/30 bg-primary/10 px-2 text-xs text-primary hover:bg-primary/20 disabled:opacity-40`,children:[(0,B.jsx)(_,{className:`size-3`}),d(`keyViewer.add`)]}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>{C(!1),b({})},className:`flex h-7 items-center rounded border px-2 text-xs text-muted-foreground hover:text-foreground`,children:d(`keyViewer.cancel`)})]}):(0,B.jsxs)(`button`,{type:`button`,onClick:()=>C(!0),className:`flex h-7 items-center gap-1 rounded border bg-background px-2 text-xs text-muted-foreground hover:text-foreground`,children:[(0,B.jsx)(g,{className:`size-3`}),d(`keyViewer.addRow`)]})}),(0,B.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:[(0,B.jsxs)(`table`,{className:`w-full border-collapse text-xs`,children:[(0,B.jsx)(`thead`,{className:`sticky top-0 z-10 bg-muted`,children:(0,B.jsxs)(`tr`,{children:[e.map(e=>(0,B.jsx)(`th`,{className:`border-b px-3 py-1.5 text-left font-medium text-muted-foreground ${e.numeric?`w-28`:``}`,children:e.label},e.key)),!a&&(o||s)&&(0,B.jsx)(`th`,{className:`w-16 border-b`})]})}),(0,B.jsx)(`tbody`,{children:t.map((t,n)=>{let c=r(t,n);return(0,B.jsxs)(`tr`,{className:`group border-b border-border/50 hover:bg-muted/40`,children:[e.map(e=>{let n=f?.row===c&&f.column===e.key,r=t[e.key]??``;return(0,B.jsx)(`td`,{className:`px-3 py-1 align-top font-mono ${e.numeric?`text-right tabular-nums`:``}`,children:n?(0,B.jsxs)(`div`,{className:`flex items-start gap-1`,children:[(0,B.jsx)(`textarea`,{autoFocus:!0,className:`min-h-7 w-full resize-y rounded border bg-background px-1.5 py-1 font-mono text-xs`,rows:Math.min(8,Math.max(1,r.split(`
|
|
2
2
|
`).length)),value:f.value,onChange:e=>m({...f,value:e.target.value}),onKeyDown:e=>{e.key===`Escape`&&m(null),e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&T(t)}}),(0,B.jsx)(`button`,{type:`button`,disabled:h,title:d(`keyViewer.save`),onClick:()=>void T(t),className:`rounded p-1 text-primary hover:bg-primary/10`,children:(0,B.jsx)(_,{className:`size-3.5`})}),(0,B.jsx)(`button`,{type:`button`,title:d(`keyViewer.cancel`),onClick:()=>m(null),className:`rounded p-1 text-muted-foreground hover:bg-muted`,children:(0,B.jsx)(i,{className:`size-3.5`})})]}):e.render?e.render(r):(0,B.jsx)(`span`,{className:`whitespace-pre-wrap break-all`,title:r.length>V?r:void 0,children:r.length>V?`${r.slice(0,V)}…`:r})},e.key)}),!a&&(o||s)&&(0,B.jsx)(`td`,{className:`px-1 py-1 align-top`,children:(0,B.jsxs)(`div`,{className:`flex justify-end gap-0.5 opacity-0 group-hover:opacity-100`,children:[o&&e.some(e=>e.editable)&&(0,B.jsx)(`button`,{type:`button`,title:d(`keyViewer.edit`),onClick:()=>{let n=e.find(e=>e.editable);m({row:c,column:n.key,value:t[n.key]??``})},className:`rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,B.jsx)(p,{className:`size-3`})}),s&&(0,B.jsx)(`button`,{type:`button`,disabled:h,title:d(`keyViewer.deleteRow`),onClick:()=>void w(()=>s(t)),className:`rounded p-1 text-muted-foreground hover:bg-destructive/10 hover:text-destructive`,children:(0,B.jsx)(x,{className:`size-3`})})]})})]},c)})})]}),t.length===0&&(0,B.jsx)(`p`,{className:`p-6 text-center text-xs text-muted-foreground`,children:d(`keyViewer.empty`)})]})]})}var U=e=>e instanceof Error?e.message:String(e);function W(e){let{access:t,onChanged:n,onError:r}=e;return(0,z.useCallback)(async(e,i)=>{try{await t.write(e),await i?.(),n()}catch(e){if(e instanceof Error&&e.name===`ExecutionCancelled`)return;throw r(U(e)),e}},[t,n,r])}function G({onApply:e}){let{t}=n(),[r,i]=(0,z.useState)(``);return(0,B.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,B.jsx)(y,{className:`size-3.5 text-muted-foreground`}),(0,B.jsx)(`input`,{className:`h-7 w-56 rounded border bg-background px-2 text-xs`,placeholder:t(`keyViewer.filterPlaceholder`),value:r,onChange:e=>i(e.target.value),onKeyDown:t=>{t.key===`Enter`&&e(j(r))}})]})}function K({shown:e,total:t,hasMore:r,onMore:i,loading:a}){let{t:o}=n();return(0,B.jsxs)(`div`,{className:`flex flex-shrink-0 items-center gap-3 border-t px-3 py-1 text-xs text-muted-foreground`,children:[(0,B.jsx)(`span`,{children:t===null?o(`keyViewer.shown`,{count:e}):o(`keyViewer.shownOf`,{count:e,total:t})}),r&&(0,B.jsx)(`button`,{type:`button`,disabled:a,onClick:i,className:`rounded border bg-background px-2 py-0.5 hover:text-foreground disabled:opacity-40`,children:o(`keyViewer.loadMore`)})]})}function q({props:e,load:t,save:r}){let{t:i}=n(),[a,o]=(0,z.useState)(null),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)(!1),[d,p]=(0,z.useState)(`preview`),[m,h]=(0,z.useState)(!1),{onError:g}=e,_=(0,z.useCallback)(async(e=!1)=>{try{let n=await t(e);o(n.text),c(n.text),u(n.partial)}catch(e){g(U(e))}},[t,g]);(0,z.useEffect)(()=>{Promise.resolve().then(()=>_())},[_]);let y=S(s),b=d===`preview`&&y.kind!==`text`,x=a!==null&&s!==a,C=async()=>{h(!0);try{await r(s),o(s)}catch{}finally{h(!1)}};if(a===null)return(0,B.jsx)(`p`,{className:`p-6 text-xs text-muted-foreground`,children:i(`keyViewer.loading`)});let w=e=>`rounded px-2 py-0.5 ${e?`bg-primary/15 text-primary`:`text-muted-foreground hover:text-foreground`}`;return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsxs)(`div`,{className:`flex flex-shrink-0 items-center gap-2 border-b px-3 py-1.5 text-xs`,children:[y.kind!==`text`&&(0,B.jsxs)(`div`,{className:`flex items-center gap-0.5 rounded border p-0.5`,children:[(0,B.jsx)(`button`,{type:`button`,className:w(b),onClick:()=>p(`preview`),children:i(y.kind===`json`?`keyViewer.viewTree`:`keyViewer.viewHtml`)}),(0,B.jsx)(`button`,{type:`button`,className:w(!b),onClick:()=>p(`text`),children:i(`keyViewer.viewText`)})]}),!b&&y.kind===`json`&&!e.access.readOnly&&!l&&(0,B.jsx)(`button`,{type:`button`,onClick:()=>c(A(s)??s),className:`rounded border bg-background px-2 py-0.5 text-muted-foreground hover:text-foreground`,children:i(`keyViewer.formatJson`)}),l&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{className:`text-catppuccin-yellow`,children:i(`keyViewer.truncated`,{size:P(1048576)})}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>void _(!0),className:`rounded border bg-background px-2 py-0.5 text-muted-foreground hover:text-foreground`,children:i(`keyViewer.loadFull`)})]}),(0,B.jsx)(`div`,{className:`flex-1`}),!e.access.readOnly&&!l&&(0,B.jsxs)(B.Fragment,{children:[x&&(0,B.jsx)(`button`,{type:`button`,onClick:()=>c(a),className:`rounded border bg-background px-2 py-0.5 text-muted-foreground hover:text-foreground`,children:i(`keyViewer.revert`)}),(0,B.jsx)(`button`,{type:`button`,disabled:!x||m,onClick:()=>void C(),className:`rounded border border-primary/30 bg-primary/10 px-2 py-0.5 text-primary hover:bg-primary/20 disabled:opacity-40`,children:i(`keyViewer.save`)})]})]}),b&&y.kind===`json`?(0,B.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto py-3 pl-7 pr-3 font-mono text-xs`,children:(0,B.jsx)(f,{value:y.document,defaultExpanded:!0})}):b&&y.kind===`html`?(0,B.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,B.jsx)(v,{html:s})}):(0,B.jsx)(`textarea`,{className:`min-h-0 flex-1 resize-none bg-background p-3 font-mono text-xs outline-none`,spellCheck:!1,readOnly:e.access.readOnly||l,value:s,onChange:e=>c(e.target.value)})]})}function J(e){let{access:t,keyName:n,length:r,ttl:i}=e,a=W(e),o=(0,z.useCallback)(async e=>{let i=!e&&r!==null&&r>1048576,a=await t.read(C.getString(n,i?I:void 0));return{text:a==null?``:String(a),partial:i}},[t,n,r]),s=(0,z.useCallback)(async e=>{try{await a(C.setString(n,e))}catch(t){if(!/syntax|KEEPTTL/i.test(U(t)))throw t;await a(C.setStringWithTtl(n,e,i))}},[a,n,i]);return(0,B.jsx)(q,{props:e,load:o,save:s})}function Y(e){let{access:t,keyName:n}=e,r=W(e),i=(0,z.useCallback)(async()=>{let e=await t.read(C.getJson(n));return{text:e==null?``:String(e),partial:!1}},[t,n]),a=(0,z.useCallback)(async e=>{JSON.parse(e),await r(C.setJson(n,e))},[r,n]);return(0,B.jsx)(q,{props:e,load:i,save:a})}function X(e,t,n){let{access:r,onError:i}=e,[a,o]=(0,z.useState)([]),[s,c]=(0,z.useState)(`0`),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(!1),[p,m]=(0,z.useState)(!1),h=(0,z.useCallback)(async(e,a,s)=>{f(!0);try{let i=e,l=[];do{let e=n(await r.read(t(i,a)));l.push(...e.items),i=e.cursor}while(i!==`0`&&l.length===0);o(e=>s?[...e,...l]:l),c(i),m(!0)}catch(e){i(U(e))}finally{f(!1)}},[r,t,n,i]);return(0,z.useEffect)(()=>{Promise.resolve().then(()=>h(`0`,l,!1))},[h,l]),{items:a,setItems:o,loading:d,started:p,hasMore:p&&s!==`0`,loadMore:()=>void h(s,l,!0),applyFilter:u,reload:()=>void h(`0`,l,!1)}}function Z(e){let{t}=n(),{keyName:r,length:i,access:a}=e,o=W(e),s=X(e,(0,z.useCallback)((e,t)=>C.scan(r,`hash`,e,t),[r]),w),c=[{key:`field`,label:t(`keyViewer.field`)},{key:`value`,label:t(`keyViewer.value`),editable:!0}];return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(`div`,{className:`flex flex-shrink-0 items-center gap-2 border-b px-3 py-1.5`,children:(0,B.jsx)(G,{onApply:s.applyFilter})}),(0,B.jsx)(H,{columns:c,rows:s.items.map(e=>({field:e.field,value:e.value})),rowKey:e=>e.field,readOnly:a.readOnly,onEdit:(e,t,n)=>o(C.hashSet(r,e.field,n),()=>{s.setItems(t=>t.map(t=>t.field===e.field?{...t,value:n}:t))}),onDelete:e=>o(C.hashDelete(r,e.field),()=>{s.setItems(t=>t.filter(t=>t.field!==e.field))}),addColumns:c.map(e=>({...e,editable:!1})),onAdd:e=>o(C.hashSet(r,e.field??``,e.value??``),s.reload)}),(0,B.jsx)(K,{shown:s.items.length,total:i,hasMore:s.hasMore,onMore:s.loadMore,loading:s.loading})]})}function Q(e){let{t}=n(),{keyName:r,length:i,access:a}=e,o=W(e),s=X(e,(0,z.useCallback)((e,t)=>C.scan(r,`set`,e,t),[r]),L),c=[{key:`member`,label:t(`keyViewer.member`)}];return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(`div`,{className:`flex flex-shrink-0 items-center gap-2 border-b px-3 py-1.5`,children:(0,B.jsx)(G,{onApply:s.applyFilter})}),(0,B.jsx)(H,{columns:c,rows:s.items.map(e=>({member:e})),rowKey:e=>e.member,readOnly:a.readOnly,onDelete:e=>o(C.setRemove(r,e.member),()=>{s.setItems(t=>t.filter(t=>t!==e.member))}),addColumns:c,onAdd:e=>o(C.setAdd(r,e.member??``),s.reload)}),(0,B.jsx)(K,{shown:s.items.length,total:i,hasMore:s.hasMore,onMore:s.loadMore,loading:s.loading})]})}function ee(e){let{t}=n(),{keyName:r,length:i,access:a}=e,o=W(e),s=X(e,(0,z.useCallback)((e,t)=>C.scan(r,`zset`,e,t),[r]),N),c=[{key:`member`,label:t(`keyViewer.member`)},{key:`score`,label:t(`keyViewer.score`),editable:!0,numeric:!0}],l=[...s.items].sort((e,t)=>Number(e.score)-Number(t.score)).map(e=>({member:e.member,score:e.score}));return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(`div`,{className:`flex flex-shrink-0 items-center gap-2 border-b px-3 py-1.5`,children:(0,B.jsx)(G,{onApply:s.applyFilter})}),(0,B.jsx)(H,{columns:c,rows:l,rowKey:e=>e.member,readOnly:a.readOnly,onEdit:(e,t,n)=>o(C.zsetAdd(r,e.member,n.trim()),()=>{s.setItems(t=>t.map(t=>t.member===e.member?{...t,score:n.trim()}:t))}),onDelete:e=>o(C.zsetRemove(r,e.member),()=>{s.setItems(t=>t.filter(t=>t.member!==e.member))}),addColumns:[{key:`member`,label:t(`keyViewer.member`)},{key:`score`,label:t(`keyViewer.score`),numeric:!0}],onAdd:e=>o(C.zsetAdd(r,e.member??``,(e.score??`0`).trim()||`0`),s.reload)}),(0,B.jsx)(K,{shown:s.items.length,total:i,hasMore:s.hasMore,onMore:s.loadMore,loading:s.loading})]})}function te(e){let{t}=n(),{keyName:r,length:i,access:a,onError:o}=e,s=W(e),[c,l]=(0,z.useState)([]),[u,d]=(0,z.useState)(!1),[f,p]=(0,z.useState)(!1),m=(0,z.useCallback)(async e=>{d(!0);try{let t=k(await a.read(C.listRange(r,e)));l(n=>e===0?t:[...n,...t])}catch(e){o(U(e))}finally{d(!1)}},[a,r,o]);(0,z.useEffect)(()=>{Promise.resolve().then(()=>m(0))},[m]);let h=[{key:`index`,label:t(`keyViewer.index`),numeric:!0},{key:`value`,label:t(`keyViewer.value`),editable:!0}];return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(H,{columns:h,rows:c.map((e,t)=>({index:String(t),value:e})),rowKey:e=>e.index,readOnly:a.readOnly,onEdit:(e,t,n)=>s(C.listSet(r,Number(e.index),n),()=>{l(t=>t.map((t,r)=>r===Number(e.index)?n:t))}),onDelete:async e=>{let t=M();await s(C.listSet(r,Number(e.index),t)),await s(C.listRemoveOne(r,t),()=>m(0))},addColumns:[{key:`value`,label:t(`keyViewer.value`)}],addExtra:(0,B.jsxs)(`select`,{value:f?`head`:`tail`,onChange:e=>p(e.target.value===`head`),className:`h-7 rounded border bg-background px-1 text-xs`,children:[(0,B.jsx)(`option`,{value:`tail`,children:t(`keyViewer.pushTail`)}),(0,B.jsx)(`option`,{value:`head`,children:t(`keyViewer.pushHead`)})]}),onAdd:e=>s(C.listPush(r,e.value??``,f),()=>m(0))}),(0,B.jsx)(K,{shown:c.length,total:i,hasMore:i!==null&&c.length<i,onMore:()=>void m(c.length),loading:u})]})}function ne(e){let{t}=n(),{keyName:r,length:i,access:a,onError:o}=e,s=W(e),[c,l]=(0,z.useState)([]),[u,d]=(0,z.useState)(!1),f=(0,z.useCallback)(async e=>{d(!0);try{let t=T(await a.read(C.streamRange(r,e)));l(n=>e?[...n,...t]:t)}catch(e){o(U(e))}finally{d(!1)}},[a,r,o]);(0,z.useEffect)(()=>{Promise.resolve().then(()=>f())},[f]);let p=c.map(e=>({id:e.id,fields:JSON.stringify(e.fields)})),m=[{key:`id`,label:t(`keyViewer.entryId`)},{key:`fields`,label:t(`keyViewer.fields`),render:e=>(0,B.jsx)(`dl`,{className:`grid grid-cols-[max-content_1fr] gap-x-3`,children:JSON.parse(e).map(([e,t],n)=>(0,B.jsxs)(`div`,{className:`contents`,children:[(0,B.jsx)(`dt`,{className:`text-muted-foreground`,children:e}),(0,B.jsx)(`dd`,{className:`break-all`,children:t})]},n))})}];return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(H,{columns:m,rows:p,rowKey:e=>e.id,readOnly:a.readOnly,onDelete:e=>s(C.streamDelete(r,e.id),()=>{l(t=>t.filter(t=>t.id!==e.id))}),addColumns:[{key:`fields`,label:t(`keyViewer.entryFieldsPlaceholder`)}],onAdd:e=>{let n=F((e.fields??``).replaceAll(`;`,`
|
|
3
3
|
`));return n.length===0?(o(t(`keyViewer.entryFieldsRequired`)),Promise.reject(Error(t(`keyViewer.entryFieldsRequired`)))):s(C.streamAdd(r,n),()=>f())}}),(0,B.jsx)(K,{shown:c.length,total:i,hasMore:i!==null&&c.length<i,onMore:()=>void f(c[c.length-1]?.id),loading:u})]})}var re={string:J,hash:Z,list:te,set:Q,zset:ee,stream:ne,"ReJSON-RL":Y};function $(e,t,n,r=null){for(let i of e){if(i.type===s.KEY&&i.metadata?.database===t&&i.metadata.key===n)return r;let e=$(i.children,t,n,i);if(e)return e}return null}function ie({connectionId:e,tabId:t,item:r}){let{t:s}=n(),f=R(e,t,r),{loadChildren:g}=d(),[v,y]=(0,z.useState)(null),[S,w]=(0,z.useState)(!1),[T,k]=(0,z.useState)(null),[A,j]=(0,z.useState)(0),[M,N]=(0,z.useState)(null),[F,I]=(0,z.useState)(null),L=r.name,V=(0,z.useCallback)(async()=>{if(f.connected)try{let e=String(await f.read(C.type(L)));if(e===`none`){w(!0),y(null);return}let t=C.length(L,e),[n,r,i,a]=await Promise.all([f.read(C.ttl(L)),t?f.tryRead(t):Promise.resolve(null),f.tryRead(C.memory(L)),f.tryRead(C.encoding(L))]),o=E(n);w(o===`gone`),y({type:e,ttl:o===`gone`?null:o,length:D(r),memory:D(i),encoding:typeof a==`string`?a:null})}catch(e){k(e instanceof Error?e.message:String(e))}},[f,L]);(0,z.useEffect)(()=>{Promise.resolve().then(()=>V())},[V]);let H=(0,z.useCallback)(t=>{let n=$(u.getState().trees[e]??[],r.database,t);n&&g(e,n)},[e,r.database,g]),U=async e=>{try{k(null),await e()}catch(e){if(e instanceof Error&&e.name===`ExecutionCancelled`)return;k(e instanceof Error?e.message:String(e))}},W=n=>U(async()=>{if(!n||n===L){N(null);return}let i=await f.write(C.renameIfFree(L,n));if(Number(i)!==1)throw Error(s(`keyViewer.renameTaken`,{name:n}));N(null),H(L),l.getState().setSourceItem(e,t,{database:r.database,name:n})}),G=e=>U(async()=>{let t=Number(e);if(e.trim()===``)await f.write(C.persist(L));else if(!Number.isInteger(t)||t<=0)throw Error(s(`keyViewer.ttlInvalid`));else await f.write(C.expire(L,t));I(null),await V()}),K=()=>U(async()=>{let n=C.remove(L);await c.getState().requestDestructiveConfirm({title:s(`keyViewer.deleteTitle`,{name:L}),description:s(`keyViewer.deleteDescription`),statements:[n],confirmLabel:s(`keyViewer.delete`)})&&(await f.write(n,{confirmed:!0}),H(L),l.getState().removeQueryTab(e,t))}),q=()=>{v&&b(e,o(v.type,L),r.database,L)};if(!f.connected)return(0,B.jsx)(`p`,{className:`p-6 text-sm text-muted-foreground`,children:s(`keyViewer.notConnected`)});let J=v?re[v.type]:void 0,Y=`flex h-7 items-center gap-1 rounded border bg-background px-2 text-xs text-muted-foreground hover:text-foreground disabled:opacity-40`;return(0,B.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,B.jsxs)(`div`,{className:`flex flex-shrink-0 flex-wrap items-center gap-x-3 gap-y-1.5 border-b bg-muted/30 px-3 py-1.5 text-xs`,children:[v&&(0,B.jsx)(`span`,{className:`rounded bg-primary/15 px-1.5 py-0.5 font-mono text-[10px] font-semibold uppercase text-primary`,children:v.type===`ReJSON-RL`?`json`:v.type}),M===null?(0,B.jsxs)(`span`,{className:`flex items-center gap-1 font-mono text-sm font-medium`,children:[L,!f.readOnly&&!S&&(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.rename`),onClick:()=>N(L),className:`rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,B.jsx)(p,{className:`size-3`})})]}):(0,B.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,B.jsx)(`input`,{autoFocus:!0,className:`h-7 w-72 rounded border bg-background px-2 font-mono text-xs`,value:M,onChange:e=>N(e.target.value),onKeyDown:e=>{e.key===`Enter`&&W(M),e.key===`Escape`&&N(null)}}),(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.save`),onClick:()=>void W(M),className:`rounded p-1 text-primary hover:bg-primary/10`,children:(0,B.jsx)(_,{className:`size-3.5`})}),(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.cancel`),onClick:()=>N(null),className:`rounded p-1 text-muted-foreground hover:bg-muted`,children:(0,B.jsx)(i,{className:`size-3.5`})})]}),v&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`span`,{className:`flex items-center gap-1 text-muted-foreground`,children:[(0,B.jsx)(m,{className:`size-3`}),F===null?(0,B.jsx)(`button`,{type:`button`,disabled:f.readOnly,onClick:()=>I(v.ttl===null?``:String(v.ttl)),className:`rounded px-1 hover:bg-muted hover:text-foreground disabled:hover:bg-transparent`,title:f.readOnly?void 0:s(`keyViewer.ttlEdit`),children:v.ttl===null?s(`keyViewer.noExpiry`):O(v.ttl)}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`input`,{autoFocus:!0,className:`h-6 w-24 rounded border bg-background px-1.5 text-xs`,placeholder:s(`keyViewer.ttlPlaceholder`),value:F,onChange:e=>I(e.target.value),onKeyDown:e=>{e.key===`Enter`&&G(F),e.key===`Escape`&&I(null)}}),(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.save`),onClick:()=>void G(F),className:`rounded p-1 text-primary hover:bg-primary/10`,children:(0,B.jsx)(_,{className:`size-3.5`})}),(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.cancel`),onClick:()=>I(null),className:`rounded p-1 hover:bg-muted`,children:(0,B.jsx)(i,{className:`size-3.5`})})]})]}),v.length!==null&&(0,B.jsx)(`span`,{className:`text-muted-foreground`,children:s(v.type===`string`?`keyViewer.bytes`:`keyViewer.length`,{count:v.length})}),(0,B.jsx)(`span`,{className:`text-muted-foreground`,title:v.encoding?s(`keyViewer.encoding`,{encoding:v.encoding}):void 0,children:s(`keyViewer.memory`,{size:P(v.memory)})})]}),(0,B.jsx)(`div`,{className:`flex-1`}),(0,B.jsxs)(`button`,{type:`button`,className:Y,onClick:()=>{k(null),j(e=>e+1),V()},children:[(0,B.jsx)(h,{className:`size-3`}),s(`keyViewer.refresh`)]}),(0,B.jsxs)(`button`,{type:`button`,className:Y,disabled:!v,onClick:q,children:[(0,B.jsx)(a,{className:`size-3`}),s(`keyViewer.openInConsole`)]}),!f.readOnly&&!S&&(0,B.jsxs)(`button`,{type:`button`,className:`${Y} hover:border-destructive/40 hover:text-destructive`,onClick:()=>void K(),children:[(0,B.jsx)(x,{className:`size-3`}),s(`keyViewer.delete`)]})]}),T&&(0,B.jsxs)(`div`,{className:`flex flex-shrink-0 items-start gap-2 border-b border-destructive/30 bg-destructive/10 px-3 py-1.5 text-xs text-destructive`,children:[(0,B.jsx)(`span`,{className:`flex-1 whitespace-pre-wrap`,children:T}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>k(null),children:(0,B.jsx)(i,{className:`size-3.5`})})]}),S?(0,B.jsx)(`p`,{className:`p-6 text-sm text-muted-foreground`,children:s(`keyViewer.gone`)}):v?J?(0,B.jsx)(J,{access:f,keyName:L,length:v.length,ttl:v.ttl,onChanged:()=>void V(),onError:k},`${L}:${A}`):(0,B.jsx)(`p`,{className:`p-6 text-sm text-muted-foreground`,children:s(`keyViewer.unsupported`,{type:v.type})}):(0,B.jsx)(`p`,{className:`p-6 text-sm text-muted-foreground`,children:s(`keyViewer.loading`)})]})}export{ie as RedisKeyViewer};
|