@harperfast/harper 5.1.23 → 5.1.24
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/resources/Table.js +6 -2
- package/dist/resources/Table.js.map +1 -1
- package/npm-shrinkwrap.json +38 -38
- package/package.json +2 -2
- package/resources/Table.ts +5 -1
- package/studio/web/assets/{Chat-CHWxBSOY.js → Chat-WK3X972M.js} +5 -5
- package/studio/web/assets/{Chat-CHWxBSOY.js.map → Chat-WK3X972M.js.map} +1 -1
- package/studio/web/assets/{FloatingChat-DVCy2mvk.js → FloatingChat-Bqjk6Bf4.js} +5 -5
- package/studio/web/assets/{FloatingChat-DVCy2mvk.js.map → FloatingChat-Bqjk6Bf4.js.map} +1 -1
- package/studio/web/assets/{apiToken-QLwwxtxT.js → apiToken-S_hqpnVV.js} +2 -2
- package/studio/web/assets/{apiToken-QLwwxtxT.js.map → apiToken-S_hqpnVV.js.map} +1 -1
- package/studio/web/assets/{applications-EmZVBabu.js → applications-C6zKD9Rb.js} +12 -12
- package/studio/web/assets/applications-C6zKD9Rb.js.map +1 -0
- package/studio/web/assets/{index-CndJ7kZK.js → index-BbsxXAVZ.js} +31 -31
- package/studio/web/assets/index-BbsxXAVZ.js.map +1 -0
- package/studio/web/assets/index.lazy-BPnXo1Wj.js +14 -0
- package/studio/web/assets/{index.lazy-CGmTtyPL.js.map → index.lazy-BPnXo1Wj.js.map} +1 -1
- package/studio/web/assets/jsonMode-X_blmtuO.js +2 -0
- package/studio/web/assets/jsonMode-X_blmtuO.js.map +1 -0
- package/studio/web/assets/{profile-Dgjkaqud.js → profile-CY1FwgRs.js} +2 -2
- package/studio/web/assets/{profile-Dgjkaqud.js.map → profile-CY1FwgRs.js.map} +1 -1
- package/studio/web/assets/{setComponentFile-BMFCm_Yi.js → setComponentFile-ZBQ4KXnC.js} +2 -2
- package/studio/web/assets/{setComponentFile-BMFCm_Yi.js.map → setComponentFile-ZBQ4KXnC.js.map} +1 -1
- package/studio/web/assets/setup-B_NOw8rV.js +3 -0
- package/studio/web/assets/setup-B_NOw8rV.js.map +1 -0
- package/studio/web/assets/{status-CtgqjZ6q.js → status-D7A8OktU.js} +4 -4
- package/studio/web/assets/{status-CtgqjZ6q.js.map → status-D7A8OktU.js.map} +1 -1
- package/studio/web/assets/{swagger-ui-react-BermOHTv.js → swagger-ui-react-iD3vGtu-.js} +2 -2
- package/studio/web/assets/{swagger-ui-react-BermOHTv.js.map → swagger-ui-react-iD3vGtu-.js.map} +1 -1
- package/studio/web/assets/tokenization-uOBOyHAS.js +8 -0
- package/studio/web/assets/tokenization-uOBOyHAS.js.map +1 -0
- package/studio/web/assets/{tsMode-CWC0nCN1.js → tsMode-CevZSdk5.js} +2 -2
- package/studio/web/assets/{tsMode-CWC0nCN1.js.map → tsMode-CevZSdk5.js.map} +1 -1
- package/studio/web/assets/{useEntityRestURL-DaMIzJ2I.js → useEntityRestURL-CswKSb0j.js} +2 -2
- package/studio/web/assets/{useEntityRestURL-DaMIzJ2I.js.map → useEntityRestURL-CswKSb0j.js.map} +1 -1
- package/studio/web/index.html +2 -1
- package/studio/web/assets/applications-EmZVBabu.js.map +0 -1
- package/studio/web/assets/index-CndJ7kZK.js.map +0 -1
- package/studio/web/assets/index.lazy-CGmTtyPL.js +0 -14
- package/studio/web/assets/jsonMode-DD1NLQKv.js +0 -8
- package/studio/web/assets/jsonMode-DD1NLQKv.js.map +0 -1
- package/studio/web/assets/setup-C2E-6wan.js +0 -3
- package/studio/web/assets/setup-C2E-6wan.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/apiToken-
|
|
2
|
-
import{a as e,r as t,t as n}from"./rolldown-runtime-CNC7AqOf.js";import{a as r,c as i,d as a,f as o,i as s,l as c,m as l,n as u,o as d,p as f,r as p,s as m,t as h,u as g}from"./authStore-CZUMMr7f.js";import{A as _,M as v,N as y,_ as b,a as x,b as S,c as C,f as w,g as T,k as E,l as D,m as O,n as k,o as A,r as j,v as ee,x as M}from"./vendor-core-CArycxS5.js";import{i as N,n as P,t as F}from"./button-Bh1J5cEt.js";import{A as I,C as L,D as te,E as ne,F as re,I as ie,M as ae,N as R,O as oe,P as se,S as ce,V as le,_ as z,a as ue,b as de,c as fe,d as pe,f as me,g as he,i as ge,j as B,k as _e,l as ve,m as ye,n as be,o as xe,p as Se,r as Ce,s as we,t as Te,u as Ee,v as V,w as De,x as Oe,y as ke}from"./vendor-tanstack-hI9zAWEc.js";import{a as Ae,i as je,t as Me}from"./vendor-datadog-DBn-aOxh.js";import{r as Ne,t as Pe}from"./vendor-react-B36dp27u.js";import{a as Fe,i as Ie,n as Le,o as Re,r as ze,s as Be,t as Ve}from"./useAuth-I6SnoWjX.js";import{At as He,Bt as Ue,C as We,Ct as Ge,D as Ke,Dt as qe,E as Je,Et as Ye,G as Xe,J as Ze,K as Qe,Mt as $e,Nt as et,O as tt,Ot as nt,Pt as rt,Rt as it,S as at,St as ot,T as st,Tt as ct,U as lt,W as ut,Y as dt,at as ft,b as pt,bt as mt,ct as ht,dt as gt,it as _t,jt as vt,kt as yt,lt as bt,ot as xt,q as St,st as Ct,ut as wt,v as Tt,vt as Et,w as Dt,wt as Ot,x as kt,xt as At,y as jt,yt as Mt,zt as H}from"./vendor-ui-D-BiU2GW.js";import{a as Nt,i as Pt,n as Ft,r as It,t as Lt}from"./card-BNyq5IF8.js";import{t as U}from"./createLucideIcon-B49W6uF4.js";import{_ as Rt,a as zt,b as Bt,c as Vt,d as Ht,f as Ut,g as Wt,h as Gt,i as Kt,l as qt,m as Jt,n as Yt,o as Xt,p as Zt,r as Qt,s as $t,t as en,u as tn,v as nn,y as rn}from"./humanFileSize-DIJdoExS.js";import{a as an,i as on,n as sn,r as cn,t as ln}from"./getRegistrationInfo-D3ccFq91.js";import{a as un,i as dn,n as fn,t as pn}from"./x-Bru-nCti.js";import{t as mn}from"./errorText-NpBmvk9I.js";import{n as hn,t as gn}from"./queryClient-CVMXFvkI.js";import{i as _n,n as vn,r as yn,t as bn}from"./localStorageKeys-dvU1YhFX.js";import{h as xn,n as Sn}from"./editor.api2-4ndOupAA.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function Cn(e){return e!==null&&!!e.username}function wn(e){if(e&&!Cn(e)){let t=Object.keys(e.roles);if(t.length===1)return`/${t[0]}`}return`/`}var Tn=U(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),En=U(`arrow-down-to-line`,[[`path`,{d:`M12 17V3`,key:`1cwfxf`}],[`path`,{d:`m6 11 6 6 6-6`,key:`12ii2o`}],[`path`,{d:`M19 21H5`,key:`150jfl`}]]),Dn=U(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),On=U(`arrow-up-down`,[[`path`,{d:`m21 16-4 4-4-4`,key:`f6ql7i`}],[`path`,{d:`M17 20V4`,key:`1ejh1v`}],[`path`,{d:`m3 8 4-4 4 4`,key:`11wl7u`}],[`path`,{d:`M7 4v16`,key:`1glfcx`}]]),kn=U(`arrow-up-from-line`,[[`path`,{d:`m18 9-6-6-6 6`,key:`kcunyi`}],[`path`,{d:`M12 3v14`,key:`7cf3v8`}],[`path`,{d:`M5 21h14`,key:`11awu3`}]]),An=U(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),jn=U(`book-open-text`,[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M16 12h2`,key:`7q9ll5`}],[`path`,{d:`M16 8h2`,key:`msurwy`}],[`path`,{d:`M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z`,key:`ruj8y`}],[`path`,{d:`M6 12h2`,key:`32wvfc`}],[`path`,{d:`M6 8h2`,key:`30oboj`}]]),Mn=U(`brush-cleaning`,[[`path`,{d:`m16 22-1-4`,key:`1ow2iv`}],[`path`,{d:`M19 14a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2h-3a1 1 0 0 1-1-1V4a2 2 0 0 0-4 0v5a1 1 0 0 1-1 1H6a2 2 0 0 0-2 2v1a1 1 0 0 0 1 1`,key:`11gii7`}],[`path`,{d:`M19 14H5l-1.973 6.767A1 1 0 0 0 4 22h16a1 1 0 0 0 .973-1.233z`,key:`bju7h4`}],[`path`,{d:`m8 22 1-4`,key:`s3unb`}]]),Nn=U(`bug`,[[`path`,{d:`M12 20v-9`,key:`1qisl0`}],[`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`,key:`uouzyp`}],[`path`,{d:`M14.12 3.88 16 2`,key:`qol33r`}],[`path`,{d:`M21 21a4 4 0 0 0-3.81-4`,key:`1b0z45`}],[`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`,key:`5cxbf6`}],[`path`,{d:`M22 13h-4`,key:`1jl80f`}],[`path`,{d:`M3 21a4 4 0 0 1 3.81-4`,key:`1fjd4g`}],[`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`,key:`1d7oge`}],[`path`,{d:`M6 13H2`,key:`82j7cp`}],[`path`,{d:`m8 2 1.88 1.88`,key:`fmnt4t`}],[`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`,key:`1vgav8`}]]),Pn=U(`calendar-clock`,[[`path`,{d:`M16 14v2.2l1.6 1`,key:`fo4ql5`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`path`,{d:`M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5`,key:`1osxxc`}],[`path`,{d:`M3 10h5`,key:`r794hk`}],[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`circle`,{cx:`16`,cy:`16`,r:`6`,key:`qoo3c4`}]]),Fn=U(`chart-pie`,[[`path`,{d:`M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z`,key:`pzmjnu`}],[`path`,{d:`M21.21 15.89A10 10 0 1 1 8 2.83`,key:`k2fpak`}]]),In=U(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),Ln=U(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),Rn=U(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),zn=U(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),Bn=U(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),Vn=U(`circle-dashed`,[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]),Hn=U(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),Un=U(`clipboard-check`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`m9 14 2 2 4-4`,key:`df797q`}]]),Wn=U(`clipboard`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}]]),Gn=U(`cloud-alert`,[[`path`,{d:`M12 12v4`,key:`tww15h`}],[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.128 16.949A7 7 0 1 1 15.71 8h1.79a1 1 0 0 1 0 9h-1.642`,key:`1namsd`}]]),Kn=U(`cloud-download`,[[`path`,{d:`M12 13v8l-4-4`,key:`1f5nwf`}],[`path`,{d:`m12 21 4-4`,key:`1lfcce`}],[`path`,{d:`M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284`,key:`ui1hmy`}]]),qn=U(`cloud-upload`,[[`path`,{d:`M12 13v8`,key:`1l5pq0`}],[`path`,{d:`M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242`,key:`1pljnt`}],[`path`,{d:`m8 17 4-4 4 4`,key:`1quai1`}]]),Jn=U(`columns-3-cog`,[[`path`,{d:`M10.5 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v5.5`,key:`1g2yzs`}],[`path`,{d:`m14.3 19.6 1-.4`,key:`11sv9r`}],[`path`,{d:`M15 3v7.5`,key:`7lm50a`}],[`path`,{d:`m15.2 16.9-.9-.3`,key:`1t7mvx`}],[`path`,{d:`m16.6 21.7.3-.9`,key:`1j67ps`}],[`path`,{d:`m16.8 15.3-.4-1`,key:`1ei7r6`}],[`path`,{d:`m19.1 15.2.3-.9`,key:`18r7jp`}],[`path`,{d:`m19.6 21.7-.4-1`,key:`z2vh2`}],[`path`,{d:`m20.7 16.8 1-.4`,key:`19m87a`}],[`path`,{d:`m21.7 19.4-.9-.3`,key:`1qgwi9`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}]]),Yn=U(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),Xn=U(`credit-card`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`2`,key:`ynyp8z`}],[`line`,{x1:`2`,x2:`22`,y1:`10`,y2:`10`,key:`1b3vmo`}]]),Zn=U(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),Qn=U(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),$n=U(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),er=U(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),tr=U(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),nr=U(`file-up`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]),rr=U(`funnel-plus`,[[`path`,{d:`M13.354 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l1.218-1.348`,key:`8mvsmf`}],[`path`,{d:`M16 6h6`,key:`1dogtp`}],[`path`,{d:`M19 3v6`,key:`1ytpjt`}]]),ir=U(`funnel-x`,[[`path`,{d:`M12.531 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l.427-.473`,key:`ol2ft2`}],[`path`,{d:`m16.5 3.5 5 5`,key:`15e6fa`}],[`path`,{d:`m21.5 3.5-5 5`,key:`m0lwru`}]]),ar=U(`funnel`,[[`path`,{d:`M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z`,key:`sc7q7i`}]]),or=U(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),sr=U(`git-graph`,[[`circle`,{cx:`5`,cy:`6`,r:`3`,key:`1qnov2`}],[`path`,{d:`M5 9v6`,key:`158jrl`}],[`circle`,{cx:`5`,cy:`18`,r:`3`,key:`104gr9`}],[`path`,{d:`M12 3v18`,key:`108xh3`}],[`circle`,{cx:`19`,cy:`6`,r:`3`,key:`108a5v`}],[`path`,{d:`M16 15.7A9 9 0 0 0 19 9`,key:`1e3vqb`}]]),cr=U(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),lr=U(`grip-vertical`,[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]),ur=U(`handshake`,[[`path`,{d:`m11 17 2 2a1 1 0 1 0 3-3`,key:`efffak`}],[`path`,{d:`m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4`,key:`9pr0kb`}],[`path`,{d:`m21 3 1 11h-2`,key:`1tisrp`}],[`path`,{d:`M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3`,key:`1uvwmv`}],[`path`,{d:`M3 4h8`,key:`1ep09j`}]]),dr=U(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),fr=U(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),pr=U(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),mr=U(`key`,[[`path`,{d:`m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4`,key:`g0fldk`}],[`path`,{d:`m21 2-9.6 9.6`,key:`1j0ho8`}],[`circle`,{cx:`7.5`,cy:`15.5`,r:`5.5`,key:`yqb3hr`}]]),hr=U(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),gr=U(`life-buoy`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m4.93 4.93 4.24 4.24`,key:`1ymg45`}],[`path`,{d:`m14.83 9.17 4.24-4.24`,key:`1cb5xl`}],[`path`,{d:`m14.83 14.83 4.24 4.24`,key:`q42g0n`}],[`path`,{d:`m9.17 14.83-4.24 4.24`,key:`bqpfvv`}],[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}]]),_r=U(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),vr=U(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),yr=U(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),br=U(`log-in`,[[`path`,{d:`m10 17 5-5-5-5`,key:`1bsop3`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,key:`u53s6r`}]]),xr=U(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),Sr=U(`mail-warning`,[[`path`,{d:`M22 10.5V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12.5`,key:`e61zoh`}],[`path`,{d:`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,key:`1ocrg3`}],[`path`,{d:`M20 14v4`,key:`1hm744`}],[`path`,{d:`M20 22v.01`,key:`12bgn6`}]]),Cr=U(`mail`,[[`path`,{d:`m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7`,key:`132q7q`}],[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}]]),wr=U(`map-pin`,[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]),Tr=U(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),Er=U(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),Dr=U(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),Or=U(`notepad-text`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M12 2v4`,key:`3427ic`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`16`,height:`18`,x:`4`,y:`4`,rx:`2`,key:`1u9h20`}],[`path`,{d:`M8 10h6`,key:`3oa6kw`}],[`path`,{d:`M8 14h8`,key:`1fgep2`}],[`path`,{d:`M8 18h5`,key:`17enja`}]]),kr=U(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),Ar=U(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),jr=U(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),Mr=U(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),Nr=U(`rocket`,[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]),Pr=U(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),Fr=U(`rotate-cw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]),Ir=U(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),Lr=U(`scale`,[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`path`,{d:`m19 8 3 8a5 5 0 0 1-6 0zV7`,key:`zcdpyk`}],[`path`,{d:`M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1`,key:`1yorad`}],[`path`,{d:`m5 8 3 8a5 5 0 0 1-6 0zV7`,key:`eua70x`}],[`path`,{d:`M7 21h10`,key:`1b0cd5`}]]),Rr=U(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),zr=U(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]),Br=U(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Vr=U(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),Hr=U(`shield-x`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m14.5 9.5-5 5`,key:`17q4r4`}],[`path`,{d:`m9.5 9.5 5 5`,key:`18nt4w`}]]);U(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]);var Ur=U(`sliders-horizontal`,[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]),Wr=U(`square-pen`,[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]]),Gr=U(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),Kr=U(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),qr=U(`table-2`,[[`path`,{d:`M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18`,key:`gugj83`}]]),Jr=U(`table`,[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M3 15h18`,key:`5xshup`}]]),Yr=U(`tag`,[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`,key:`vktsd0`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`kqv944`}]]),Xr=U(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),Zr=U(`ticket`,[[`path`,{d:`M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z`,key:`qn84l0`}],[`path`,{d:`M13 5v2`,key:`dyzc3o`}],[`path`,{d:`M13 17v2`,key:`1ont0d`}],[`path`,{d:`M13 11v2`,key:`1wjjxi`}]]),Qr=U(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),$r=U(`trash`,[[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),ei=U(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ti=U(`user-minus`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]),ni=U(`user`,[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]),ri=U(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),ii=U(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),W=Ne();function ai({className:e,error:t,title:n,showReturnToHome:r,children:i}){let{user:a,isLoading:o}=Re();return wn(a),(0,W.jsxs)(Lt,{className:P(`text-red p-5 border border-red rounded-md m-12 mt-36`,e),children:[(0,W.jsxs)(Pt,{children:[(0,W.jsx)(Nt,{className:`text-2xl`,children:(0,W.jsx)(`h2`,{children:n??`Component Error`})}),(0,W.jsx)(It,{children:t.message})]}),(0,W.jsxs)(Ft,{children:[i,r!==!1&&(a&&!o?(0,W.jsx)(V,{to:`/`,children:(0,W.jsxs)(F,{children:[` `,(0,W.jsx)(an,{}),` Return to Home`]})}):(0,W.jsx)(V,{to:`/sign-in`,children:(0,W.jsxs)(F,{children:[` `,(0,W.jsx)(an,{}),` Go to Sign In Page`]})}))]})]})}function oi(){let{user:e,isLoading:t}=Re();return wn(e),(0,W.jsx)(`div`,{className:`flex items-center justify-center h-screen px-3`,children:(0,W.jsxs)(Lt,{className:`text-red p-5 border border-red rounded-md w-full max-w-md`,children:[(0,W.jsx)(Pt,{children:(0,W.jsx)(Nt,{className:`text-2xl`,children:(0,W.jsx)(`h2`,{children:`Sorry, Page Not Found`})})}),(0,W.jsx)(Ft,{children:e&&!t?(0,W.jsx)(V,{to:`/`,children:(0,W.jsxs)(F,{children:[` `,(0,W.jsx)(an,{}),` Return to Home`]})}):(0,W.jsx)(V,{to:`/sign-in`,children:(0,W.jsxs)(F,{children:[` `,(0,W.jsx)(an,{}),` Go Sign In Page`]})})})]})})}function si(){return`ontouchstart`in window||navigator.maxTouchPoints>0}var G=e(Ae(),1);function ci({...e}){return(0,W.jsx)(yt,{"data-slot":`dropdown-menu`,...e})}function li({...e}){return(0,W.jsx)(rt,{"data-slot":`dropdown-menu-trigger`,...e})}function ui({className:e,sideOffset:t=4,...n}){return(0,W.jsx)(nt,{children:(0,W.jsx)(Ot,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:P(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border p-1 shadow-md`,e),...n})})}function di({className:e,inset:t,variant:n=`default`,...r}){return(0,W.jsx)(ct,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:P(`focus:bg-accent focus:text-grey`,`data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10`,`dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive`,`data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground`,`relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm`,`outline-hidden select-none`,`data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r})}function fi({className:e,children:t,checked:n,...r}){return(0,W.jsxs)(Ge,{"data-slot":`dropdown-menu-checkbox-item`,className:P(`focus:bg-accent focus:text-accent-foreground relative flex cursor-pointer items-center gap-2 rounded-sm`,`py-1.5 pr-2 pl-8`,`text-sm outline-hidden`,`select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),checked:n,...r,children:[(0,W.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,W.jsx)(Ye,{children:(0,W.jsx)(un,{className:`size-4`})})}),t]})}function pi({className:e,inset:t,...n}){return(0,W.jsx)(qe,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:P(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function mi({className:e,...t}){return(0,W.jsx)(He,{"data-slot":`dropdown-menu-separator`,className:P(`bg-border -mx-1 my-1 h-px`,e),...t})}function hi({className:e,...t}){return(0,W.jsx)(`span`,{"data-slot":`dropdown-menu-shortcut`,className:P(`text-muted-foreground ml-auto text-xs tracking-widest`,e),...t})}function gi({...e}){return(0,W.jsx)(vt,{"data-slot":`dropdown-menu-sub`,...e})}function _i({className:e,inset:t,children:n,...r}){return(0,W.jsxs)(et,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":t,className:P(`focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground`,`flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none`,`data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0`,`[&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...r,children:[n,(0,W.jsx)(Ln,{className:`ml-auto size-4`})]})}function vi({className:e,...t}){return(0,W.jsx)($e,{"data-slot":`dropdown-menu-sub-content`,className:P(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg`,e),...t})}var yi=`flex items-center gap-3 p-2 rounded-lg text-sm transition-colors`,bi=`block p-2 rounded-lg text-sm transition-colors`,xi={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-grey-700`},Si={className:`font-medium text-primary bg-primary/10 dark:text-white dark:bg-white/10`};function Ci({items:e,ariaLabel:t}){let{pathname:n}=Ee(),r=e=>e.exact?n===e.to:n.startsWith(e.to),i=e.find(r)??e[0],a=i.icon;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`nav`,{className:`hidden md:flex flex-col gap-1`,"aria-label":t,children:e.map(e=>{let t=e.icon;return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(V,{to:e.to,className:yi,activeOptions:{exact:!!e.exact},activeProps:Si,inactiveProps:xi,children:[(0,W.jsx)(t,{className:`size-4 shrink-0`}),e.label]}),e.children&&r(e)&&(0,W.jsx)(`div`,{className:`mt-1 ml-4 flex flex-col gap-1 border-l border-border pl-3`,children:e.children.map(e=>(0,W.jsx)(V,{to:e.to,className:bi,activeOptions:{exact:!!e.exact},activeProps:Si,inactiveProps:xi,children:e.label},e.to))})]},e.to)})}),(0,W.jsx)(`div`,{className:`md:hidden`,children:(0,W.jsxs)(ci,{children:[(0,W.jsx)(li,{asChild:!0,children:(0,W.jsxs)(F,{variant:`outline`,className:`w-full justify-between`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(a,{className:`size-4`}),i.label]}),(0,W.jsx)(dn,{className:`size-4`})]})}),(0,W.jsx)(ui,{align:`start`,className:`w-(--radix-dropdown-menu-trigger-width)`,children:e.map(e=>{let t=e.icon;return[(0,W.jsx)(di,{asChild:!0,children:(0,W.jsxs)(V,{to:e.to,className:`flex items-center gap-2`,children:[(0,W.jsx)(t,{className:`size-4`}),e.label]})},e.to),...e.children&&r(e)?e.children.map(e=>(0,W.jsx)(di,{asChild:!0,children:(0,W.jsx)(V,{to:e.to,className:`flex items-center gap-2 pl-8`,children:e.label})},e.to)):[]]})})]})})]})}var wi=[{to:`/admin`,label:`API Token`,icon:pr,exact:!0}];function Ti(){let{isLoading:e,user:t}=Ie();return e?null:Le(t)?(0,W.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,W.jsxs)(`div`,{className:`md:grid gap-6 md:grid-cols-12`,children:[(0,W.jsx)(`aside`,{className:`md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,W.jsx)(Ci,{items:wi,ariaLabel:`Admin sections`})}),(0,W.jsx)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:(0,W.jsx)(Se,{})})]})}):(0,W.jsx)(de,{to:`/`,replace:!0})}function Ei({className:e,text:t,centered:n,...r}){return(0,W.jsxs)(`div`,{className:`text-foreground h-full w-full ${e||``} ${n?`flex flex-col items-center justify-center`:``}`,...r,children:[(0,W.jsx)(`img`,{src:`/HDBDogOnly.svg`,width:`100px`,height:`100px`,alt:`HDB Dog Logo Loading`,className:`inline-block`}),(0,W.jsx)(`p`,{className:`pt-4`,children:t||`Loading...`})]})}function Di(){return(0,W.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 126.644 96`,width:24,height:24,children:(0,W.jsx)(`path`,{fill:`currentColor`,d:`M81.15,0c-1.2376,2.1973-2.3489,4.4704-3.3591,6.794-9.5975-1.4396-19.3718-1.4396-28.9945,0-.985-2.3236-2.1216-4.5967-3.3591-6.794-9.0166,1.5407-17.8059,4.2431-26.1405,8.0568C2.779,32.5304-1.6914,56.3725.5312,79.8863c9.6732,7.1476,20.5083,12.603,32.0505,16.0884,2.6014-3.4854,4.8998-7.1981,6.8698-11.0623-3.738-1.3891-7.3497-3.1318-10.8098-5.1523.9092-.6567,1.7932-1.3386,2.6519-1.9953,20.281,9.547,43.7696,9.547,64.0758,0,.8587.7072,1.7427,1.3891,2.6519,1.9953-3.4601,2.0457-7.0718,3.7632-10.835,5.1776,1.97,3.8642,4.2683,7.5769,6.8698,11.0623,11.5419-3.4854,22.3769-8.9156,32.0509-16.0631,2.626-27.2771-4.496-50.9172-18.817-71.8548C98.9811,4.2684,90.1918,1.5659,81.1752.0505l-.0252-.0505ZM42.2802,65.4144c-6.2383,0-11.4159-5.6575-11.4159-12.6535s4.9755-12.6788,11.3907-12.6788,11.5169,5.708,11.4159,12.6788c-.101,6.9708-5.026,12.6535-11.3907,12.6535ZM84.3576,65.4144c-6.2637,0-11.3907-5.6575-11.3907-12.6535s4.9755-12.6788,11.3907-12.6788,11.4917,5.708,11.3906,12.6788c-.101,6.9708-5.026,12.6535-11.3906,12.6535Z`})})}function Oi(){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`img`,{src:`/harper-studio_white.png`,alt:`Harper Studio`,className:`w-64 hidden md:inline-block`}),(0,W.jsx)(`img`,{src:`/HDBDogOnly.svg`,width:`50px`,height:`44px`,alt:`Harper`,className:`inline-block md:hidden`})]})}function ki(){let[e,t]=(0,G.useState)(()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`);return(0,G.useEffect)(()=>{let e=window.matchMedia(`(prefers-color-scheme: dark)`),n=e=>t(e.matches?`dark`:`light`);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}var Ai=(0,G.createContext)([`system`,()=>{}]);function ji({children:e}){let[t,n]=vn(bn.Theme,`system`),r=ki();return(0,G.useEffect)(()=>{let e=t===`dark`||t===`system`&&r===`dark`;document.documentElement.classList.toggle(`dark`,e)},[t,r]),(0,W.jsx)(Ai.Provider,{value:[t,n],children:e})}function Mi(){return(0,G.useContext)(Ai)}var Ni=[{value:`light`,icon:(0,W.jsx)(Kr,{className:`size-4`}),label:`Light`},{value:`system`,icon:(0,W.jsx)(Er,{className:`size-4`}),label:`System`},{value:`dark`,icon:(0,W.jsx)(Dr,{className:`size-4`}),label:`Dark`}];function Pi(){let[e,t]=Mi();return(0,W.jsx)(`div`,{className:`flex items-center bg-muted dark:bg-black rounded-xl p-0.5 gap-0.5`,children:Ni.map(({value:n,icon:r,label:i})=>(0,W.jsx)(`button`,{type:`button`,title:i,onClick:()=>t(n),className:`p-1.5 rounded-lg transition-colors ${e===n?`bg-background text-foreground shadow-xs`:`text-muted-foreground hover:text-foreground`}`,children:r},n))})}function Fi({className:e,...t}){return(0,W.jsx)(`div`,{className:P(`absolute top-full left-0 isolate z-50 flex justify-center`),children:(0,W.jsx)(ot,{"data-slot":`navigation-menu-viewport`,className:P(`origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]`,e),...t})})}function Ii({className:e,children:t,viewport:n=!0,...r}){return(0,W.jsxs)(At,{"data-slot":`navigation-menu`,"data-viewport":n,className:P(`group/navigation-menu relative flex max-w-max flex-1 items-center justify-center`,e),...r,children:[t,n&&(0,W.jsx)(Fi,{})]})}function Li({className:e,...t}){return(0,W.jsx)(Et,{"data-slot":`navigation-menu-item`,className:P(`relative`,e),...t})}function Ri({className:e,...t}){return(0,W.jsx)(Mt,{"data-slot":`navigation-menu-link`,className:P(`hover:text-foreground dark:hover:text-white ring-ring/10 dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 flex flex-col gap-1 rounded-sm p-2 text-sm transition-[color,box-shadow] focus-visible:ring-4 focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4`,e),...t})}function zi({className:e,...t}){return(0,W.jsx)(mt,{"data-slot":`navigation-menu-list`,className:P(`group flex flex-1 list-none items-center justify-center gap-1`,e),...t})}var Bi=E(`inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-auto`,{variants:{variant:{default:`border-primary bg-primary/40 text-primary-foreground [a&]:hover:bg-primary/90`,secondary:`border-secondary bg-secondary/40 text-secondary-foreground [a&]:hover:bg-secondary/90`,warning:`border-yellow bg-yellow/40 text-foreground [a&]:hover:bg-yellow/90`,success:`border-green bg-green/40 text-foreground [a&]:hover:bg-green/90`,destructive:`border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40`,outline:`text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`}},defaultVariants:{variant:`default`}});function Vi(){let e=`v5.1.23`;return(0,W.jsx)(`a`,{href:e.startsWith(`v`)?`https://github.com/HarperFast/studio/releases/tag/${e}`:`https://github.com/HarperFast/studio/releases`,target:`_blank`,rel:`noopener noreferrer`,children:(0,W.jsxs)(`span`,{className:P(Bi({variant:`default`}),`text-xs inline-block ml-2 align-text-top`),children:[e,` BETA`]})})}function Hi(e={}){let{instanceId:t,clusterId:n}=L({strict:!1});return g({id:h,...e})}function Ui(e={}){let{instanceId:t,clusterId:n}=L({strict:!1});return{instanceClient:g({id:h,...e}),entityType:`instance`}}function K(e={}){let{instanceId:t,clusterId:n}=L({strict:!1});return(0,G.useMemo)(()=>Wi({instanceId:t,clusterId:n,...e}),[e.instanceId??t,e.clusterId??n,e.operationsUrl,e.port,e.secure,e.disableFabricConnect,e.forceFabricConnect])}function Wi({instanceId:e,clusterId:t,...n}){let r=h;if(!r)throw Error(`id could not be automatically calculated in useInstanceClientIdParams`);return{instanceClient:g({id:r,...n}),entityId:r,entityType:`instance`}}function Gi(){localStorage.clear()}function Ki(){sessionStorage.clear()}async function qi(){u.setUserForEntity(h,null),hn.getQueryCache().clear(),Gi(),Ki(),await hn.invalidateQueries({refetchType:`none`})}async function Ji(e){await u.signOutFromPotentiallyAuthenticatedInstances(),await d({...e,entityId:h})}function Yi(){let e=Hi();return I({mutationFn:()=>Ji({instanceClient:e}),onSuccess:qi})}function Xi(e){return!!e}var Zi={className:`text-foreground dark:text-white font-semibold`};function Qi(){let{mutate:e}=Yi(),t=Oe(),{user:n}=Re(),r=Le(n),i=ne(),a=(0,G.useCallback)(()=>{e(void 0,{onSuccess:async()=>{H.success(`Success`,{description:`You have been signed out successfully.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),t({to:`/sign-in`}),i.invalidate()}})},[e,i,t]),o=(0,G.useMemo)(()=>[!1,!1,{to:`https://docs.harperdb.io/docs`,target:`_blank`,icon:(0,W.jsx)(jn,{}),text:`Docs`,textBreakpoint:`md`},{to:`https://github.com/HarperFast/studio/issues`,target:`_blank`,icon:(0,W.jsx)(Nn,{}),text:`Report an Issue`,textBreakpoint:`lg`},{to:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,icon:(0,W.jsx)(Di,{}),text:`Discord`,textBreakpoint:`lg`},{onClick:a,icon:(0,W.jsx)(xr,{}),text:`Sign Out`,textBreakpoint:`md`}].filter(Xi),[a,r]);return n?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ra,{menuItems:o}),(0,W.jsx)(ta,{menuItems:o})]}):(0,W.jsx)(ea,{})}function $i(e){return e.items!==void 0}function ea(){return(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`inline-block`,children:[(0,W.jsx)(V,{to:`/sign-in`,children:(0,W.jsx)(Oi,{})}),(0,W.jsx)(Vi,{})]}),(0,W.jsx)(Ii,{children:(0,W.jsxs)(zi,{className:`text-muted-foreground dark:text-grey-400`,children:[(0,W.jsx)(Li,{children:(0,W.jsx)(Ri,{asChild:!0,children:(0,W.jsxs)(V,{to:`https://docs.harperdb.io/docs`,target:`_blank`,rel:`noreferrer noopener`,className:`flex-row items-center`,children:[(0,W.jsx)(jn,{}),` `,(0,W.jsx)(`span`,{className:`hidden md:inline-block`,children:`Docs`})]})})}),(0,W.jsx)(Li,{children:(0,W.jsx)(Pi,{})}),(0,W.jsx)(Li,{children:(0,W.jsx)(Ri,{asChild:!0,children:(0,W.jsxs)(V,{to:`/sign-in`,className:`flex-row items-center`,activeProps:Zi,children:[(0,W.jsx)(br,{}),` Sign In`]})})})]})})]})}function ta({menuItems:e}){let{user:t}=Re();return wn(t),(0,W.jsx)(`div`,{className:`hidden md:[@media(hover:hover)]:block xl:block`,children:(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`inline-block`,children:[(0,W.jsx)(V,{to:`/`,children:(0,W.jsx)(Oi,{})}),(0,W.jsx)(Vi,{})]}),(0,W.jsx)(Ii,{children:(0,W.jsxs)(zi,{className:`text-muted-foreground dark:text-grey-400`,children:[e.map(e=>$i(e)?!!e.items.length&&(0,W.jsx)(`div`,{className:`bg-muted dark:bg-black rounded-2xl flex`,children:e.items.map(e=>(0,W.jsx)(na,{menuItem:e},e.text))},e.text):(0,W.jsx)(na,{menuItem:e},e.text)),(0,W.jsx)(Li,{children:(0,W.jsx)(Pi,{})})]})})]})})}function na({menuItem:e}){return(0,W.jsx)(Li,{className:`text-muted-foreground dark:text-gray-400 hover:text-foreground dark:hover:text-white`,children:(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsx)(Ri,{asChild:!0,children:(0,W.jsxs)(V,{to:e.to,onClick:e.onClick,"aria-label":e.text,className:`flex-row items-center`,target:e.target,activeProps:e.to?Zi:void 0,children:[e.icon,(0,W.jsx)(`span`,{className:`hidden ${e.textBreakpoint}:inline-block`,children:e.text}),(0,W.jsx)(`span`,{className:`${e.textBreakpoint}:hidden`,children:`\xA0`})]})})}),(0,W.jsx)(Rt,{side:`bottom`,className:`${e.textBreakpoint}:hidden`,children:e.text})]})})}function ra({menuItems:e}){let{user:t}=Re();wn(t);let[n,r]=(0,G.useState)(!1),i=(0,G.useCallback)(()=>r(e=>!e),[]),a=(0,G.useCallback)(()=>r(!1),[]);return(0,W.jsxs)(`div`,{className:`md:[@media(hover:hover)]:hidden xl:hidden`,id:`mobile-menu`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(V,{to:`/`,children:(0,W.jsx)(Oi,{})}),(0,W.jsx)(Vi,{}),(0,W.jsxs)(`button`,{type:`button`,className:`shadow-xs text-muted-foreground dark:text-grey-400 hover:text-foreground dark:hover:text-white hover:bg-muted dark:hover:bg-black-dark`,onClick:i,children:[(0,W.jsx)(`span`,{className:`sr-only`,children:n?`Close menu`:`Open menu`}),n?(0,W.jsx)(pn,{}):(0,W.jsx)(Tr,{})]})]}),(0,W.jsx)(`div`,{className:`${n?`fixed`:`hidden`} top-40 bottom-0 left-0 right-0 bg-foreground/20 dark:bg-black-dark dark:opacity-70`,onClick:a}),(0,W.jsxs)(`div`,{className:`${n?`block`:`hidden`} md:hidden z-50 space-y-1 pb-3 bg-card border-b border-border dark:bg-black-dark dark:border-none absolute left-0 top-full w-full rounded-b-md`,children:[(0,W.jsx)(`div`,{className:`flex justify-end px-3 pt-2`,children:(0,W.jsx)(Pi,{})}),e.map(e=>$i(e)?!!e.items.length&&(0,W.jsx)(`div`,{className:`bg-muted dark:bg-black pl-10 pr-2 py-2`,children:e.items.map(e=>(0,W.jsx)(ia,{menuItem:e,onClick:a},e.text))},e.text):(0,W.jsx)(ia,{menuItem:e,onClick:a},e.text))]})]})}function ia({menuItem:e,onClick:t}){let n=(0,G.useCallback)(()=>{e.onClick?.(),t()},[e,t]);return(0,W.jsxs)(V,{to:e.to,onClick:n,target:e.target,className:`flex flex-row px-3 py-2 text-base font-medium rounded-md text-muted-foreground dark:text-gray-400 hover:text-foreground dark:hover:text-white`,activeProps:e.to?Zi:void 0,children:[e.icon,(0,W.jsx)(`span`,{className:`ml-4`,children:e.text})]})}function aa(){let{isLoading:e}=Re(),{createCluster:t}=ce({strict:!1}),[,n]=vn(bn.SavedClusterState,null);return(0,G.useEffect)(()=>{t&&n(t)},[t,n]),e?(0,W.jsx)(Ei,{className:`fixed z-50 translate-1/2`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`header`,{className:`fixed top-0 z-40 w-full h-20 p-4 bg-gradient-to-r from-violet-100 to-white border-b border-violet-200 dark:from-purple-950 dark:to-zinc-900 dark:border-purple-950 md:px-12`,children:(0,W.jsx)(Qi,{})}),(0,W.jsx)(`main`,{children:(0,W.jsx)(Se,{})})]})}function oa(){let e=location.hash;return e?e.startsWith(`#/`)?e.slice(1):e:`/`}var sa=[`/`,`/forgot-password`,`/reset-password`,`/sign-in`,`/sign-up`,`/verify-email`];function ca(){let e=oa();return!sa.includes(e)&&{redirect:e}}var la=!1;function ua(){(0,G.useEffect)(()=>{la||=!0},[])}function da(){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ve,{}),(0,W.jsx)(Se,{})]})}var fa=he()({component:da}),pa=z({getParentRoute:()=>fa,id:`_dashboardLayout`,component:aa,beforeLoad:({context:e})=>{let t=e.authentication[h];if(t&&!t.isLoading&&!t.user)throw _e({to:`/sign-in`,search:ca()})}}),ma=z({getParentRoute:()=>pa,path:`admin`,component:Ti});z({getParentRoute:()=>ma,path:`/`,head:()=>({meta:[{title:`API Token — Harper Fabric`}]}),component:ye(async()=>je(()=>import(`./apiToken-QLwwxtxT.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),`ApiTokenIndex`)});function ha(){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`header`,{className:`fixed top-0 z-40 w-full h-20 p-4 bg-gradient-to-r from-violet-100 to-white border-b border-violet-200 dark:from-purple-950 dark:to-zinc-900 dark:border-purple-950 md:px-12`,children:(0,W.jsx)(Qi,{})}),(0,W.jsxs)(`div`,{className:`pt-20 h-screen grid grid-cols-1 md:grid-cols-2`,children:[(0,W.jsx)(`section`,{"aria-label":`Harper Fabric overview`,className:`items-center justify-center hidden text-white md:flex px-6 fabricSignupTextContainer`,children:(0,W.jsx)(`img`,{className:`object-scale-down max-h-[calc(100vh-80px-40px)] min-h-115`,src:`/fabric-signup-text.png`,alt:`One Runtime: App, database, Cache and Messaging. Distributed by design, free to deploy, and live in minutes. Deploy!`})}),(0,W.jsx)(`main`,{className:`overflow-y-auto px-6 bg-white dark:bg-linear-(--black-dark-gradient) border-l border-border dark:border-none`,children:(0,W.jsx)(`div`,{className:`min-h-full flex items-start justify-center py-12`,children:(0,W.jsx)(Se,{})})})]})]})}var ga;function _a(){(0,G.useEffect)(()=>{},[])}var va=[`gmail.com`,`yahoo.com`,`hotmail.com`,`outlook.com`,`icloud.com`,`aol.com`,`protonmail.com`,`mail.com`,`zoho.com`,`yandex.com`,`gmx.com`,`live.com`,`msn.com`,`me.com`,`inbox.com`];function ya(e){if(!e||!e.includes(`@`))return null;let t=e.split(`@`).pop()||``;if(!t)return null;for(let e of va)if(t===e||t.endsWith(`.`+e))return null;return t}var ba=`utm_`;function xa(e){let t=new URLSearchParams(e),n=Array.from(t.keys()).filter(e=>e.toLowerCase().startsWith(ba));if(n.length===0)return e;for(let e of n)t.delete(e);let r=t.toString();return r?`?${r}`:``}function Sa(){if(typeof location>`u`||typeof history>`u`)return;let{search:e,pathname:t,hash:n,origin:r}=location,i=xa(e);i!==e&&history.replaceState(history.state,``,`${r}${t}${i}${n}`)}var Ca=null;function wa(){let e=Oe(),t=ne(),n=ie(),{redirect:r}=ce({strict:!1});return(0,G.useEffect)(()=>{Ca||=(async function(){let a=await i().catch(()=>null);if(!a)H.error(`We were not able to verify your sign-in. Please try signing in again.`,{duration:1e4}),await e({to:`/sign-in`});else{u.setUserForEntity(h,a),Sa();let i=wn(a),o=ya(a.email);ga?.identify?.({username:a.email,type:`email`,...o?{company:o}:{}}),await n.invalidateQueries({queryKey:m,refetchType:`none`}),await t.invalidate(),await e({to:r?.startsWith(`/`)?r:i})}Ca=null})()},[]),(0,W.jsxs)(`div`,{role:`status`,"aria-live":`polite`,className:`text-foreground dark:text-white w-lg flex flex-col gap-4`,children:[(0,W.jsxs)(`h1`,{className:`text-3xl font-light`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`text-2xl animate-flower-dance mr-4`,title:`Loading`,children:`🌼`}),`Checking...`]}),(0,W.jsx)(`div`,{className:`underline flex gap-4`,children:(0,W.jsx)(V,{className:`text-sm opacity-50 text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/sign-in`,children:`Try signing in again`})})]})}var Ta=new Map;function Ea(e){if(!e)return``;if(Ta.has(e))return Ta.get(e);let t=e.replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim();if(!t)return Ta.set(e,``),``;let n=t.match(/([A-Z]+(?=[A-Z][a-z])|[A-Z]?[a-z]+|[A-Z]+|[0-9]+)/g);if(!n)return Ta.set(e,``),``;let r=[];for(let e=0;e<n.length;e++){let t=n[e],i=e+1<n.length?n[e+1]:void 0;/^[A-Z]{2,}$/.test(t)&&i&&/[A-Z]*s$/.test(i)||/^[A-Z]$/.test(t)&&i!==void 0&&/^[A-Z]s$/.test(i)?(r.push(t+i),e++):r.push(t)}let i=r.map(Da).join(` `);return Ta.set(e,i),i}function Da(e){return/^[A-Z]{2,3}s?$/.test(e)||/^[0-9]+$/.test(e)?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function Oa({restartRequired:e}){let t=Ee(),{organization:n,instance:r,cluster:i}=ke({strict:!1});return(0,W.jsxs)(`div`,{role:`list`,className:`flex items-center space-x-2 xl:space-x-4 sm:max-w-9/10 max-w-[calc(100%-56px)]`,children:[...(0,G.useMemo)(()=>{let e=t.pathname.split(`/`).filter(e=>e&&e.length>0),a=[(0,W.jsxs)(V,{to:`/`,children:[(0,W.jsx)(dr,{"aria-hidden":`true`,className:`size-5 shrink-0`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Home`})]},`home`)];for(let t=0;t<e.length;t++){let o=e[t];if(o===`instance`)continue;let s=`/${e.slice(0,t+1).join(`/`)}`,c=Ea(o);o===`databases`&&e.length===t+3?(c=e[t+2],t+=2):c.startsWith(`Org `)?c=n?.name||`Org`:c.startsWith(`Clu `)?(c=i?.name||`Cluster`,e[t+1]===`instance`&&(s+=`/instances`)):c.startsWith(`Ins `)?c=r?.name?.split(`.`)?.shift()||`Instance`:c===`Apis`&&(c=`APIs`),a.push((0,W.jsx)(`svg`,{fill:`currentColor`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`size-5 shrink-0 text-grey`,children:(0,W.jsx)(`path`,{d:`M5.555 17.776l8-16 .894.448-8 16-.894-.448z`})},a.length+`-dash`),(0,W.jsx)(V,{to:s,className:`text-xs md:text-sm font-medium hover:text-grey truncate max-w-48`,children:c},s))}return a},[t.pathname,i?.name,r?.name,n?.name]),e&&(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsxs)(`div`,{className:`text-xs italic text-muted-foreground`,children:[`* Restart `,(0,W.jsx)(`span`,{className:`hidden lg:inline-block`,children:`Requested`})]})}),(0,W.jsxs)(Rt,{side:`bottom`,children:[`This `,`Instance`,` is requesting a restart, when convenient, to apply your latest changes.`,(0,W.jsx)(`br`,{}),`You can do this from the Apps or Config pages.`]})]})]})}var q=Ct,ka=(0,G.createContext)({}),Aa=(0,G.createContext)({});function ja(){let e=(0,G.useContext)(ka),t=(0,G.useContext)(Aa),{getFieldState:n}=wt(),r=gt({name:e.name}),i=n(e.name,r);if(!e)throw Error(`useFormField should be used within <FormField>`);let{id:a}=t;return{id:a,name:e.name,formItemId:`${a}-form-item`,formDescriptionId:`${a}-form-item-description`,formMessageId:`${a}-form-item-message`,...i}}function J({...e}){let{error:t,formItemId:n,formDescriptionId:r,formMessageId:i}=ja();return(0,W.jsx)(Ue,{"data-slot":`form-control`,id:n,"aria-describedby":t?`${r} ${i}`:`${r}`,"aria-invalid":!!t,...e})}function Y({...e}){return(0,W.jsx)(ka,{value:{name:e.name},children:(0,W.jsx)(xt,{...e})})}function X({className:e,...t}){return(0,W.jsx)(Aa,{value:{id:(0,G.useId)()},children:(0,W.jsx)(`div`,{"data-slot":`form-item`,className:P(`grid gap-2`,e),...t})})}function Ma({className:e,...t}){return(0,W.jsx)(ft,{"data-slot":`label`,className:P(`text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}function Z({className:e,...t}){let{error:n,formItemId:r}=ja();return(0,W.jsx)(Ma,{"data-slot":`form-label`,"data-error":!!n,className:P(`data-[error=true]:text-destructive`,e),htmlFor:r,...t})}function Q({className:e,...t}){let{error:n,formMessageId:r}=ja(),i=n?String(n?.message):t.children;return i?(0,W.jsx)(`p`,{"data-slot":`form-message`,id:r,className:P(`text-destructive text-sm`,e),...t,children:i}):null}function $({className:e,type:t,...n}){return(0,W.jsx)(`input`,{type:t,"data-slot":`input`,className:P(`border-input file:text-foreground placeholder:text-muted-foreground selection:bg-purple
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/apiToken-S_hqpnVV.js","assets/rolldown-runtime-CNC7AqOf.js","assets/button-Bh1J5cEt.js","assets/vendor-core-CArycxS5.js","assets/vendor-datadog-DBn-aOxh.js","assets/vendor-react-B36dp27u.js","assets/vendor-ui-D-BiU2GW.js","assets/vendor-tanstack-hI9zAWEc.js","assets/card-BNyq5IF8.js","assets/setup-B_NOw8rV.js","assets/editor.api2-4ndOupAA.js","assets/editor-Br_kD0ds.css","assets/dist-DHjL6trB.js","assets/editor.api-CeFEtu5G.js","assets/index.lazy-BPnXo1Wj.js","assets/getRegistrationInfo-D3ccFq91.js","assets/createLucideIcon-B49W6uF4.js","assets/useEntityRestURL-CswKSb0j.js","assets/authStore-CZUMMr7f.js","assets/index-BFYFtDGD.css","assets/applications-C6zKD9Rb.js","assets/useAuth-I6SnoWjX.js","assets/humanFileSize-DIJdoExS.js","assets/x-Bru-nCti.js","assets/localStorageKeys-dvU1YhFX.js","assets/tabs-DOFA4930.js","assets/setComponentFile-ZBQ4KXnC.js","assets/queryClient-CVMXFvkI.js","assets/errorText-NpBmvk9I.js","assets/applications-DNZhsH95.css","assets/jsonMode-X_blmtuO.js","assets/tokenization-uOBOyHAS.js","assets/workers-uOo7WLaa.js","assets/lspLanguageFeatures-ira2aEJh.js","assets/tsMode-CevZSdk5.js","assets/FloatingChat-Bqjk6Bf4.js","assets/react-SMksfEpE.js","assets/status-D7A8OktU.js","assets/linear-Clj7BvYC.js","assets/string-f6JzSHaO.js","assets/defaultLocale-C8Fc0cco.js","assets/init-Cs1-1e_z.js","assets/ordinal-BeZAVUpG.js","assets/time-V48BpMN7.js","assets/band-CcbG6rPL.js","assets/path-BWPyau1x.js","assets/math-Bi_r_ZWc.js","assets/array-BifhSqXX.js","assets/isArrayLikeObject-BuP4GVJp.js","assets/line-D7sRByN6.js","assets/react-redux-DGXfzMhm.js","assets/getAnalytics-Bmxt-5P2.js","assets/profile-CY1FwgRs.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a as e,r as t,t as n}from"./rolldown-runtime-CNC7AqOf.js";import{a as r,c as i,d as a,f as o,i as s,l as c,m as l,n as u,o as d,p as f,r as p,s as m,t as h,u as g}from"./authStore-CZUMMr7f.js";import{A as _,M as v,N as y,_ as b,a as x,b as S,c as C,f as w,g as T,k as E,l as D,m as O,n as k,o as A,r as j,v as ee,x as M}from"./vendor-core-CArycxS5.js";import{i as N,n as P,t as F}from"./button-Bh1J5cEt.js";import{A as I,C as L,D as te,E as ne,F as re,I as ie,M as ae,N as R,O as oe,P as se,S as ce,V as le,_ as z,a as ue,b as de,c as fe,d as pe,f as me,g as he,i as ge,j as B,k as _e,l as ve,m as ye,n as be,o as xe,p as Se,r as Ce,s as we,t as Te,u as Ee,v as V,w as De,x as Oe,y as ke}from"./vendor-tanstack-hI9zAWEc.js";import{a as Ae,i as je,t as Me}from"./vendor-datadog-DBn-aOxh.js";import{r as Ne,t as Pe}from"./vendor-react-B36dp27u.js";import{a as Fe,i as Ie,n as Le,o as Re,r as ze,s as Be,t as Ve}from"./useAuth-I6SnoWjX.js";import{At as He,Bt as Ue,C as We,Ct as Ge,D as Ke,Dt as qe,E as Je,Et as Ye,G as Xe,J as Ze,K as Qe,Mt as $e,Nt as et,O as tt,Ot as nt,Pt as rt,Rt as it,S as at,St as ot,T as st,Tt as ct,U as lt,W as ut,Y as dt,at as ft,b as pt,bt as mt,ct as ht,dt as gt,it as _t,jt as vt,kt as yt,lt as bt,ot as xt,q as St,st as Ct,ut as wt,v as Tt,vt as Et,w as Dt,wt as Ot,x as kt,xt as At,y as jt,yt as Mt,zt as H}from"./vendor-ui-D-BiU2GW.js";import{a as Nt,i as Pt,n as Ft,r as It,t as Lt}from"./card-BNyq5IF8.js";import{t as U}from"./createLucideIcon-B49W6uF4.js";import{_ as Rt,a as zt,b as Bt,c as Vt,d as Ht,f as Ut,g as Wt,h as Gt,i as Kt,l as qt,m as Jt,n as Yt,o as Xt,p as Zt,r as Qt,s as $t,t as en,u as tn,v as nn,y as rn}from"./humanFileSize-DIJdoExS.js";import{a as an,i as on,n as sn,r as cn,t as ln}from"./getRegistrationInfo-D3ccFq91.js";import{a as un,i as dn,n as fn,t as pn}from"./x-Bru-nCti.js";import{t as mn}from"./errorText-NpBmvk9I.js";import{n as hn,t as gn}from"./queryClient-CVMXFvkI.js";import{i as _n,n as vn,r as yn,t as bn}from"./localStorageKeys-dvU1YhFX.js";import{h as xn,n as Sn}from"./editor.api2-4ndOupAA.js";import{t as Cn}from"./tokenization-uOBOyHAS.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function wn(e){return e!==null&&!!e.username}function Tn(e){if(e&&!wn(e)){let t=Object.keys(e.roles);if(t.length===1)return`/${t[0]}`}return`/`}var En=U(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),Dn=U(`arrow-down-to-line`,[[`path`,{d:`M12 17V3`,key:`1cwfxf`}],[`path`,{d:`m6 11 6 6 6-6`,key:`12ii2o`}],[`path`,{d:`M19 21H5`,key:`150jfl`}]]),On=U(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),kn=U(`arrow-up-down`,[[`path`,{d:`m21 16-4 4-4-4`,key:`f6ql7i`}],[`path`,{d:`M17 20V4`,key:`1ejh1v`}],[`path`,{d:`m3 8 4-4 4 4`,key:`11wl7u`}],[`path`,{d:`M7 4v16`,key:`1glfcx`}]]),An=U(`arrow-up-from-line`,[[`path`,{d:`m18 9-6-6-6 6`,key:`kcunyi`}],[`path`,{d:`M12 3v14`,key:`7cf3v8`}],[`path`,{d:`M5 21h14`,key:`11awu3`}]]),jn=U(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),Mn=U(`book-open-text`,[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M16 12h2`,key:`7q9ll5`}],[`path`,{d:`M16 8h2`,key:`msurwy`}],[`path`,{d:`M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z`,key:`ruj8y`}],[`path`,{d:`M6 12h2`,key:`32wvfc`}],[`path`,{d:`M6 8h2`,key:`30oboj`}]]),Nn=U(`brush-cleaning`,[[`path`,{d:`m16 22-1-4`,key:`1ow2iv`}],[`path`,{d:`M19 14a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2h-3a1 1 0 0 1-1-1V4a2 2 0 0 0-4 0v5a1 1 0 0 1-1 1H6a2 2 0 0 0-2 2v1a1 1 0 0 0 1 1`,key:`11gii7`}],[`path`,{d:`M19 14H5l-1.973 6.767A1 1 0 0 0 4 22h16a1 1 0 0 0 .973-1.233z`,key:`bju7h4`}],[`path`,{d:`m8 22 1-4`,key:`s3unb`}]]),Pn=U(`bug`,[[`path`,{d:`M12 20v-9`,key:`1qisl0`}],[`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`,key:`uouzyp`}],[`path`,{d:`M14.12 3.88 16 2`,key:`qol33r`}],[`path`,{d:`M21 21a4 4 0 0 0-3.81-4`,key:`1b0z45`}],[`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`,key:`5cxbf6`}],[`path`,{d:`M22 13h-4`,key:`1jl80f`}],[`path`,{d:`M3 21a4 4 0 0 1 3.81-4`,key:`1fjd4g`}],[`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`,key:`1d7oge`}],[`path`,{d:`M6 13H2`,key:`82j7cp`}],[`path`,{d:`m8 2 1.88 1.88`,key:`fmnt4t`}],[`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`,key:`1vgav8`}]]),Fn=U(`calendar-clock`,[[`path`,{d:`M16 14v2.2l1.6 1`,key:`fo4ql5`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`path`,{d:`M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5`,key:`1osxxc`}],[`path`,{d:`M3 10h5`,key:`r794hk`}],[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`circle`,{cx:`16`,cy:`16`,r:`6`,key:`qoo3c4`}]]),In=U(`chart-pie`,[[`path`,{d:`M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z`,key:`pzmjnu`}],[`path`,{d:`M21.21 15.89A10 10 0 1 1 8 2.83`,key:`k2fpak`}]]),Ln=U(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),Rn=U(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),zn=U(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),Bn=U(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),Vn=U(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),Hn=U(`circle-dashed`,[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]),Un=U(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),Wn=U(`clipboard-check`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`m9 14 2 2 4-4`,key:`df797q`}]]),Gn=U(`clipboard`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}]]),Kn=U(`cloud-alert`,[[`path`,{d:`M12 12v4`,key:`tww15h`}],[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.128 16.949A7 7 0 1 1 15.71 8h1.79a1 1 0 0 1 0 9h-1.642`,key:`1namsd`}]]),qn=U(`cloud-download`,[[`path`,{d:`M12 13v8l-4-4`,key:`1f5nwf`}],[`path`,{d:`m12 21 4-4`,key:`1lfcce`}],[`path`,{d:`M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284`,key:`ui1hmy`}]]),Jn=U(`cloud-upload`,[[`path`,{d:`M12 13v8`,key:`1l5pq0`}],[`path`,{d:`M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242`,key:`1pljnt`}],[`path`,{d:`m8 17 4-4 4 4`,key:`1quai1`}]]),Yn=U(`columns-3-cog`,[[`path`,{d:`M10.5 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v5.5`,key:`1g2yzs`}],[`path`,{d:`m14.3 19.6 1-.4`,key:`11sv9r`}],[`path`,{d:`M15 3v7.5`,key:`7lm50a`}],[`path`,{d:`m15.2 16.9-.9-.3`,key:`1t7mvx`}],[`path`,{d:`m16.6 21.7.3-.9`,key:`1j67ps`}],[`path`,{d:`m16.8 15.3-.4-1`,key:`1ei7r6`}],[`path`,{d:`m19.1 15.2.3-.9`,key:`18r7jp`}],[`path`,{d:`m19.6 21.7-.4-1`,key:`z2vh2`}],[`path`,{d:`m20.7 16.8 1-.4`,key:`19m87a`}],[`path`,{d:`m21.7 19.4-.9-.3`,key:`1qgwi9`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}]]),Xn=U(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),Zn=U(`credit-card`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`2`,key:`ynyp8z`}],[`line`,{x1:`2`,x2:`22`,y1:`10`,y2:`10`,key:`1b3vmo`}]]),Qn=U(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),$n=U(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),er=U(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),tr=U(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),nr=U(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),rr=U(`file-up`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]),ir=U(`funnel-plus`,[[`path`,{d:`M13.354 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l1.218-1.348`,key:`8mvsmf`}],[`path`,{d:`M16 6h6`,key:`1dogtp`}],[`path`,{d:`M19 3v6`,key:`1ytpjt`}]]),ar=U(`funnel-x`,[[`path`,{d:`M12.531 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l.427-.473`,key:`ol2ft2`}],[`path`,{d:`m16.5 3.5 5 5`,key:`15e6fa`}],[`path`,{d:`m21.5 3.5-5 5`,key:`m0lwru`}]]),or=U(`funnel`,[[`path`,{d:`M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z`,key:`sc7q7i`}]]),sr=U(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),cr=U(`git-graph`,[[`circle`,{cx:`5`,cy:`6`,r:`3`,key:`1qnov2`}],[`path`,{d:`M5 9v6`,key:`158jrl`}],[`circle`,{cx:`5`,cy:`18`,r:`3`,key:`104gr9`}],[`path`,{d:`M12 3v18`,key:`108xh3`}],[`circle`,{cx:`19`,cy:`6`,r:`3`,key:`108a5v`}],[`path`,{d:`M16 15.7A9 9 0 0 0 19 9`,key:`1e3vqb`}]]),lr=U(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),ur=U(`grip-vertical`,[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]),dr=U(`handshake`,[[`path`,{d:`m11 17 2 2a1 1 0 1 0 3-3`,key:`efffak`}],[`path`,{d:`m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4`,key:`9pr0kb`}],[`path`,{d:`m21 3 1 11h-2`,key:`1tisrp`}],[`path`,{d:`M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3`,key:`1uvwmv`}],[`path`,{d:`M3 4h8`,key:`1ep09j`}]]),fr=U(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),pr=U(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),mr=U(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),hr=U(`key`,[[`path`,{d:`m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4`,key:`g0fldk`}],[`path`,{d:`m21 2-9.6 9.6`,key:`1j0ho8`}],[`circle`,{cx:`7.5`,cy:`15.5`,r:`5.5`,key:`yqb3hr`}]]),gr=U(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),_r=U(`life-buoy`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m4.93 4.93 4.24 4.24`,key:`1ymg45`}],[`path`,{d:`m14.83 9.17 4.24-4.24`,key:`1cb5xl`}],[`path`,{d:`m14.83 14.83 4.24 4.24`,key:`q42g0n`}],[`path`,{d:`m9.17 14.83-4.24 4.24`,key:`bqpfvv`}],[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}]]),vr=U(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),yr=U(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),br=U(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),xr=U(`log-in`,[[`path`,{d:`m10 17 5-5-5-5`,key:`1bsop3`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,key:`u53s6r`}]]),Sr=U(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),Cr=U(`mail-warning`,[[`path`,{d:`M22 10.5V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12.5`,key:`e61zoh`}],[`path`,{d:`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,key:`1ocrg3`}],[`path`,{d:`M20 14v4`,key:`1hm744`}],[`path`,{d:`M20 22v.01`,key:`12bgn6`}]]),wr=U(`mail`,[[`path`,{d:`m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7`,key:`132q7q`}],[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}]]),Tr=U(`map-pin`,[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]),Er=U(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),Dr=U(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),Or=U(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),kr=U(`notepad-text`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M12 2v4`,key:`3427ic`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`16`,height:`18`,x:`4`,y:`4`,rx:`2`,key:`1u9h20`}],[`path`,{d:`M8 10h6`,key:`3oa6kw`}],[`path`,{d:`M8 14h8`,key:`1fgep2`}],[`path`,{d:`M8 18h5`,key:`17enja`}]]),Ar=U(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),jr=U(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),Mr=U(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),Nr=U(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),Pr=U(`rocket`,[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]),Fr=U(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),Ir=U(`rotate-cw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]),Lr=U(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),Rr=U(`scale`,[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`path`,{d:`m19 8 3 8a5 5 0 0 1-6 0zV7`,key:`zcdpyk`}],[`path`,{d:`M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1`,key:`1yorad`}],[`path`,{d:`m5 8 3 8a5 5 0 0 1-6 0zV7`,key:`eua70x`}],[`path`,{d:`M7 21h10`,key:`1b0cd5`}]]),zr=U(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),Br=U(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]),Vr=U(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Hr=U(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),Ur=U(`shield-x`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m14.5 9.5-5 5`,key:`17q4r4`}],[`path`,{d:`m9.5 9.5 5 5`,key:`18nt4w`}]]);U(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]);var Wr=U(`sliders-horizontal`,[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]),Gr=U(`square-pen`,[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]]),Kr=U(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),qr=U(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),Jr=U(`table-2`,[[`path`,{d:`M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18`,key:`gugj83`}]]),Yr=U(`table`,[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M3 15h18`,key:`5xshup`}]]),Xr=U(`tag`,[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`,key:`vktsd0`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`kqv944`}]]),Zr=U(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),Qr=U(`ticket`,[[`path`,{d:`M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z`,key:`qn84l0`}],[`path`,{d:`M13 5v2`,key:`dyzc3o`}],[`path`,{d:`M13 17v2`,key:`1ont0d`}],[`path`,{d:`M13 11v2`,key:`1wjjxi`}]]),$r=U(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),ei=U(`trash`,[[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),ti=U(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ni=U(`user-minus`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]),ri=U(`user`,[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]),ii=U(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),ai=U(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),W=Ne();function oi({className:e,error:t,title:n,showReturnToHome:r,children:i}){let{user:a,isLoading:o}=Re();return Tn(a),(0,W.jsxs)(Lt,{className:P(`text-red p-5 border border-red rounded-md m-12 mt-36`,e),children:[(0,W.jsxs)(Pt,{children:[(0,W.jsx)(Nt,{className:`text-2xl`,children:(0,W.jsx)(`h2`,{children:n??`Component Error`})}),(0,W.jsx)(It,{children:t.message})]}),(0,W.jsxs)(Ft,{children:[i,r!==!1&&(a&&!o?(0,W.jsx)(V,{to:`/`,children:(0,W.jsxs)(F,{children:[` `,(0,W.jsx)(an,{}),` Return to Home`]})}):(0,W.jsx)(V,{to:`/sign-in`,children:(0,W.jsxs)(F,{children:[` `,(0,W.jsx)(an,{}),` Go to Sign In Page`]})}))]})]})}function si(){let{user:e,isLoading:t}=Re();return Tn(e),(0,W.jsx)(`div`,{className:`flex items-center justify-center h-screen px-3`,children:(0,W.jsxs)(Lt,{className:`text-red p-5 border border-red rounded-md w-full max-w-md`,children:[(0,W.jsx)(Pt,{children:(0,W.jsx)(Nt,{className:`text-2xl`,children:(0,W.jsx)(`h2`,{children:`Sorry, Page Not Found`})})}),(0,W.jsx)(Ft,{children:e&&!t?(0,W.jsx)(V,{to:`/`,children:(0,W.jsxs)(F,{children:[` `,(0,W.jsx)(an,{}),` Return to Home`]})}):(0,W.jsx)(V,{to:`/sign-in`,children:(0,W.jsxs)(F,{children:[` `,(0,W.jsx)(an,{}),` Go Sign In Page`]})})})]})})}function ci(){return`ontouchstart`in window||navigator.maxTouchPoints>0}var G=e(Ae(),1);function li({...e}){return(0,W.jsx)(yt,{"data-slot":`dropdown-menu`,...e})}function ui({...e}){return(0,W.jsx)(rt,{"data-slot":`dropdown-menu-trigger`,...e})}function di({className:e,sideOffset:t=4,...n}){return(0,W.jsx)(nt,{children:(0,W.jsx)(Ot,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:P(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border p-1 shadow-md`,e),...n})})}function fi({className:e,inset:t,variant:n=`default`,...r}){return(0,W.jsx)(ct,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:P(`focus:bg-accent focus:text-grey`,`data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10`,`dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive`,`data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground`,`relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm`,`outline-hidden select-none`,`data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r})}function pi({className:e,children:t,checked:n,...r}){return(0,W.jsxs)(Ge,{"data-slot":`dropdown-menu-checkbox-item`,className:P(`focus:bg-accent focus:text-accent-foreground relative flex cursor-pointer items-center gap-2 rounded-sm`,`py-1.5 pr-2 pl-8`,`text-sm outline-hidden`,`select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),checked:n,...r,children:[(0,W.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,W.jsx)(Ye,{children:(0,W.jsx)(un,{className:`size-4`})})}),t]})}function mi({className:e,inset:t,...n}){return(0,W.jsx)(qe,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:P(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function hi({className:e,...t}){return(0,W.jsx)(He,{"data-slot":`dropdown-menu-separator`,className:P(`bg-border -mx-1 my-1 h-px`,e),...t})}function gi({className:e,...t}){return(0,W.jsx)(`span`,{"data-slot":`dropdown-menu-shortcut`,className:P(`text-muted-foreground ml-auto text-xs tracking-widest`,e),...t})}function _i({...e}){return(0,W.jsx)(vt,{"data-slot":`dropdown-menu-sub`,...e})}function vi({className:e,inset:t,children:n,...r}){return(0,W.jsxs)(et,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":t,className:P(`focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground`,`flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none`,`data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0`,`[&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...r,children:[n,(0,W.jsx)(Rn,{className:`ml-auto size-4`})]})}function yi({className:e,...t}){return(0,W.jsx)($e,{"data-slot":`dropdown-menu-sub-content`,className:P(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg`,e),...t})}var bi=`flex items-center gap-3 p-2 rounded-lg text-sm transition-colors`,xi=`block p-2 rounded-lg text-sm transition-colors`,Si={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-grey-700`},Ci={className:`font-medium text-primary bg-primary/10 dark:text-white dark:bg-white/10`};function wi({items:e,ariaLabel:t}){let{pathname:n}=Ee(),r=e=>e.exact?n===e.to:n.startsWith(e.to),i=e.find(r)??e[0],a=i.icon;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`nav`,{className:`hidden md:flex flex-col gap-1`,"aria-label":t,children:e.map(e=>{let t=e.icon;return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(V,{to:e.to,className:bi,activeOptions:{exact:!!e.exact},activeProps:Ci,inactiveProps:Si,children:[(0,W.jsx)(t,{className:`size-4 shrink-0`}),e.label]}),e.children&&r(e)&&(0,W.jsx)(`div`,{className:`mt-1 ml-4 flex flex-col gap-1 border-l border-border pl-3`,children:e.children.map(e=>(0,W.jsx)(V,{to:e.to,className:xi,activeOptions:{exact:!!e.exact},activeProps:Ci,inactiveProps:Si,children:e.label},e.to))})]},e.to)})}),(0,W.jsx)(`div`,{className:`md:hidden`,children:(0,W.jsxs)(li,{children:[(0,W.jsx)(ui,{asChild:!0,children:(0,W.jsxs)(F,{variant:`outline`,className:`w-full justify-between`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(a,{className:`size-4`}),i.label]}),(0,W.jsx)(dn,{className:`size-4`})]})}),(0,W.jsx)(di,{align:`start`,className:`w-(--radix-dropdown-menu-trigger-width)`,children:e.map(e=>{let t=e.icon;return[(0,W.jsx)(fi,{asChild:!0,children:(0,W.jsxs)(V,{to:e.to,className:`flex items-center gap-2`,children:[(0,W.jsx)(t,{className:`size-4`}),e.label]})},e.to),...e.children&&r(e)?e.children.map(e=>(0,W.jsx)(fi,{asChild:!0,children:(0,W.jsx)(V,{to:e.to,className:`flex items-center gap-2 pl-8`,children:e.label})},e.to)):[]]})})]})})]})}var Ti=[{to:`/admin`,label:`API Token`,icon:mr,exact:!0}];function Ei(){let{isLoading:e,user:t}=Ie();return e?null:Le(t)?(0,W.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,W.jsxs)(`div`,{className:`md:grid gap-6 md:grid-cols-12`,children:[(0,W.jsx)(`aside`,{className:`md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,W.jsx)(wi,{items:Ti,ariaLabel:`Admin sections`})}),(0,W.jsx)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:(0,W.jsx)(Se,{})})]})}):(0,W.jsx)(de,{to:`/`,replace:!0})}function Di({className:e,text:t,centered:n,...r}){return(0,W.jsxs)(`div`,{className:`text-foreground h-full w-full ${e||``} ${n?`flex flex-col items-center justify-center`:``}`,...r,children:[(0,W.jsx)(`img`,{src:`/HDBDogOnly.svg`,width:`100px`,height:`100px`,alt:`HDB Dog Logo Loading`,className:`inline-block`}),(0,W.jsx)(`p`,{className:`pt-4`,children:t||`Loading...`})]})}function Oi(){return(0,W.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 126.644 96`,width:24,height:24,children:(0,W.jsx)(`path`,{fill:`currentColor`,d:`M81.15,0c-1.2376,2.1973-2.3489,4.4704-3.3591,6.794-9.5975-1.4396-19.3718-1.4396-28.9945,0-.985-2.3236-2.1216-4.5967-3.3591-6.794-9.0166,1.5407-17.8059,4.2431-26.1405,8.0568C2.779,32.5304-1.6914,56.3725.5312,79.8863c9.6732,7.1476,20.5083,12.603,32.0505,16.0884,2.6014-3.4854,4.8998-7.1981,6.8698-11.0623-3.738-1.3891-7.3497-3.1318-10.8098-5.1523.9092-.6567,1.7932-1.3386,2.6519-1.9953,20.281,9.547,43.7696,9.547,64.0758,0,.8587.7072,1.7427,1.3891,2.6519,1.9953-3.4601,2.0457-7.0718,3.7632-10.835,5.1776,1.97,3.8642,4.2683,7.5769,6.8698,11.0623,11.5419-3.4854,22.3769-8.9156,32.0509-16.0631,2.626-27.2771-4.496-50.9172-18.817-71.8548C98.9811,4.2684,90.1918,1.5659,81.1752.0505l-.0252-.0505ZM42.2802,65.4144c-6.2383,0-11.4159-5.6575-11.4159-12.6535s4.9755-12.6788,11.3907-12.6788,11.5169,5.708,11.4159,12.6788c-.101,6.9708-5.026,12.6535-11.3907,12.6535ZM84.3576,65.4144c-6.2637,0-11.3907-5.6575-11.3907-12.6535s4.9755-12.6788,11.3907-12.6788,11.4917,5.708,11.3906,12.6788c-.101,6.9708-5.026,12.6535-11.3906,12.6535Z`})})}function ki(){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`img`,{src:`/harper-studio_white.png`,alt:`Harper Studio`,className:`w-64 hidden md:inline-block`}),(0,W.jsx)(`img`,{src:`/HDBDogOnly.svg`,width:`50px`,height:`44px`,alt:`Harper`,className:`inline-block md:hidden`})]})}function Ai(){let[e,t]=(0,G.useState)(()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`);return(0,G.useEffect)(()=>{let e=window.matchMedia(`(prefers-color-scheme: dark)`),n=e=>t(e.matches?`dark`:`light`);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}var ji=(0,G.createContext)([`system`,()=>{}]);function Mi({children:e}){let[t,n]=vn(bn.Theme,`system`),r=Ai();return(0,G.useEffect)(()=>{let e=t===`dark`||t===`system`&&r===`dark`;document.documentElement.classList.toggle(`dark`,e)},[t,r]),(0,W.jsx)(ji.Provider,{value:[t,n],children:e})}function Ni(){return(0,G.useContext)(ji)}var Pi=[{value:`light`,icon:(0,W.jsx)(qr,{className:`size-4`}),label:`Light`},{value:`system`,icon:(0,W.jsx)(Dr,{className:`size-4`}),label:`System`},{value:`dark`,icon:(0,W.jsx)(Or,{className:`size-4`}),label:`Dark`}];function Fi(){let[e,t]=Ni();return(0,W.jsx)(`div`,{className:`flex items-center bg-muted dark:bg-black rounded-xl p-0.5 gap-0.5`,children:Pi.map(({value:n,icon:r,label:i})=>(0,W.jsx)(`button`,{type:`button`,title:i,onClick:()=>t(n),className:`p-1.5 rounded-lg transition-colors ${e===n?`bg-background text-foreground shadow-xs`:`text-muted-foreground hover:text-foreground`}`,children:r},n))})}function Ii({className:e,...t}){return(0,W.jsx)(`div`,{className:P(`absolute top-full left-0 isolate z-50 flex justify-center`),children:(0,W.jsx)(ot,{"data-slot":`navigation-menu-viewport`,className:P(`origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]`,e),...t})})}function Li({className:e,children:t,viewport:n=!0,...r}){return(0,W.jsxs)(At,{"data-slot":`navigation-menu`,"data-viewport":n,className:P(`group/navigation-menu relative flex max-w-max flex-1 items-center justify-center`,e),...r,children:[t,n&&(0,W.jsx)(Ii,{})]})}function Ri({className:e,...t}){return(0,W.jsx)(Et,{"data-slot":`navigation-menu-item`,className:P(`relative`,e),...t})}function zi({className:e,...t}){return(0,W.jsx)(Mt,{"data-slot":`navigation-menu-link`,className:P(`hover:text-foreground dark:hover:text-white ring-ring/10 dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 flex flex-col gap-1 rounded-sm p-2 text-sm transition-[color,box-shadow] focus-visible:ring-4 focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4`,e),...t})}function Bi({className:e,...t}){return(0,W.jsx)(mt,{"data-slot":`navigation-menu-list`,className:P(`group flex flex-1 list-none items-center justify-center gap-1`,e),...t})}var Vi=E(`inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-auto`,{variants:{variant:{default:`border-primary bg-primary/40 text-primary-foreground [a&]:hover:bg-primary/90`,secondary:`border-secondary bg-secondary/40 text-secondary-foreground [a&]:hover:bg-secondary/90`,warning:`border-yellow bg-yellow/40 text-foreground [a&]:hover:bg-yellow/90`,success:`border-green bg-green/40 text-foreground [a&]:hover:bg-green/90`,destructive:`border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40`,outline:`text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`}},defaultVariants:{variant:`default`}});function Hi(){let e=`v5.1.24`;return(0,W.jsx)(`a`,{href:e.startsWith(`v`)?`https://github.com/HarperFast/studio/releases/tag/${e}`:`https://github.com/HarperFast/studio/releases`,target:`_blank`,rel:`noopener noreferrer`,children:(0,W.jsxs)(`span`,{className:P(Vi({variant:`default`}),`text-xs inline-block ml-2 align-text-top`),children:[e,` BETA`]})})}function Ui(e={}){let{instanceId:t,clusterId:n}=L({strict:!1});return g({id:h,...e})}function Wi(e={}){let{instanceId:t,clusterId:n}=L({strict:!1});return{instanceClient:g({id:h,...e}),entityType:`instance`}}function K(e={}){let{instanceId:t,clusterId:n}=L({strict:!1});return(0,G.useMemo)(()=>Gi({instanceId:t,clusterId:n,...e}),[e.instanceId??t,e.clusterId??n,e.operationsUrl,e.port,e.secure,e.disableFabricConnect,e.forceFabricConnect])}function Gi({instanceId:e,clusterId:t,...n}){let r=h;if(!r)throw Error(`id could not be automatically calculated in useInstanceClientIdParams`);return{instanceClient:g({id:r,...n}),entityId:r,entityType:`instance`}}function Ki(){localStorage.clear()}function qi(){sessionStorage.clear()}async function Ji(){u.setUserForEntity(h,null),hn.getQueryCache().clear(),Ki(),qi(),await hn.invalidateQueries({refetchType:`none`})}async function Yi(e){await u.signOutFromPotentiallyAuthenticatedInstances(),await d({...e,entityId:h})}function Xi(){let e=Ui();return I({mutationFn:()=>Yi({instanceClient:e}),onSuccess:Ji})}function Zi(e){return!!e}var Qi={className:`text-foreground dark:text-white font-semibold`};function $i(){let{mutate:e}=Xi(),t=Oe(),{user:n}=Re(),r=Le(n),i=ne(),a=(0,G.useCallback)(()=>{e(void 0,{onSuccess:async()=>{H.success(`Success`,{description:`You have been signed out successfully.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),t({to:`/sign-in`}),i.invalidate()}})},[e,i,t]),o=(0,G.useMemo)(()=>[!1,!1,{to:`https://docs.harperdb.io/docs`,target:`_blank`,icon:(0,W.jsx)(Mn,{}),text:`Docs`,textBreakpoint:`md`},{to:`https://github.com/HarperFast/studio/issues`,target:`_blank`,icon:(0,W.jsx)(Pn,{}),text:`Report an Issue`,textBreakpoint:`lg`},{to:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,icon:(0,W.jsx)(Oi,{}),text:`Discord`,textBreakpoint:`lg`},{onClick:a,icon:(0,W.jsx)(Sr,{}),text:`Sign Out`,textBreakpoint:`md`}].filter(Zi),[a,r]);return n?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ia,{menuItems:o}),(0,W.jsx)(na,{menuItems:o})]}):(0,W.jsx)(ta,{})}function ea(e){return e.items!==void 0}function ta(){return(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`inline-block`,children:[(0,W.jsx)(V,{to:`/sign-in`,children:(0,W.jsx)(ki,{})}),(0,W.jsx)(Hi,{})]}),(0,W.jsx)(Li,{children:(0,W.jsxs)(Bi,{className:`text-muted-foreground dark:text-grey-400`,children:[(0,W.jsx)(Ri,{children:(0,W.jsx)(zi,{asChild:!0,children:(0,W.jsxs)(V,{to:`https://docs.harperdb.io/docs`,target:`_blank`,rel:`noreferrer noopener`,className:`flex-row items-center`,children:[(0,W.jsx)(Mn,{}),` `,(0,W.jsx)(`span`,{className:`hidden md:inline-block`,children:`Docs`})]})})}),(0,W.jsx)(Ri,{children:(0,W.jsx)(Fi,{})}),(0,W.jsx)(Ri,{children:(0,W.jsx)(zi,{asChild:!0,children:(0,W.jsxs)(V,{to:`/sign-in`,className:`flex-row items-center`,activeProps:Qi,children:[(0,W.jsx)(xr,{}),` Sign In`]})})})]})})]})}function na({menuItems:e}){let{user:t}=Re();return Tn(t),(0,W.jsx)(`div`,{className:`hidden md:[@media(hover:hover)]:block xl:block`,children:(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`inline-block`,children:[(0,W.jsx)(V,{to:`/`,children:(0,W.jsx)(ki,{})}),(0,W.jsx)(Hi,{})]}),(0,W.jsx)(Li,{children:(0,W.jsxs)(Bi,{className:`text-muted-foreground dark:text-grey-400`,children:[e.map(e=>ea(e)?!!e.items.length&&(0,W.jsx)(`div`,{className:`bg-muted dark:bg-black rounded-2xl flex`,children:e.items.map(e=>(0,W.jsx)(ra,{menuItem:e},e.text))},e.text):(0,W.jsx)(ra,{menuItem:e},e.text)),(0,W.jsx)(Ri,{children:(0,W.jsx)(Fi,{})})]})})]})})}function ra({menuItem:e}){return(0,W.jsx)(Ri,{className:`text-muted-foreground dark:text-gray-400 hover:text-foreground dark:hover:text-white`,children:(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsx)(zi,{asChild:!0,children:(0,W.jsxs)(V,{to:e.to,onClick:e.onClick,"aria-label":e.text,className:`flex-row items-center`,target:e.target,activeProps:e.to?Qi:void 0,children:[e.icon,(0,W.jsx)(`span`,{className:`hidden ${e.textBreakpoint}:inline-block`,children:e.text}),(0,W.jsx)(`span`,{className:`${e.textBreakpoint}:hidden`,children:`\xA0`})]})})}),(0,W.jsx)(Rt,{side:`bottom`,className:`${e.textBreakpoint}:hidden`,children:e.text})]})})}function ia({menuItems:e}){let{user:t}=Re();Tn(t);let[n,r]=(0,G.useState)(!1),i=(0,G.useCallback)(()=>r(e=>!e),[]),a=(0,G.useCallback)(()=>r(!1),[]);return(0,W.jsxs)(`div`,{className:`md:[@media(hover:hover)]:hidden xl:hidden`,id:`mobile-menu`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(V,{to:`/`,children:(0,W.jsx)(ki,{})}),(0,W.jsx)(Hi,{}),(0,W.jsxs)(`button`,{type:`button`,className:`shadow-xs text-muted-foreground dark:text-grey-400 hover:text-foreground dark:hover:text-white hover:bg-muted dark:hover:bg-black-dark`,onClick:i,children:[(0,W.jsx)(`span`,{className:`sr-only`,children:n?`Close menu`:`Open menu`}),n?(0,W.jsx)(pn,{}):(0,W.jsx)(Er,{})]})]}),(0,W.jsx)(`div`,{className:`${n?`fixed`:`hidden`} top-40 bottom-0 left-0 right-0 bg-foreground/20 dark:bg-black-dark dark:opacity-70`,onClick:a}),(0,W.jsxs)(`div`,{className:`${n?`block`:`hidden`} md:hidden z-50 space-y-1 pb-3 bg-card border-b border-border dark:bg-black-dark dark:border-none absolute left-0 top-full w-full rounded-b-md`,children:[(0,W.jsx)(`div`,{className:`flex justify-end px-3 pt-2`,children:(0,W.jsx)(Fi,{})}),e.map(e=>ea(e)?!!e.items.length&&(0,W.jsx)(`div`,{className:`bg-muted dark:bg-black pl-10 pr-2 py-2`,children:e.items.map(e=>(0,W.jsx)(aa,{menuItem:e,onClick:a},e.text))},e.text):(0,W.jsx)(aa,{menuItem:e,onClick:a},e.text))]})]})}function aa({menuItem:e,onClick:t}){let n=(0,G.useCallback)(()=>{e.onClick?.(),t()},[e,t]);return(0,W.jsxs)(V,{to:e.to,onClick:n,target:e.target,className:`flex flex-row px-3 py-2 text-base font-medium rounded-md text-muted-foreground dark:text-gray-400 hover:text-foreground dark:hover:text-white`,activeProps:e.to?Qi:void 0,children:[e.icon,(0,W.jsx)(`span`,{className:`ml-4`,children:e.text})]})}function oa(){let{isLoading:e}=Re(),{createCluster:t}=ce({strict:!1}),[,n]=vn(bn.SavedClusterState,null);return(0,G.useEffect)(()=>{t&&n(t)},[t,n]),e?(0,W.jsx)(Di,{className:`fixed z-50 translate-1/2`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`header`,{className:`fixed top-0 z-40 w-full h-20 p-4 bg-gradient-to-r from-violet-100 to-white border-b border-violet-200 dark:from-purple-950 dark:to-zinc-900 dark:border-purple-950 md:px-12`,children:(0,W.jsx)($i,{})}),(0,W.jsx)(`main`,{children:(0,W.jsx)(Se,{})})]})}function sa(){let e=location.hash;return e?e.startsWith(`#/`)?e.slice(1):e:`/`}var ca=[`/`,`/forgot-password`,`/reset-password`,`/sign-in`,`/sign-up`,`/verify-email`];function la(){let e=sa();return!ca.includes(e)&&{redirect:e}}var ua=!1;function da(){(0,G.useEffect)(()=>{ua||=!0},[])}function fa(){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ve,{}),(0,W.jsx)(Se,{})]})}var pa=he()({component:fa}),ma=z({getParentRoute:()=>pa,id:`_dashboardLayout`,component:oa,beforeLoad:({context:e})=>{let t=e.authentication[h];if(t&&!t.isLoading&&!t.user)throw _e({to:`/sign-in`,search:la()})}}),ha=z({getParentRoute:()=>ma,path:`admin`,component:Ei});z({getParentRoute:()=>ha,path:`/`,head:()=>({meta:[{title:`API Token — Harper Fabric`}]}),component:ye(async()=>je(()=>import(`./apiToken-S_hqpnVV.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),`ApiTokenIndex`)});function ga(){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`header`,{className:`fixed top-0 z-40 w-full h-20 p-4 bg-gradient-to-r from-violet-100 to-white border-b border-violet-200 dark:from-purple-950 dark:to-zinc-900 dark:border-purple-950 md:px-12`,children:(0,W.jsx)($i,{})}),(0,W.jsxs)(`div`,{className:`pt-20 h-screen grid grid-cols-1 md:grid-cols-2`,children:[(0,W.jsx)(`section`,{"aria-label":`Harper Fabric overview`,className:`items-center justify-center hidden text-white md:flex px-6 fabricSignupTextContainer`,children:(0,W.jsx)(`img`,{className:`object-scale-down max-h-[calc(100vh-80px-40px)] min-h-115`,src:`/fabric-signup-text.png`,alt:`One Runtime: App, database, Cache and Messaging. Distributed by design, free to deploy, and live in minutes. Deploy!`})}),(0,W.jsx)(`main`,{className:`overflow-y-auto px-6 bg-white dark:bg-linear-(--black-dark-gradient) border-l border-border dark:border-none`,children:(0,W.jsx)(`div`,{className:`min-h-full flex items-start justify-center py-12`,children:(0,W.jsx)(Se,{})})})]})]})}var _a;function va(){(0,G.useEffect)(()=>{},[])}var ya=[`gmail.com`,`yahoo.com`,`hotmail.com`,`outlook.com`,`icloud.com`,`aol.com`,`protonmail.com`,`mail.com`,`zoho.com`,`yandex.com`,`gmx.com`,`live.com`,`msn.com`,`me.com`,`inbox.com`];function ba(e){if(!e||!e.includes(`@`))return null;let t=e.split(`@`).pop()||``;if(!t)return null;for(let e of ya)if(t===e||t.endsWith(`.`+e))return null;return t}var xa=`utm_`;function Sa(e){let t=new URLSearchParams(e),n=Array.from(t.keys()).filter(e=>e.toLowerCase().startsWith(xa));if(n.length===0)return e;for(let e of n)t.delete(e);let r=t.toString();return r?`?${r}`:``}function Ca(){if(typeof location>`u`||typeof history>`u`)return;let{search:e,pathname:t,hash:n,origin:r}=location,i=Sa(e);i!==e&&history.replaceState(history.state,``,`${r}${t}${i}${n}`)}var wa=null;function Ta(){let e=Oe(),t=ne(),n=ie(),{redirect:r}=ce({strict:!1});return(0,G.useEffect)(()=>{wa||=(async function(){let a=await i().catch(()=>null);if(!a)H.error(`We were not able to verify your sign-in. Please try signing in again.`,{duration:1e4}),await e({to:`/sign-in`});else{u.setUserForEntity(h,a),Ca();let i=Tn(a),o=ba(a.email);_a?.identify?.({username:a.email,type:`email`,...o?{company:o}:{}}),await n.invalidateQueries({queryKey:m,refetchType:`none`}),await t.invalidate(),await e({to:r?.startsWith(`/`)?r:i})}wa=null})()},[]),(0,W.jsxs)(`div`,{role:`status`,"aria-live":`polite`,className:`text-foreground dark:text-white w-lg flex flex-col gap-4`,children:[(0,W.jsxs)(`h1`,{className:`text-3xl font-light`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`text-2xl animate-flower-dance mr-4`,title:`Loading`,children:`🌼`}),`Checking...`]}),(0,W.jsx)(`div`,{className:`underline flex gap-4`,children:(0,W.jsx)(V,{className:`text-sm opacity-50 text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/sign-in`,children:`Try signing in again`})})]})}var Ea=new Map;function Da(e){if(!e)return``;if(Ea.has(e))return Ea.get(e);let t=e.replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim();if(!t)return Ea.set(e,``),``;let n=t.match(/([A-Z]+(?=[A-Z][a-z])|[A-Z]?[a-z]+|[A-Z]+|[0-9]+)/g);if(!n)return Ea.set(e,``),``;let r=[];for(let e=0;e<n.length;e++){let t=n[e],i=e+1<n.length?n[e+1]:void 0;/^[A-Z]{2,}$/.test(t)&&i&&/[A-Z]*s$/.test(i)||/^[A-Z]$/.test(t)&&i!==void 0&&/^[A-Z]s$/.test(i)?(r.push(t+i),e++):r.push(t)}let i=r.map(Oa).join(` `);return Ea.set(e,i),i}function Oa(e){return/^[A-Z]{2,3}s?$/.test(e)||/^[0-9]+$/.test(e)?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function ka({restartRequired:e}){let t=Ee(),{organization:n,instance:r,cluster:i}=ke({strict:!1});return(0,W.jsxs)(`div`,{role:`list`,className:`flex items-center space-x-2 xl:space-x-4 sm:max-w-9/10 max-w-[calc(100%-56px)]`,children:[...(0,G.useMemo)(()=>{let e=t.pathname.split(`/`).filter(e=>e&&e.length>0),a=[(0,W.jsxs)(V,{to:`/`,children:[(0,W.jsx)(fr,{"aria-hidden":`true`,className:`size-5 shrink-0`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Home`})]},`home`)];for(let t=0;t<e.length;t++){let o=e[t];if(o===`instance`)continue;let s=`/${e.slice(0,t+1).join(`/`)}`,c=Da(o);o===`databases`&&e.length===t+3?(c=e[t+2],t+=2):c.startsWith(`Org `)?c=n?.name||`Org`:c.startsWith(`Clu `)?(c=i?.name||`Cluster`,e[t+1]===`instance`&&(s+=`/instances`)):c.startsWith(`Ins `)?c=r?.name?.split(`.`)?.shift()||`Instance`:c===`Apis`&&(c=`APIs`),a.push((0,W.jsx)(`svg`,{fill:`currentColor`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`size-5 shrink-0 text-grey`,children:(0,W.jsx)(`path`,{d:`M5.555 17.776l8-16 .894.448-8 16-.894-.448z`})},a.length+`-dash`),(0,W.jsx)(V,{to:s,className:`text-xs md:text-sm font-medium hover:text-grey truncate max-w-48`,children:c},s))}return a},[t.pathname,i?.name,r?.name,n?.name]),e&&(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsxs)(`div`,{className:`text-xs italic text-muted-foreground`,children:[`* Restart `,(0,W.jsx)(`span`,{className:`hidden lg:inline-block`,children:`Requested`})]})}),(0,W.jsxs)(Rt,{side:`bottom`,children:[`This `,`Instance`,` is requesting a restart, when convenient, to apply your latest changes.`,(0,W.jsx)(`br`,{}),`You can do this from the Apps or Config pages.`]})]})]})}var q=Ct,Aa=(0,G.createContext)({}),ja=(0,G.createContext)({});function Ma(){let e=(0,G.useContext)(Aa),t=(0,G.useContext)(ja),{getFieldState:n}=wt(),r=gt({name:e.name}),i=n(e.name,r);if(!e)throw Error(`useFormField should be used within <FormField>`);let{id:a}=t;return{id:a,name:e.name,formItemId:`${a}-form-item`,formDescriptionId:`${a}-form-item-description`,formMessageId:`${a}-form-item-message`,...i}}function J({...e}){let{error:t,formItemId:n,formDescriptionId:r,formMessageId:i}=Ma();return(0,W.jsx)(Ue,{"data-slot":`form-control`,id:n,"aria-describedby":t?`${r} ${i}`:`${r}`,"aria-invalid":!!t,...e})}function Y({...e}){return(0,W.jsx)(Aa,{value:{name:e.name},children:(0,W.jsx)(xt,{...e})})}function X({className:e,...t}){return(0,W.jsx)(ja,{value:{id:(0,G.useId)()},children:(0,W.jsx)(`div`,{"data-slot":`form-item`,className:P(`grid gap-2`,e),...t})})}function Na({className:e,...t}){return(0,W.jsx)(ft,{"data-slot":`label`,className:P(`text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}function Z({className:e,...t}){let{error:n,formItemId:r}=Ma();return(0,W.jsx)(Na,{"data-slot":`form-label`,"data-error":!!n,className:P(`data-[error=true]:text-destructive`,e),htmlFor:r,...t})}function Q({className:e,...t}){let{error:n,formMessageId:r}=Ma(),i=n?String(n?.message):t.children;return i?(0,W.jsx)(`p`,{"data-slot":`form-message`,id:r,className:P(`text-destructive text-sm`,e),...t,children:i}):null}function $({className:e,type:t,...n}){return(0,W.jsx)(`input`,{type:t,"data-slot":`input`,className:P(`border-input file:text-foreground placeholder:text-muted-foreground selection:bg-purple
|
|
3
3
|
selection:text-primary-foreground
|
|
4
4
|
dark:aria-invalid:outline-destructive dark:aria-invalid:ring-destructive/50 ring-ring/10
|
|
5
5
|
dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 aria-invalid:outline-destructive/60
|
|
@@ -7,9 +7,9 @@ import{a as e,r as t,t as n}from"./rolldown-runtime-CNC7AqOf.js";import{a as r,c
|
|
|
7
7
|
flex h-9 w-full min-w-0 rounded-md border bg-white text-foreground dark:bg-grey-700 dark:text-white px-3 py-1 text-base
|
|
8
8
|
file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium
|
|
9
9
|
focus-visible:ring-1 focus-visible:outline-none focus-visible:ring-purple disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50
|
|
10
|
-
aria-invalid:focus-visible:ring-[1px] aria-invalid:focus-visible:outline-none md:text-sm dark:aria-invalid:focus-visible:ring-1`,e),...n})}var Na=[`RUNNING`],Pa=[`TERMINATING`,`TERMINATED`,`REMOVED`];function Fa(){return`https://fabric.harper.fast/#/?createCluster=`+encodeURIComponent(JSON.stringify({deploymentDescription:`Self-Hosted`,performanceDescription:`Self Supported and Managed`,instances:[{secure:String(location.protocol===`https:`),fqdn:location.hostname,port:parseInt(location.port,10)}]}))}async function Ia({username:e,password:t,instanceClient:n,entityId:i}){let a={username:e,password:t};u.checkForBasicAuth(i)&&(n.defaults.auth=a,n.defaults.withCredentials=!1);let{data:{message:o}}=await n.post(`/`,{operation:`login`,username:e,password:t});if(!u.checkForBasicAuth(i))try{let e=await r({instanceClient:n});return u.setLastConnectMode(i,`direct`),{message:o,user:e}}catch(e){console.error(`Failed to get user after login, trying basic auth`,e)}try{n.defaults.auth=a,n.defaults.withCredentials=!1;let e=await r({instanceClient:n,auth:a});return u.flagForBasicAuth(i,a),u.setLastConnectMode(i,`direct`),{message:o,user:e}}catch(e){throw n.defaults.auth=void 0,n.defaults.withCredentials=!0,e}return{message:o,user:await u.establishFabricConnectAuth({id:i,operationsUrl:n.defaults.baseURL}),instanceClient:g({id:i,operationsUrl:n.defaults.baseURL})}}function La(){return I({mutationFn:Ia})}function Ra({cluster:e,instance:t,instanceParams:n}){let r=Oe(),i=ne(),{redirect:a}=ce({strict:!1}),{mutate:o,isPending:s}=La();return{isPending:s,submitForm:(0,G.useCallback)(async s=>{o({...s,...n},{onSuccess:async({message:n,user:o})=>{if(H.success(n),e?.instances?.length&&!t)for(let t of e.instances)u.setUserForEntity(t,o);let s=h;if(!s)throw Error(`Sign in failed due to missing cluster or instance.`);u.setUserForEntity(s,o),i.invalidate(),await r({to:a?.startsWith(`/`)?a:`/`})}})},[e,t,n,r,a,i,o])}}async function za(e){let{data:t}=await N.get(`/Cluster/${e}`);return t}function Ba(e,t){return B({queryKey:[e],queryFn:()=>za(e),retry:!1,staleTime:1900,enabled:!!e,refetchInterval:t?t===!0?1e4:t:void 0})}var Va=w({error:`Please enter a valid email address.`}).toLowerCase().trim(),Ha=S().nonempty({error:`Please enter your password.`}),Ua=S().nonempty({error:`Please enter a username.`}),Wa=b({username:Ua,password:Ha}),Ga=b({email:Va,password:Ha});function Ka({entityId:e,instanceClient:t}){return B({queryKey:[`health`,e],queryFn:async()=>{try{return await t.get(`/health`),!0}catch{return!1}},retry:2,refetchInterval:5e3})}var qa=[`localhost`,`127.0.0.1`],Ja=function(e){return e.MixedLoopback=`MixedLoopback`,e.InsecureCookieOutsideChromeAndFirefox=`InsecureCookieOutsideChromeAndFirefox`,e}({});function Ya(e,t,n){if(!n||!t||!e)return null;let r=new URL(n).hostname,i=qa.includes(t),a=qa.includes(r);if(i&&a&&r!==t)return`MixedLoopback`;if(!i&&a){let t=e.indexOf(`Chrome`)>=0,n=e.indexOf(`Firefox`)>=0;if(!t&&!n)return`InsecureCookieOutsideChromeAndFirefox`}return null}function Xa(){let{clusterId:e,instanceId:t}=L({strict:!1}),{data:n}=R(Ba(e,!0)),r=(0,G.useMemo)(()=>t&&n&&n?.instances?.find(e=>e.id===t)||void 0,[n,t]),i=(0,G.useMemo)(()=>n?.status&&Na.includes(n.status),[n?.status]),a=`instance`,o=(0,G.useMemo)(()=>n?r?(u.flagForFabricConnect(r.id,!1),p(r)):(u.flagForFabricConnect(n.id,!1),s(n)):null,[n,r]);(0,G.useEffect)(()=>{r?u.setUserForEntity(r,null):n&&u.setUserForEntity(n,null)},[r?.id??n?.id]);let c=K({operationsUrl:o}),l=(0,G.useMemo)(()=>o?.includes(`localhost`)||o?.includes(`127.0.0.1`),[o]),d=(0,G.useMemo)(()=>Ya(navigator.userAgent,location.hostname,o),[o]),{data:f}=R(Ka(c)),m=bt({resolver:_t(Wa),defaultValues:{username:``,password:``}}),{control:h,handleSubmit:g}=m,{submitForm:v,isPending:y}=Ra({cluster:n,instance:r,instanceParams:c});return!t&&n&&!n?.fqdn?(0,W.jsx)(de,{to:`../instances`,replace:!0}):i&&n?.resetPassword?(0,W.jsx)(de,{to:`/${n.organizationId}/${n.id}/finish-setup`,replace:!0}):!i&&n?.resetPassword?(0,W.jsx)(de,{to:`/${n.organizationId}/${n.id}/starting-up`,replace:!0}):(0,W.jsxs)(W.Fragment,{children:[!1,(0,W.jsx)(`div`,{className:_(`min-h-screen`,`items-center justify-center flex`),children:(0,W.jsxs)(`div`,{className:`text-foreground w-xs py-8`,children:[(0,W.jsxs)(`h1`,{className:`text-2xl font-light`,children:[`Sign in to Harper `,`Local`]}),(0,W.jsx)(q,{...m,children:(0,W.jsxs)(`form`,{id:`auth-${a}-signin-form`,name:`auth-${a}-signin-form`,onSubmit:g(v),className:`my-4`,children:[(0,W.jsx)(Y,{control:h,name:`username`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Username`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{autoComplete:`username`,autoFocus:!0,type:`text`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:h,name:`password`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(F,{disabled:y,type:`submit`,variant:`submit`,className:`w-full my-2`,children:`Sign In`}),f===!1&&(0,W.jsxs)(`div`,{className:`p-4 mt-4 text-sm text-yellow-800 rounded-lg bg-yellow-50 dark:bg-gray-800 dark:text-yellow-300`,role:`alert`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`Warning!`}),` This `,a,` is not responding to GET`,` `,(0,W.jsxs)(`a`,{href:`${o}health`,className:`underline`,target:`_blank`,children:[o,`health`]}),` `,`checks.`,(0,W.jsxs)(`ol`,{className:`list-decimal ml-8 mt-2`,children:[(0,W.jsx)(`li`,{children:`Is the server running?`}),(0,W.jsxs)(`li`,{children:[`Have you`,` `,(0,W.jsx)(`a`,{href:`https://docs.harperdb.io/docs/developers/security/configuration#cors`,target:`_blank`,rel:`noreferrer`,className:`underline`,children:`enabled CORS`}),` `,`for the operations API?`]}),l&&(0,W.jsxs)(`li`,{children:[`Have you allowed`,` `,(0,W.jsx)(`a`,{href:`https://www.google.com/search?q=How+do+I+enable+local+network+access+in+my+browser%3F`,className:`underline`,target:`_blank`,rel:`noreferrer`,children:`local network access`}),` `,`in your browser?`]})]})]}),d===Ja.MixedLoopback&&(0,W.jsxs)(`div`,{className:`p-4 mt-4 text-sm text-yellow-800 rounded-lg bg-yellow-50 dark:bg-gray-800 dark:text-yellow-300`,role:`alert`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`Warning!`}),` `,`Your login might not work because you're mixing 127.0.0.1 and localhost. Pick one or the other.`]}),d===Ja.InsecureCookieOutsideChromeAndFirefox&&(0,W.jsxs)(`div`,{className:`p-4 mt-4 text-sm text-yellow-800 rounded-lg bg-yellow-50 dark:bg-gray-800 dark:text-yellow-300`,role:`alert`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`Warning!`}),` `,`Your login might not work because your browser doesn't consider localhost to be secure, so it doesn't pass the cookies along. Firefox or Chromium based browsers should pass the cookies properly.`]}),(0,W.jsxs)(`div`,{className:`p-4 mt-4 text-sm rounded-lg bg-purple-950`,role:`alert`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`Did you know?`}),` `,`You can add this instance to your Harper account to manage it remotely.`,(0,W.jsx)(`div`,{className:`text-center pt-2`,children:(0,W.jsx)(V,{to:Fa(),target:`_blank`,children:(0,W.jsx)(F,{type:`button`,variant:`positive`,children:`Connect to Harper Fabric`})})})]})]})})]})})]})}async function Za({email:e}){let{data:t}=await N.post(`/ForgotPassword/`,{email:e});if(t)return t;throw Error(`Something went wrong`)}function Qa(){return I({mutationFn:e=>Za(e)})}var $a=b({email:Va});function eo(){let e=Oe(),{me:t}=ce({strict:!1}),n=bt({resolver:_t($a),defaultValues:{email:t||``}}),r=n.watch(`email`),{setFocus:i,control:a,handleSubmit:o}=n;(0,G.useEffect)(()=>{i(`email`)},[i]);let{mutate:s,isPending:c}=Qa(),l=async t=>{s(t,{onSuccess:t=>{H.success(`Success`,{description:`${t}`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),e({to:`/sign-in`,search:{me:r}})}})};return(0,W.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light`,children:`Enter your account email`}),(0,W.jsx)(`p`,{className:`text-sm pt-1`,children:`If a matching account exists, we'll send you a password reset link.`}),(0,W.jsx)(q,{...n,children:(0,W.jsxs)(`form`,{id:`auth-forgot-password-form`,name:`auth-forgot-password-form`,onSubmit:o(l),className:`my-4`,children:[(0,W.jsx)(Y,{control:a,name:`email`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-2`,children:[(0,W.jsx)(Z,{children:`Email`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{disabled:c,type:`email`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(F,{type:`submit`,variant:`submit`,disabled:c,className:`w-full my-2`,children:`Send Password Reset Email`})]})}),(0,W.jsxs)(`div`,{className:`flex px-4 mt-4 underline place-content-between`,children:[(0,W.jsx)(V,{className:`text-sm hover:text-blue-300`,to:`/sign-in`,search:{me:r},children:`Sign in to your account`}),(0,W.jsx)(V,{className:`text-sm hover:text-blue-300`,to:`/sign-up`,search:{me:r},children:`Sign up for free`})]})]})}var to=async({token:e,password:t})=>{let{data:n}=await N.put(`/ResetPassword/`,{token:e,newPassword:t});return n};function no(){return I({mutationFn:e=>to(e)})}var ro=b({password:Ha.min(8,{error:`Password must be at least 8 characters long.`}).max(50,{error:`Password cannot be longer than 50 characters.`}),confirmPassword:S()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function io(){let{token:e}=ce({strict:!1}),t=Oe();(0,G.useEffect)(()=>{e||t({to:`/sign-in`})},[e,t]);let n=bt({resolver:_t(ro),defaultValues:{password:``,confirmPassword:``}}),{setFocus:r,control:i,handleSubmit:a}=n;(0,G.useEffect)(()=>{r(`password`)},[r]);let{mutate:o,isPending:s}=no(),c=(0,G.useCallback)(async n=>{o({token:e,password:n.password},{onSuccess:()=>{H.success(`Success`,{description:`Your password has been reset successfully.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),t({to:`/sign-in`})}})},[t,o,e]);return(0,W.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light`,children:`Reset Password`}),(0,W.jsx)(q,{...n,children:(0,W.jsxs)(`form`,{id:`auth-reset-password-form`,name:`auth-reset-password-form`,className:`my-4`,onSubmit:a(c),children:[(0,W.jsx)(Y,{control:i,name:`password`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-2`,children:[(0,W.jsx)(Z,{children:`New Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{disabled:s,type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:i,name:`confirmPassword`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-2`,children:[(0,W.jsx)(Z,{children:`Confirm Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{disabled:s,type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(F,{variant:`submit`,type:`submit`,disabled:s,className:`w-full my-2`,children:`Submit New Password`})]})})]})}function ao({className:e,variant:t,asChild:n=!1,...r}){return(0,W.jsx)(n?Ue:`span`,{"data-slot":`badge`,className:P(Bi({variant:t}),e),...r})}function oo(){return(0,W.jsx)(ao,{className:`pointer-events-none absolute -top-2 right-3 z-10 rounded-full border-primary bg-primary px-1.5 py-0 text-[10px] font-medium text-white shadow-sm`,children:`Last used`})}function so({text:e,disabled:t,onClick:n,lastUsed:r=!1}){let i=(0,W.jsxs)(`a`,{href:`/oauth/github/login?redirect=%2F%23%2Fcheck-oauth`,onClick:n,"aria-disabled":t||void 0,className:_(`github-signin-btn`,t&&`opacity-50 cursor-default`),children:[(0,W.jsx)(`img`,{src:`/github/GitHub_Invertocat_White.svg`,alt:``,className:`github-icon`}),e]});return r?(0,W.jsxs)(`div`,{className:`relative flex flex-col`,children:[i,(0,W.jsx)(oo,{})]}):i}function co({text:e,disabled:t,onClick:n,lastUsed:r=!1}){let i=(0,W.jsxs)(`a`,{href:`/oauth/google/login?redirect=%2F%23%2Fcheck-oauth`,onClick:n,"aria-disabled":t||void 0,className:_(`gsi-material-button`,t&&`opacity-50 cursor-default`),children:[(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`gsi-material-button-state`}),(0,W.jsxs)(`div`,{className:`gsi-material-button-content-wrapper`,children:[(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`gsi-material-button-icon`,children:(0,W.jsxs)(`svg`,{version:`1.1`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 48 48`,xmlnsXlink:`http://www.w3.org/1999/xlink`,className:`block`,children:[(0,W.jsx)(`path`,{fill:`#EA4335`,d:`M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z`}),(0,W.jsx)(`path`,{fill:`#4285F4`,d:`M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z`}),(0,W.jsx)(`path`,{fill:`#FBBC05`,d:`M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z`}),(0,W.jsx)(`path`,{fill:`#34A853`,d:`M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z`}),(0,W.jsx)(`path`,{fill:`none`,d:`M0 0h48v48H0z`})]})}),(0,W.jsx)(`span`,{className:`gsi-material-button-contents`,children:e}),(0,W.jsx)(`span`,{className:`hidden`,children:e})]})]});return r?(0,W.jsxs)(`div`,{className:`relative flex flex-col`,children:[i,(0,W.jsx)(oo,{})]}):i}function lo(e){if(!y(e)||e.response?.status!==403)return!1;let t=e.response.data,n=typeof t==`string`?t:mn(t?.error)??mn(t?.message)??``;return/verif/i.test(n)}var uo=async({email:e})=>{let{data:t}=await N.post(`/ResendVerificationEmail/`,{email:e});return t};function fo(){return I({mutationFn:e=>uo(e)})}function po(){let e=Oe(),t=ie(),n=ne(),{redirect:r}=ce({strict:!1}),{mutate:i,isPending:a}=mo(),{mutate:o}=fo();return{isPending:a,submitForm:(0,G.useCallback)(a=>{i(a,{onSuccess:async i=>{u.setUserForEntity(h,i),Sa();let a=wn(i),o=ya(i.email);ga?.identify?.({username:i.email,type:`email`,...o?{company:o}:{}}),await t.invalidateQueries({queryKey:m,refetchType:`none`}),n.invalidate(),await e({to:r?.startsWith(`/`)?r:a})},onError:t=>{if(lo(t)){o({email:a.email},{onSuccess:()=>H.info(`Verify your email to finish signing in`,{description:`We sent a new verification link to ${a.email}.`})}),e({to:`/verifying?email=`+encodeURIComponent(a.email)});return}gn(t)}})},[e,t,r,o,n,i])}}function mo(){return I({mutationFn:e=>ho(e),meta:{skipGlobalErrorToast:!0}})}async function ho({email:e,password:t}){let{data:n}=await N.post(`/Login/`,{email:e,password:t});if(n)return n;throw Error(`Something went wrong`)}function go(){let[e,t]=vn(bn.RememberSignInMethod,!0),[n,r]=vn(bn.LastUsedSignInMethod,null),i=(0,G.useCallback)(t=>{e&&(yn(bn.LastUsedSignInMethod,t),r(t))},[e,r]),a=(0,G.useCallback)(()=>{r(null),t(!1)},[r,t]),o=(0,G.useCallback)(()=>{t(!0)},[t]);return{lastUsed:e?n:null,remember:e,recordMethod:i,disable:a,enable:o}}var _o=`mx-auto mt-3 block text-xs text-muted-foreground underline hover:text-foreground dark:text-inherit dark:hover:text-blue-300`;function vo(){let{me:e}=ce({strict:!1}),t=bt({resolver:_t(Ga),defaultValues:{email:e||``,password:``}}),{handleSubmit:n,control:r}=t,i=t.watch(`email`),{submitForm:a,isPending:o}=po(),{lastUsed:s,remember:c,recordMethod:l,disable:u,enable:d}=go();return(0,W.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light text-center`,children:`Sign in to Harper Fabric`}),(0,W.jsx)(q,{...t,children:(0,W.jsxs)(`form`,{id:`auth-signin-form`,name:`auth-signin-form`,onSubmit:n(a),className:`my-4`,children:[(0,W.jsx)(Y,{control:r,name:`email`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Email`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`email`,autoFocus:!0,autoComplete:`email`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r,name:`password`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,autoComplete:`current-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(F,{type:`submit`,variant:`submit`,className:`w-full my-2`,disabled:o,children:`Sign In`}),(0,W.jsxs)(`div`,{className:`flex px-4 mt-4 underline place-content-between`,children:[(0,W.jsx)(V,{className:`text-sm text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/sign-up`,search:{me:i},children:`Sign up for free`}),(0,W.jsx)(V,{className:`text-sm text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/forgot-password`,search:{me:i},children:`Forgot password?`})]})]})}),(0,W.jsx)(`hr`,{"aria-hidden":`true`,className:`border-border dark:border-gray-600 my-6`}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,W.jsx)(co,{text:`Sign in with Google`,lastUsed:s===`google`,onClick:()=>l(`google`)}),(0,W.jsx)(so,{text:`Sign in with GitHub`,lastUsed:s===`github`,onClick:()=>l(`github`)})]}),c?s&&(0,W.jsx)(`button`,{type:`button`,onClick:u,className:_o,children:`On a shared device? Forget my sign-in method.`}):(0,W.jsx)(`button`,{type:`button`,onClick:d,className:_o,children:`Remember my last sign-in method on this device.`})]})}var yo=/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžæÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,'-]+$/u;async function bo(e){let{data:t}=await N.post(`/User/`,e);if(t)return t;throw Error(`Something went wrong`)}function xo(){return I({mutationFn:e=>bo(e)})}var So=b({email:Va.max(80,{error:`Email cannot be longer than 80 characters.`}),firstname:S().trim().min(2,{error:`Please enter your first name.`}).regex(yo,{error:`First name can only contain letters, spaces, and hyphens.`}).max(40,{error:`First name cannot be longer than 40 characters.`}),lastname:S().trim().min(2,{error:`Please enter your last name.`}).regex(yo,{error:`Last name can only contain letters, spaces, and hyphens.`}).max(80,{error:`Last name cannot be longer than 80 characters.`}),password:Ha.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:S(),acceptTerms:D().refine(e=>e===!0,{message:`You must accept the Privacy Policy and Terms of Service.`})}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function Co(){let e=Oe(),{email:t,me:n}=ce({strict:!1}),[r,i]=(0,G.useState)(!1),a=bt({resolver:_t(So),defaultValues:{firstname:``,lastname:``,email:n||t||``,password:``,confirmPassword:``,acceptTerms:!1}}),o=a.watch(`email`),s=a.watch(`acceptTerms`),{setFocus:c,control:l,handleSubmit:u}=a;(0,G.useEffect)(()=>{c(`firstname`)},[c]);let{mutate:d}=xo(),f=(0,G.useCallback)(async t=>{let{confirmPassword:n,acceptTerms:r,...i}=t;d(i,{onSuccess:()=>{let t=ya(i.email);ga?.identify?.({username:i.email,type:`email`,firstname:i.firstname,lastname:i.lastname,...t?{company:t}:{}}),Sa(),e({to:`/verifying?email=`+encodeURIComponent(i.email)})}})},[e,d]),p=(0,G.useCallback)(e=>{if(!s)return i(!0),setTimeout(()=>i(!1),1e3),e.preventDefault(),!1},[s]),m=(0,W.jsx)(Y,{control:l,name:`acceptTerms`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex flex-row items-start space-x-3 space-y-0 p-1 transition-colors duration-300 ${r?`bg-red-500/20 animate-pulse rounded`:``}`,children:[(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`size-4 rounded border-gray-300 bg-white text-purple-600 focus:ring-purple-500`,checked:e.value,onChange:e.onChange})}),(0,W.jsxs)(`div`,{className:`space-y-1 leading-none`,children:[(0,W.jsxs)(Z,{className:`text-xs font-normal`,children:[`I accept the`,` `,(0,W.jsx)(`a`,{href:`https://www.harper.fast/resources/privacy-policy`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,"aria-label":`Privacy Policy (opens in new tab)`,children:`Privacy Policy`}),` `,`and`,` `,(0,W.jsx)(`a`,{href:`https://www.harper.fast/resources/paas-terms-of-service`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,"aria-label":`Terms of Service (opens in new tab)`,children:`Terms of Service`})]}),(0,W.jsx)(Q,{})]})]})});return(0,W.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light text-center`,children:`Sign up for Harper Fabric`}),(0,W.jsxs)(q,{...a,children:[(0,W.jsxs)(`div`,{className:`flex flex-col gap-2 my-6`,children:[m,(0,W.jsx)(co,{text:`Sign up with Google`,disabled:!s,onClick:p}),(0,W.jsx)(so,{text:`Sign up with GitHub`,disabled:!s,onClick:p})]}),(0,W.jsx)(`hr`,{className:`border-gray-600`}),(0,W.jsxs)(`form`,{id:`auth-signup-form`,name:`auth-signup-form`,onSubmit:u(f),className:`grid gap-4 my-4`,children:[(0,W.jsx)(Y,{control:l,name:`firstname`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`First Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,className:`dark:bg-black dark:border-black`,autoCapitalize:`words`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:l,name:`lastname`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Last Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,className:`dark:bg-black dark:border-black`,autoCapitalize:`words`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:l,name:`email`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Email`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`email`,readOnly:!!t,disabled:!!t,className:`dark:bg-black dark:border-black`,autoComplete:`email`,autoCapitalize:`none`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:l,name:`password`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:l,name:`confirmPassword`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Confirm Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),m,(0,W.jsx)(F,{type:`submit`,variant:`submit`,className:`w-full my-4`,children:`Sign Up For Free`})]})]}),(0,W.jsx)(`div`,{className:`flex px-4 mt-4 underline place-content-between`,children:(0,W.jsx)(V,{className:`m-auto text-sm hover:text-blue-300`,to:`/sign-in`,search:{me:o},children:`Already have an account? Sign in instead.`})})]})}var wo=async e=>{let{data:t}=await N.put(`/VerifyEmail/`,{token:e.toString()});return t};function To(){return I({mutationFn:e=>wo(e)})}var Eo=b({email:Va});function Do(){let e=Oe(),{mutate:t,isPending:n}=fo(),r=bt({resolver:_t(Eo),defaultValues:{email:``}}),i=r.watch(`email`),{setFocus:a,control:o,handleSubmit:s}=r;(0,G.useEffect)(()=>{a(`email`)},[a]);let c=(0,G.useCallback)(async n=>{t(n,{onSuccess:t=>{H.success(`Success`,{description:`${t}`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),e({to:`/sign-in`,search:{me:i}})}})},[i,e,t]);return(0,W.jsxs)(q,{...r,children:[(0,W.jsx)(`p`,{className:`text-sm py-2`,children:`Please Enter an Email`}),(0,W.jsxs)(`form`,{id:`auth-verify-email-form`,name:`auth-verify-email-form`,onSubmit:s(c),className:`my-4`,children:[(0,W.jsx)(Y,{control:o,name:`email`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-2`,children:[(0,W.jsx)(Z,{children:`Email`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{disabled:n,type:`email`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(F,{type:`submit`,variant:`submit`,disabled:n,className:`w-full my-2`,children:`Send Verification Email`})]})]})}function Oo(){let{token:e}=ce({strict:!1}),t=Oe(),{mutate:n,isPending:r}=To(),i=(0,G.useCallback)(e=>{n(e,{onSuccess:()=>{H.success(`Success`,{description:`Email verified successfully`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),t({to:`/sign-in`})}})},[n,t]);return(0,G.useEffect)(()=>{e&&i(e)},[i,e]),(0,W.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,W.jsx)(`h1`,{className:`text-3xl font-light`,children:`Verify Email`}),r?(0,W.jsx)(`p`,{className:`text-sm pt-1`,children:`Verifying email...`}):(0,W.jsx)(Do,{})]})}function ko(){let{email:e}=ce({strict:!1}),{mutate:t,isPending:n}=fo(),r=(0,G.useCallback)(n=>(n.preventDefault(),e&&t({email:e},{onSuccess:e=>{H.success(`Code Sent`,{description:`${e}`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}})}}),!1),[e,t]);return(0,W.jsxs)(`div`,{className:`text-foreground dark:text-white w-lg flex flex-col gap-4`,children:[(0,W.jsxs)(`h1`,{className:`text-3xl font-light`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`text-2xl animate-flower-dance mr-4`,title:`Loading`,children:`🌼`}),`Check your email!`]}),(0,W.jsxs)(`p`,{children:[`Your account has been created! You should receive an email with a link to `,(0,W.jsx)(`strong`,{children:`[Verify My Email]`}),`!`]}),(0,W.jsxs)(`p`,{children:[`From: `,(0,W.jsx)(`strong`,{children:`harper@notifications.harperfabric.com`})]}),(0,W.jsxs)(`p`,{children:[`To: `,(0,W.jsx)(`strong`,{children:e||`your email`})]}),(0,W.jsx)(`p`,{children:`Can you click it? Then we can carry on to more fun things!`}),(0,W.jsxs)(`div`,{className:`underline flex gap-4`,children:[(0,W.jsx)(V,{className:`text-sm text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/sign-in`,search:{me:e},children:`I did it, let me sign in!`}),(0,W.jsx)(V,{className:`text-sm opacity-50 text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:void 0,onClick:r,disabled:n,children:`Send me another code, please.`})]})]})}var Ao=z({getParentRoute:()=>fa,id:`_authLayout`,component:ha}),jo=z({getParentRoute:()=>Ao,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:vo,beforeLoad:({context:e,location:t})=>{let n=e.authentication[h]?.user;if(n){let e=t?.search,r=wn(n);throw _e({to:e?.redirect?.startsWith(`/`)?e.redirect:r})}}}),Mo=z({getParentRoute:()=>fa,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:Xa,beforeLoad:({context:e,location:t})=>{if(e.authentication.OverallAppSignIn?.user){let e=t?.search;throw _e({to:e?.redirect?.startsWith(`/`)?e.redirect:`/`})}}}),No=z({getParentRoute:()=>Ao,path:`sign-up`,head:()=>({meta:[{title:`Sign Up — Harper Fabric`}]}),component:Co}),Po=z({getParentRoute:()=>Ao,path:`forgot-password`,head:()=>({meta:[{title:`Forgot Password — Harper Fabric`}]}),component:eo}),Fo=z({getParentRoute:()=>Ao,path:`verify-email`,head:()=>({meta:[{title:`Verify Email — Harper Fabric`}]}),component:Oo}),Io=z({getParentRoute:()=>Ao,path:`verifying`,head:()=>({meta:[{title:`Check Your Email — Harper Fabric`}]}),component:ko}),Lo=z({getParentRoute:()=>Ao,path:`check-oauth`,head:()=>({meta:[{title:`Signing In — Harper Fabric`}]}),component:wa}),Ro=z({getParentRoute:()=>Ao,path:`reset-password`,head:()=>({meta:[{title:`Reset Password — Harper Fabric`}]}),component:io});Ao.addChildren([jo,No,Lo,Po,Fo,Io,Ro]);var zo=[Mo];function Bo({children:e}){return(0,W.jsx)(`nav`,{className:`fixed top-20 w-full h-12 z-39 py-2 px-4 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none`,children:(0,W.jsxs)(`div`,{className:`flex items-center h-full space-x-2`,children:[(0,W.jsx)(Oa,{}),e]})})}function Vo(e){if(Ko(e)||qo(e))return`warning`;if(Uo(e))return`success`;switch(e){case`STOPPED`:return`destructive`;case`TERMINATING`:case`TERMINATED`:case`FAILED`:case`REMOVED`:case`ERROR`:return`destructive`;default:return`default`}}function Ho(e){switch(e){case`STOPPED`:case`STOPPING`:case`STARTING`:case`RESTARTING`:return!0;default:return!1}}function Uo(e){switch(e){case`RUNNING`:case`UPDATED`:return!0;default:return!1}}function Wo(e){switch(e){case`FAILED`:return!0;default:return!1}}function Go(e){switch(e){case`TERMINATED`:return!0;default:return!1}}function Ko(e){switch(e){case`CLONE_PENDING`:case`PENDING_UPGRADE`:return!0;default:return!1}}function qo(e){switch(e){case`PROVISIONING`:case`CLONING`:case`CLONE_READY`:case`UPDATING_HDB_NODES`:case`DRAINING`:case`UPDATING`:return!0;default:return!1}}function Jo({typeOfThingBeingDeleted:e,nameOfThingBeingDeleted:t,isModalOpen:n,hideDataLossWarning:r,setIsModalOpen:i,deletionConfirmed:a,deletionPending:o,trigger:s,presentParticiple:c=`Deleting`,transitiveVerb:l=`Delete`}){return(0,W.jsxs)(qt,{open:n,onOpenChange:i,children:[s&&(0,W.jsx)(Gt,{asChild:!0,children:s}),(0,W.jsxs)(tn,{className:`sm:max-w-[750px]`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsxs)(Jt,{children:[`Are you sure you want to `,l.toLowerCase(),` this `,e,`?`]}),(0,W.jsx)(Ht,{children:`This action cannot be undone.`})]}),!r&&(0,W.jsxs)(`div`,{className:`p-3 my-5 text-white rounded-md bg-amber-600`,children:[(0,W.jsxs)(`p`,{className:`flex space-x-1 font-semibold align-baseline`,children:[(0,W.jsx)(ei,{className:`inline-block size-5`}),` `,(0,W.jsx)(`span`,{children:`Warning`})]}),(0,W.jsxs)(`p`,{className:`pt-2 text-base`,children:[`By `,c.toLowerCase(),` `,e,` `,(0,W.jsx)(`span`,{className:`font-semibold`,children:t}),` `,`you will lose the data stored in it permanently.`]})]}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-center space-x-5`,children:[(0,W.jsxs)(F,{type:`button`,onClick:()=>i(!1),children:[(0,W.jsx)(an,{}),` Cancel`]}),(0,W.jsxs)(F,{variant:`destructive`,onClick:a,disabled:o,children:[(0,W.jsx)($r,{}),` `,l]})]})})]})]})}function Yo({...e}){return(0,W.jsx)(St,{"data-slot":`context-menu`,...e})}function Xo({...e}){return(0,W.jsx)(dt,{"data-slot":`context-menu-trigger`,...e})}function Zo({className:e,...t}){return(0,W.jsx)(Qe,{children:(0,W.jsx)(lt,{"data-slot":`context-menu-content`,className:P(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border p-1 shadow-md`,e),...t})})}function Qo({className:e,inset:t,variant:n=`default`,...r}){return(0,W.jsx)(ut,{"data-slot":`context-menu-item`,"data-inset":t,"data-variant":n,className:P(`focus:bg-accent focus:text-grey dark:focus:bg-white/15 dark:focus:text-white`,`data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10`,`dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive`,`data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground`,`relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm`,`outline-hidden select-none`,`data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r})}function $o({className:e,inset:t,...n}){return(0,W.jsx)(Xe,{"data-slot":`context-menu-label`,"data-inset":t,className:P(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function es({className:e,...t}){return(0,W.jsx)(Ze,{"data-slot":`context-menu-separator`,className:P(`bg-border -mx-1 my-1 h-px`,e),...t})}function ts({className:e,...t}){return(0,W.jsx)(`span`,{"data-slot":`context-menu-shortcut`,className:P(`text-muted-foreground ml-auto text-xs tracking-widest`,e),...t})}var ns={dropdown:{Item:di,Label:pi,Separator:mi},context:{Item:Qo,Label:$o,Separator:es}};function rs(e,t){let{Item:n,Label:r,Separator:i}=ns[t];return e.map(e=>{if(e.type===`separator`)return(0,W.jsx)(i,{},e.key);if(e.type===`label`)return(0,W.jsx)(r,{className:e.className,children:e.label},e.key);let t=(0,W.jsxs)(n,{className:e.className,onClick:e.onClick,disabled:e.disabled,variant:e.variant,children:[e.icon,e.label]});return e.to?(0,W.jsx)(V,{to:e.to,disabled:e.disabled,children:t},e.key):(0,W.jsx)(G.Fragment,{children:t},e.key)})}function is({items:e,children:t}){return e.length?(0,W.jsxs)(Yo,{children:[(0,W.jsx)(Xo,{asChild:!0,children:t}),(0,W.jsx)(Zo,{children:rs(e,`context`)})]}):(0,W.jsx)(W.Fragment,{children:t})}function as(e,t,n,r){return e?e.super_user===!0||e.structure_user===!0||e[t]?.tables?.[n]?.[r]===!0:!1}function os(e){let{user:t}=Ie(),{organizationId:n}=L({strict:!1});if(Ve(t))return{update:!0,remove:!0};let r=t?.roles?.[e??n];return!r||`oauthProviders`in r||!r.permission&&!r.organization?{update:!1,remove:!1}:r.permission?.super_user?{update:!0,remove:!0}:{update:r.organization.update,remove:r.organization.delete}}function ss(e){let{user:t}=Ie(),{organizationId:n}=L({strict:!1});if(Ve(t))return{create:!0,remove:!0,update:!0,view:!0};let r=t?.roles?.[e??n];if(!r||`oauthProviders`in r||!r.permission&&!r.organization?.roles)return{create:!1,remove:!1,update:!1,view:!1};if(r.permission?.super_user)return{create:!0,remove:!0,update:!0,view:!0};let i=r.organization.roles;return{create:i.create,remove:i.delete,update:i.update,view:i.view}}function cs(e,t){let{user:n}=Ie(),{organizationId:r,clusterId:i}=L({strict:!1});return ls(n,e??r,t??i)}function ls(e,t,n){if(Ve(e))return{create:!0,remove:!0,update:!0,view:!0};let r=e?.roles?.[t];if(!r||`oauthProviders`in r||!r.permission&&!r.organization?.clusters)return{create:!1,remove:!1,update:!1,view:!1};if(r.permission?.super_user)return{create:!0,remove:!0,update:!0,view:!0};let i=r.organization.clusters.resources?.find(e=>e.id===n),a=r.organization.clusters;return{create:a.create,remove:i?i.delete:a.delete,update:i?i.update:a.update,view:i?i.view:a.view}}function us(e,t){let{user:n}=Ie(),{organizationId:r,clusterId:i}=L({strict:!1});return ds(n,e??r,t??i)}function ds(e,t,n){if(Ve(e))return{create:!0,remove:!0,update:!0,view:!0};let r=e?.roles?.[t];if(!r||`oauthProviders`in r||!r.permission&&!r.organization?.clusters)return{create:!1,remove:!1,update:!1,view:!1};if(r.permission?.super_user)return{create:!0,remove:!0,update:!0,view:!0};let i=r.organization.clusters.resources?.find(e=>e.id===n)?.instances,a=r.organization.clusters;return{create:i?i.create:a.create,remove:i?i.delete:a.delete,update:i?i.update:a.update,view:i?i.view:a.view}}function fs(e){let{clusterId:t,instanceId:n}=L({strict:!1}),{user:r}=Fe(e??n??t),i=r?.role?.permission;return i?i.super_user===!0:!1}function ps(e){let{clusterId:t,instanceId:n}=L({strict:!1}),{user:r}=Fe(e??n??t),i=r?.role?.permission;return i?i.super_user===!0||i.structure_user===!0:!1}function ms(e,t,n,r){let{clusterId:i,instanceId:a}=L({strict:!1}),{user:o}=Fe(e??a??i);return as(o?.role?.permission,t,n,r)}function hs(e){return!!e?.plans?.[0]?.planId?.startsWith(`self-hosted`)}function gs({cluster:e,hasCardLink:t=!1}){let{view:n,update:r}=cs(e.organizationId,e.id),i=`/${e.organizationId}/${e.id}`;if(n)return hs(e)?(0,W.jsx)(_s,{cluster:e,hasCardLink:t}):e.fqdn?e.resetPassword?r?(0,W.jsx)(V,{to:`${i}/finish-setup`,className:`text-sm text-nowrap`,"aria-label":`Set Password on ${e.name}`,title:`Set Password on ${e.name}`,children:(0,W.jsxs)(F,{variant:`positive`,className:`py-2 hover:border-b-2 animate-glow-pulse`,children:[`Finish Setup `,(0,W.jsx)(Dn,{className:`inline-block`})]})}):(0,W.jsx)(`span`,{className:`py-2 text-nowrap`,children:`Pending Owner Setup`}):(0,W.jsx)(_s,{cluster:e,hasCardLink:t}):t?(0,W.jsxs)(`span`,{className:`text-sm text-nowrap py-2 ml-auto`,children:[`Instances `,(0,W.jsx)(Dn,{className:`inline-block`})]}):(0,W.jsx)(V,{to:`${i}/instances`,className:`text-sm text-nowrap`,"aria-label":`View ${e.name}`,title:`View ${e.name}`,children:(0,W.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Instances `,(0,W.jsx)(Dn,{className:`inline-block`})]})})}function _s({cluster:e,hasCardLink:t}){return t?(0,W.jsxs)(`span`,{className:`text-sm text-nowrap py-2 ml-auto`,children:[`Open `,(0,W.jsx)(Dn,{className:`inline-block`})]}):(0,W.jsx)(V,{to:`/${e.organizationId}/${e.id}`,className:`text-sm text-nowrap`,"aria-label":`Open ${e.name}`,title:`Open ${e.name}`,children:(0,W.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Open `,(0,W.jsx)(Dn,{className:`inline-block`})]})})}function vs({clusterName:e,isPending:t,stopOpen:n,setStopOpen:r,onConfirmStop:i,restartOpen:a,setRestartOpen:o,onConfirmRestart:s}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(qt,{open:n,onOpenChange:r,children:(0,W.jsxs)(tn,{className:`sm:max-w-[560px]`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsxs)(Jt,{children:[`Stop cluster `,e,`?`]}),(0,W.jsx)(Ht,{children:`This stops every instance in the cluster. It will be offline and stop serving traffic until you start it again.`})]}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(F,{type:`button`,variant:`defaultOutline`,onClick:()=>r(!1),children:`Cancel`}),(0,W.jsx)(F,{type:`button`,variant:`destructive`,onClick:i,disabled:t,children:`Stop cluster`})]})})]})}),(0,W.jsx)(qt,{open:a,onOpenChange:o,children:(0,W.jsxs)(tn,{className:`sm:max-w-[560px]`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsxs)(Jt,{children:[`Restart cluster `,e]}),(0,W.jsx)(Ht,{children:`Choose how to restart the cluster's instances.`})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-3 py-2`,children:[(0,W.jsxs)(`button`,{type:`button`,disabled:t,onClick:()=>s(`rolling`),className:`rounded-lg border border-border p-4 text-left transition-colors hover:border-primary hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary disabled:opacity-60`,children:[(0,W.jsxs)(`div`,{className:`font-medium`,children:[`Rolling `,(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`(recommended)`})]}),(0,W.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`One instance at a time, waiting for each to rejoin before moving on. No downtime.`})]}),(0,W.jsxs)(`button`,{type:`button`,disabled:t,onClick:()=>s(`parallel`),className:`rounded-lg border border-border p-4 text-left transition-colors hover:border-primary hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary disabled:opacity-60`,children:[(0,W.jsx)(`div`,{className:`font-medium`,children:`Parallel`}),(0,W.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`All instances at once. Faster, but the whole cluster is briefly offline.`})]})]}),(0,W.jsx)(Ut,{children:(0,W.jsx)(F,{type:`button`,variant:`defaultOutline`,onClick:()=>o(!1),children:`Cancel`})})]})})]})}function ys(e,t){let n=[];if(e)for(let r of e)n.push(r[t]);return n}function bs({cluster:e,forceProgressBarVisible:t}){let[n,r]=(0,G.useState)(t||!1),{data:i}=R(Ba(n&&e.id,2e3));(0,G.useEffect)(function(){(Ko(e.status)||qo(e.status))&&r(!0)},[n,e.status,i?.instances]);let a=(0,G.useMemo)(()=>{let e=ys(i?.plans??[],`planId`),t=i?.instances??[],n=0,r={},a=0,o={},s=0,c={},l=0,u={};for(let i of t){let t=i.status;!t||Go(t)||(Ko(t)?(n+=1,r[t]=`${n} ${Ea(t)}`):qo(t)?(a+=1,o[t]=`${a} ${Ea(t)}`):Wo(t)?(l+=1,u[t]=`${l} ${Ea(t)}`):!i.planId||!e.includes(i.planId)?(a+=1,o.DRAINING_TRAFFIC=`${a} ${Ea(`Draining Traffic`)}`):Uo(t)&&(s+=1,c[t]=`${s} ${Ea(t)}`))}let d=n+a+s;return{pendingWidth:`${d===0?100:n===0?0:n/d*100}%`,updatingWidth:`${a===0?0:a/d*100}%`,failedWidth:`${l===0?0:l/d*100}%`,runningWidth:`${s===0?0:s/d*100}%`,text:[...Object.values(c).sort(),...Object.values(u).sort(),...Object.values(o).sort(),...Object.values(r).sort()].join(` · `)}},[i]);return n?(0,W.jsxs)(`div`,{className:`w-full text-center`,children:[(0,W.jsxs)(`div`,{className:`w-full h-2.5 rounded-full overflow-clip flex shadow`,children:[(0,W.jsx)(`div`,{style:{width:a.runningWidth},className:`grow bg-green/80 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`}),(0,W.jsx)(`div`,{style:{width:a.failedWidth},className:`grow bg-red/80 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`}),(0,W.jsx)(`div`,{style:{width:a.updatingWidth},className:`grow animate-pulse bg-yellow/80 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`}),(0,W.jsx)(`div`,{style:{width:a.pendingWidth},className:`grow bg-gray-600 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`})]}),a.text&&(0,W.jsx)(`div`,{className:`text-xs text-muted-foreground font-light mt-2`,children:a.text})]}):null}function xs({open:e,setOpen:t,action:n,targetName:r,scope:i,isPending:a,onConfirm:o}){let s=n===`start`?`Start`:`Restart`;return(0,W.jsx)(qt,{open:e,onOpenChange:t,children:(0,W.jsxs)(tn,{className:`sm:max-w-[560px]`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsxs)(Jt,{className:`flex items-center gap-2`,children:[(0,W.jsx)(gr,{className:`size-5 text-yellow`}),s,` `,r,` in safe mode?`]}),(0,W.jsxs)(Ht,{children:[`Safe mode boots Harper`,` `,(0,W.jsx)(`strong`,{className:`text-foreground`,children:`without loading your applications or components`}),`. Use it to recover `,i===`cluster`?`a cluster`:`an instance`,` `,`that a bad app, component, or config is keeping from starting. Then fix or remove what's broken and`,` `,n===`start`?`start`:`restart`,` normally to bring everything back.`]})]}),(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:i===`cluster`?`All instances are ${n===`start`?`started`:`restarted`} at once (parallel)${n===`restart`?`, so expect a brief interruption while they come back.`:`.`}`:`The instance ${n===`start`?`starts`:`restarts`} in safe mode${n===`restart`?`, so expect a brief interruption while it comes back.`:`.`}`}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(F,{type:`button`,variant:`defaultOutline`,onClick:()=>t(!1),children:`Cancel`}),(0,W.jsxs)(F,{type:`button`,variant:`warning`,onClick:o,disabled:a,children:[(0,W.jsx)(gr,{}),` `,s,` in safe mode`]})]})})]})})}async function Ss(e){let{data:t}=await N.delete(`/Cluster/${e}`,{timeout:0});return t}function Cs(){return I({mutationFn:e=>Ss(e)})}async function ws({clusterId:e,action:t,safeMode:n,strategy:r}){let i={};n!==void 0&&(i.safeMode=n),r!==void 0&&(i.strategy=r);let{data:a}=await N.post(`/Cluster/${e}/container/${t}`,i);return a}function Ts(){return I({mutationFn:ws})}var Es={stop:`Stopping`,start:`Starting`,restart:`Restarting`};function Ds(e){let{mutateAsync:t,isPending:n}=Ts(),r=ie();return{run:(0,G.useCallback)(async(n,i)=>{let a=i?.label??Es[n],o=H.loading(a,{description:`${a} cluster ${e.name}. Status will update automatically.`,duration:3e4,action:{label:`Dismiss`,onClick:()=>H.dismiss()}});try{await t({clusterId:e.id,action:n,safeMode:i?.safeMode,strategy:i?.strategy}),r.invalidateQueries({queryKey:[e.organizationId]}),r.invalidateQueries({queryKey:[e.id]}),H.dismiss(o),H.success(`Request accepted`,{description:`${e.name} is ${a.toLowerCase()}. The status will update automatically.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}})}catch{H.dismiss(o)}},[e.id,e.name,e.organizationId,t,r]),isPending:n}}async function Os(e){if(!navigator.clipboard)return H.error(`Clipboard access is not available in this environment.`),!1;try{return await navigator.clipboard.writeText(e),!0}catch{return H.error(`Failed to copy to clipboard.`),!1}}function ks(e){Os(e).then(e=>{e&&H.info(`Copied to clipboard!`,{icon:(0,W.jsx)(Un,{}),duration:1e3})})}function As(...e){return(0,G.useMemo)(()=>e.map(e=>()=>ks(e)),e)}function js(){return ks}function Ms({cluster:e}){let t=ne(),n=ie(),r=(0,G.useMemo)(()=>s(e),[e]),i=Hi({operationsUrl:r}),a=Fe(e.id),[,o]=vn(bn.SavedClusterState,null),{view:c,update:l,remove:f,create:p}=cs(e.organizationId,e.id),{mutate:m,isPending:h}=Cs(),[g,_]=(0,G.useState)(!1),[v,y]=(0,G.useState)(!1),[b,x]=(0,G.useState)(!1),[S,C]=(0,G.useState)(!1),[w,T]=(0,G.useState)(null),{run:E,isPending:D}=Ds(e),O=e.status===`RUNNING`,k=e.status===`STOPPED`,A=e.status===`PARTIAL`,j=e.status===`STOPPING`||e.status===`STARTING`||e.status===`RESTARTING`,ee=j||k||A,M=(0,G.useMemo)(()=>!!(e.status&&Na.includes(e.status)),[e.status]),N=hs(e),P=l&&!N,F=u.checkForFabricConnect(e.id),I=!F&&!!a.user,L=(0,G.useMemo)(()=>!!(e.status&&Pa.includes(e.status)),[e.status]),te=(0,G.useMemo)(()=>!!(e.status&&Wo(e.status)),[e.status]),re=l&&!N&&!L&&!qo(e.status)&&!Ko(e.status),ae=(0,G.useCallback)(async()=>{_(!0);let t=await za(e.id).catch(e=>(console.error(`Failed to lookup cluster details, proceeding without checking instances.`,e),null));if(await d({entityId:e.id,instanceClient:i}),t?.instances?.length)for(let e of t.instances)u.setUserForEntity(e,null);u.setUserForEntity(e,null)},[e,i]),R=(0,G.useCallback)(()=>{o(e),t.navigate({to:`/${e.organizationId}/new-cluster`})},[e,t,o]),oe=(0,G.useCallback)(()=>y(!0),[]),se=(0,G.useCallback)(()=>{let r=e.organizationId;m(e.id,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[r],refetchType:`active`}),await t.invalidate(),H.success(`Success`,{description:N?`Cluster successfully removed.`:`Cluster successfully terminated.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),y(!1)},onError:()=>{H.error(`Error`,{description:N?`Failed to remove cluster: ${e.name}`:`Failed to terminate cluster: ${e.name}.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),y(!1)}})},[t,e.organizationId,e.id,e.name,m,N,n]),ce=!c||L?void 0:e.status===`STOPPED`?`/${e.organizationId}/${e.id}/instances`:e.status===`PARTIAL`?`/${e.organizationId}/${e.id}`:M?N?`/${e.organizationId}/${e.id}`:e.fqdn?e.resetPassword?void 0:`/${e.organizationId}/${e.id}`:`/${e.organizationId}/${e.id}/instances`:void 0,le=e.domains?.[0]?.domain||e.fqdn,[z,ue]=As(`${le}`,`https://${le}`),de=[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`label-separator`},M&&l&&!a.isLoading&&(!I||F)&&{key:`sign-in`,to:`${e.id}/sign-in`,disabled:g,icon:(0,W.jsx)(mr,{className:`text-green`}),label:`Direct Sign In`},M&&c&&!!r&&!a.isLoading&&I&&{key:`direct-sign-out`,onClick:ae,disabled:g,label:`Direct Sign Out`},M&&l&&{key:`edit`,to:`${e.id}/edit`,disabled:g,icon:(0,W.jsx)(Lr,{className:`text-purple-600`}),label:N?`Edit`:`Edit Scaling`},re&&{key:`edit-version`,to:`${e.id}/edit/version`,disabled:g,icon:(0,W.jsx)(sr,{className:`text-fuchsia-300`}),label:`Edit Version`},M&&l&&!1,M&&c&&{key:`instances`,to:`${e.id}/instances`,disabled:g,icon:(0,W.jsx)(zr,{className:`text-orange-300`}),label:`Instances`},M&&c&&!!a.user&&{key:`deployments`,to:`${e.id}/config/deployments`,disabled:g,icon:(0,W.jsx)(Nr,{className:`text-sky-400`}),label:`Deployments`},P&&(O||k||A)&&{type:`separator`,key:`container-separator`},P&&(O||k||A)&&{type:`label`,key:`container-label`,className:`text-gray-600 text-xs`,label:`Container`},P&&(k||A)&&{key:`container-start`,disabled:D,onClick:()=>void E(`start`,{safeMode:!1,strategy:`parallel`}),icon:(0,W.jsx)(jr,{}),label:`Start`},P&&k&&{key:`container-start-safe`,disabled:D,onClick:()=>T(`start`),icon:(0,W.jsx)(gr,{}),label:`Start in safe mode`},P&&(O||A)&&{key:`container-restart`,disabled:D,onClick:()=>C(!0),icon:(0,W.jsx)(Fr,{}),label:`Restart`},P&&O&&{key:`container-restart-safe`,disabled:D,onClick:()=>T(`restart`),icon:(0,W.jsx)(gr,{}),label:`Restart in safe mode`},P&&(O||A)&&{key:`container-stop`,variant:`destructive`,disabled:D,onClick:()=>x(!0),icon:(0,W.jsx)(Gr,{}),label:`Stop`},M&&c&&!!e.fqdn&&{type:`separator`,key:`copy-separator`},M&&c&&!!e.fqdn&&{key:`copy-host-name`,onClick:z,disabled:g,icon:(0,W.jsx)(Wn,{}),label:`Copy Host Name`},M&&c&&!!e.fqdn&&{key:`copy-api-url`,onClick:ue,disabled:g,icon:(0,W.jsx)(Wn,{}),label:`Copy API URL`},te&&p&&{key:`try-again`,onClick:R,className:`focus:bg-green/70 focus:text-white`,label:`Try Again`},!L&&f&&M&&{type:`separator`,key:`remove-separator`},!L&&f&&{key:`remove`,onClick:oe,className:`focus:bg-red/70 focus:text-white`,icon:(0,W.jsx)($r,{className:`text-red-300`}),label:N?`Remove`:`Terminate`}].filter(Xi);return(0,W.jsx)(is,{items:L?[]:de,children:(0,W.jsxs)(Lt,{className:`relative h-full justify-between transition-[transform,box-shadow] duration-200 ${ce?`hover:scale-[1.02] hover:shadow-lg hover:ring-2 hover:ring-primary/60 dark:hover:ring-violet-400/70`:`hover:shadow-lg`}`,children:[ce&&(0,W.jsx)(V,{to:ce,"aria-label":`${N||e.fqdn?`Open`:`View`} ${e.name}`,className:`absolute inset-0 rounded-[inherit] focus-visible:ring-2 focus-visible:ring-purple-200 focus-visible:outline-none`}),(0,W.jsxs)(Pt,{children:[(0,W.jsxs)(It,{className:`flex items-center justify-between`,children:[le?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`truncate max-w-48`,children:le}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Copy host name`,onClick:e=>{e.stopPropagation(),z()},className:`relative z-10 -m-1.5 p-1.5 rounded-md text-muted-foreground cursor-pointer hover:bg-accent/60 hover:text-foreground`,children:(0,W.jsx)(Yn,{size:16})}),(0,W.jsx)(`span`,{className:`grow`})]}):(0,W.jsx)(`span`,{children:`Self-Hosted`}),!L&&(0,W.jsxs)(ci,{children:[(0,W.jsx)(li,{"aria-label":`Cluster options`,onClick:e=>e.stopPropagation(),className:`relative z-10 -m-2 p-2 rounded-md hover:bg-accent/60`,children:(0,W.jsx)(Qn,{})}),(0,W.jsx)(ui,{children:rs(de,`dropdown`)})]})]}),(0,W.jsx)(Nt,{children:(0,W.jsx)(`h2`,{children:e.name})})]}),(0,W.jsxs)(Ft,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(bs,{cluster:e}),M&&c&&(0,W.jsx)(gs,{cluster:e,hasCardLink:!!ce}),ee&&e.status&&(0,W.jsxs)(ao,{variant:k?`destructive`:`warning`,children:[j&&(0,W.jsx)(vr,{className:`animate-spin`}),Ea(e.status)]}),te&&e.status&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ao,{variant:Vo(e.status),children:Ea(e.status)}),(0,W.jsx)(`span`,{className:`text-xs`,children:`Click "..." to choose how to proceed.`})]})]}),(0,W.jsx)(Jo,{typeOfThingBeingDeleted:`cluster`,transitiveVerb:N?`Remove`:`Terminate`,presentParticiple:N?`Removing`:`Terminating`,nameOfThingBeingDeleted:e.name,isModalOpen:v,hideDataLossWarning:N,setIsModalOpen:e=>y(e),deletionConfirmed:se,deletionPending:h}),(0,W.jsx)(vs,{clusterName:e.name,isPending:D,stopOpen:b,setStopOpen:x,onConfirmStop:()=>{x(!1),E(`stop`,{strategy:`parallel`})},restartOpen:S,setRestartOpen:C,onConfirmRestart:e=>{C(!1),E(`restart`,{safeMode:!1,strategy:e})}}),(0,W.jsx)(xs,{open:w!==null,setOpen:e=>{e||T(null)},action:w??`restart`,targetName:e.name,scope:`cluster`,isPending:D,onConfirm:()=>{let e=w;T(null),e&&E(e,{safeMode:!0,strategy:`parallel`,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})}})]})})}function Ns({overEmail:e}){return(0,W.jsx)(`a`,{href:e?`mailto:support@harperdb.io`:`https://discord.com/channels/1415002037439041710/1415002038286286994`,target:`_blank`,rel:`noreferrer`,className:`underline`,children:`Contact us`})}function Ps({children:e,className:t}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Bo,{}),(0,W.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))] relative ${t??``}`,children:e})]})}function Fs({children:e}){let{organizationId:t,clusterId:n}=L({strict:!1}),{view:r,update:i}=cs(t,n),{data:a}=R(Ba(n,!1)),o=a?hs(a):!1,s=`/${t}/${n}`;return(0,W.jsx)(`div`,{className:`relative mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,W.jsxs)(`div`,{className:`md:grid gap-6 md:grid-cols-12`,children:[(0,W.jsx)(`aside`,{className:`md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,W.jsx)(Ci,{items:[{to:s,label:`Overview`,icon:hr,exact:!0},i&&{to:`${s}/edit`,label:o?`Configuration`:`Scaling`,icon:or,exact:!0},i&&!o&&{to:`${s}/edit/version`,label:`Version`,icon:Yr,exact:!0},i&&!o&&{to:`${s}/domains`,label:`Domains`,icon:cr},r&&{to:`${s}/instances`,label:`Instances`,icon:zr}].filter(Boolean),ariaLabel:`Cluster sections`})}),(0,W.jsx)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:e})]})})}async function Is(e){let{data:t}=await N.get(`/Plan/`,{params:{organizationId:e}});return t}function Ls(e){return B({queryKey:[e,`instancePlan`],queryFn:()=>Is(e),retry:!1})}var Rs=[`stable`,`next`,`beta`,`alpha`];function zs(e){let t=Rs.indexOf(e);return t===-1?Rs.length:t}function Bs(e){let t=new Map;for(let n of e){let e=t.get(n.version);(!e||zs(n.name)<zs(e.name))&&t.set(n.version,n)}return[...t.values()]}async function Vs(e){let{data:t}=await N.get(`/HarperVersions/`,{params:{organizationId:e}}),n=t;return{...n,value:Bs(n.value)}}function Hs(e){return B({queryKey:[e,`HarperVersions`],queryFn:()=>Vs(e),staleTime:6e4,retry:!1})}async function Us({organizationId:e,availableHosts:t}={}){let{data:n}=await N.get(`/Region/`,{params:{availableHosts:t,organizationId:e}});return n}function Ws({organizationId:e,availableHosts:t}={}){return B({queryKey:[e,`regionLocations`,t],queryFn:()=>Us({organizationId:e,availableHosts:t}),retry:!1})}function Gs(e){return(t,n)=>t[e]===n[e]?0:t[e]>n[e]?1:-1}function Ks(e){let t=e.split(`.`).map(Number);return(t[0]<<24|t[1]<<16|t[2]<<8|t[3])>>>0}function qs(e){return typeof e==`string`&&/^(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|1?\d?\d)){3}$/.test(e)}function Js(e,t){return e.instanceFqdn===t.instanceFqdn?e.operationsApiPort-t.operationsApiPort:qs(e.instanceFqdn)&&qs(t.instanceFqdn)?Ks(e.instanceFqdn)-Ks(t.instanceFqdn):e.instanceFqdn>t.instanceFqdn?1:-1}function Ys(e,t){let n={};for(let r of e){let e=r[t];if(e!==void 0)if(Array.isArray(e))for(let t of e)n[t]||(n[t]=[]),n[t].push(r);else n[e]||(n[e]=[]),n[e].push(r)}return n}function Xs(e,t){let n={};for(let r of e){let e=r[t];if(e!==void 0)if(Array.isArray(e))for(let t of e)n[t]=r;else n[e]=r}return n}function Zs(e,t,n){let r=Ys(e,t),i={};for(let e in r)i[e]=Xs(r[e],n);return i}function Qs({duration:e,message:t,lateMessage:n}){let r=(0,G.useRef)(0),i=(0,G.useRef)(0),[a,o]=(0,G.useState)(!1),[s,c]=(0,G.useState)(`5%`),l=(0,G.useCallback)(function t(n){i.current||=n;let a=n-i.current,s=Math.min(a/e,1);c(Math.max(5,s*100)+`%`),s<1?r.current=requestAnimationFrame(t):o(!0)},[e]);return(0,G.useEffect)(()=>(r.current=requestAnimationFrame(l),()=>cancelAnimationFrame(r.current)),[l]),(0,W.jsxs)(W.Fragment,{children:[a?n:t,(0,W.jsx)(sn,{width:s,animated:!1})]})}async function $s(e){let{data:t}=await N.post(`/Cluster/`,e,{timeout:0});return t}function ec(){return I({mutationFn:e=>$s(e)})}async function tc(e){let{id:t,...n}=e,{data:r}=await N.put(`/Cluster/${t}`,n,{timeout:0});return r}function nc(){return I({mutationFn:e=>tc(e)})}function rc(e){return!!e&&e!==`undefined`&&e!==`null`}async function ic(e){if(!rc(e))throw Error(`getOrganization called without a valid organization id (got: ${e})`);let{data:t}=await N.get(`/Organization/${e}`);return t}function ac(e){return B({queryKey:[e],queryFn:()=>ic(e),retry:!1,enabled:rc(e),refetchInterval:1e4})}var oc=`ENTERPRISE`;function sc(e,t){if(t<=0)return``;if(e.length<=t)return e;let n=e.split(`-`);if(n.length===1)return n[0].slice(0,t);let r=[n[0],...n.slice(1).map(e=>e.charAt(0))],i=r.join(`-`);if(i.length<=t)return i;let a=r.slice(1).join(``).length,o=r.length-1,s=t-a-o;if(s>0)return r[0]=r[0].slice(0,s),r.join(`-`);{let e=[],i=0;t>0&&(e.push(n[0].charAt(0)),i=1);for(let n=1;n<r.length&&i+2<=t;n++)e.push(r[n]),i+=2;return e.join(`-`)}}function cc(e,t,n=`-`){let r=t.split(n)[0];return e.findIndex(e=>e.startsWith(r))!==-1}function lc(e){return e.replace(/[^a-zA-Z0-9]/g,`-`).replace(/([a-z])([A-Z])/g,`$1-$2`).toLowerCase().replace(/-+/g,`-`).replace(/^-+|-+$/g,``)}function uc(e){return e!==void 0&&e>0}function dc(e,t,n){return t===void 0?Promise.resolve():e.invalidateQueries({predicate:e=>e.queryKey[0]===t||e.queryKey[1]===t,...n})}async function fc(e){await N.put(`/Payment/`,e)}function pc(){return I({mutationFn:e=>fc(e)})}function mc(e){let{mutate:t}=pc();return(0,G.useCallback)((n,r)=>{t({paymentMethodId:typeof n==`string`?n:n.id,organizationId:e},{onSuccess:()=>{H.success(`Success! Your payment method has been saved.`),r(!0)},onError:()=>{H.error(`Failed to process payment method details. Please try another payment method.`),r(!1)}})},[t,e])}var hc=(0,G.createContext)(null);function gc(){return(0,G.useContext)(hc)}var _c=n(((e,t)=>{t.exports=`SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED`})),vc=n(((e,t)=>{var n=_c();function r(){}function i(){}i.resetWarningCache=r,t.exports=function(){function e(e,t,r,i,a,o){if(o!==n){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name=`Invariant Violation`,s}}e.isRequired=e;function t(){return e}var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return a.PropTypes=a,a}})),yc=n(((e,t)=>{t.exports=vc()()})),bc=e(yc(),1);function xc(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Sc(e){if(Array.isArray(e))return e}function Cc(e,t,n){return(t=Mc(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function wc(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function Tc(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
11
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ec(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Dc(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Ec(Object(n),!0).forEach(function(t){Cc(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ec(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Oc(e,t){if(e==null)return{};var n,r,i=kc(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function kc(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function Ac(e,t){return Sc(e)||wc(e,t)||Pc(e,t)||Tc()}function jc(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Mc(e){var t=jc(e,`string`);return typeof t==`symbol`?t:t+``}function Nc(e){"@babel/helpers - typeof";return Nc=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Nc(e)}function Pc(e,t){if(e){if(typeof e==`string`)return xc(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?xc(e,t):void 0}}var Fc=function(e,t,n){var r=!!n,i=G.useRef(n);G.useEffect(function(){i.current=n},[n]),G.useEffect(function(){if(!r||!e)return function(){};var n=function(){if(i.current)return i.current.apply(i,arguments)};return e.on(t,n),function(){e.off(t,n)}},[r,t,e,i])},Ic=function(e){var t=G.useRef(e);return G.useEffect(function(){t.current=e},[e]),t.current},Lc=function(e){return e!==null&&Nc(e)===`object`},Rc=function(e){return Lc(e)&&typeof e.then==`function`},zc=function(e){return Lc(e)&&typeof e.elements==`function`&&typeof e.createToken==`function`&&typeof e.createPaymentMethod==`function`&&typeof e.confirmCardPayment==`function`},Bc=`[object Object]`,Vc=function e(t,n){if(!Lc(t)||!Lc(n))return t===n;var r=Array.isArray(t);if(r!==Array.isArray(n))return!1;var i=Object.prototype.toString.call(t)===Bc;if(i!==(Object.prototype.toString.call(n)===Bc))return!1;if(!i&&!r)return t===n;var a=Object.keys(t),o=Object.keys(n);if(a.length!==o.length)return!1;for(var s={},c=0;c<a.length;c+=1)s[a[c]]=!0;for(var l=0;l<o.length;l+=1)s[o[l]]=!0;var u=Object.keys(s);if(u.length!==a.length)return!1;var d=t,f=n;return u.every(function(t){return e(d[t],f[t])})},Hc=function(e,t,n){return Lc(e)?Object.keys(e).reduce(function(r,i){var a=!Lc(t)||!Vc(e[i],t[i]);return n.includes(i)?(a&&console.warn(`Unsupported prop change: options.${i} is not a mutable property.`),r):a?Dc(Dc({},r||{}),{},Cc({},i,e[i])):r},null):null},Uc="Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.",Wc=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Uc;if(e===null||zc(e))return e;throw Error(t)},Gc=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Uc;if(Rc(e))return{tag:`async`,stripePromise:Promise.resolve(e).then(function(e){return Wc(e,t)})};var n=Wc(e,t);return n===null?{tag:`empty`}:{tag:`sync`,stripe:n}},Kc=function(e){!e||!e._registerWrapper||!e.registerAppInfo||(e._registerWrapper({name:`react-stripe-js`,version:`6.7.0`}),e.registerAppInfo({name:`react-stripe-js`,version:`6.7.0`,url:`https://stripe.com/docs/stripe-js/react`}))},qc=G.createContext(null);qc.displayName=`ElementsContext`;var Jc=function(e,t){if(!e)throw Error(`Could not find Elements context; You need to wrap the part of your app that ${t} in an <Elements> provider.`);return e},Yc=function(e){var t=e.stripe,n=e.options,r=e.children,i=G.useMemo(function(){return Gc(t)},[t]),a=Ac(G.useState(function(){return{stripe:i.tag===`sync`?i.stripe:null,elements:i.tag===`sync`?i.stripe.elements(n):null}}),2),o=a[0],s=a[1];G.useEffect(function(){var e=!0,t=function(e){s(function(t){return t.stripe?t:{stripe:e,elements:e.elements(n)}})};return i.tag===`async`&&!o.stripe?i.stripePromise.then(function(n){n&&e&&t(n)}):i.tag===`sync`&&!o.stripe&&t(i.stripe),function(){e=!1}},[i,o,n]);var c=Ic(t);G.useEffect(function(){c!==null&&c!==t&&console.warn("Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.")},[c,t]);var l=Ic(n);return G.useEffect(function(){if(o.elements){var e=Hc(n,l,[`clientSecret`,`fonts`]);e&&o.elements.update(e)}},[n,l,o.elements]),G.useEffect(function(){Kc(o.stripe)},[o.stripe]),G.createElement(qc.Provider,{value:o},r)};Yc.propTypes={stripe:bc.default.any,options:bc.default.object};var Xc=function(e){return Jc(G.useContext(qc),e)},Zc=function(){return Xc(`calls useElements()`).elements},Qc=function(e){var t=e.children;return t(Xc(`mounts <ElementsConsumer>`))};Qc.propTypes={children:bc.default.func.isRequired};var $c=G.createContext(null);$c.displayName=`CheckoutContext`;var el=function(e){var t=G.useContext($c),n=G.useContext(qc);if(t){if(n)throw Error(`You cannot wrap the part of your app that ${e} in both a checkout provider and <Elements> provider.`);return t}else return Jc(n,e)},tl=[`mode`],nl=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},rl=function(e,t,n){var r=`${nl(e)}Element`,i=t?function(e){el(`mounts <${r}>`);var t=e.id,n=e.className;return G.createElement(`div`,{id:t,className:n})}:function(t){var n=t.id,i=t.className,a=t.options,o=a===void 0?{}:a,s=t.onBlur,c=t.onFocus,l=t.onReady,u=t.onChange,d=t.onEscape,f=t.onClick,p=t.onLoadError,m=t.onLoaderStart,h=t.onNetworksChange,g=t.onConfirm,_=t.onCancel,v=t.onShippingAddressChange,y=t.onShippingRateChange,b=t.onSavedPaymentMethodRemove,x=t.onSavedPaymentMethodUpdate,S=t.onAvailablePaymentMethodsChange,C=el(`mounts <${r}>`),w=`elements`in C?C.elements:null,T=`checkoutState`in C?C.checkoutState:null,E=T?.type===`success`||T?.type===`loading`?T.sdk:null,D=Ac(G.useState(null),2),O=D[0],k=D[1],A=G.useRef(null),j=G.useRef(null);Fc(O,`blur`,s),Fc(O,`focus`,c),Fc(O,`escape`,d),Fc(O,`click`,f),Fc(O,`loaderror`,p),Fc(O,`loaderstart`,m),Fc(O,`networkschange`,h),Fc(O,`confirm`,g),Fc(O,`cancel`,_),Fc(O,`shippingaddresschange`,v),Fc(O,`shippingratechange`,y),Fc(O,`savedpaymentmethodremove`,b),Fc(O,`savedpaymentmethodupdate`,x),Fc(O,`availablepaymentmethodschange`,S),Fc(O,`change`,u);var ee;l&&(ee=e===`expressCheckout`?l:function(){l(O)}),Fc(O,`ready`,ee),G.useLayoutEffect(function(){if(A.current===null&&j.current!==null&&(w||E)){var t=null;if(E){var n=E,i=E;switch(e){case`paymentForm`:t=i.createForm(o);break;case`payment`:t=n.createPaymentElement(o);break;case`address`:if(`mode`in o){var a=o.mode,s=Oc(o,tl);if(a===`shipping`)t=n.createShippingAddressElement(s);else if(a===`billing`)t=n.createBillingAddressElement(s);else throw Error(`Invalid options.mode. mode must be 'billing' or 'shipping'.`)}else throw Error(`You must supply options.mode. mode must be 'billing' or 'shipping'.`);break;case`expressCheckout`:t=n.createExpressCheckoutElement(o);break;case`currencySelector`:t=E.createCurrencySelectorElement();break;case`taxId`:t=n.createTaxIdElement(o);break;case`contactDetails`:t=n.createContactDetailsElement();break;default:throw Error(`<${r}> is not supported inside a checkout provider. Use an <Elements> provider instead.`)}}else w&&(t=w.create(e,o));A.current=t,k(t),t&&t.mount(j.current)}},[w,E,o]);var M=Ic(o);return G.useEffect(function(){if(A.current){var e=Hc(o,M,[`paymentRequest`]);e&&`update`in A.current&&A.current.update(e)}},[o,M]),G.useLayoutEffect(function(){return function(){if(A.current&&typeof A.current.destroy==`function`)try{A.current.destroy(),A.current=null}catch{}}},[]),G.createElement(`div`,{id:n,className:i,ref:j})};return i.propTypes={id:bc.default.string,className:bc.default.string,onChange:bc.default.func,onBlur:bc.default.func,onFocus:bc.default.func,onReady:bc.default.func,onEscape:bc.default.func,onClick:bc.default.func,onLoadError:bc.default.func,onLoaderStart:bc.default.func,onNetworksChange:bc.default.func,onConfirm:bc.default.func,onCancel:bc.default.func,onShippingAddressChange:bc.default.func,onShippingRateChange:bc.default.func,onSavedPaymentMethodRemove:bc.default.func,onSavedPaymentMethodUpdate:bc.default.func,onAvailablePaymentMethodsChange:bc.default.func,options:bc.default.object},i.displayName=r,i.__elementType=e,i},il=typeof window>`u`,al=G.createContext(null);al.displayName=`EmbeddedCheckoutProviderContext`;var ol=function(){return el(`calls useStripe()`).stripe};rl(`auBankAccount`,il),rl(`card`,il),rl(`cardNumber`,il),rl(`cardExpiry`,il),rl(`cardCvc`,il),rl(`currencySelector`,il),rl(`iban`,il);var sl=rl(`payment`,il);rl(`expressCheckout`,il),rl(`paymentRequestButton`,il),rl(`linkAuthentication`,il),rl(`contactDetails`,il);var cl=rl(`address`,il);rl(`shippingAddress`,il),rl(`paymentMethodMessaging`,il),rl(`taxId`,il),rl(`issuingCardNumberDisplay`,il),rl(`issuingCardCvcDisplay`,il),rl(`issuingCardExpiryDisplay`,il),rl(`issuingCardPinDisplay`,il),rl(`issuingCardCopyButton`,il);function ll({hasExistingBilling:e,onPaymentAdded:t,onSaveStateForBillingRedirect:n}){let{organizationId:r}=L({strict:!1}),i=ol(),a=gc(),o=Zc(),[s,c]=(0,G.useState)(!1),l=mc(r),u=(0,G.useCallback)(()=>{t(!1)},[t]);return(0,W.jsxs)(`form`,{id:`billing-add-payment-method-form`,name:`billing-add-payment-method-form`,onSubmit:(0,G.useCallback)(async e=>{if(e.preventDefault(),!i||!o)return;c(!0),await o.submit(),n?.(!0);let s=await i.confirmSetup({clientSecret:a.clientSecret,elements:o,redirect:`if_required`,confirmParams:{return_url:`${window.location.origin}/#/${r}/billing/confirm`}});s.error?(console.error(s.error.message),H.error(s.error.message),c(!1),n?.(!1)):s.setupIntent.payment_method&&(l(s.setupIntent.payment_method,t),n?.(!1))},[o,t,n,r,l,i,a.clientSecret]),className:`max-w-xl`,children:[(0,W.jsx)(sl,{}),(0,W.jsx)(cl,{options:{mode:`billing`}}),(0,W.jsxs)(`div`,{className:`mt-4 flex gap-8 items-center`,children:[(0,W.jsxs)(F,{disabled:!i||!o||s,variant:`submit`,children:[(0,W.jsx)(Ir,{}),` Add Payment Method`]}),e&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`text-xs text-gray-600`,children:`Your existing payment method will be overwritten.`}),(0,W.jsx)(F,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Cancel`})]})]})]})}var ul=`dahlia`,dl=`https://js.stripe.com`,fl=`${dl}/${ul}/stripe.js`,pl=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/,ml=/^https:\/\/js\.stripe\.com\/(v3|[a-z]+)\/stripe\.js(\?.*)?$/,hl=`loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used`,gl=function(e){return pl.test(e)||ml.test(e)},_l=function(){for(var e=document.querySelectorAll(`script[src^="${dl}"]`),t=0;t<e.length;t++){var n=e[t];if(gl(n.src))return n}return null},vl=function(e){var t=e&&!e.advancedFraudSignals?`?advancedFraudSignals=false`:``,n=document.createElement(`script`);n.src=`${fl}${t}`;var r=document.head||document.body;if(!r)throw Error(`Expected document.body not to be null. Stripe.js requires a <body> element.`);return r.appendChild(n),n},yl=null,bl=null,xl=null,Sl=function(e){return function(t){e(Error(`Failed to load Stripe.js`,{cause:t}))}},Cl=function(e,t){return function(){window.Stripe?e(window.Stripe):t(Error(`Stripe.js not available`))}},wl=function(e){return yl===null?(yl=new Promise(function(t,n){if(typeof window>`u`||typeof document>`u`){t(null);return}if(window.Stripe&&e&&console.warn(hl),window.Stripe){t(window.Stripe);return}try{var r=_l();if(r&&e)console.warn(hl);else if(!r)r=vl(e);else if(r&&xl!==null&&bl!==null){var i;r.removeEventListener(`load`,xl),r.removeEventListener(`error`,bl),(i=r.parentNode)==null||i.removeChild(r),r=vl(e)}xl=Cl(t,n),bl=Sl(n),r.addEventListener(`load`,xl),r.addEventListener(`error`,bl)}catch(e){n(e);return}}),yl.catch(function(e){return yl=null,Promise.reject(e)})):yl},Tl,El=function(){return Tl||(Tl=wl(null).catch(function(e){return Tl=null,Promise.reject(e)}),Tl)};Promise.resolve().then(function(){return El()}).catch(function(e){console.warn(e)});async function Dl(e){let{data:t}=await N.post(`/StripeAccount/`,e);return t}function Ol(){return I({mutationFn:e=>Dl(e)})}async function kl(e){let{data:t}=await N.post(`/Payment/`,{organizationId:e.organizationId});return t}function Al(){return I({mutationFn:e=>kl(e)})}function jl(e){let{enabled:t,existingStripeId:n,organizationId:r}=e,{mutate:i}=Ol(),{mutate:a}=Al(),[o,s]=(0,G.useState)(void 0);return(0,G.useEffect)(()=>{},[i,t,n,a,(0,G.useCallback)(e=>{s(e.clientSecret)},[]),r]),o}function Ml({children:e}){let{organizationId:t}=L({strict:!1}),{data:n}=R(ac(t)),r=jl({organizationId:t,enabled:!!n,existingStripeId:n?.stripeId}),i=ki();return(0,G.useMemo)(()=>({clientSecret:r||``,appearance:{theme:i===`dark`?`night`:`stripe`}}),[r,i]),console.error(`No VITE_PUBLIC_STRIPE_KEY is configured for this environment.`),(0,W.jsx)(`div`,{className:`mt-20 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:`Setting up your billing is currently disabled. Please check back again later.`})}function Nl({onPaymentAdded:e,onSaveStateForBillingRedirect:t}){let{organizationId:n}=L({strict:!1}),{data:r}=R(ac(n)),i=r?.billing,a=i?.paymentMethod;return(0,W.jsxs)(Ml,{children:[(0,W.jsx)(`div`,{className:`mt-2 mb-6`,children:!a&&`You currently have no payment method on file. Please fill out the secure form below.`}),(0,W.jsx)(ll,{hasExistingBilling:!!i,onSaveStateForBillingRedirect:t,onPaymentAdded:e})]})}var Pl=function(e){return e.PASS=`pass`,e.FAIL=`fail`,e.PENDING=`pending`,e.ERROR=`error`,e}({});function Fl(e){switch(e){case Pl.PASS:return`success`;case Pl.FAIL:case Pl.ERROR:return`destructive`;case Pl.PENDING:default:return`default`}}function Il(e){switch(e){case Pl.PASS:return`READY`;case Pl.FAIL:case Pl.ERROR:case Pl.PENDING:default:return e.toUpperCase()}}function Ll(e,t){return`${String(e).padStart(2,`0`)}/${String(t%100).padStart(2,`0`)}`}function Rl(e){let{onSaveStateForBillingRedirect:t,onReplacingPaymentMethod:n}=e??{},{organizationId:r}=L({strict:!1}),{update:i}=os(r),{data:a,refetch:o}=R(ac(r)),s=a?.billing?.paymentMethod,[c,l]=(0,G.useState)(!1),u=(0,G.useCallback)(()=>{l(!c),n?.(!c)},[n,c]),d=(0,G.useCallback)(e=>{l(!1),n?.(!1),e&&o()},[n,o]);return a?.type===`ENTERPRISE`?(0,W.jsxs)(`span`,{children:[`You are part of an enterprise organization! We don’t currently show your payment methods on this page. Want to explore your solution with Harper more? `,(0,W.jsx)(Ns,{}),`, we would love to talk!`]}):s&&!c?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`mt-2`,children:[s.brand?.toUpperCase()??`Card`,` ending in `,s.last4??`••••`,s.expMonth&&s.expYear?(0,W.jsxs)(W.Fragment,{children:[`(exp `,Ll(s.expMonth,s.expYear),`)`]}):null,s.status?(0,W.jsxs)(W.Fragment,{children:[`—`,` `,(0,W.jsx)(ao,{variant:Fl(s.status),children:Il(s.status)})]}):null]}),i&&(0,W.jsx)(`div`,{className:`mt-2 mb-6`,children:(0,W.jsx)(F,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Replace Payment Method`})})]}):i?(0,W.jsx)(Nl,{onSaveStateForBillingRedirect:t,onPaymentAdded:d}):(0,W.jsx)(`div`,{children:`This org doesn't have a payment method, and you don't have access to add one. Please contact your administrator.`})}function zl({clusterId:e,isPending:t,onGoBackToDetails:n,onSaveStateForBillingRedirect:r,onSubmit:i,organizationId:a,selectedPlan:s}){let{data:c}=R(ac(a)),l=c?.billing,u=c?.type===oc,d=u||l?.paymentMethod?.status===Pl.PASS,[f,p]=(0,G.useState)(!1),m=uc(s?.planLimits?.expirationMonths)&&s.planLimits.expirationMonths<1e3&&s.planLimits.expirationMonths,h=(0,W.jsx)(W.Fragment,{children:(0,W.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end mt-3 max-w-xl`,children:[(0,W.jsxs)(F,{type:`button`,variant:`defaultOutline`,disabled:t,onClick:n,children:[(0,W.jsx)(an,{}),` Back to Details`]}),(0,W.jsxs)(F,{disabled:t||!d||f,type:`submit`,variant:`submit`,onClick:i,children:[e?`Edit Cluster`:`Create New Cluster`,` `,(0,W.jsx)(Dn,{})]})]})});if(u)return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`ul`,{className:`list-disc ml-6 max-w-lg`,children:[(0,W.jsx)(`li`,{children:`Reminder: you will be billed at your contracted rate for any additional infrastructure.`}),(0,W.jsxs)(`li`,{children:[`Your account representative can work with you to sort out more precise details, and to help accomplish your objectives with this cluster. `,(0,W.jsx)(Ns,{overEmail:!0}),`, we are here to help.`]})]}),h]});let g=m&&`, or ${o(m,`month`,`months`)} elapse`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`ul`,{className:`list-disc ml-6 mb-6`,children:[(0,W.jsx)(`li`,{children:`You will be billed for this cluster today, and will receive a license for the block of usage you've requested.`}),e&&(0,W.jsx)(`li`,{children:`If you scale up, you'll be charged for the additional blocks you've purchased now, and your next auto renewal will be for all purchased blocks.`}),e&&(0,W.jsx)(`li`,{children:`If you remove a region, that region's usage block will not be used anymore (because it is specific to that region).`}),(0,W.jsxs)(`li`,{children:[`When that block is used up`,g,`, you will be automatically renewed.`]}),(0,W.jsx)(`li`,{children:`While refunds are not available, we’d be happy to assist you with troubleshooting.`}),(0,W.jsxs)(`li`,{children:[`We would love to work with you to sort out more precise details, and to help accomplish your objectives with this cluster. `,(0,W.jsx)(Ns,{overEmail:!0}),`, we are here to help.`]})]}),(0,W.jsx)(`p`,{className:`text-muted-foreground text-sm mb-6`,children:`Payment method:`}),(0,W.jsx)(Rl,{onSaveStateForBillingRedirect:r,onReplacingPaymentMethod:p}),h]})}var Bl=/(^$|^(?:localhost|(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}|(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,})$)/i,Vl=65535,Hl=S().max(20,`Must be at most 20 characters long.`).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,`Can only contain lowercase letters, numbers and dashes. Must not start or end with a dash.`),Ul=b({clusterName:S().nonempty(`Please enter a cluster name.`).max(255,`Cluster name cannot be longer than 255 characters long.`),abbreviatedName:M([O(``),A(),Hl]).optional(),fqdn:S().regex(Bl,`Please enter a valid host name without the port or any path.`).optional(),version:S().optional(),deploymentDescription:S().nonempty(`Please select a deployment tier.`),performanceDescription:S().nonempty(`Please select a performance tier.`),regionPlans:C(b({regionName:S().nonempty(`Please select a region.`),latencyDescription:S().nonempty(`Please select a latency tier.`)})).max(50,{error:`A maximum of 50 regions can be selected for each cluster. `}),instances:C(b({secure:j([`true`,`false`]),fqdn:S().nonempty(`Please enter the host name of your instance.`).regex(Bl,`Please enter a valid host name without the port or any path.`),port:T().min(0,`Positive thinking only, please.`).max(Vl,`That port number is too high.`).optional()})).max(100,{error:`A maximum of 100 instances can be added to each cluster.`}),skipToBilling:D().optional(),skipGtmWait:D().optional(),sourceClusterId:S().optional()});function Wl({calculatedNames:e,disabled:t,form:n}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Y,{control:n.control,name:`abbreviatedName`,render:({field:n})=>(0,W.jsxs)(X,{className:`col-span-3`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Host Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...n,type:`text`,maxLength:Hl.maxLength,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:e.suggestedAbbreviatedName,disabled:t})}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(X,{className:`col-span-3 `,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Full Host Name`}),(0,W.jsx)(J,{children:(0,W.jsx)(`span`,{children:e.fullHostName})}),(0,W.jsx)(Q,{})]})]})}function Gl({className:e}={}){return(0,W.jsx)(`div`,{className:(0,G.useMemo)(()=>_(`animate-pulse h-2.5 bg-gray-200 rounded-full dark:bg-gray-700`,!e?.includes(`mb-`)&&`mb-4 `,!e?.includes(`w-`)&&`w-48 `,e),[e])})}var Kl={Colocated:`Shared infrastructure for optimized value`,Dedicated:`Dedicated infrastructure for consistent performance`,"Self-Hosted":`Your own infrastructure`};function ql({availableDeploymentTypes:e,disabled:t,form:n}){return(0,W.jsx)(Y,{control:n.control,name:`deploymentDescription`,render:({field:r})=>(0,W.jsxs)(X,{className:`col-span-3`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Harper Deployment`}),(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Gl,{}),children:(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...r,disabled:t,onValueChange:e=>{r.onChange(e),n.trigger()},children:[(0,W.jsx)($t,{className:`w-full h-auto`,children:(0,W.jsx)(Vt,{placeholder:`Choose Tier`})}),(0,W.jsx)(Qt,{children:(0,W.jsx)(Kt,{children:e.map(e=>(0,W.jsxs)(zt,{value:e,children:[(0,W.jsx)(`dt`,{className:`text-left font-bold text-sm/6`,children:e}),Kl[e]&&(0,W.jsx)(`dd`,{className:`font-light`,children:Kl[e]})]},e))})})]})})}),(0,W.jsx)(Q,{})]})})}function Jl({disabled:e,form:t}){return(0,W.jsx)(Y,{control:t.control,name:`fqdn`,render:({field:t})=>(0,W.jsxs)(X,{className:`md:col-span-6 col-span-3`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Optional Cluster Load Balancer Host Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...t,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:`example.your-company.com`,disabled:e})}),(0,W.jsx)(Q,{})]})})}function Yl({className:e,disabled:t,form:n}){return(0,W.jsx)(Y,{control:n.control,name:`clusterName`,render:({field:n})=>(0,W.jsxs)(X,{className:e,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Cluster Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{autoFocus:!0,type:`text`,maxLength:Ul.shape.clusterName.maxLength,autoCapitalize:`words`,disabled:t,...n})}),(0,W.jsx)(Q,{})]})})}function Xl({availablePerformanceDescriptions:e,form:t,selectedDeployment:n}){return(0,W.jsx)(Y,{control:t.control,name:`performanceDescription`,render:({field:r})=>(0,W.jsxs)(X,{className:`col-span-3`,children:[(0,W.jsxs)(Z,{className:`pb-1`,children:[n.startsWith(`Self`)?`Support`:`Performance`,` & Usage`]}),(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Gl,{}),children:(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...r,onValueChange:e=>{r.onChange(e),t.trigger()},disabled:!e?.length,children:[(0,W.jsx)($t,{className:`w-full h-auto`,children:(0,W.jsx)(Vt,{placeholder:`Choose Tier`})}),(0,W.jsx)(Qt,{children:(0,W.jsx)(Kt,{children:e.map(e=>(0,W.jsxs)(zt,{value:e.performanceTier,children:[(0,W.jsxs)(`dt`,{className:`text-left font-bold text-sm/6 flex items-center gap-2`,children:[e.name,e.isPremium&&(0,W.jsx)(ao,{children:`Premium`})]}),e.description&&(0,W.jsx)(`dd`,{className:`text-left font-light`,children:e.description})]},e.name))})})]})})}),(0,W.jsx)(Q,{})]})})}function Zl({className:e,...t}){let{formDescriptionId:n}=ja();return(0,W.jsx)(`p`,{"data-slot":`form-description`,id:n,className:P(`text-muted-foreground text-sm`,e),...t})}function Ql({className:e,form:t}){return(0,W.jsx)(Y,{control:t.control,name:`skipGtmWait`,render:({field:t})=>(0,W.jsxs)(X,{className:e,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-4 h-4 cursor-pointer`,checked:t.value||!1,onChange:t.onChange,onBlur:t.onBlur,name:t.name,ref:t.ref})}),(0,W.jsx)(Z,{className:`cursor-pointer`,children:`Immediate upgrade and restart`})]}),(0,W.jsx)(Zl,{children:`Apply changes immediately without waiting for each instance to be taken out of the load balancer (faster, but potentially less safe).`})]})})}function $l({className:e,disabled:t,form:n,harperVersions:r}){return r?.value?.length?(0,W.jsx)(Y,{control:n.control,name:`version`,render:({field:i})=>(0,W.jsxs)(X,{className:e,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Harper Version`}),(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Gl,{}),children:(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...i,disabled:t,onValueChange:e=>{i.onChange(e),n.trigger()},children:[(0,W.jsx)($t,{className:`w-full h-auto`,children:(0,W.jsx)(Vt,{placeholder:`Choose Version`})}),(0,W.jsx)(Qt,{children:(0,W.jsx)(Kt,{children:r?.value.map(e=>(0,W.jsxs)(zt,{value:e.version,children:[e.version,` `,(0,W.jsx)(`span`,{className:`font-light opacity-50`,children:e.name})]},e.version))})})]})})}),(0,W.jsx)(Q,{})]})}):null}var eu=new RegExp(/^\d+/);function tu(e,t){let n=parseInt(e.match(eu)?.[0]||`0`,10),r=parseInt(t.match(eu)?.[0]||`0`,10);return n===r?0:n>r?1:-1}function nu(e){return new Intl.NumberFormat().format(e)}var ru=[`K`,`M`,`B`,`T`,`Qa`,`Qi`,`Sx`,`Sp`,`Oc`,`No`,`Dc`];function iu(e){let t=1e3,n=e;if(Math.abs(n)<t)return String(Math.round(n));let r=-1;do n/=t,++r;while(Math.round(Math.abs(n)*10)/10>=t&&r<ru.length-1);return`${nu(Math.round(n))} ${ru[r]}`}function au(e,t){let n=Object.values(t).flatMap(e=>Object.values(e)).map(e=>e.purchasedBlockMultiplier??1),r=Math.max(...n,1),i=Math.min(...n,r),a=t=>{let n=e.map(t).filter(e=>typeof e==`number`&&e>0);return n.length?{min:Math.min(...n),max:Math.max(...n)}:{min:0,max:0}},o=a(e=>e.planLimits?.readsPerMinuteCount),s=a(e=>e.planLimits?.totalReadCount);return{readRate:{min:o.min*i,max:o.max*r},totalReads:{min:s.min*i,max:s.max*r},writeRate:a(e=>e.planLimits?.writesPerMinuteCount),totalWrites:a(e=>e.planLimits?.totalWriteCount)}}function ou(e,{min:t,max:n}){if(e<=0)return 0;let r=Math.max(Math.min(t,e),1),i=Math.max(n,e);if(i<=r)return 1;let a=(Math.log(e)-Math.log(r))/(Math.log(i)-Math.log(r));return Math.min(Math.max(a,0),1)}function su({selectedPlan:e,selectedRegion:t,usageScale:n,isEnterprise:r,cloudProvider:i}){let[a,s]=(0,G.useState)(!1),c=(0,G.useCallback)(()=>{s(!a)},[a,s]),l=e?.planLimits,u=e?.resourcesPerInstance,d=i&&e?.cloudInstanceTypes?.[i],f=uc(l?.expirationMonths)&&l.expirationMonths<1e3&&l.expirationMonths,p=t?.purchasedBlockMultiplier??1,m=(0,G.useMemo)(()=>l?[uc(l.totalReadCount)&&{label:`Total Reads`,value:iu(l.totalReadCount*p)},uc(l.totalReadsBytes)&&{label:`Total Read Transfer`,value:`${en(l.totalReadsBytes*p)}`},uc(l.readsPerMinuteCount)&&{label:`Read Rate`,value:`${iu(l.readsPerMinuteCount*60*p)}/hr`},uc(l.readsPerMinuteBytes)&&{label:`Read Bandwidth`,value:`${en(l.readsPerMinuteBytes*60*p)}/hr`},uc(l.totalWriteCount)&&{label:`Total Writes`,value:iu(l.totalWriteCount)},uc(l.totalWritesBytes)&&{label:`Total Write Transfer`,value:`${en(l.totalWritesBytes)}`},uc(l.writesPerMinuteCount)&&{label:`Write Rate`,value:`${iu(l.writesPerMinuteCount*60)}/hr`},uc(l.writesPerMinuteBytes)&&{label:`Write Bandwidth`,value:`${en(l.writesPerMinuteBytes*60)}/hr`},uc(l.totalRealTimeMessageDeliveries)&&{label:`Total Real-Time Messages`,value:`${iu(l.totalRealTimeMessageDeliveries*p)} messages`},uc(l.totalRealTimeMessageDeliveryBytes)&&{label:`Total Real-Time Message Transfer`,value:`${en(l.totalRealTimeMessageDeliveryBytes*p)}`},uc(l.realTimeMessageDeliveriesPerMinute)&&{label:`Real-Time Message Rate`,value:`${iu(l.realTimeMessageDeliveriesPerMinute*60*p)}/hr`},uc(l.realTimeMessageDeliveryBytesPerMinute)&&{label:`Real-Time Message Bandwidth`,value:`${en(l.realTimeMessageDeliveryBytesPerMinute*60*p)}/hr`},uc(l.tlsHandshakes)&&{label:`TLS Handshakes`,value:`${iu(l.tlsHandshakes*60*p)}`},uc(l.applicationComputeHours)&&{label:`Application Compute Hours`,value:`${iu(l.applicationComputeHours*p)}`},!!u&&uc(u.storageGb)&&{label:`Storage`,value:`${en(u.storageGb*1e9)}`},!!u&&uc(u.cpuCores)&&{label:`Maximum CPU Cores`,value:`${iu(u.cpuCores)}`},!!u&&uc(u.memoryMb)&&{label:`Memory`,value:`${u.memoryMb/1024} GB`},!!d&&{label:`Cloud Instance Type`,value:d},!!f&&{label:`Expiration`,value:o(f,`month`,`months`)},!!t?.id&&{label:`Region ID`,value:t.id},!!e?.id&&{label:`Plan ID`,value:e.id}].filter(Xi):[],[f,t,e,p]);if(!l)return``;if(!uc(l.totalReadCount))return`This plan has no usage limits.`;let h=r?`for the contracted rate`:`for the price listed above`,g=f?` in ${o(f,`month`,`months`)} or`:``,_=uc(l.readsPerMinuteCount)?l.readsPerMinuteCount*p:0,v=uc(l.writesPerMinuteCount)?l.writesPerMinuteCount:0,y=l.totalReadCount*p,b=uc(l.totalWriteCount)?l.totalWriteCount:0,x=[_>0&&{icon:or,label:`Read Rate`,value:`${iu(_)}/min`,fill:ou(_,n.readRate)},y>0&&{icon:kn,label:`Total Reads`,value:iu(y),fill:ou(y,n.totalReads)},v>0&&{icon:or,label:`Write Rate`,value:`${iu(v)}/min`,fill:ou(v,n.writeRate)},b>0&&{icon:En,label:`Total Writes`,value:iu(b),fill:ou(b,n.totalWrites)},!!f&&{icon:Pn,label:`License Term`,value:o(f,`month`,`months`)}].filter(Xi);return(0,W.jsxs)(X,{className:`basis-full`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-2`,children:[(0,W.jsx)(Z,{onClick:c,className:`cursor-pointer`,children:`Usage block included with this plan`}),(0,W.jsxs)(F,{type:`button`,variant:`link`,className:`text-foreground`,onClick:c,children:[`Learn More `,a?(0,W.jsx)(Bt,{}):(0,W.jsx)(Dn,{})]})]}),(0,W.jsx)(`div`,{className:`grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-5`,children:x.map(e=>(0,W.jsx)(cu,{icon:e.icon,label:e.label,value:e.value,fill:e.fill},e.label))}),(0,W.jsx)(J,{children:(0,W.jsxs)(`dl`,{className:P(`divide-y divide-border rounded-md overflow-hidden transition-[max-height] duration-200 ease-in`,a?`max-h-fit border border-border`:`max-h-0`),children:[(0,W.jsxs)(`div`,{className:`text-sm px-4 py-5 leading-relaxed text-muted-foreground`,children:[`This plan licenses Harper for the usage limits below, `,h,`. The usage license expires`,g,` `,`when any usage limit is reached. New usage blocks are automatically purchased/billed as blocks are consumed.`]}),m.map((e,t)=>(0,W.jsxs)(`div`,{className:P(`px-4 py-1 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-3`,t%2==0&&`bg-muted dark:bg-grey-700`),children:[(0,W.jsx)(`dt`,{className:`text-sm/6 font-medium text-foreground`,children:e.label}),(0,W.jsx)(`dd`,{className:`mt-1 text-sm/6 text-muted-foreground sm:col-span-2 sm:mt-0`,children:e.value})]},e.label))]})}),(0,W.jsx)(Q,{})]})}function cu({icon:e,label:t,value:n,fill:r}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-md border border-border bg-background/50 p-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,W.jsx)(e,{className:`size-4 shrink-0`}),(0,W.jsx)(`span`,{className:`text-xs font-medium`,children:t})]}),(0,W.jsx)(`span`,{className:`text-lg font-bold text-foreground tabular-nums`,children:n}),r!==void 0&&(0,W.jsx)(`div`,{className:`h-1.5 w-full overflow-hidden rounded-full bg-sky-500/15`,children:(0,W.jsx)(`div`,{className:`h-full rounded-full bg-sky-500 transition-[width] duration-300`,style:{width:`${Math.max(Math.min(r,1)*100,4)}%`}})})]})}function lu({control:e,fieldArray:t,form:n,index:r,regionNameToLatencyToRegion:i,premiumOnlyRegions:a,usageScale:o,selectedPlan:s,isEnterprise:c,cloudProvider:l}){let u=(0,G.useMemo)(()=>Object.keys(i).sort(),[i]),d=n.watch(`deploymentDescription`)?.startsWith(`Dedicated`),f=n.watch(`regionPlans.${r}.regionName`),p=n.watch(`regionPlans.${r}.latencyDescription`),m=(0,G.useMemo)(()=>Object.keys(i[f]||{}).sort(tu).reverse(),[i,f]),h=s?.allowedRegionIds,g=(0,G.useCallback)(e=>!h?.length||Object.values(i[e]||{}).some(e=>h.includes(e.id)),[h,i]),_=(0,G.useCallback)(e=>{if(!h?.length)return!0;let t=i[f]?.[e]?.id;return!t||h.includes(t)},[h,i,f]);(0,G.useEffect)(function(){if(f&&m?.length&&!m?.includes(p)){let e=p?.split(` `)[0].toLowerCase(),t=m.find(t=>!e||t.split(` `)[0].toLowerCase()===e)||m[0];n.setValue(`regionPlans.${r}.latencyDescription`,t),n.trigger()}},[m,n,r,p,f]);let v=(0,G.useCallback)(()=>{t?.remove(r),n.trigger()},[t,n,r]);return(0,W.jsxs)(`div`,{className:`md:col-span-6 col-span-3 py-2 pl-4 border-l-4 border-border gap-6 flex flex-wrap items-start`,children:[(0,W.jsx)(Y,{control:e,name:`regionPlans.${r}.regionName`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex-1`,children:[(0,W.jsxs)(Z,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(wr,{className:`size-4 shrink-0`}),`Region `,t.fields.length>1?r+1:``]}),(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`Choose Region`})}),(0,W.jsx)(Qt,{children:(0,W.jsx)(Kt,{children:u.map(e=>(0,W.jsx)(zt,{value:e,disabled:!g(e),children:(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e,a.regionNames.has(e)&&(0,W.jsx)(ao,{children:`Premium`})]})},e))})})]})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:e,name:`regionPlans.${r}.latencyDescription`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex-1`,children:[(0,W.jsxs)(Z,{children:[`Estimated `,d?`P95`:`P90`,` Latency, Distribution`]}),(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,disabled:!m?.length,children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`Choose Latency Tier`})}),(0,W.jsx)(Qt,{children:(0,W.jsx)(Kt,{children:m.map(e=>(0,W.jsx)(zt,{value:e,disabled:!_(e),children:(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e,(()=>{let t=i[f]?.[e]?.id;return t&&a.regionIds.has(t)&&(0,W.jsx)(ao,{children:`Premium`})})()]})},e))})})]})}),(0,W.jsx)(Q,{})]})}),t?.fields?.length&&t?.fields?.length>1&&(0,W.jsx)(`div`,{className:`flex-none mt-6`,children:(0,W.jsxs)(F,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:v,children:[(0,W.jsx)($r,{}),` `,(0,W.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})}),(0,W.jsx)(su,{selectedPlan:s,selectedRegion:i[f]?.[p],usageScale:o,isEnterprise:c,cloudProvider:l})]})}function uu({form:e,regionLocations:t,regionNameToLatencyToRegion:n,premiumOnlyRegions:r,usageScale:i,selectedPlan:a,totalPrice:o,isEnterprise:s,cloudProvider:c}){let l=e.watch(`regionPlans`),u=ht({control:e.control,name:`regionPlans`}),d=(0,G.useMemo)(()=>{let e=l.map(e=>n?.[e.regionName]?.[e.latencyDescription]?.region);return o?t?.find(t=>!e.includes(t.region)):null},[t,n,l,o]),f=(0,G.useCallback)(()=>{d&&(u.append({regionName:d.region,latencyDescription:d.latencyDescription}),e.trigger())},[e,d,u]);return t?.length?(0,W.jsxs)(W.Fragment,{children:[u.fields.map((t,o)=>(0,W.jsx)(lu,{control:e.control,fieldArray:u,form:e,index:o,regionNameToLatencyToRegion:n,premiumOnlyRegions:r,usageScale:i,selectedPlan:a,isEnterprise:s,cloudProvider:c},t.id)),d&&(0,W.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,W.jsxs)(F,{type:`button`,variant:`positiveOutline`,onClick:f,children:[(0,W.jsx)(Mr,{}),`Add Additional Region Usage`]})})]}):(0,W.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,W.jsx)(ai,{className:`mt-0 m-0`,title:`No Regions Available`,showReturnToHome:!1,error:{message:(0,W.jsxs)(W.Fragment,{children:[`The deployment type you selected currently has no available regions. Please try a different deployment type, try again later, or `,(0,W.jsx)(Ns,{}),`.`]})}})})}function du({control:e,fieldArray:t,form:n,index:r}){let i=(0,G.useCallback)(()=>{t?.remove(r)},[t,r]);return(0,W.jsxs)(`div`,{className:`md:col-span-6 col-span-3 p-4 rounded-md bg-accent gap-6 flex flex-wrap items-start`,children:[(0,W.jsx)(Y,{control:e,name:`instances.${r}.secure`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsxs)(Z,{children:[`Instance `,t.fields.length>1?r+1:``]}),(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...e,onValueChange:t=>{e.onChange(t),n.trigger()},children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`https://`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(zt,{value:`true`,children:`https://`}),(0,W.jsx)(zt,{value:`false`,children:`http://`})]})})]})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:e,name:`instances.${r}.fqdn`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex-3`,children:[(0,W.jsx)(Z,{children:`Host Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,onChange:t=>{e.onChange(t);let i=t.target.value,a=i===`localhost`||i===`127.0.0.1`,o=n.getFieldState(`instances.${r}.secure`);a&&!o.isDirty&&n.setValue(`instances.${r}.secure`,`false`)}})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:e,name:`instances.${r}.port`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Operations API Port`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`number`,min:0,max:Vl,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:String(l),onChange:t=>{e.onChange(t.target.value?parseInt(t.target.value,10):void 0),n.trigger()}})}),(0,W.jsx)(Q,{})]})}),t?.fields?.length&&t?.fields?.length>1&&(0,W.jsx)(`div`,{className:`flex-none mt-6`,children:(0,W.jsxs)(F,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:i,children:[(0,W.jsx)($r,{}),` `,(0,W.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})})]})}function fu({form:e}){let t=ht({control:e.control,name:`instances`}),n=(0,G.useCallback)(()=>{t.append({secure:`true`,fqdn:``,port:l})},[t]);return(0,W.jsxs)(W.Fragment,{children:[t.fields.map((n,r)=>(0,W.jsx)(du,{control:e.control,fieldArray:t,form:e,index:r},n.id)),(0,W.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,W.jsxs)(F,{type:`button`,variant:`positiveOutline`,onClick:n,children:[(0,W.jsx)(Mr,{}),`Add Instance`]})})]})}function pu(e,t){return!e.allowedRegionIds?.length||e.allowedRegionIds.includes(t)}function mu(e,t){let n=new Set,r=new Set;if(!e.length)return{regionNames:n,regionIds:r};let i=Math.min(...e.map(e=>e.planLevel??0)),a=e.filter(e=>(e.planLevel??0)===i),o=e.filter(e=>(e.planLevel??0)>i);if(!o.length)return{regionNames:n,regionIds:r};for(let[e,i]of Object.entries(t)){let t=!1,s=!0;for(let e of Object.values(i)){let n=a.some(t=>pu(t,e.id)),i=o.some(t=>pu(t,e.id));!n&&!i||(t=!0,n?s=!1:r.add(e.id))}t&&s&&n.add(e)}return{regionNames:n,regionIds:r}}function hu({calculatedNames:e,clusterId:t,deploymentToPerformanceToPlan:n,form:r,harperVersions:i,isEnterprise:a,cloudProvider:o,isPending:s,mode:c,partialUpgrade:l,regionLocations:u,regionNameToLatencyToRegion:d,selectedDeployment:f,selectedPerformance:p,selectedPlan:m,totalPrice:h}){let{isDirty:g,isValid:_}=gt(),v=(0,G.useMemo)(()=>{let e=n[f]||{},t=Object.values(e).map(e=>e.planLevel??0),r=t.length?Math.min(...t):0;return Object.keys(e).map(t=>{let n=(e[t].planLevel??0)>r,i=t.slice(0,-1).split(`(`);if(i.length>1)return{performanceTier:t,name:i[0],description:i[1],isPremium:n};let a=t.split(` for `);return a.length>1?{performanceTier:t,name:a[0],description:`For `+a[1],isPremium:n}:{performanceTier:t,name:t,description:``,isPremium:n}})},[n,f]),y=(0,G.useMemo)(()=>Object.keys(n).sort(),[n]),b=(0,G.useMemo)(()=>mu(Object.values(n[f]||{}),d),[n,d,f]),x=(0,G.useMemo)(()=>au(Object.values(n).flatMap(e=>Object.values(e)),d),[n,d]);(0,G.useEffect)(function(){v?.length&&!v.find(e=>e.performanceTier===p)&&(r.setValue(`performanceDescription`,v[0].performanceTier),r.trigger())},[f,p,v,r]);let S=f===`Self-Hosted`,C=(0,W.jsx)(Ut,{className:`mt-3 mb-12`,children:(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:s||t&&!g&&!(c===`version`&&l)||!_,children:[c!==`version`&&h>0?`Confirm Payment Details`:t?`Edit Cluster`:`Create New Cluster`,(0,W.jsx)(Dn,{})]})});return c===`version`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-3 items-start gap-6 text-foreground md:grid-cols-6`,children:[(0,W.jsx)(Yl,{className:i?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!0,form:r}),(0,W.jsx)($l,{className:`col-span-3`,form:r,harperVersions:i}),(0,W.jsx)(Ql,{className:`col-span-3 md:col-span-6`,form:r}),l&&(0,W.jsxs)(`p`,{className:`col-span-3 md:col-span-6 max-w-prose text-xs font-light text-amber-600 dark:text-amber-400`,children:[l.behindCount,` of `,l.total,` instances`,` `,l.behindCount===1?`is`:`are`,` still on an older version. Re-run the upgrade to bring`,` `,l.behindCount===1?`it`:`them`,` up to `,l.latest,`.`]})]}),C]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-3 items-start gap-6 text-foreground md:grid-cols-6`,children:[(0,W.jsx)(Yl,{className:i?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!!t,form:r}),(0,W.jsx)($l,{className:`col-span-3`,disabled:!!t,form:r,harperVersions:i}),S?(0,W.jsx)(Jl,{form:r,disabled:!!t}):(0,W.jsx)(Wl,{form:r,calculatedNames:e,disabled:!!t}),(0,W.jsx)(ql,{form:r,availableDeploymentTypes:y}),(0,W.jsx)(Xl,{availablePerformanceDescriptions:v,form:r,selectedDeployment:f}),S?(0,W.jsx)(fu,{form:r}):(0,W.jsx)(uu,{form:r,regionLocations:u,regionNameToLatencyToRegion:d,premiumOnlyRegions:b,usageScale:x,selectedPlan:m,totalPrice:h,isEnterprise:a,cloudProvider:o}),t&&!S&&(0,W.jsx)(Ql,{className:`col-span-3 md:col-span-6`,form:r})]}),C]})}function gu(e){let{fqdn:t}=e,{secure:n,port:r}=e;return r||=l,r===443&&n===`false`&&(n=`true`),r===80&&n===`true`&&(n=`false`),`${n===`true`?`https`:`http`}://${t}${r===443||r===80?``:`:`+r}`.toLowerCase()}function _u(e,t,n){let r=e.find(e=>(n?!!e.priceUsd:!e.priceUsd)&&e.deploymentType===`colocated`)||e.find(e=>e.deploymentType===`colocated`)||e[0],i=r?.allowedRegionIds;if(r){let e=i?t.filter(e=>i.includes(e.id)):t,n=e.find(e=>e.region===`US`)||e[0];if(n)return{deploymentDescription:r.deploymentDescription,performanceDescription:r.performanceDescription,regionPlans:[{regionName:n.region,latencyDescription:n.latencyDescription}]}}return null}function vu(e,t,n){if(t&&n){let r=e.getValues();if(!r.deploymentDescription||!r.performanceDescription||!r.regionPlans.length){let i=_u(t,n);i&&(!r.deploymentDescription&&!r.performanceDescription&&(e.setValue(`deploymentDescription`,i.deploymentDescription),e.setValue(`performanceDescription`,i.performanceDescription)),r.regionPlans.length||e.setValue(`regionPlans`,i.regionPlans))}}}function yu({price:e}){return(0,W.jsx)(`span`,{className:`text-4xl`,children:new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).formatToParts(e||0).map((e,t)=>(0,W.jsx)(bu,{type:e.type,value:e.value},t))})}function bu({type:e,value:t}){switch(e){case`currency`:case`decimal`:case`fraction`:return(0,W.jsx)(`sup`,{className:`font-light text-xl`,children:t});default:return t}}function xu({alreadyUsingFree:e,clusterId:t,defaultValues:n,deploymentToPerformanceToPlan:r,harperVersions:i,mode:a,organization:s,organizationId:c,partialUpgrade:u,planTypes:d,regionLocationsColocated:f,regionLocationsDedicated:p,setSavedClusterState:m,startOffOnBilling:h}){let g=Oe(),v=ne(),y=s?.type===oc,b=s?.channel===`Akamai`?`linode`:void 0,x=ie(),{mutate:S,isPending:C}=ec(),{mutate:w,isPending:T}=nc(),[E,D]=(0,G.useState)(h),O=(0,G.useMemo)(()=>Zs(f?.sort(Gs(`latencyDescription`))||[],`region`,`latencyDescription`),[f]),k=(0,G.useMemo)(()=>Zs(p?.sort(Gs(`latencyDescription`))||[],`region`,`latencyDescription`),[p]),A=(0,G.useCallback)((t,n)=>{let i=new Set,a=r?.[t.deploymentDescription]?.[t.performanceDescription];if(t.deploymentDescription===`Self-Hosted`)for(let e=0;e<t.instances.length;e++){let r=gu(t.instances[e]);i.has(r)?n.addIssue({code:`custom`,path:[`instances.${e}.fqdn`],message:`Every instance url must be unique!`}):i.add(r)}else{a?.priceUsd===0&&e&&n.addIssue({code:`custom`,path:[`performanceDescription`],message:`Only one free cluster is allowed per organization.`});let r=a?.deploymentDescription===`Dedicated`?k:O;for(let e=0;e<t.regionPlans.length;e++){let o=t.regionPlans[e],s=r[o.regionName]?.[o.latencyDescription];i.has(o.regionName)?n.addIssue({code:`custom`,path:[`regionPlans.${e}.regionName`],message:`You can only select a region once!`}):i.add(o.regionName),a?.allowedRegionIds?.length&&s?.id&&(a.allowedRegionIds.includes(s.id)?e>=1&&n.addIssue({code:`custom`,path:[`regionPlans.${e}.regionName`],message:`You can only select one region with this performance tier!`}):cc(a.allowedRegionIds,s.id)?n.addIssue({code:`custom`,path:[`regionPlans.${e}.latencyDescription`],message:`This latency is not available with the selected performance tier!`}):n.addIssue({code:`custom`,path:[`regionPlans.${e}.regionName`],message:`This region is not available with the selected performance tier!`}))}}},[e,O,k,r]),j=bt({mode:`onChange`,resolver:_t(Ul.superRefine(A)),defaultValues:n}),[ee,M]=(0,G.useState)(!0);(0,G.useEffect)(()=>{ee&&n&&(m(null),M(!1))},[n,ee,m]);let N=j.watch(`clusterName`),P=j.watch(`abbreviatedName`),F=j.watch(`deploymentDescription`),I=j.watch(`performanceDescription`),L=j.watch(`regionPlans`),te=j.watch(`instances`),re=F===`Dedicated`?k:O,ae=F===`Dedicated`?p:f;(0,G.useEffect)(function(){let e=j.getValues();F&&(F===`Self-Hosted`?(e.abbreviatedName&&j.setValue(`abbreviatedName`,``),e.regionPlans.length&&j.setValue(`regionPlans`,[]),e.instances.length||j.setValue(`instances`,[{secure:`true`,fqdn:``,port:l}])):(e.fqdn&&j.setValue(`fqdn`,``),e.instances.length&&j.setValue(`instances`,[]),e.regionPlans.length||vu(j,d,ae)))},[j,d,ae,F]);let R=(0,G.useMemo)(()=>{let e=sc(lc(N),Hl.maxLength);return{suggestedAbbreviatedName:e,fullHostName:`${P||e}.${s.subdomain||`your-org`}.harperfabric.com`}},[N,P,s]),oe=(0,G.useMemo)(()=>r?.[F]?.[I],[r,F,I]);(0,G.useEffect)(function(){let e=oe?.allowedRegionIds;if(e?.length&&L?.length===1){let t=L[0],n=re?.[t.regionName]?.[t.latencyDescription];if(!e.includes(n?.id)){let t=ae?.filter(t=>e.includes(t.id)),n=t?.find(e=>e.region===`US`)||t?.[0];n&&(j.setValue(`regionPlans.0.regionName`,n.region),j.setValue(`regionPlans.0.latencyDescription`,n.latencyDescription),j.trigger())}}},[oe,L,j,re,ae]),(0,G.useEffect)(function(){if(F!==`Self-Hosted`&&Object.keys(re).length&&L.length)for(let e=0;e<L.length;e++){let t=L[e];re[t.regionName]||j.setValue(`regionPlans.${e}.regionName`,``)}},[j,re,F,L]);let se=oe?.priceUsd?F===`Self-Hosted`?te.length*oe.priceUsd:L.reduce((e,t)=>{let n=re?.[t.regionName]?.[t.latencyDescription];return e+(n?oe.priceUsd*n.instanceCount/2:0)},0):0,ce=oe?.planLimits?.expirationMonths,le=uc(ce)&&ce<1e3?ce:void 0,z=le?se/le:se,ue=(0,G.useCallback)(({creating:e,deploymentDescription:t})=>H.message(e?`Creating Cluster`:`Updating Cluster`,{description:(0,W.jsx)(Qs,{message:`This may take a little bit, hold tight!`,lateMessage:`Still working on it... why don't you grab a coffee, and I'll let you know when it's done?`,duration:t===`Dedicated`?6e4:5e3}),duration:0}),[]),de=(0,G.useCallback)(async({clusterId:e,sourceClusterId:t,creating:n,toastId:r,isSelfManaged:i,skipGtmWait:a})=>{if(t){let e=(await ic(c)).clusters?.find(e=>e.id===t);Wo(e?.status)&&await Ss(t)}x.invalidateQueries({queryKey:[c],refetchType:`active`}),n||dc(x,e,{refetchType:`active`}),v.invalidate(),g(i?{to:`/${c}/${e}/instances`}:n?{to:`/${c}/${e}/starting-up`}:{to:`/${c}/${e}/scaling`,search:a?{immediate:!0}:void 0}),j.reset(),H.success(n?`Cluster Created`:`Cluster Updated`,{id:r,description:i?void 0:n?`It is being provisioned now.`:`The updates are being provisioned now.`,duration:5e3})},[x,v,g,c,j]),fe=(0,G.useCallback)(async()=>{let e=j.getValues(),n=[],i=r[e.deploymentDescription][e.performanceDescription],o=e.deploymentDescription===`Self-Hosted`;if(o)for(let t of e.instances)n.push({autoRenew:!0,instanceFqdn:t.fqdn,operationsApiPort:t.port||9925,operationsApiSecure:t.secure===`true`,planId:i.id});else for(let t of e.regionPlans){let e=re[t.regionName][t.latencyDescription];n.push({autoRenew:!0,planId:i.id,regionId:e.id})}m(null);let s=ue({creating:!t,deploymentDescription:e.deploymentDescription}),l=()=>H.dismiss(s);t?w(a===`version`?{id:t,version:e.version,skipGtmWait:e.skipGtmWait}:{id:t,regionPlans:n,skipGtmWait:e.skipGtmWait},{onSuccess:t=>de({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:o,creating:!1,toastId:s,skipGtmWait:e.skipGtmWait}),onError:l}):S({abbreviatedName:o?void 0:e.abbreviatedName||R.suggestedAbbreviatedName,autoRenew:!0,fqdn:o&&e.fqdn||void 0,name:e.clusterName,version:e.version,organizationId:c,regionPlans:n},{onSuccess:t=>de({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:o,creating:!0,toastId:s}),onError:l})},[R.suggestedAbbreviatedName,t,r,j,de,ue,c,re,m,w,S]),pe=(0,G.useCallback)(()=>{if(a!==`version`&&se>0){D(!0);return}return fe()},[a,fe,se]),me=(0,G.useCallback)(e=>{m(e?{clusterId:t,...j.getValues(),skipToBilling:!0}:null)},[t,j,m]),he=(0,G.useCallback)(()=>{D(!1)},[]),ge=!y&&`mr-37.5`;return(0,W.jsxs)(W.Fragment,{children:[!y&&a!==`version`&&(0,W.jsxs)(`div`,{className:`absolute top-3 right-4 md:right-12 flex flex-col items-end text-right`,children:[(0,W.jsx)(`dt`,{className:`font-light`,children:le?`Monthly Price`:`Total Price`}),(0,W.jsx)(`dd`,{className:`font-bold`,children:se>0?(0,W.jsxs)(`span`,{className:`inline-flex items-baseline`,children:[(0,W.jsx)(yu,{price:z}),!!le&&(0,W.jsxs)(`span`,{className:`font-light text-base text-muted-foreground`,children:[`/mo`,le>1&&(0,W.jsx)(`sup`,{children:`*`})]})]}):(0,W.jsx)(`span`,{className:`text-4xl text-green`,children:`Free`})})]}),(0,W.jsx)(q,{...j,children:E?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h1`,{className:_(`text-lg leading-none text-foreground font-semibold mb-4`,ge),children:`Cluster Billing`}),(0,W.jsx)(`p`,{className:_(`text-muted-foreground text-sm mb-2`,ge),children:`Please confirm the following billing details:`}),(0,W.jsx)(zl,{clusterId:t,isPending:C||T,onGoBackToDetails:he,onSaveStateForBillingRedirect:me,onSubmit:fe,organizationId:c,selectedPlan:oe})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h1`,{className:_(`text-lg leading-none text-foreground font-semibold mb-4`,ge),children:`Cluster Configuration`}),(0,W.jsxs)(`div`,{className:_(`mb-6 flex flex-col items-start gap-2`,ge),children:[(0,W.jsx)(`p`,{className:`sr-only`,children:`Configure your Harper cluster and define deployment plans.`}),!y&&a!==`version`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ao,{variant:`warning`,children:`Beta pricing subject to change.`}),!!le&&le>1&&se>0&&(0,W.jsxs)(`p`,{className:`max-w-prose text-xs font-light text-muted-foreground`,children:[`* Billed as`,` `,new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).format(se),` `,`every`,` `,o(le,`month`,`months`),`, or sooner if you reach a usage limit — then a new license is issued.`]})]})]}),(0,W.jsx)(`form`,{id:`cluster-upsert-form`,name:`cluster-upsert-form`,onSubmit:j.handleSubmit(pe),children:(0,W.jsx)(hu,{calculatedNames:R,clusterId:t,deploymentToPerformanceToPlan:r,form:j,isPending:C||T,harperVersions:i,mode:a,partialUpgrade:u,regionLocations:ae,regionNameToLatencyToRegion:re,selectedDeployment:F,selectedPerformance:I,selectedPlan:oe,totalPrice:se,isEnterprise:y,cloudProvider:b})})]})})]})}function Su(e){return e?.clusterName!==void 0}function Cu(e){let t=e.filter(e=>!!e&&!(e.status!=null&&Pa.includes(e.status))).map(e=>e.version).filter(e=>!!e);if(t.length<2)return null;let n=t.reduce((e,t)=>cn(t,e)>0?t:e),r=t.filter(e=>e!==n).length;return r>0?{latest:n,behindCount:r,total:t.length}:null}function wu({isEdit:e,className:t,children:n}){return e?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Bo,{}),(0,W.jsx)(Fs,{children:(0,W.jsx)(`div`,{className:t,children:n})})]}):(0,W.jsx)(Ps,{className:t,children:n})}function Tu(){let{organizationId:e,clusterId:t,mode:n}=L({strict:!1}),{create:r,update:i}=cs(e),{organization:a,cluster:o}=ke({strict:!1}),[s,c]=vn(bn.SavedClusterState,null),{data:l}=R(Ls(e)),{data:u}=R(Ws({availableHosts:!0,organizationId:e})),{data:d}=R(Ws({organizationId:e})),{data:f}=R(Hs(e)),p=(0,G.useMemo)(()=>{if(o){let e=o.instances?.map(e=>e.version).filter(Xi);if(f&&e){let t=[...e].sort(cn).pop(),n=new Set(e);return{...f,value:[!!t&&{name:`current`,version:t},...(f?.value||[]).filter(e=>!n.has(e.version)&&(!t||on(t,e.version)))].filter(Xi)}}}return f},[f,o]),m=(0,G.useMemo)(()=>Cu(o?.instances??[]),[o]),h=(0,G.useMemo)(()=>{for(let e of a?.clusters??[])if(e.id!==o?.id&&l&&!Go(e.status)&&!Wo(e.status)&&e.plans)for(let t of e.plans){let e=l.find(e=>e.id===t.planId);if(e?.priceUsd===0&&!e.id.startsWith(`self-hosted`))return!0}return!1},[o?.id,a?.clusters,l]),g=(0,G.useMemo)(()=>Zs(l?.sort(Gs(`priceUsd`))||[],`deploymentDescription`,`performanceDescription`),[l]),_=(0,G.useMemo)(()=>{if(!l||!p||!u||!d||t&&!o)return null;let e=o;if(s){if(Su(s))return{...s,clusterName:s.clusterName||``,abbreviatedName:s.abbreviatedName||``,version:s.version,deploymentDescription:s.deploymentDescription||``,performanceDescription:s.performanceDescription||``,fqdn:s.fqdn||``,regionPlans:s.regionPlans||[],instances:s.instances||[]};e=s}let n=l?.find(e=>e.id===o?.plans?.[0].planId),r=[],i=[],a=n?.deploymentDescription===`Dedicated`?d:u,c=_u(l,a,h),f=!1;if(e){if(e.plans){for(let t of e.plans)if(t.regionId){let e=a.find(e=>e.id===t.regionId);e&&r.push({regionName:e.region,latencyDescription:e.latencyDescription})}}if(!r.length&&e.instances){let t=e.instances.filter(e=>e.status&&!Pa.includes(e.status)).sort(Js);for(let e of t)f=!0,i.push({fqdn:e.instanceFqdn,port:e.operationsApiPort,secure:e.operationsApiSecure?`true`:`false`})}}else c&&r.push(...c.regionPlans);!f&&!r.length&&r.push({regionName:``,latencyDescription:``});let m=p.value?.find(e=>e.name===`current`)?.version??p.value?.find(e=>e.name===`stable`)?.version;return{sourceClusterId:e?.id,autoRenew:e?.plans?.[0]?.autoRenew??!0,clusterName:e?.name??``,abbreviatedName:e?.abbreviatedName??``,version:m,deploymentDescription:n?.deploymentDescription??c?.deploymentDescription??``,performanceDescription:n?.performanceDescription??c?.performanceDescription??``,fqdn:f?e?.fqdn??``:``,instances:i,regionPlans:r}},[h,o,t,l,p,u,d,s]);return!_||!a||!l||!u||!d?(0,W.jsx)(wu,{isEdit:!!t,children:(0,W.jsx)(Ei,{centered:!0,text:`Loading...`})}):(o?.id?!i:!r)?(0,W.jsx)(wu,{isEdit:!!t,children:(0,W.jsx)(ai,{title:`Not Allowed`,error:{message:(0,W.jsxs)(W.Fragment,{children:[`You do not have permission to `,o?.id?`update`:`create`,` clusters in this org.`]})}})}):l.length===0?(0,W.jsx)(wu,{isEdit:!!t,children:(0,W.jsx)(ai,{title:`Cluster ${t?`Modification`:`Creation`} Not Currently Allowed`,error:{message:(0,W.jsxs)(W.Fragment,{children:[`There are no available deployment types right now! Please try again later, or `,(0,W.jsx)(Ns,{}),`.`]})}})}):(0,W.jsx)(wu,{isEdit:!!t,className:`max-w-4xl mx-auto`,children:(0,W.jsx)(xu,{alreadyUsingFree:h,clusterId:t,defaultValues:_,deploymentToPerformanceToPlan:g,harperVersions:p,mode:n,organization:a,organizationId:e,partialUpgrade:m,planTypes:l,regionLocationsColocated:u,regionLocationsDedicated:d,setSavedClusterState:c,startOffOnBilling:Su(s)&&s.skipToBilling===!0})})}function Eu({children:e}){let{organizationId:t}=L({strict:!1}),{view:n}=ss(t),{update:r}=os(t),i=`/${t}`;return(0,W.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,W.jsxs)(`div`,{className:`md:grid gap-6 md:grid-cols-12`,children:[(0,W.jsx)(`aside`,{className:`md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,W.jsx)(Ci,{items:[{to:i,label:`Clusters`,icon:zr,exact:!0},n&&{to:`${i}/users`,label:`Users`,icon:ri},n&&{to:`${i}/roles`,label:`Roles`,icon:Vr},r&&{to:`${i}/billing`,label:`Billing`,icon:Xn,children:[{to:`${i}/billing`,label:`Payment Method`,exact:!0},{to:`${i}/billing/invoices`,label:`Invoices`}]},r&&{to:`${i}/settings`,label:`Settings`,icon:Br}].filter(Boolean),ariaLabel:`Organization sections`})}),(0,W.jsx)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:e})]})})}var Du={FAILED:0,UPDATING:1,PROVISIONING:2,RUNNING:3,TERMINATED:4},Ou=Du.RUNNING;function ku(e,t){return e.status===t.status?e.name.localeCompare(t.name):(e.status?Du[e.status]??Ou:Ou)-(t.status?Du[t.status]??Ou:Ou)}function Au(e,t){let n=t.toLowerCase();return t=>{for(let r of e){let e=t[r];if(e!=null)if(typeof e==`string`){if(e.toLowerCase().includes(n))return!0}else if(typeof e==`boolean`){if(e&&(n===`yes`||n===`true`||n===`1`)||!e&&(n===`no`||n===`false`||n===`0`))return!0}else throw Error(`curryFilterByFuzzySearch has not implemented support for `+typeof e+` fields yet!`)}return!1}}function ju(){let{organizationId:e}=L({strict:!1}),{create:t}=cs(e),{data:n,isSuccess:r}=ae(ac(e)),[i]=vn(bn.SavedClusterState,null),[a,o]=(0,G.useState)(``),s=(0,G.useCallback)(()=>o(``),[]),c=(0,G.useCallback)(e=>{o(e.currentTarget.value?.toLowerCase()||``)},[]),l=(0,G.useMemo)(()=>n?.clusters?.slice().filter(e=>!Go(e.status)).sort(ku)||[],[n?.clusters]),u=(0,G.useMemo)(()=>l.filter(Au([`id`,`name`],a))||[],[a,l]);return n&&l.length===0&&t?(0,W.jsx)(Tu,{}):i?(0,W.jsx)(de,{to:`/${e}/new-cluster`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Bo,{children:r&&t&&(0,W.jsx)(`div`,{className:`flex w-full justify-end`,children:(0,W.jsx)(V,{to:`new-cluster`,children:(0,W.jsxs)(F,{variant:`positive`,accessKey:`n`,children:[(0,W.jsx)(Mr,{}),` `,(0,W.jsxs)(`span`,{className:`hidden sm:inline-block`,children:[(0,W.jsx)(`u`,{children:`N`}),`ew `,(0,W.jsx)(`span`,{className:`hidden md:inline-block`,children:`Cluster`})]})]})})})}),(0,W.jsxs)(Eu,{children:[(0,W.jsxs)(`div`,{className:`relative mb-6 w-full`,children:[(0,W.jsx)(Rr,{className:`pointer-events-none absolute left-0 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,W.jsx)($,{placeholder:`Filter by name`,className:`w-full rounded-none border-0 border-b border-border bg-transparent dark:bg-transparent pl-6 shadow-none focus-visible:border-primary focus-visible:ring-0`,value:a,onChange:c})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-9 mb-4`,children:[u.map(e=>(0,W.jsx)(`div`,{className:`col-span-1 md:col-span-3 xl:col-span-3 2xl:col-span-2`,children:(0,W.jsx)(Ms,{cluster:e})},e.id)),!u.length&&(0,W.jsxs)(`div`,{className:`col-span-1 md:col-span-9 text-center`,children:[(0,W.jsx)(`h2`,{className:`my-4 text-xl`,children:`No matches found.`}),(0,W.jsx)(F,{type:`button`,variant:`outline`,onClick:s,children:`Clear Filters`})]})]})]})]})}function Mu(){return`/#`+oa()}function Nu(){let{organizationId:e}=L({strict:!1}),t=Oe(),n=new URLSearchParams(window.location.search).get(`setup_intent_client_secret`),{setup_intent_client_secret:r}=ce({strict:!1}),[i]=vn(bn.SavedClusterState,null),a=n||r,o=ol(),s=mc(e),c=(0,G.useCallback)(()=>{let e=i?i.clusterId?`../../${i.clusterId}/edit`:`../../new-cluster`:`../`;window.history.replaceState(null,``,Mu()),t({search:void 0,to:e})},[t,i]);return(0,G.useEffect)(()=>{!o||!a||!s||!e||!c||(async function(){try{let{setupIntent:e}=await o.retrieveSetupIntent(a);switch(e?.status){case`succeeded`:e.payment_method===null?(H.error(`Failed to process payment method details. Please try another payment method.`),c()):s(e.payment_method,c);break;case`processing`:H.warning(`Processing payment method. Please check back later.`),c();break;case`requires_payment_method`:H.error(`Failed to process payment method details. Please try another payment method.`),c();break;default:H.error(`Failed to process payment method details. Please try another payment method.`),c();break}}catch(e){console.error(e),H.error(`Failed to process payment method details. Please try another payment method.`),c()}})()},[a,c,e,s,o]),(0,W.jsx)(Ei,{centered:!0})}function Pu(){return(0,W.jsx)(Ml,{children:(0,W.jsx)(Nu,{})})}function Fu(){let{organizationId:e}=L({strict:!1}),{update:t}=os(e);return t?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Bo,{}),(0,W.jsx)(Eu,{children:(0,W.jsx)(Se,{})})]}):(0,W.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:`You don't have access to manage payments for this organization. Please contact your administrator.`})}var Iu=500,Lu=16,Ru=16;function zu({className:e,containerClassName:t,containerRef:n,...r}){return(0,W.jsx)(`div`,{ref:n,"data-slot":`table-container`,className:P(`relative w-full overflow-x-auto`,t),children:(0,W.jsx)(`table`,{"data-slot":`table`,className:P(`w-full caption-bottom text-sm`,e),...r})})}function Bu({className:e,...t}){return(0,W.jsx)(`thead`,{"data-slot":`table-header`,className:P(`[&_tr]:border-b`,e),...t})}function Vu({className:e,...t}){return(0,W.jsx)(`tbody`,{"data-slot":`table-body`,className:P(`[&_tr:last-child]:border-0`,e),...t})}function Hu({className:e,...t}){return(0,W.jsx)(`tr`,{"data-slot":`table-row`,className:P(`border-b border-grey-700 transition-colors`,e),...t})}function Uu({className:e,...t}){return(0,W.jsx)(`th`,{"data-slot":`table-head`,className:P(`h-10 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}function Wu({header:e,onColumnClick:t,className:n,...r}){let i=(0,G.useCallback)(()=>{e.column.toggleSorting(e.column.getIsSorted()===`asc`);let n=e.column.getIsSorted()===!1||e.column.getIsSorted()!==`asc`;t?.(e.column.columnDef.accessorKey,n)},[e,t]),a=e.column.columnDef.enableSorting,o=e.getContext().table.options.enableColumnResizing===!0&&e.column.getCanResize(),s=e.isPlaceholder?null:Ce(e.column.columnDef.header,e.getContext()),c=e.getContext().table,l=e.getSize(),u=e.column.columnDef.minSize??c.options.defaultColumn?.minSize??20,d=(0,G.useCallback)(t=>{let n=t.currentTarget.closest(`table`);if(!n){e.column.resetSize();return}let r=`[data-col-id="${CSS.escape(e.column.id)}"]`,i=document.createRange(),a=e=>(i.selectNodeContents(e),i.getBoundingClientRect().width),o=0;n.querySelectorAll(`tbody ${r}`).forEach(e=>{o=Math.max(o,a(e))});let s=n.querySelector(`thead ${r} > div`),l=s?.querySelector(`.truncate`);if(s&&l){let e=Array.from(s.children).reduce((e,t)=>e+t.getBoundingClientRect().width,0)-l.getBoundingClientRect().width;o=Math.max(o,a(l)+e+Ru)}let d=Math.min(Math.max(Math.ceil(o)+Lu,u),Iu);c.setColumnSizing(t=>({...t,[e.column.id]:d}))},[e,c,u]),f=e.column.getIsResizing()?Math.max(c.getState().columnSizingInfo.deltaOffset??0,u-l):0;return(0,W.jsxs)(Uu,{...r,"data-col-id":e.column.id,style:{width:`${l}px`,maxWidth:`${l}px`},className:P(`relative`,o&&`select-none`,a?`px-0`:`px-2`,n),children:[(0,W.jsx)(`div`,{className:P(`flex items-center min-w-0 overflow-hidden`,o&&`pr-4`),children:a?(0,W.jsxs)(F,{type:`button`,variant:`ghost`,className:P(`rounded-none min-w-0`,!e.column.getIsSorted()||e.column.getIsSorted()===`asc`?`cursor-n-resize`:`cursor-s-resize`),onClick:i,children:[(0,W.jsx)(`span`,{className:`truncate`,children:s}),e.column.getIsSorted()===`asc`?(0,W.jsx)(rn,{className:`shrink-0`}):e.column.getIsSorted()===`desc`?(0,W.jsx)(Bt,{className:`shrink-0`}):(0,W.jsx)(On,{className:`shrink-0 text-gray-600`})]}):(0,W.jsx)(`span`,{className:`truncate`,children:s})}),o&&(0,W.jsx)(`div`,{"aria-hidden":!0,className:`absolute top-0 right-0 z-10 flex h-full w-4 cursor-col-resize items-center justify-center text-muted-foreground hover:text-foreground`,onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),onDoubleClick:d,style:{transform:e.column.getIsResizing()?`translateX(${f}px)`:``},children:(0,W.jsx)(lr,{className:`size-3.5`})})]})}function Gu({className:e,...t}){return(0,W.jsx)(`td`,{"data-slot":`table-cell`,className:P(`align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}function Ku({columns:e,data:t,isFetching:n,onRowClick:r,onColumnClick:i,sortingState:a,children:o}){let s=ge({data:t,columns:e,getCoreRowModel:xe(),getSortedRowModel:fe(),initialState:{sorting:a}});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-end space-x-2 pb-4`,children:[(0,W.jsx)(`div`,{className:`grow lg:hidden`}),o,(0,W.jsx)(`div`,{className:`grow hidden lg:visible`})]}),(0,W.jsxs)(zu,{containerClassName:`rounded-md bg-card dark:bg-black-dark`,children:[(0,W.jsx)(Bu,{children:s.getHeaderGroups().map(e=>(0,W.jsx)(Hu,{className:`border-none`,children:e.headers.map(e=>(0,W.jsx)(Wu,{header:e,onColumnClick:i},e.id))},e.id))}),(0,W.jsx)(Vu,{className:`bg-background dark:bg-black border border-border dark:border-grey-700`,children:s.getRowModel().rows?.length?s.getRowModel().rows.map(e=>(0,W.jsx)(Hu,{"data-state":e.getIsSelected()&&`selected`,onClick:()=>r?.(e),className:P(`hover:bg-muted/10 data-[state=selected]:bg-muted`,r&&`cursor-pointer`),children:e.getVisibleCells().map(e=>(0,W.jsx)(Gu,{className:`py-2 px-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,style:{width:`${e.column.getSize()}px`},children:Ce(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,W.jsx)(Hu,{children:(0,W.jsx)(Gu,{colSpan:e.length,className:`h-24 text-center`,children:n?(0,W.jsx)(`div`,{children:(0,W.jsx)(Ei,{className:`p-12`})}):(0,W.jsx)(`span`,{children:`No results.`})})})})]})]})}function qu(e){switch(e){case`paid`:return`success`;case`void`:case`uncollectible`:return`destructive`;default:return`default`}}function Ju(e){return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).format(e)}function Yu(e,t){if(e<45)return`a few seconds ago`;if(e<120)return`a minute ago`;let n=Math.floor(e/60);if(n<60)return`${n} minutes ago`;if(n<120)return`an hour ago`;let r=Math.floor(e/3600);return r>48?new Date(t).toLocaleString():`${r} hours ago`}var Xu=[{header:`Invoice Id`,accessorKey:`id`,enableSorting:!1},{header:`Status`,accessorKey:`status`,enableSorting:!1,cell:({cell:e})=>(0,W.jsx)(ao,{variant:qu(e.getValue()),children:e.getValue()})},{header:`Date`,accessorKey:`periodStart`,enableSorting:!1,cell:({cell:e})=>{let t=e.row.original.periodStart*1e3,n=e.row.original.periodEnd*1e3,r=(Date.now()-t)/1e3,i=(Date.now()-n)/1e3;return Math.abs(r-i)<1e3?Yu(r,t):[t?Yu(r,t):`-`,n?Yu(i,n):`-`].join(` to `)}},{header:`Amount Due`,accessorKey:`amountDue`,enableSorting:!1,cell:({cell:e})=>Ju(e.getValue()?e.getValue()/100:0)},{header:`Amount Paid`,accessorKey:`amountPaid`,enableSorting:!1,cell:({cell:e})=>Ju(e.getValue()?e.getValue()/100:0)},{header:`Lines`,accessorKey:`lines`,enableSorting:!1,cell:({cell:e})=>{let t=e.getValue(),n=[];for(let e of t)n.push(`${e.quantity}x ${e.description} @ ${Ju(e.amount/100)}`);return n.join(`
|
|
12
|
-
`)}}];function Zu(e){return(0,G.useCallback)(async()=>{H.loading(`Refreshing...`,{id:`refreshing`});let t=Date.now();await e(),Date.now()-t<500&&await a(500),H.success(`Refreshed!`,{id:`refreshing`})},[e])}async function Qu(e){let{data:t}=await N.get(`/Invoice/${e}`);return t}function $u(e,t){return B({queryKey:[e,`invoices`],queryFn:()=>Qu(e),retry:!1,enabled:!!e,refetchInterval:t?1e4:void 0})}function ed(){let{organizationId:e}=L({strict:!1}),{data:t}=R(ac(e)),{data:n,refetch:r,isLoading:i,isFetching:a,isRefetching:o}=R($u(t?.type!==`ENTERPRISE`&&t?.id,!1)),s=Zu(r);return t?.type===`ENTERPRISE`?(0,W.jsxs)(`span`,{children:[`You are part of an enterprise organization! We don’t currently show your invoices on this page. Want to explore your solution with Harper more? `,(0,W.jsx)(Ns,{}),`, we would love to talk!`]}):i?(0,W.jsx)(Ei,{centered:!0}):!n||!n.length?(0,W.jsxs)(`span`,{children:[`Your invoices will be shown here once one is available! Want to explore your solution with Harper more?`,` `,(0,W.jsx)(Ns,{overEmail:!0}),`, we would love to talk!`]}):(0,W.jsx)(Ku,{data:n,columns:Xu,children:(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:s,accessKey:`r`,disabled:a||o,children:[(0,W.jsx)(fn,{}),(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]})})}function td(e){let t=z({getParentRoute:()=>e,path:`billing`,head:()=>({meta:[{title:`Billing — Harper Fabric`}]}),component:Fu}),n=z({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Payment Methods — Harper Fabric`}]}),component:Rl}),r=z({getParentRoute:()=>t,path:`invoices`,head:()=>({meta:[{title:`Invoices — Harper Fabric`}]}),component:ed}),i=z({getParentRoute:()=>t,path:`confirm`,head:()=>({meta:[{title:`Confirm Payment — Harper Fabric`}]}),component:Pu});return t.addChildren([n,r,i])}async function nd(e){let{data:t}=await N.get(`/OrganizationRole/${e}`);return t}function rd(e){return B({queryKey:[e,`roles`],queryFn:()=>nd(e),retry:!1,refetchInterval:10*1e3})}var id=ue(),ad=[{header:`Role Name`,accessorKey:`roleName`,enableSorting:!1},id.display({header:`ID`,id:`id`,enableSorting:!1,cell:e=>(0,W.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,title:e.row.original.id,children:e.row.original.id})}),id.display({header:`Users Assigned`,enableSorting:!1,id:`userIds`,cell:e=>!e.row.original.userIds||e.row.original.userIds.length===0?`No users assigned`:e.row.original.userIds.length})];async function od(e){let{data:t}=await N.post(`/Role/`,e);return t}function sd(){return I({mutationFn:od})}var cd=b({name:S().nonempty({error:`Please enter a role name.`}).regex(/^[a-zA-Z_]*$/,{error:`Role must contain only letters and underscores.`}).max(30,{error:`Role name cannot be longer than 30 characters.`}),update:D(),delete:D()});b({roles:b({create:D(),delete:D(),update:D(),view:D()}),clusters:b({create:D(),delete:D(),update:D(),view:D(),resources:C(b({id:S(),delete:D(),update:D(),view:D(),instances:b({create:D(),delete:D(),update:D(),view:D()})}))})});function ld(){let[e]=Mi(),t=ki();return e===`dark`||e===`system`&&t===`dark`?`vs-dark`:`light`}var ud=(0,G.lazy)(async()=>(await je(()=>import(`./setup-C2E-6wan.js`),__vite__mapDeps([9,4,1,10,11,12,13])),{default:(await je(()=>import(`./dist-DHjL6trB.js`),__vite__mapDeps([12,1,4]))).default}));function dd(e){return(0,W.jsx)(G.Suspense,{fallback:e.loading??null,children:(0,W.jsx)(ud,{...e})})}var fd={roles:{create:!0,view:!0,update:!0,delete:!0},clusters:{create:!0,view:!0,update:!0,delete:!0,resources:[]}};function pd({isModalOpen:e,setIsModalOpen:t}){let n=ld(),r=ie(),{organizationId:i}=L({strict:!1}),[a,o]=(0,G.useState)(!0),[s,c]=(0,G.useState)(JSON.stringify(fd,null,2)),{mutate:l,isPending:u}=sd(),d=bt({resolver:_t(cd),defaultValues:{name:``,update:!1,delete:!1}}),f=(0,G.useCallback)(e=>{o(e.length===0)},[o]),p=(0,G.useCallback)(async e=>{let n=_n(s);if(!n)return;let o={...e,...n,organizationId:i};e&&a&&l(o,{onSuccess:()=>{H.success(`Organization role added successfully!`),t(!1),r.invalidateQueries({queryKey:[i,`roles`],refetchType:`active`}),d.reset()},onError:e=>{H.error(`Failed to add organization role: ${e.message}`)}})},[a,s,l,d,r,t,i]);return(0,W.jsx)(qt,{onOpenChange:t,open:e,children:(0,W.jsxs)(tn,{resizable:!0,children:[(0,W.jsx)(Jt,{children:`Add New Organization Role`}),(0,W.jsx)(Ht,{children:`Set the new organization role permissions.`}),(0,W.jsx)(q,{...d,children:(0,W.jsxs)(`form`,{id:`org-add-role-form`,name:`org-add-role-form`,className:`flex flex-1 min-h-0 flex-col gap-4 my-4`,onSubmit:d.handleSubmit(p),children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,W.jsx)(Y,{control:d.control,name:`name`,render:({field:e})=>(0,W.jsxs)(X,{className:`col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Role Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,className:``,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:d.control,name:`update`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Can Update Organization`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:d.control,name:`delete`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Can Delete Organization`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,W.jsx)(Q,{})]})})]}),(0,W.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,W.jsx)(dd,{className:`w-full h-full`,theme:n,defaultLanguage:`json`,onValidate:f,onChange:e=>{e&&c(e)},options:{automaticLayout:!0},defaultValue:JSON.stringify(fd,null,2)})}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,W.jsx)(F,{variant:`destructiveOutline`,type:`button`,onClick:()=>t(!1),disabled:u,children:`Cancel`}),(0,W.jsx)(F,{variant:`submit`,disabled:u||!a||!d.formState.isValid,children:`Save Changes`})]})})]})})]})})}async function md({roleId:e}){let{data:t}=await N.delete(`/Role/${e}`,{id:e,deleted:!0});return t}function hd(){return I({mutationFn:({roleId:e})=>md({roleId:e})})}async function gd({roleId:e,updatedRoleInfo:t}){let{data:n}=await N.put(`/Role/${e}`,t);return n}function _d(){return I({mutationFn:({roleId:e,updatedRoleInfo:t})=>gd({roleId:e,updatedRoleInfo:t})})}function vd({organizationId:e,roleId:t}){return B({queryKey:[e,`roles`,t],queryFn:()=>yd(t),refetchInterval:10*1e3})}async function yd(e){let{data:t}=await N.get(`/Role/${e}`);return t}function bd({onRoleDeleteClick:e,setIsConfirmingRoleDeletion:t,isRoleDeletionPending:n}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Jt,{children:`Confirm Role Deletion`}),(0,W.jsx)(Ht,{children:`Are you sure you want to delete this role? This action cannot be undone.`}),(0,W.jsxs)(Ut,{children:[(0,W.jsx)(F,{type:`button`,variant:`defaultOutline`,onClick:()=>t(!1),children:`Cancel`}),(0,W.jsx)(F,{variant:`destructiveOutline`,onClick:e,disabled:n,children:n?`Deleting...`:`Delete Role`})]})]})}function xd({data:e,isModalOpen:t,closeModal:n}){return(0,W.jsx)(qt,{onOpenChange:(0,G.useCallback)(()=>n(!1),[n]),open:t,children:(0,W.jsx)(tn,{resizable:!0,children:(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Sd,{roleName:e.roleName}),children:(0,W.jsx)(Cd,{data:e,closeModal:n})})})})}function Sd({roleName:e}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Jt,{children:[`Organization Role "`,e,`"`]}),(0,W.jsx)(Ei,{centered:!0,text:`Loading role…`,className:`flex-1 min-h-0`})]})}function Cd({data:e,closeModal:t}){let n=ie(),{data:r}=ae(vd({roleId:e.id,organizationId:e.organizationId})),i=Ie().user?.roles?.[e.organizationId]?.id===e.id,{update:a,remove:o}=ss(e.organizationId),{mutate:s,isPending:c}=_d(),{mutate:l,isPending:u}=hd(),d=ld(),[f,p]=(0,G.useState)(!1),m=bt({resolver:_t(cd),defaultValues:{name:e.roleName,update:r.organization.update||!1,delete:r.organization.delete||!1}}),h=(0,G.useCallback)(()=>{l({roleId:e.id},{onSuccess:()=>{H.success(`Role deleted successfully!`),t(!0),m.reset()},onError:e=>{H.error(`Error`,{description:`Failed to delete role: ${e instanceof Error?e.message:String(e)}.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}})}})},[e.id,l,m,t]),[g,_]=(0,G.useState)(!0),v=(0,G.useMemo)(()=>JSON.stringify({roles:{...r.organization.roles},clusters:{...r.organization.clusters}},null,2),[r]),[y,b]=(0,G.useState)(v),x=y!==v,S=(0,G.useCallback)(e=>{_(e.length===0)},[_]),C=(0,G.useCallback)(async r=>{if(!a)return;let i=_n(y);if(!i)return;let o={...r,...i,organizationId:e.organizationId};y&&g&&s({roleId:e.id,updatedRoleInfo:o},{onSuccess:async()=>{H.success(`Role updated successfully!`),await n.invalidateQueries({queryKey:[e.organizationId,`roles`,e.id]}),t(!1),m.reset()},onError:e=>{H.error(`Error`,{description:`Failed to update role: ${e instanceof Error?e.message:String(e)}.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}})}})},[t,e.id,e.organizationId,m,g,n,r,a,y,s]);return f?(0,W.jsx)(bd,{onRoleDeleteClick:h,setIsConfirmingRoleDeletion:p,isRoleDeletionPending:u}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Jt,{children:[i||!a?`View`:`Edit`,` Organization Role "`,e.roleName,`"`]}),(0,W.jsx)(q,{...m,children:(0,W.jsxs)(`form`,{id:`org-edit-role-form`,name:`org-edit-role-form`,className:`flex flex-1 min-h-0 flex-col gap-4 my-4`,onSubmit:m.handleSubmit(C),children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,W.jsx)(Y,{control:m.control,name:`name`,render:({field:e})=>(0,W.jsxs)(X,{className:`col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Role Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,className:``,...e,disabled:!0,readOnly:!0})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:m.control,name:`update`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Can Update Organization`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,disabled:i||!a,readOnly:i||!a,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:m.control,name:`delete`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Can Delete Organization`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,disabled:i||!a,readOnly:i||!a,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,W.jsx)(Q,{})]})})]}),(0,W.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,W.jsx)(dd,{className:`w-full h-full`,theme:d,defaultLanguage:`json`,onValidate:S,onChange:e=>{e&&b(e)},options:{readOnly:i||!a,automaticLayout:!0},defaultValue:y})}),!i&&(o||a)&&(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[o&&(0,W.jsx)(F,{type:`button`,variant:`destructiveOutline`,onClick:()=>p(!0),disabled:c,children:`Delete Role`}),a&&(0,W.jsx)(F,{variant:`submit`,disabled:!g||c||!m.formState.isValid||!m.formState.isDirty&&!x,children:`Save Changes`})]})})]})})]})}function wd(){let e=Oe(),t=ie(),{organizationId:n,orgRoleId:r}=L({strict:!1}),{create:i}=ss(n),{data:a,refetch:o,isFetching:s,isRefetching:c}=ae(rd(n)),l=(0,G.useMemo)(()=>a&&a?.find(e=>e.id===r),[a,r]),u=!!r&&!!l,[d,f]=(0,G.useState)(!1),p=(0,G.useCallback)(async(i,a)=>{let o=[r?`..`:``,i].filter(Boolean);await e({to:o.join(`/`)}),a&&await t.invalidateQueries({queryKey:[n,`roles`],refetchType:`active`})},[r,e,t]),m=(0,G.useCallback)(()=>{f(!0)},[f]),h=(0,G.useCallback)(e=>p(e.original.id,!1),[p]),g=(0,G.useCallback)(e=>p(void 0,e),[p]),_=Zu(o);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Bo,{}),(0,W.jsx)(Eu,{children:(0,W.jsxs)(G.Suspense,{fallback:(0,W.jsx)(Ei,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,W.jsxs)(Ku,{data:a,columns:ad,onRowClick:h,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:_,accessKey:`r`,disabled:s||c,children:[(0,W.jsx)(fn,{}),(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),i&&(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:m,accessKey:`a`,disabled:d,children:[(0,W.jsx)(Mr,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]})]}),i&&(0,W.jsx)(pd,{isModalOpen:d,setIsModalOpen:f}),u&&(0,W.jsx)(xd,{data:l,isModalOpen:u,closeModal:g},l.id)]})})]})}function Td({className:e,...t}){return(0,W.jsx)(Ke,{"data-slot":`switch`,className:P(`peer data-[state=checked]:bg-green data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-grey-500 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50`,e),...t,children:(0,W.jsx)(tt,{"data-slot":`switch-thumb`,className:P(`bg-white dark:data-[state=unchecked]:bg-white dark:data-[state=checked]:bg-white pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0`)})})}function Ed(e){return`//oauth/${e}/login`}async function Dd(e,t){let{data:n}=await N.patch(`/Organization/${e}/settings/oauth`,t);return n}var Od=b({domain:S().min(1,`Domain is required`),clientId:S().min(1,`Client ID is required`),clientSecret:S().min(1,`Client secret is required`),scope:S().optional()}),kd=b({domain:S().min(1,`Domain is required`),clientId:S().optional(),clientSecret:S().optional(),scope:S().optional()});function Ad(){let{organizationId:e}=L({strict:!1}),{user:t}=Ie(),{update:n}=os(e),{data:r}=ae(ac(e)),i=ie(),[a,o]=(0,G.useState)(!1),[s,c]=(0,G.useState)(null),l=r.settings?.oauthConfigs??[],{mutate:u,isPending:d}=I({mutationFn:t=>Dd(e,t),onSuccess:()=>void i.invalidateQueries({queryKey:[e]}),onError:()=>H.error(`Failed to update OAuth settings.`)}),f=bt({resolver:_t(Od),defaultValues:{domain:``,clientId:``,clientSecret:``,scope:`openid email profile`}}),p=e=>{u({provider:`okta`,...e},{onSuccess:()=>{H.success(`OAuth provider added.`),f.reset(),o(!1)}})},m=bt({resolver:_t(kd)}),h=e=>{c(e.id??null),m.reset({domain:e.domain,clientId:``,clientSecret:``,scope:e.scope??``})},g=(e,t)=>{let n={id:e.id,provider:e.provider,domain:t.domain,scope:t.scope};t.clientId&&(n.clientId=t.clientId),t.clientSecret&&(n.clientSecret=t.clientSecret),u(n,{onSuccess:()=>{H.success(`OAuth provider updated.`),c(null)}})},_=(e,t)=>{u({id:e.id,provider:e.provider,[t]:!e[t]})},v=e=>`//oauth/${e}/callback`,y=async e=>{await Os(e)&&H.success(`Sign-in URL copied.`)},b=async e=>{await Os(e)&&H.success(`Redirect URI copied.`)};return n?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Bo,{}),(0,W.jsx)(Eu,{children:(0,W.jsxs)(`div`,{className:`max-w-2xl`,children:[(0,W.jsx)(`h2`,{className:`text-2xl text-foreground font-light mb-6`,children:`Authentication`}),(0,W.jsxs)(`section`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,W.jsx)(`h3`,{className:`text-lg text-foreground font-medium`,children:`OAuth Providers`}),!a&&(0,W.jsxs)(F,{variant:`positiveOutline`,size:`sm`,onClick:()=>o(!0),children:[(0,W.jsx)(Mr,{}),`Add Provider`]})]}),l.length===0&&!a&&(0,W.jsx)(`p`,{className:`text-muted-foreground text-sm mb-4`,children:`No OAuth providers configured.`}),l.map(e=>{let n=t?.oauthConfigId===e.id;return s===e.id?(0,W.jsxs)(`div`,{className:`border rounded-lg p-4 mb-3 text-foreground`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,W.jsx)(`h4`,{className:`font-medium`,children:`Edit Provider`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>c(null),className:`text-muted-foreground hover:text-foreground`,children:(0,W.jsx)(pn,{className:`size-4`})})]}),(0,W.jsx)(q,{...m,children:(0,W.jsxs)(`form`,{onSubmit:m.handleSubmit(t=>g(e,t)),className:`space-y-4`,children:[(0,W.jsx)(Y,{control:m.control,name:`domain`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Domain`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{placeholder:`company.okta.com`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:m.control,name:`clientId`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Client ID`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{placeholder:`Leave blank to keep existing`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:m.control,name:`clientSecret`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Client Secret`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,placeholder:`Leave blank to keep existing`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:m.control,name:`scope`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Scope`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{placeholder:`openid email profile`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,W.jsx)(F,{type:`submit`,variant:`positive`,disabled:d,children:d?`Saving...`:`Save`}),(0,W.jsx)(F,{type:`button`,variant:`outline`,onClick:()=>c(null),children:`Cancel`})]})]})})]},e.id):(0,W.jsx)(`div`,{className:`border rounded-lg p-4 mb-3 text-foreground`,children:(0,W.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between sm:gap-4`,children:[(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:e.domain}),(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground uppercase bg-muted px-2 py-0.5 rounded`,children:e.provider}),e.enabled===!1&&(0,W.jsx)(`span`,{className:`text-xs text-destructive bg-destructive/10 px-2 py-0.5 rounded`,children:`Disabled`})]}),(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground mb-2`,children:[`Client ID: `,(0,W.jsx)(`span`,{className:`text-foreground font-mono`,children:`****`})]}),e.id&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`mt-3 rounded-md bg-muted px-3 py-2`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1`,children:`Okta redirect URI`}),(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-1.5`,children:[`Add to `,(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`Login redirect URIs`}),` `,`in your Okta app settings.`]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-sm text-foreground font-mono truncate`,children:v(e.id)}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void b(v(e.id)),className:`hover:text-foreground shrink-0 text-muted-foreground`,title:`Copy redirect URI`,children:(0,W.jsx)(Yn,{className:`size-3.5`})})]})]}),(0,W.jsxs)(`div`,{className:`mt-2 rounded-md bg-muted px-3 py-2`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1.5`,children:`User login link`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`a`,{href:Ed(e.id),target:`_blank`,rel:`noreferrer`,className:`text-sm text-foreground truncate hover:underline`,children:Ed(e.id)}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0 text-muted-foreground`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>void y(Ed(e.id)),className:`hover:text-foreground`,title:`Copy login link`,children:(0,W.jsx)(Yn,{className:`size-3.5`})}),(0,W.jsx)(`a`,{href:Ed(e.id),target:`_blank`,rel:`noreferrer`,className:`hover:text-foreground`,title:`Open login link`,children:(0,W.jsx)($n,{className:`size-3.5`})})]})]})]})]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-3 sm:shrink-0`,children:[(0,W.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-foreground cursor-pointer`,children:[(0,W.jsx)(Td,{checked:e.enabled!==!1,onCheckedChange:()=>_(e,`enabled`),disabled:d}),`Enabled`]}),(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-2 text-sm text-foreground ${n?`cursor-pointer`:`cursor-not-allowed opacity-50`}`,children:[(0,W.jsx)(Td,{checked:!!e.required,onCheckedChange:()=>_(e,`required`),disabled:d||!n}),`Required`]})}),!n&&(0,W.jsxs)(Rt,{children:[`Sign in via `,e.provider,` first to enable Required`]})]}),(0,W.jsx)(F,{variant:`outline`,size:`sm`,onClick:()=>h(e),disabled:d,children:(0,W.jsx)(Ar,{className:`size-4`})})]})]})},e.id)}),a&&(0,W.jsxs)(`div`,{className:`border rounded-lg p-4 text-foreground`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,W.jsx)(`h4`,{className:`font-medium`,children:`Add Okta Provider`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{o(!1),f.reset()},className:`text-muted-foreground hover:text-foreground`,children:(0,W.jsx)(pn,{className:`size-4`})})]}),(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-4`,children:[`After saving, copy the `,(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`Okta redirect URI`}),` `,`from the provider card and add it to your Okta app's`,` `,(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`Login redirect URIs`}),`.`]}),(0,W.jsx)(q,{...f,children:(0,W.jsxs)(`form`,{onSubmit:f.handleSubmit(p),className:`space-y-4`,children:[(0,W.jsx)(Y,{control:f.control,name:`domain`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Domain`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{placeholder:`company.okta.com`,autoFocus:!0,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:f.control,name:`clientId`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Client ID`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{placeholder:`Okta Client ID`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:f.control,name:`clientSecret`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Client Secret`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,placeholder:`Okta Client Secret`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:f.control,name:`scope`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Scope`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{placeholder:`openid email profile`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,W.jsx)(F,{type:`submit`,variant:`positive`,disabled:d,children:d?`Adding...`:`Add Provider`}),(0,W.jsx)(F,{type:`button`,variant:`outline`,onClick:()=>{o(!1),f.reset()},children:`Cancel`})]})]})})]})]})]})})]}):(0,W.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))] text-foreground`,children:`You don't have permission to manage settings for this organization.`})}k.object({email:Va.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:k.string().nonempty({error:`Please select a role.`})});async function jd(e){let{data:t}=await N.post(`/UserInvite/`,e);return t}function Md(){return I({mutationFn:e=>jd(e)})}function Nd({user:e}){let{update:t}=ss(),{mutate:n,isPending:r}=Md(),i=e.roles?.[0]?.id,a=(0,G.useCallback)(t=>{if(t.stopPropagation(),!e.email||!i){H.error(`Cannot resend invite: this user has no email or role.`);return}n({email:e.email,roleId:i},{onSuccess:()=>H.success(`Invitation resent to ${e.email}.`)})},[n,i,e.email]);return t?(0,W.jsxs)(F,{variant:`ghost`,size:`sm`,className:`h-auto px-2 py-0 align-middle text-sm`,onClick:a,disabled:r||!i,children:[(0,W.jsx)(Cr,{}),` Resend invite`]}):null}var Pd=ue(),Fd=[{header:`User Id`,accessorKey:`id`,enableSorting:!1},{header:`Email`,accessorKey:`email`,enableSorting:!1},{header:`First Name`,accessorKey:`firstname`,enableSorting:!1},{header:`Last Name`,accessorKey:`lastname`,enableSorting:!1},Pd.display({header:`Roles`,enableSorting:!1,id:`roles`,cell:e=>e.row.original.roles?.map(e=>e.roleName)?.sort()?.join(`, `)}),{header:`Status`,accessorKey:`status`,enableSorting:!1},{header:`Verified`,accessorKey:`isVerified`,enableSorting:!1},Pd.display({header:``,enableSorting:!1,id:`actions`,cell:e=>e.row.original.status===`PENDING`?(0,W.jsx)(Nd,{user:e.row.original}):null})];function Id({name:e,id:t}){return(0,W.jsxs)(`span`,{className:`flex items-baseline gap-2 truncate`,children:[(0,W.jsx)(`span`,{className:`truncate`,children:e}),(0,W.jsx)(`span`,{className:`text-muted-foreground font-mono text-xs`,children:t})]})}var Ld=k.object({email:Va.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:k.string().nonempty({error:`Please select a role.`})});async function Rd(e){let{data:t}=await N.post(`/OrganizationRole/`,e);return t}function zd(){return I({mutationFn:e=>Rd(e)})}function Bd({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let{organizationId:r}=L({strict:!1}),{data:i,isLoading:a}=R({...rd(r),throwOnError:!0}),[o,s]=(0,G.useState)(!1),c=bt({resolver:_t(Ld),defaultValues:{email:``,roleId:``}}),{mutate:l,isPending:u}=zd(),{mutate:d,isPending:f}=Md(),p=(0,G.useCallback)(async e=>{e&&(o?d:l)(e,{onSuccess:()=>{let r=e.roleId;c.reset(),c.setValue(`roleId`,r),t(),H.success(`User invited successfully!`),n(!1),s(!1)},onError:e=>{e?.status===404&&s(!0)}})},[l,c,d,t,n,o]);return(0,W.jsx)(qt,{onOpenChange:()=>{n(!1),s(!1),c.reset()},open:e,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...c,children:(0,W.jsxs)(`form`,{id:`org-add-user-form`,name:`org-add-user-form`,onSubmit:c.handleSubmit(p),className:`grid gap-4 my-4`,children:[(0,W.jsx)(Zt,{children:(0,W.jsx)(Jt,{children:o?`Invite User`:`Add User`})}),(0,W.jsx)(Y,{control:c.control,name:`email`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Email`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`email`,enterKeyHint:`next`,autoComplete:`email`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:c.control,name:`roleId`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Roles`}),a?(0,W.jsx)(Gl,{}):(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...e,onValueChange:t=>e.onChange(t),children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`Choose Role`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(Xt,{children:`Role`}),i?.map(e=>(0,W.jsx)(zt,{value:e.id,children:(0,W.jsx)(Id,{name:e.roleName,id:e.id})},e.id))]})})]})}),(0,W.jsx)(Q,{})]})}),o&&(0,W.jsxs)(Ht,{className:`p-3 my-5 text-white rounded-md bg-amber-600 flex`,children:[(0,W.jsx)(Sr,{className:`inline-block size-12 pr-2`}),(0,W.jsx)(`span`,{children:`This person doesn’t have a Fabric account. Do you want to invite them?`})]}),(0,W.jsx)(Ut,{children:(0,W.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:u||f,children:[(0,W.jsx)(Ir,{}),` `,o?`Invite User`:`Add User`]})})})]})})})})}async function Vd({roleId:e,userId:t}){let{data:n}=await N.delete(`/OrganizationRole/role/${e}/user/${t}`);return n}function Hd(){return I({mutationFn:({roleId:e,userId:t})=>Vd({roleId:e,userId:t})})}function Ud(e){let[t,n]=(0,G.useState)(e||!1);return[t,(0,G.useCallback)(e=>{n(typeof e==`boolean`?e:e.target.checked)},[])]}function Wd({data:e,readOnly:t,canRemove:n,orgRole:r,selectedRoles:i,setChangesMade:a}){let{mutate:o,isPending:s}=zd(),{mutate:c,isPending:l}=Hd(),u=!!i[r.id],[d,f]=(0,G.useState)(u),[p,m]=Ud(u);return(0,G.useEffect)(()=>{p!==d&&(p?o({email:e.email,roleId:r.id},{onSuccess:()=>{f(p),a(!0),H.success(`Role added successfully`)}}):c({userId:e.id,roleId:r.id},{onSuccess:()=>{f(p),a(!0),H.success(`Role removed successfully`)}}))},[o,e.email,e.id,p,r.id,c,a,d]),(0,W.jsxs)(Ma,{className:`flex`,children:[(0,W.jsx)($,{type:`checkbox`,className:`w-6`,disabled:t||s||l||!n&&p,checked:p,onChange:m}),(0,W.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:r.roleName})]},r.id)}function Gd({isSelf:e,isPending:t,onConfirm:n}){let[r,i]=(0,G.useState)(!1),a=e?{idle:`Leave organization`,confirm:`Confirm leave`,busy:`Leaving…`,warning:`You’ll lose access to this organization and everything in it. You won’t be able to return unless another member invites you back.`}:{idle:`Remove from organization`,confirm:`Confirm removal`,busy:`Removing…`,warning:`This revokes their access to this organization and everything in it. Their Harper account isn’t deleted, and they can be added back later.`},o=e?xr:ti;return r?(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,W.jsxs)(`p`,{role:`alert`,className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3`,children:[(0,W.jsx)(ei,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,W.jsx)(`span`,{children:a.warning})]}),(0,W.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,W.jsx)(F,{type:`button`,variant:`ghostOutline`,disabled:t,onClick:()=>i(!1),children:`Cancel`}),(0,W.jsxs)(F,{type:`button`,variant:`destructive`,disabled:t,onClick:n,children:[(0,W.jsx)(o,{}),` `,t?a.busy:a.confirm]})]})]}):(0,W.jsx)(`div`,{className:`flex justify-start`,children:(0,W.jsxs)(F,{type:`button`,variant:`destructiveOutline`,disabled:t,onClick:()=>i(!0),children:[(0,W.jsx)(o,{}),` `,a.idle]})})}function Kd(e){return e?.trim().toLowerCase()===`admin`}function qd({canDelete:e,isSelf:t,orgUserCount:n,adminCount:r,isAdmin:i,roleCount:a}){let o=e?t&&n<=1?`sole-member`:t&&i&&r<=1?`last-admin`:null:null,s=e&&o===null;return{canRemoveRoles:s,showRemovalAction:s&&a>0,blockedReason:o}}function Jd({closeModal:e,data:t,isModalOpen:n,onUserUpdated:r,orgUserCount:i,orgAdminCount:a}){let{organizationId:o}=L({strict:!1}),s=Ie(),{update:c,remove:l}=ss(o),u=s.user?.email===t.email,[d,f]=(0,G.useState)(!1),{canRemoveRoles:p,showRemovalAction:m,blockedReason:h}=qd({canDelete:l,isSelf:u,orgUserCount:i,adminCount:a,isAdmin:(t.roles??[]).some(e=>Kd(e.roleName)),roleCount:t.roles?.length??0}),{mutateAsync:g}=Hd(),[_,v]=(0,G.useState)(!1),y=(0,G.useCallback)(async()=>{let e=t.roles??[];v(!0),(await Promise.allSettled(e.map(e=>g({userId:t.id,roleId:e.id})))).some(e=>e.status===`rejected`&&e.reason?.response?.status!==404)?H.error(u?`Something went wrong leaving the organization. Please try again.`:`Couldn’t remove ${t.email} from the organization. Please try again.`):H.success(u?`You’ve left the organization.`:`${t.email} was removed from the organization.`),v(!1),r()},[t.roles,t.id,t.email,u,g,r]);return(0,W.jsx)(qt,{onOpenChange:d?r:e,open:n,children:(0,W.jsxs)(tn,{resizable:!0,children:[(0,W.jsx)(Zt,{children:(0,W.jsxs)(Jt,{children:[c?`Edit `:`View `,` `,t.email,` `,u?`(yourself)`:``]})}),c&&(0,W.jsxs)(Ht,{children:[`Use the checkboxes to change which roles `,u?`you have`:`this user has`,`.`,m&&(u?` To leave the organization entirely, use the button below.`:` To remove this user from the organization entirely, use the button below.`)]}),(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Ei,{centered:!0,text:`Loading roles…`,className:`flex-1 min-h-0`}),children:(0,W.jsx)(Yd,{data:t,organizationId:o,update:c,canRemove:p,setChangesMade:f})}),t.status===`PENDING`&&(0,W.jsx)(`div`,{className:`border-t border-border pt-4`,children:(0,W.jsx)(Nd,{user:t})}),m&&(0,W.jsx)(`div`,{className:`border-t border-border pt-4`,children:(0,W.jsx)(Gd,{isSelf:u,isPending:_,onConfirm:y})}),h&&(0,W.jsxs)(`p`,{className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3`,children:[(0,W.jsx)(ei,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,W.jsx)(`span`,{children:h===`sole-member`?`You’re the only member of this organization, so you can’t remove your roles or leave — it would be left with no one to manage it. If you no longer need this organization, terminate its clusters, then delete the organization from the ⋯ menu on the Organizations page.`:`You’re the only admin of this organization, so you can’t remove your roles or leave — it would be left with no one who can manage its members, roles, or clusters. Give another member the admin role first, then you can step back.`})]})]})})}function Yd({data:e,organizationId:t,update:n,canRemove:r,setChangesMade:i}){let{data:a}=ae(rd(t)),o=(0,G.useMemo)(()=>e.roles?Xs(e.roles,`id`):{},[e]);return(0,W.jsx)(`div`,{className:`flex flex-1 min-h-0 flex-col gap-2 overflow-y-auto`,children:a.map(t=>(0,W.jsx)(Wd,{readOnly:!n,canRemove:r,data:e,orgRole:t,selectedRoles:o,setChangesMade:i},t.id))})}function Xd(e,t){return e.email>t.email?1:-1}function Zd(){let e=Oe(),{organizationId:t,orgUserId:n}=L({strict:!1}),{update:r}=ss(t),{data:i,refetch:a,isFetching:o,isRefetching:s}=ae(rd(t)),c=(0,G.useMemo)(()=>{let e={};for(let t of i)if(t.users)for(let n of t.users)e[n.id]||(e[n.id]={...n,roles:[]}),e[n.id].roles.push(t);return Object.values(e).sort(Xd)},[i]),l=(0,G.useMemo)(()=>{let e=new Set;for(let t of i)if(Kd(t.roleName))for(let n of t.users??[])e.add(n.id);return e.size},[i]),u=(0,G.useMemo)(()=>c?.find(e=>e.id===n),[c,n]),d=(0,G.useCallback)(t=>{let r=[n?`..`:``,t].filter(Boolean);e({to:r.join(`/`)})},[n,e]),f=!!n&&!!u,[p,m]=(0,G.useState)(!1),[h]=(0,G.useState)({attribute:`email`,descending:!1}),g=(0,G.useMemo)(()=>[{desc:h.descending,id:h.attribute}],[h]),_=(0,G.useCallback)(()=>{m(!0)},[m]),v=(0,G.useCallback)(()=>{a(),m(!1)},[a,m]),y=(0,G.useCallback)(e=>{d(e.original.id)},[d]),b=(0,G.useCallback)(()=>{d(void 0)},[d]),x=(0,G.useCallback)(()=>{a(),d(void 0)},[d,a]),S=Zu(a);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Bo,{}),(0,W.jsx)(Eu,{children:(0,W.jsxs)(G.Suspense,{fallback:(0,W.jsx)(Ei,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,W.jsxs)(Ku,{data:c,isFetching:o||s,columns:Fd,onRowClick:y,sortingState:g,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:S,accessKey:`r`,disabled:o||s,children:[(0,W.jsx)(fn,{}),` `,(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),r&&(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:_,accessKey:`a`,disabled:p,children:[(0,W.jsx)(Mr,{}),` `,(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]})]}),r&&(0,W.jsx)(Bd,{isModalOpen:p,onChangesSaved:v,setIsModalOpen:m}),f&&(0,W.jsx)(Jd,{closeModal:b,data:u,isModalOpen:f,onUserUpdated:x,orgUserCount:c.length,orgAdminCount:l})]})})]})}function Qd({className:e,...t}){return(0,W.jsx)(`div`,{"data-slot":`skeleton`,className:P(`bg-primary/10 animate-pulse rounded-md`,e),...t})}function $d({organizationId:e,organizationName:t,providers:n}){return(0,W.jsxs)(Lt,{className:`relative h-full justify-between opacity-90`,children:[(0,W.jsxs)(Pt,{children:[(0,W.jsx)(It,{className:`truncate`,children:e}),(0,W.jsx)(Nt,{children:(0,W.jsx)(`h2`,{children:t})})]}),(0,W.jsxs)(Ft,{className:`flex flex-col gap-2`,children:[(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground flex items-center gap-1.5 mb-1`,children:[(0,W.jsx)(pr,{className:`size-3 shrink-0`}),`Sign in with an OAuth provider to access this organization.`]}),n.map(e=>(0,W.jsx)(`a`,{href:Ed(e.oauthConfigId),children:(0,W.jsxs)(F,{variant:`outline`,className:`w-full`,children:[`Sign in with `,e.name]})},e.oauthConfigId))]})]})}var ef=b({couponId:S().nonempty({message:`Please enter a coupon ID.`}).trim()});async function tf({organizationId:e,couponId:t}){let{data:n}=await N.post(`/Coupon`,{organizationId:e,couponId:t},{validateStatus:e=>e>=200&&e<400||e===400||e===409});return n}function nf(){return I({mutationFn:tf})}function rf({organizationId:e,organizationName:t,isOpen:n,onClose:r}){let{mutate:i,isPending:a}=nf(),o=bt({resolver:_t(ef),defaultValues:{couponId:``}}),{handleSubmit:s,control:c,reset:l}=o;(0,G.useEffect)(()=>{n&&l({couponId:``})},[n,l]);let u=(0,G.useCallback)(n=>{i({organizationId:e,couponId:n.couponId},{onSuccess:i=>{i?H.error(`Error`,{description:i||`Failed to add coupon.`}):(H.success(`Success`,{description:`Coupon "${n.couponId}" added to ${t||e}.`}),r())}})},[i,e,t,r]);return(0,W.jsx)(qt,{open:n,onOpenChange:e=>!e&&r(),children:(0,W.jsxs)(tn,{children:[(0,W.jsxs)(Zt,{children:[(0,W.jsx)(Jt,{children:`Add Coupon`}),(0,W.jsxs)(Ht,{children:[`Add a coupon code to`,` `,t||e,`. This coupon will be applied to the next billing cycle.`,(0,W.jsx)(`br`,{}),`Coupons can be created in our`,` `,(0,W.jsx)(`a`,{href:`https://dashboard.stripe.com/`,target:`_blank`,rel:`noreferrer`,className:`text-purple hover:underline`,children:`Stripe Dashboard`}),`.`]})]}),(0,W.jsx)(q,{...o,children:(0,W.jsxs)(`form`,{onSubmit:s(u),children:[(0,W.jsx)(`div`,{className:`grid gap-4 py-4`,children:(0,W.jsx)(Y,{control:c,name:`couponId`,render:({field:e})=>(0,W.jsxs)(X,{className:`grid items-center gap-4`,children:[(0,W.jsx)(Z,{children:`Coupon ID`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,placeholder:`e.g. 100OFF`,disabled:a})}),(0,W.jsx)(Q,{})]})})}),(0,W.jsxs)(Ut,{children:[(0,W.jsx)(F,{type:`button`,variant:`ghost`,onClick:r,disabled:a,children:`Cancel`}),(0,W.jsx)(F,{type:`submit`,disabled:a,children:a?`Adding...`:`Add Coupon`})]})]})})]})})}function af({organizationRole:e,onDeleteOrgModal:t}){let{organizationId:n,organizationName:r,roleName:i}=e,{remove:a,update:o}=os(n),s=o,{view:c}=ss(n),l=ze(),[u,d]=(0,G.useState)(!1),f=(0,G.useCallback)(()=>{t(e)},[t,e]),p=[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`sep-top`},{key:`clusters`,to:`${n}`,icon:(0,W.jsx)(zr,{className:`size-4 mr-2 text-blue-500`}),label:`Clusters`},c&&{key:`roles`,to:`${n}/roles`,icon:(0,W.jsx)(Vr,{className:`size-4 mr-2 text-purple`}),label:`Roles`},c&&{key:`users`,to:`${n}/users`,icon:(0,W.jsx)(ri,{className:`size-4 mr-2 text-orange-500`}),label:`Users`},s&&{key:`billing`,to:`${n}/billing`,icon:(0,W.jsx)(Xn,{className:`size-4 mr-2 text-green-500`}),label:`Billing`},o&&{key:`settings`,to:`${n}/settings`,icon:(0,W.jsx)(pr,{className:`size-4 mr-2 text-yellow-500`}),label:`Settings`},l&&{key:`add-coupon`,onClick:()=>d(!0),icon:(0,W.jsx)(Zr,{className:`size-4 mr-2 text-pink-500`}),label:`Add Coupon`},{type:`separator`,key:`sep-bottom`},{key:`delete`,onClick:f,className:`focus:bg-red/70 focus:text-white`,icon:(0,W.jsx)(Qr,{className:`size-4 mr-2 text-red-500`}),label:`Delete`}].filter(Xi);return(0,W.jsx)(is,{items:a?p:[],children:(0,W.jsxs)(Lt,{className:`relative h-full justify-between transition-[transform,box-shadow] duration-200 hover:scale-[1.02] hover:shadow-lg hover:ring-2 hover:ring-primary/60 dark:hover:ring-violet-400/70`,children:[(0,W.jsx)(V,{to:n,"aria-label":`View ${r??n}`,className:`absolute inset-0 rounded-[inherit] focus-visible:ring-2 focus-visible:ring-purple-200 focus-visible:outline-none`}),(0,W.jsxs)(Pt,{children:[(0,W.jsxs)(It,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`truncate`,children:n}),a&&(0,W.jsxs)(ci,{children:[(0,W.jsx)(li,{"aria-label":`Options`,onClick:e=>e.stopPropagation(),className:`relative z-10 -m-2 p-2 rounded-md hover:bg-accent/60 hover:text-foreground`,children:(0,W.jsx)(Qn,{})}),(0,W.jsx)(ui,{children:rs(p,`dropdown`)})]})]}),(0,W.jsx)(Nt,{children:(0,W.jsx)(`h2`,{children:r})})]}),(0,W.jsxs)(Ft,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(ao,{className:`min-w-0 shrink`,title:Ea(i),children:(0,W.jsx)(`span`,{className:`truncate`,children:Ea(i)})}),(0,W.jsxs)(`span`,{className:`text-sm shrink-0 py-2 whitespace-nowrap ml-auto`,children:[`View `,(0,W.jsx)(Dn,{className:`inline-block`})]})]}),(0,W.jsx)(rf,{organizationId:n,organizationName:r,isOpen:u,onClose:()=>d(!1)})]})})}async function of(e){let{data:t}=await N.delete(`/Organization/${e}`);return t}function sf(){return I({mutationFn:e=>of(e)})}async function cf(e){let{data:t}=await N.post(`/Organization/`,{...e});return t}function lf(){return I({mutationFn:e=>cf(e)})}var uf=S().max(62,{error:`Must be at most 62 characters long.`}).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{error:`Please only use lowercase letters, digits and dashes (-) in the subdomain. Must not start or end with a dash.`}),df=b({name:S().max(255,{error:`Name cannot be longer than 255 characters.`}),subdomain:M([O(``),A(),uf]).optional()});function ff(){let{user:e}=Ie(),t=Oe(),n=bt({resolver:_t(df),defaultValues:{name:``,subdomain:``}}),{setFocus:r,watch:i}=n;(0,G.useEffect)(()=>{r(`name`)},[r]);let a=`${e?.firstname} ${e?.lastname} Org`,o=i(`name`)||a,s=i(`subdomain`),c=(0,G.useMemo)(()=>{let e=sc(lc(o),uf.maxLength);return{suggestedSubdomain:e,fullHostName:`future-cluster-names.${s||e}.harperfabric.com`}},[o,s]),{mutate:l,isPending:d}=lf(),f=ie(),p=(0,G.useCallback)(async e=>{l({name:e.name||a,subdomain:e.subdomain||c.suggestedSubdomain},{onSuccess:e=>{f.invalidateQueries({queryKey:m,refetchType:`active`}),u.reloadUser(h),t({to:`/${e.id}`})}})},[c.suggestedSubdomain,f,l,a,t]);return(0,W.jsx)(W.Fragment,{children:(0,W.jsx)(q,{...n,children:(0,W.jsxs)(`form`,{id:`org-add-form`,name:`org-add-form`,onSubmit:n.handleSubmit(p),className:`grid gap-6 text-foreground max-w-xl`,children:[(0,W.jsx)(Y,{control:n.control,name:`name`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,maxLength:df.shape.name.maxLength,autoCapitalize:`words`,placeholder:a,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:n.control,name:`subdomain`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Subdomain`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,maxLength:uf.maxLength,autoCapitalize:`none`,placeholder:c.suggestedSubdomain,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Full Host Name`}),(0,W.jsx)(J,{children:(0,W.jsx)(`span`,{children:c.fullHostName})}),(0,W.jsx)(Q,{})]}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:d,children:[`Create New Organization `,(0,W.jsx)(Dn,{})]})})]})})})}function pf(){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Bo,{}),(0,W.jsx)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:(0,W.jsx)(ff,{})})]})}var mf={org:`organization`,clu:`cluster`,ins:`instance`},hf=/^(org|clu|ins)-[a-z0-9]+$/;function gf(e){if(typeof e!=`string`)return null;let t=e.trim(),n=hf.exec(t);return n?{kind:mf[n[1]],id:t}:null}function _f(e,t){let n=e*12;return`/Admin/Organization/?${[...t?[`name=ct=${encodeURIComponent(t)}`]:[],`status=ne=DELETED`,`sort(name)`,`limit(${n},${n+12+1})`].join(`&`)}`}async function vf(e,t){let{data:n}=await N.get(_f(e,t));return{organizations:n.slice(0,12),hasNextPage:n.length>12}}var yf={organizations:[],hasNextPage:!1};function bf(e){return e instanceof v&&(e.response?.status===404||e.status===404)}async function xf(e){try{let{data:t}=await N.get(`/Admin/Organization/${e}`);return t?{organizations:[t],hasNextPage:!1}:yf}catch(e){if(bf(e))return yf;throw e}}async function Sf(e){try{let{data:t}=await N.get(`/Cluster/${e}`),n=t?.organizationId;return n?await xf(n):yf}catch(e){if(bf(e))return yf;throw e}}function Cf(e,t){let n=gf(t);return B({queryKey:[`admin-all-organizations`,t,e],queryFn:()=>n?.kind===`organization`?xf(n.id):n?.kind===`cluster`?Sf(n.id):vf(e,t),placeholderData:le,retry:!1})}function wf(e,t=300,n){let[r,i]=(0,G.useState)(e);return(0,G.useEffect)(()=>{let n=setTimeout(()=>i(e),t);return()=>clearTimeout(n)},[n?n(e):e,t]),r}function Tf(e,t){if(e===t)return!0;if(!e||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let i of n)if(!r.includes(i)||e[i]!==t[i])return!1;return!0}function Ef(e,t){let[n,r]=(0,G.useState)(t),[i,a]=(0,G.useState)(e);return(0,G.useEffect)(()=>{Tf(n,t)||(r(t),a(e))},[n,t,e]),Tf(n,t)?[i,a]:[e,a]}var Df={};function Of(e,t,n){let r=(0,G.useCallback)((e,n)=>t(e,n),[n]);(0,G.useEffect)(()=>(Df[e]||(Df[e]=[]),Df[e].push(r),function(){let t=Df[e].indexOf(r);t>=0&&Df[e].splice(t,1)}),[e,t,r])}function kf(e,t,n){let r=Df[e];if(r)for(let e of r)e(t,n)}function Af(e,t,n){return r=>kf(e,t,n??r)}function jf(e,t,n){return(0,G.useCallback)(r=>kf(e,t,n??r),[e,t,n])}function Mf(e,t){return _n(sessionStorage.getItem(String(e)))??t}function Nf(e,t){t==null?sessionStorage.removeItem(String(e)):sessionStorage.setItem(String(e),JSON.stringify(t))}function Pf(e,t){let n=Ef(Mf(e,t),[e]),[r,i]=n;return(0,G.useEffect)(()=>{Nf(e,r),kf(`Session:${e}`,r)},[e,r]),Of(`Session:${e}`,function(e){r!==e&&i(e)},[r,e,t]),(0,G.useEffect)(function(){let n=n=>{n.key===e&&i(Mf(e,t))};return window.addEventListener(`storage`,n),()=>{window.removeEventListener(`storage`,n)}},[e,i,t]),n}function Ff(){let e=ie(),{data:t}=ae(c()),{mutate:n,isPending:r}=sf(),[i,a]=(0,G.useState)(!1),[o,s]=(0,G.useState)(null),[l,u]=(0,G.useState)(``),d=(0,G.useCallback)(()=>u(``),[]),f=ze(),[p,m]=Pf(`ShowAllOrganizations`,!1),[h,g]=(0,G.useState)(0),_=f&&p,v=(0,G.useCallback)(e=>{m(e),g(0)},[m]),y=wf(l,300),b=(0,G.useMemo)(()=>{if(!f)return null;let e=gf(y);return e?.kind===`organization`||e?.kind===`cluster`?e:null},[f,y]),x=_||!!b,{data:S,isPending:C}=R({...Cf(h,y),enabled:x}),{organizationRoles:w,oauthLockedOrgs:T}=(0,G.useMemo)(()=>{let e=t?.roles||{},n=[],r=[];for(let[t,i]of Object.entries(e))`oauthProviders`in i&&!f?r.push({organizationId:t,organizationName:i.organizationName,providers:i.oauthProviders}):n.push({organizationId:t,organizationName:i.organizationName,roleName:i.role??`fabric admin`});return{organizationRoles:n.filter(Au([`organizationId`,`organizationName`],l)).sort((e,t)=>(e.organizationName||``)>(t.organizationName||``)?1:-1),oauthLockedOrgs:r}},[l,t?.roles,f]),E=(0,G.useMemo)(()=>{let e=t?.roles||{};return(S?.organizations||[]).map(t=>({organizationId:t.id,organizationName:t.name,roleName:e[t.id]?.role||`fabric admin`}))},[S?.organizations,t?.roles]),D=x?E:w,O=(0,G.useCallback)(e=>{u(e.currentTarget.value||``),g(0)},[]),k=(0,G.useCallback)(t=>{t?.organizationId&&n(t.organizationId,{onSuccess:()=>{H.success(`Success`,{description:`Organization successfully deleted.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),e.invalidateQueries({queryKey:[]}),a(!1)},onError:()=>a(!1)})},[n,e,a]),A=(0,G.useCallback)(e=>{s(e),a(!0)},[]),{createCluster:j}=ce({strict:!1});return!_&&w.length===1&&!l.length&&j?(0,W.jsx)(de,{to:`/${w[0].organizationId}/new-cluster`,replace:!0}):!_&&!w.length&&!T.length&&!l.length?(0,W.jsx)(pf,{}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Bo,{children:(0,W.jsxs)(`div`,{className:`flex w-full items-center justify-end gap-2`,children:[f&&(0,W.jsxs)(`label`,{className:`flex shrink-0 cursor-pointer items-center gap-2 text-xs`,children:[(0,W.jsx)(Td,{checked:p,onCheckedChange:v,"aria-label":`Show all organizations`}),(0,W.jsx)(`span`,{className:`hidden sm:inline-block`,children:`All Orgs`})]}),(0,W.jsx)($,{placeholder:`Filter by name`,className:`inline-block w-full text-xs`,value:l,onChange:O}),(0,W.jsx)(V,{to:`/new-org`,children:(0,W.jsxs)(F,{variant:`positive`,accessKey:`n`,children:[(0,W.jsx)(Mr,{}),(0,W.jsxs)(`span`,{className:`hidden sm:inline-block`,children:[(0,W.jsx)(`u`,{children:`N`}),`ew `,(0,W.jsx)(`span`,{className:`hidden md:inline-block`,children:`Organization`})]})]})})]})}),(0,W.jsxs)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-12`,children:[!x&&T.map(e=>(0,W.jsx)(`div`,{className:`col-span-1 md:col-span-4 lg:col-span-3 2xl:col-span-2`,children:(0,W.jsx)($d,{organizationId:e.organizationId,organizationName:e.organizationName,providers:e.providers})},e.organizationId)),x&&C?Array.from({length:12},(e,t)=>(0,W.jsx)(Qd,{className:`col-span-1 h-40 md:col-span-4 lg:col-span-3 2xl:col-span-2`},t)):D.map(e=>(0,W.jsx)(`div`,{className:`col-span-1 md:col-span-4 lg:col-span-3 2xl:col-span-2`,children:(0,W.jsx)(af,{organizationRole:e,onDeleteOrgModal:A})},e.organizationId)),!D.length&&!(x&&C)&&(x||!T.length)&&(0,W.jsxs)(`div`,{className:`col-span-1 md:col-span-12 text-center`,children:[(0,W.jsx)(`h2`,{className:`my-4 text-xl`,children:`No matches found.`}),(0,W.jsx)(F,{variant:`outline`,onClick:d,children:`Clear Filters`})]})]}),x&&(h>0||S?.hasNextPage)&&(0,W.jsxs)(`div`,{className:`flex items-center justify-center gap-4 py-6`,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,size:`sm`,className:`select-none`,disabled:h===0,onClick:()=>g(e=>e-1),children:[(0,W.jsx)(an,{}),`Previous`]}),(0,W.jsxs)(`span`,{className:`text-sm text-gray-500 dark:text-gray-400`,children:[`Page `,h+1]}),(0,W.jsxs)(F,{variant:`defaultOutline`,size:`sm`,className:`select-none`,disabled:!S?.hasNextPage,onClick:()=>g(e=>e+1),children:[`Next`,(0,W.jsx)(Dn,{})]})]})]}),o&&(0,W.jsx)(Jo,{typeOfThingBeingDeleted:`organization`,nameOfThingBeingDeleted:o.organizationName,isModalOpen:i,setIsModalOpen:()=>a(!1),deletionConfirmed:()=>k(o),deletionPending:r})]})}var If=z({getParentRoute:()=>pa,id:`_orgsLayout`});z({getParentRoute:()=>If,path:`/`,head:()=>({meta:[{title:`Organizations — Harper Fabric`}]}),component:Ff}),z({getParentRoute:()=>If,path:`/new-org`,head:()=>({meta:[{title:`New Organization — Harper Fabric`}]}),component:pf});var Lf=z({getParentRoute:()=>If,path:`$organizationId`,beforeLoad:async e=>{let{organizationId:t}=e.params;if(!rc(t))throw _e({to:`/`});return{organization:await e.context.queryClient.ensureQueryData(ac(t))}}});z({getParentRoute:()=>Lf,path:`/roles`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:wd}),z({getParentRoute:()=>Lf,path:`/roles/$orgRoleId`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:wd}),z({getParentRoute:()=>Lf,path:`/users`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:Zd}),z({getParentRoute:()=>Lf,path:`/users/$orgUserId`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:Zd}),z({getParentRoute:()=>Lf,path:`/settings`,component:Ad}),td(Lf);var Rf=z({getParentRoute:()=>Lf,id:`_clusterLayout`});z({getParentRoute:()=>Rf,path:`/`,head:()=>({meta:[{title:`Clusters — Harper Fabric`}]}),component:ju}),z({getParentRoute:()=>Lf,path:`/new-cluster`,head:()=>({meta:[{title:`New Cluster — Harper Fabric`}]}),component:Tu}),z({getParentRoute:()=>Bf,path:`/edit`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:Tu}),z({getParentRoute:()=>Bf,path:`/edit/$mode`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:Tu});function zf(){return(0,W.jsx)(Se,{})}var Bf=z({getParentRoute:()=>Rf,path:`$clusterId`,component:zf,beforeLoad:async({context:e,params:t})=>({cluster:await e.queryClient.ensureQueryData(Ba(t.clusterId))})});function Vf({cluster:e}){let t=ne(),n=ie(),{update:r,remove:i}=cs(e.organizationId,e.id),{run:a,isPending:o}=Ds(e),{mutate:s,isPending:c}=Cs(),[l,u]=(0,G.useState)(!1),[d,f]=(0,G.useState)(!1),[p,m]=(0,G.useState)(!1),[h,g]=(0,G.useState)(null),_=e.status===`RUNNING`,v=e.status===`STOPPED`,y=e.status===`PARTIAL`,b=!r||o,x=(0,G.useCallback)(()=>{s(e.id,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),m(!1),H.success(`Success`,{description:`Cluster successfully terminated.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),t.navigate({to:`/${e.organizationId}`})},onError:()=>{m(!1)}})},[e.id,e.organizationId,s,n,t]),S=(0,G.useCallback)(()=>{let e=h;g(null),e&&a(e,{safeMode:!0,strategy:`parallel`,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})},[h,a]);return hs(e)||!r&&!i?null:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(ci,{children:[(0,W.jsx)(li,{asChild:!0,children:(0,W.jsxs)(F,{variant:`outline`,size:`sm`,disabled:o,className:`gap-1.5 hover:translate-y-0 data-[state=open]:[&>svg]:rotate-180`,children:[`Cluster actions`,(0,W.jsx)(dn,{className:`size-4 transition-transform`})]})}),(0,W.jsxs)(ui,{align:`end`,className:`w-56`,children:[(0,W.jsx)(pi,{className:`text-gray-600 text-xs`,children:`Container`}),(0,W.jsxs)(di,{disabled:b||!(v||y),onClick:()=>void a(`start`,{safeMode:!1,strategy:`parallel`}),children:[(0,W.jsx)(jr,{}),` Start`]}),(0,W.jsxs)(di,{disabled:b||!v,onClick:()=>g(`start`),children:[(0,W.jsx)(gr,{}),` Start in safe mode`]}),(0,W.jsxs)(di,{disabled:b||!(_||y),onClick:()=>f(!0),children:[(0,W.jsx)(Fr,{}),` Restart`]}),(0,W.jsxs)(di,{disabled:b||!_,onClick:()=>g(`restart`),children:[(0,W.jsx)(gr,{}),` Restart in safe mode`]}),(0,W.jsxs)(di,{variant:`destructive`,disabled:b||!(_||y),onClick:()=>u(!0),children:[(0,W.jsx)(Gr,{}),` Stop`]}),(0,W.jsx)(mi,{}),(0,W.jsxs)(di,{variant:`destructive`,disabled:!i,onClick:()=>m(!0),children:[(0,W.jsx)($r,{}),` Terminate`]})]})]}),(0,W.jsx)(vs,{clusterName:e.name,isPending:o,stopOpen:l,setStopOpen:u,onConfirmStop:()=>{u(!1),a(`stop`,{strategy:`parallel`})},restartOpen:d,setRestartOpen:f,onConfirmRestart:e=>{f(!1),a(`restart`,{safeMode:!1,strategy:e})}}),(0,W.jsx)(xs,{open:h!==null,setOpen:e=>{e||g(null)},action:h??`restart`,targetName:e.name,scope:`cluster`,isPending:o,onConfirm:S}),(0,W.jsx)(Jo,{typeOfThingBeingDeleted:`cluster`,transitiveVerb:`Terminate`,presentParticiple:`Terminating`,nameOfThingBeingDeleted:e.name,isModalOpen:p,setIsModalOpen:m,deletionConfirmed:x,deletionPending:c})]})}function Hf(){let{clusterId:e}=L({strict:!1}),t=ne(),n=Oe(),{data:r}=R(Ba(e,!0)),{user:i,isLoading:a}=Fe(e),{view:o,update:c}=cs(r?.organizationId,r?.id),[l,f]=(0,G.useState)(!1),p=r?.domains?.[0]?.domain||r?.fqdn||``,[m,h]=As(p,p?`https://${p}`:``),_=r?`/${r.organizationId}/${r.id}`:``,v=(0,G.useCallback)(async()=>{if(r){f(!0);try{await u.establishFabricConnectAuth({id:r.id,operationsUrl:s(r)}),await t.invalidate()}catch{H.error(`Could not connect to this cluster through Fabric Connect.`)}finally{f(!1)}}},[r,t]),y=(0,G.useCallback)(()=>{r&&(u.setUserForEntity(r,null),u.flagForFabricConnect(r.id,!1)),n({to:`${_}/sign-in`})},[_,r,n]),b=(0,G.useCallback)(async()=>{if(r){try{await d({instanceClient:g({id:r.id}),entityId:r.id})}catch{}u.setUserForEntity(r,null),u.flagForFabricConnect(r.id,!1),u.flagForBasicAuth(r.id,null),await t.invalidate()}},[r,t]);if(!r)return(0,W.jsx)(Wf,{children:(0,W.jsx)(Gf,{})});if(!o)return(0,W.jsx)(de,{to:`/${r.organizationId}`,replace:!0});if(hs(r))return(0,W.jsx)(Uf,{cluster:r});if(!r.fqdn)return(0,W.jsx)(de,{to:`${_}/instances`,replace:!0});if(r.resetPassword)return c?(0,W.jsx)(de,{to:`${_}/${r.status&&Na.includes(r.status)?`finish-setup`:`starting-up`}`,replace:!0}):(0,W.jsx)(Wf,{children:(0,W.jsxs)(`div`,{className:`text-center py-12`,children:[(0,W.jsx)(zr,{className:`size-12 text-muted-foreground mx-auto mb-4`}),(0,W.jsx)(`h1`,{className:`text-xl font-medium mb-2 text-foreground`,children:`Pending Owner Setup`}),(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground max-w-md mx-auto`,children:`This cluster needs an administrator to finish setup before it can be used.`})]})});let x=u.checkForFabricConnect(r.id),S=!!i,C=u.getLastConnectMode(r.id),w=(r.instances??[]).filter(e=>e.status&&!Pa.includes(e.status)).length,T=r.instances??[],E=!!r.status&&Na.includes(r.status)&&T.length>0&&T.every(e=>e.safeMode);return(0,W.jsxs)(Wf,{children:[(0,W.jsxs)(`div`,{className:`flex items-start gap-4 mb-6`,children:[(0,W.jsx)(`div`,{className:`flex items-center justify-center size-12 rounded-xl bg-violet-50 text-primary dark:bg-grey-700 dark:text-violet-300 shrink-0`,children:(0,W.jsx)(zr,{className:`size-6`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light text-foreground`,children:r.name}),(0,W.jsx)(Kf,{status:r.status}),E&&(0,W.jsx)(qf,{})]}),(0,W.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-sm text-muted-foreground`,children:[(0,W.jsxs)(`span`,{children:[w,` `,w===1?`instance`:`instances`]}),(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,W.jsxs)(`a`,{href:`https://${p}`,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 hover:text-foreground hover:underline`,children:[p,(0,W.jsx)($n,{className:`size-3`})]}),(0,W.jsxs)(ci,{children:[(0,W.jsx)(li,{"aria-label":`Copy cluster URLs`,className:`rounded-md p-1 -m-1 hover:bg-accent/60 hover:text-foreground`,children:(0,W.jsx)(Yn,{className:`size-3.5`})}),(0,W.jsxs)(ui,{align:`start`,children:[(0,W.jsx)(di,{onClick:m,children:`Copy host name`}),(0,W.jsx)(di,{onClick:h,children:`Copy API URL`})]})]})]})]}),(0,W.jsx)(Vf,{cluster:r})]}),a?(0,W.jsx)(Gf,{}):S?(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 text-sm`,children:[(0,W.jsx)(Bn,{className:`size-4 text-green shrink-0`}),(0,W.jsx)(`span`,{className:`font-medium text-green`,children:x?`Connected via Fabric Connect`:`Signed in directly`}),(0,W.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`· `,x?`through your Harper account`:`session cookie`]})]}),(0,W.jsxs)(V,{to:`${_}/apps`,className:`group flex items-center gap-4 rounded-2xl border-2 border-primary/30 bg-primary/5 p-6 transition-all hover:border-primary hover:bg-primary/10 dark:border-violet-400/30 dark:bg-violet-400/5 dark:hover:border-violet-400 dark:hover:bg-violet-400/10`,children:[(0,W.jsx)(`div`,{className:`flex size-12 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 dark:bg-violet-400/15 dark:text-violet-300`,children:(0,W.jsx)(Nr,{className:`size-6`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`div`,{className:`text-lg font-medium text-foreground`,children:`Enter cluster`}),(0,W.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Open the studio — apps, databases, APIs, logs, and config.`})]}),(0,W.jsx)(Dn,{className:`size-5 text-muted-foreground transition-transform group-hover:translate-x-1`})]}),(0,W.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-4 text-sm`,children:[x&&(0,W.jsx)(`button`,{type:`button`,onClick:y,className:`text-muted-foreground hover:text-foreground transition-colors`,children:`Switch to direct sign-in`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void b(),className:`text-muted-foreground hover:text-destructive transition-colors`,children:x?`Disconnect`:`Direct sign out`})]})]}):(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-sm font-medium text-foreground mb-3`,children:`Connect to this cluster`}),(0,W.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3.5`,children:[c&&!hs(r)&&(0,W.jsx)(Jf,{icon:ii,title:`Fabric Connect`,description:`Connect through your Harper account. No cluster credentials needed.`,pill:C===`fabric`?`last`:C?void 0:`recommended`,children:(0,W.jsx)(F,{className:`w-full`,disabled:l,onClick:()=>void v(),children:l?(0,W.jsx)(vr,{className:`animate-spin`}):`Fabric Connect`})}),(0,W.jsx)(Jf,{icon:pr,title:`Direct sign-in`,description:`Sign in with this cluster's Harper username and password.`,pill:C===`direct`?`last`:void 0,children:(0,W.jsx)(F,{className:`w-full`,variant:`outline`,onClick:y,children:`Direct sign-in`})})]})]})]})}function Uf({cluster:e}){let t=ne(),n=Oe(),r=`/${e.organizationId}/${e.id}`,i=(0,G.useMemo)(()=>(e.instances??[]).filter(e=>e.status&&!Pa.includes(e.status)).sort(Js),[e.instances]),a=i.at(0),{user:o,isLoading:s}=Fe(a?.id),c=!!a&&!!o,l=(0,G.useCallback)(()=>{a&&n({to:`${r}/instance/${a.id}/sign-in`})},[r,a,n]),f=(0,G.useCallback)(async()=>{if(a){try{await d({instanceClient:g({id:a.id,operationsUrl:p(a)}),entityId:a.id})}catch{}u.setUserForEntity(a,null),u.flagForBasicAuth(a.id,null),await t.invalidate()}},[a,t]);return(0,W.jsxs)(Wf,{children:[(0,W.jsxs)(`div`,{className:`flex items-start gap-4 mb-6`,children:[(0,W.jsx)(`div`,{className:`flex items-center justify-center size-12 rounded-xl bg-violet-50 text-primary dark:bg-grey-700 dark:text-violet-300 shrink-0`,children:(0,W.jsx)(zr,{className:`size-6`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light text-foreground`,children:e.name}),(0,W.jsx)(`span`,{className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full text-muted-foreground bg-muted`,children:`Self-Hosted`})]}),(0,W.jsx)(`div`,{className:`mt-1 text-sm text-muted-foreground`,children:(0,W.jsxs)(V,{to:`${r}/instances`,className:`hover:text-foreground hover:underline`,children:[i.length,` `,i.length===1?`instance`:`instances`]})})]})]}),a?s?(0,W.jsx)(Gf,{}):c?(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 text-sm`,children:[(0,W.jsx)(Bn,{className:`size-4 text-green shrink-0`}),(0,W.jsx)(`span`,{className:`font-medium text-green`,children:`Signed in directly`}),(0,W.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`· `,a.name||a.instanceFqdn]})]}),(0,W.jsxs)(V,{to:`${r}/instance/${a.id}/`,className:`group flex items-center gap-4 rounded-2xl border-2 border-primary/30 bg-primary/5 p-6 transition-all hover:border-primary hover:bg-primary/10 dark:border-violet-400/30 dark:bg-violet-400/5 dark:hover:border-violet-400 dark:hover:bg-violet-400/10`,children:[(0,W.jsx)(`div`,{className:`flex size-12 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 dark:bg-violet-400/15 dark:text-violet-300`,children:(0,W.jsx)(Nr,{className:`size-6`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`div`,{className:`text-lg font-medium text-foreground`,children:`Enter cluster`}),(0,W.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Open the studio — apps, databases, APIs, logs, and config.`})]}),(0,W.jsx)(Dn,{className:`size-5 text-muted-foreground transition-transform group-hover:translate-x-1`})]}),(0,W.jsx)(`div`,{className:`mt-4 flex flex-wrap gap-4 text-sm`,children:(0,W.jsx)(`button`,{type:`button`,onClick:()=>void f(),className:`text-muted-foreground hover:text-destructive transition-colors`,children:`Direct sign out`})})]}):(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-sm font-medium text-foreground mb-3`,children:`Connect to this cluster`}),(0,W.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3.5`,children:(0,W.jsx)(Jf,{icon:pr,title:`Direct sign-in`,description:`Sign in with this instance's Harper username and password.`,children:(0,W.jsx)(F,{className:`w-full`,variant:`outline`,onClick:l,children:`Direct sign-in`})})})]}):(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`This cluster has no instances yet. Register one from the`,` `,(0,W.jsx)(V,{to:`${r}/instances`,className:`underline hover:text-foreground`,children:`Instances`}),` page.`]})]})}function Wf({children:e}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Bo,{}),(0,W.jsx)(Fs,{children:(0,W.jsx)(`div`,{className:`max-w-3xl`,children:e})})]})}function Gf(){return(0,W.jsx)(`div`,{className:`flex justify-center py-10 text-muted-foreground`,children:(0,W.jsx)(vr,{className:`size-6 animate-spin`})})}function Kf({status:e}){return(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full ${e&&Na.includes(e)?`text-green bg-green/10`:e===`STOPPED`?`text-destructive bg-destructive/10`:e===`PARTIAL`?`text-yellow bg-yellow/10`:`text-muted-foreground bg-muted`}`,children:[(0,W.jsx)(`span`,{className:`size-1.5 rounded-full bg-current`}),e?e.charAt(0)+e.slice(1).toLowerCase():`Unknown`]})}function qf(){return(0,W.jsxs)(`span`,{title:`All instances running in safe mode — user apps/components are not loaded`,className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full text-yellow bg-yellow/10`,children:[(0,W.jsx)(gr,{className:`size-3`}),`Safe mode`]})}function Jf({icon:e,title:t,description:n,pill:r,children:i}){return(0,W.jsxs)(`div`,{className:`relative rounded-xl p-4.5 bg-card border ${r===`last`?`border-2 border-green`:r===`recommended`?`border-2 border-primary dark:border-violet-400`:`border-border`}`,children:[r&&(0,W.jsx)(`span`,{className:`absolute -top-2.5 left-4 rounded-full bg-card`,children:(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full ${r===`last`?`text-green bg-green/15`:`text-primary bg-violet-50 dark:text-violet-300 dark:bg-grey-700`}`,children:[r===`last`&&(0,W.jsx)(`span`,{className:`size-1.5 rounded-full bg-current`}),r===`last`?`Last used`:`Recommended`]})}),(0,W.jsx)(e,{className:`size-6 text-primary dark:text-violet-300 mb-2`}),(0,W.jsx)(`div`,{className:`text-[15px] font-medium text-foreground mb-1`,children:t}),(0,W.jsx)(`p`,{className:`text-[13px] text-muted-foreground leading-normal mb-4`,children:n}),i]})}function Yf({children:e,className:t}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Bo,{}),(0,W.jsx)(Fs,{children:(0,W.jsx)(`div`,{className:t,children:e})})]})}var Xf=new Set([`com`,`co`,`org`,`net`,`edu`,`gov`,`mil`,`me`,`biz`,`info`,`ac`,`or`,`ne`,`go`,`lg`,`asn`,`id`,`nom`,`sch`,`ltd`,`plc`]);function Zf(e){let t=e.split(`.`);if(t.length<=2)return`@`;let n=t[t.length-1],r=t[t.length-2],i=n.length===2&&Xf.has(r)?3:2;return t.length<=i?`@`:t.slice(0,-i).join(`.`)}function Qf({cluster:{fqdn:e},domain:{domain:t,id:n}}){let r=Zf(t),[i,a,o]=As(r,e||``,n);return(0,W.jsxs)(`div`,{className:`grid gap-4 grid-cols-1 md:grid-cols-[80px_1fr] pb-6`,children:[(0,W.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap`,children:`This domain has been verified! Now to associate it with this cluster, add the following to your DNS registrar:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`CNAME`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordName`,value:r,onClick:i}),(0,W.jsx)(F,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:i,children:(0,W.jsx)(Yn,{className:`w-3.5 h-3.5`})})]})}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Target:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordTarget`,value:e,onClick:a}),(0,W.jsx)(F,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:a,children:(0,W.jsx)(Yn,{className:`w-3.5 h-3.5`})})]})}),(0,W.jsx)(`div`,{className:`col-span-1 text-xs`,children:`Domain ID:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-0.5 text-xs text-muted-foreground italic flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`domainId`,value:n,onClick:o}),(0,W.jsx)(F,{type:`button`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:o,children:(0,W.jsx)(Yn,{className:`w-3 h-3`})})]})}),(0,W.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap italic text-sm`,children:`Select this domain using the checkbox to the left, then click "Bind" in the top right to finish associating it with this cluster.`})]})}function $f({certificate:e,domain:t,cluster:n}){let r=Zf(t.domain),[i,a,o]=As(r,n.fqdn||``,t.id),s=(0,G.useMemo)(()=>e.issueDate&&!e.inProgress?{width:`100%`,color:`bg-green/80`,pulse:!1,text:`Certificate Issued`}:e.inProgress?{width:`100%`,color:`bg-yellow/80`,pulse:!0,text:`Generating Certificate...`}:{width:`100%`,color:`bg-gray-600`,pulse:!1,text:`Pending Certificate Generation...`},[e]);return(0,W.jsxs)(`div`,{className:`w-full max-w-2xl border border-border/50 rounded-md p-4 bg-gray-900/20`,children:[(0,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.jsx)(`div`,{className:`w-full h-1.5 rounded-full overflow-clip flex shadow-sm bg-gray-800`,children:(0,W.jsx)(`div`,{style:{width:s.width},className:`grow transition-[width] duration-1000 ease-in-out motion-reduce:transition-none ${s.color} ${s.pulse?`animate-pulse`:``}`})}),(0,W.jsx)(`div`,{className:`text-[10px] text-muted-foreground font-light mt-1 italic`,children:s.text})]}),(0,W.jsxs)(`div`,{className:`grid gap-2 grid-cols-1 md:grid-cols-[80px_1fr] text-sm`,children:[(0,W.jsx)(`div`,{className:`col-span-1 text-xs text-muted-foreground`,children:`CNAME:`}),(0,W.jsxs)(`div`,{className:`col-span-1 flex gap-2 items-center flex-wrap`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted px-2 py-0.5 rounded text-xs`,children:[(0,W.jsx)(`span`,{className:`truncate max-w-[150px]`,title:r,children:r}),(0,W.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:i,title:`Copy Name`,children:(0,W.jsx)(Yn,{className:`w-3 h-3`})})]}),(0,W.jsx)(ep,{}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted px-2 py-0.5 rounded text-xs`,children:[(0,W.jsx)(`span`,{className:`truncate max-w-[200px]`,title:n.fqdn||``,children:n.fqdn}),(0,W.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:a,title:`Copy Target`,children:(0,W.jsx)(Yn,{className:`w-3 h-3`})})]})]}),(0,W.jsx)(`div`,{className:`col-span-1 text-[10px] text-muted-foreground`,children:`Domain ID:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted px-2 py-0.5 rounded text-[10px] text-muted-foreground italic`,children:[(0,W.jsx)(`span`,{className:`truncate max-w-[200px]`,children:t.id}),(0,W.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,className:`h-3 w-3 p-0`,onClick:o,title:`Copy ID`,children:(0,W.jsx)(Yn,{className:`w-2.5 h-2.5`})})]})})]})]})}function ep(){return(0,W.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`w-3 h-3 text-muted-foreground`,children:[(0,W.jsx)(`path`,{d:`M5 12h14`}),(0,W.jsx)(`path`,{d:`m12 5 7 7-7 7`})]})}function tp(e){let{enabled:t,entityId:n,databaseName:r,tableName:i,searchAttribute:a,sort:o,pageIndex:s,pageSize:c,onlyIfCached:l,getAttributes:u}=e;return B({enabled:t,queryKey:[n,r,i,`search_by_value`,a,o.attribute||`default`,o.descending||!1,s||0,c||0,l,u??null],retry:!1,staleTime:6e4,gcTime:5e3,queryFn:()=>np(e)})}async function np({instanceClient:e,databaseName:t,tableName:n,searchAttribute:r,sort:i,pageIndex:a,pageSize:o,onlyIfCached:s,getAttributes:c,headers:l}){let u=i.attribute.length&&!(i.attribute===r&&!i.descending),d=await e.post(`/`,{operation:`search_by_value`,get_attributes:c??[`*`],database:t,table:n,search_attribute:r,search_value:`*`,sort:u?i:void 0,offset:a*o,limit:o,onlyIfCached:s,noCacheStore:s},{timeout:0,headers:l,validateStatus:e=>e>=200&&e<400||e===404});return d.status===404?{data:[]}:d}function rp(e){return B({queryKey:[e,`ChallengeCertificate`],queryFn:async()=>{if(!e)return[];let{data:t}=await np({searchAttribute:`domain`,entityId:e,databaseName:`data`,tableName:`ChallengeCertificate`,sort:{attribute:`domain`,descending:!0},instanceClient:g({id:e,forceFabricConnect:!0}),onlyIfCached:!1,pageIndex:0,pageSize:100});return t},enabled:!!e,refetchInterval:5e3})}function ip(e){return R(rp(e))}function ap({domain:{challengeToken:e,challengeTxtRecord:t,domain:n,id:r},cluster:{fqdn:i}}){let a=Zf(n),[o,s,c,l,u]=As(t,e,a,i||``,r);return(0,W.jsxs)(`div`,{className:`grid gap-2 grid-cols-1 md:grid-cols-[80px_1fr] pb-6`,children:[(0,W.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap`,children:`Prove that you own this domain by adding the following to your DNS registrar:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`TXT`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`challengeName`,value:t,onClick:o}),(0,W.jsx)(F,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:o,children:(0,W.jsx)(Yn,{className:`w-3.5 h-3.5`})})]})}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Content:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`challengeToken`,value:e,onClick:s}),(0,W.jsx)(F,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:s,children:(0,W.jsx)(Yn,{className:`w-3.5 h-3.5`})})]})}),(0,W.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap mt-4`,children:`While you're at it, you should also add the CNAME record to point to this cluster:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`CNAME`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordName`,value:a,onClick:c}),(0,W.jsx)(F,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:c,children:(0,W.jsx)(Yn,{className:`w-3.5 h-3.5`})})]})}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Target:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordTarget`,value:i,onClick:l}),(0,W.jsx)(F,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:l,children:(0,W.jsx)(Yn,{className:`w-3.5 h-3.5`})})]})}),(0,W.jsx)(`div`,{className:`col-span-1 text-xs`,children:`Domain ID:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-0.5 text-xs text-muted-foreground italic flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`domainId`,value:r,onClick:u}),(0,W.jsx)(F,{type:`button`,size:`sm`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:u,children:(0,W.jsx)(Yn,{className:`w-3 h-3`})})]})}),(0,W.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap mt-2`,children:`Then after your DNS TTL elapses, click the "Validate" button above.`})]})}async function op({clusterId:e,domainIds:t,generateDomainCerts:n}){let{data:r}=await N.put(`/Cluster/${e}`,{domainIds:t,generateDomainCerts:n},{timeout:0});return r}function sp(){return I({mutationFn:e=>op(e)})}k.object({domainId:k.string()});async function cp(e){let{data:t}=await N.delete(`/Domain/${e.domainId}`);return t}function lp(){return I({mutationFn:e=>cp(e)})}function up(e){return[...new Set(e)]}var dp=ue();function fp(e,t,n){let{data:r}=ip(e.id),i=(0,G.useMemo)(()=>!!r?.some(e=>!e.issueDate||e.inProgress),[r]),{mutate:a,isPending:o}=sp(),{mutate:s,isPending:c}=lp(),l=o||c,u=(0,G.useCallback)((t,n)=>{if(!Uo(e.status)){H.error(`Cluster is currently `+e.status,{description:`To bind a domain, it must be running.`});return}a({clusterId:e.id,domainIds:up((e.domainIds?.slice()||[]).concat([t])),generateDomainCerts:n},{onSuccess:()=>{hn.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),H.success(`Domain bound!`+(n?` Certificates are being generated in the background now.`:``))}})},[a,e]),d=(0,G.useCallback)(t=>{s({domainId:t},{onSuccess:()=>{hn.invalidateQueries({queryKey:[e.organizationId,`domains`],refetchType:`active`}),H.success(`Domain removed!`)}})},[s]),f=(0,G.useCallback)(t=>{a({clusterId:e.id,domainIds:(e.domainIds?.slice()||[]).filter(e=>e!==t),generateDomainCerts:!1},{onSuccess:()=>{hn.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),H.success(`Domain unbound!`)}})},[s]);return(0,G.useMemo)(()=>[dp.display({id:`select`,header:`Bind`,size:50,cell:r=>{let a=r.row.original;return a.status===`ACTIVE`&&!a.clusterId&&!hs(e)?(0,W.jsx)(`label`,{className:`p-10 -m-10`,children:(0,W.jsx)(`input`,{type:`checkbox`,checked:t.includes(a.id),onChange:()=>n(a.id),disabled:l||i})}):null}}),dp.display({header:`Domains`,id:`domain`,enableSorting:!1,size:150,cell:e=>{let t=e.row.original;return(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{children:t.domain}),(0,W.jsx)(F,{type:`button`,variant:`destructiveGhost`,className:`text-muted-foreground text-xs`,disabled:l||!!t.clusterId,onClick:()=>d(t.id),children:`Remove Domain`})]})}),(0,W.jsx)(Rt,{side:`bottom`,align:`center`,children:t.clusterId?`To delete this domain, please unbind it from all clusters first.`:`Remember to clean up your DNS records!`})]})}}),dp.display({header:`Next Steps`,enableSorting:!1,size:500,id:`nextSteps`,cell:t=>{let n=t.row.original,i=r?.find(e=>e.domain===n.domain);return n.status===`ACTIVE`&&n.clusterId?e.id===n.clusterId?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{children:`Bound to this cluster`}),i&&(!i.issueDate||i.inProgress)&&(0,W.jsx)(`div`,{className:`py-2`,children:(0,W.jsx)($f,{certificate:i,domain:n,cluster:e})}),(0,W.jsx)(F,{type:`button`,variant:`destructiveGhost`,className:`text-muted-foreground text-xs`,disabled:l,onClick:()=>f(n.id),children:`Unbind Domain`})]}):`Bound to cluster ${n.clusterId}`:n.status===`PENDING_VALIDATION`?(0,W.jsx)(ap,{domain:n,cluster:e}):hs(e)?`Cannot be associated with this self-managed cluster.`:n.status===`ACTIVE`&&!n.clusterId?(0,W.jsx)(Qf,{cluster:e,domain:n}):n.status}})],[e,u,l,r,i,t,n])}var pp=k.object({domain:k.string(),organizationId:k.string()});async function mp(e){let{data:t}=await N.post(`/Domain/`,e);return t}function hp(){return I({mutationFn:e=>mp(e)})}async function gp(e){let{data:t}=await N.post(`/Domain/${e}/validate`);return t}async function _p(e){let{data:t}=await N.get(`/Domain/?organizationId=${e}`);return t}function vp(e){return B({queryKey:[e,`domains`],queryFn:()=>_p(e)})}function yp(){let{organizationId:e,clusterId:t}=L({strict:!1}),{data:n}=ae(Ba(t,!0)),{update:r}=ss(e),{data:i,refetch:a,isFetching:s,isRefetching:c}=R(vp(e)),l=(0,G.useMemo)(()=>i?.filter(e=>e.status===`PENDING_VALIDATION`)||[],[i]),[u]=(0,G.useState)({attribute:`domain`,descending:!1}),d=(0,G.useMemo)(()=>[{desc:u.descending,id:u.attribute}],[u]),f=Zu(a),[p,m]=(0,G.useState)([]),h=(0,G.useCallback)(e=>{m(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),{mutate:g,isPending:_}=sp(),v=(0,G.useCallback)(()=>{if(!Uo(n.status)){H.error(`Cluster is currently `+n.status,{description:`To bind a domain, it must be running.`});return}g({clusterId:n.id,domainIds:up((n.domainIds?.slice()||[]).concat(p)),generateDomainCerts:!0},{onSuccess:()=>{hn.invalidateQueries({queryKey:[n.organizationId],refetchType:`active`}),H.success(`Domain(s) bound! Certificates are being generated in the background now.`),m([])}})},[n,p,g]),{mutateAsync:y,isPending:b}=hp(),x=bt({resolver:_t(pp),defaultValues:{domain:``,organizationId:e}}),S=(0,G.useCallback)(async e=>{if(e){let t=e.domain.split(/[,\s]+/).map(e=>e.trim()).filter(Boolean);for(let n of t)await y({...e,domain:n});x.reset(),await a(),H.success(`${o(t.length,`Domain`,`Domains`)} added! Please add the txt record above to your domain registrar.`)}},[y,x,a]),C=(0,G.useCallback)(async()=>{let e=`Validating ${o(l.length,`domain`,`domains`)}...`,t=`validatingDomains`,n=0,r=0;for(let i of l)try{H.loading(e,{description:`${n++} of ${l.length} checked`,id:t}),await gp(i.id)}catch{r+=1}r>0?H.error(`Validation failed!`,{description:`Please make sure the TXT record has been put in place. You may need to wait a bit for the DNS change to propagate.`,id:t}):(await a(),H.success(`Validation succeeded!`,{description:`Please take a look at the next steps for newly verified domains.`,id:t}))},[l]),w=fp(n,p,h),T=x.watch(`domain`),E=(0,G.useMemo)(()=>typeof T==`string`&&T.trim().split(`.`).length===2,[T]),D=(0,G.useCallback)(()=>{typeof T==`string`&&x.setValue(`domain`,`${T.trim()}, www.${T.trim()}`)},[T,x]);return(0,W.jsx)(Ku,{data:i||[],isFetching:s||c,columns:w,sortingState:d,children:(0,W.jsxs)(`div`,{className:`w-full flex flex-col md:flex-row items-center md:justify-between md:space-x-2 space-y-2 md:space-y-0`,children:[r&&(0,W.jsx)(q,{...x,children:(0,W.jsxs)(`form`,{id:`cluster-add-domain-form`,name:`cluster-add-domain-form`,onSubmit:x.handleSubmit(S),className:`flex gap-1 flex-col md:flex-row`,children:[(0,W.jsx)(Y,{control:x.control,name:`domain`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex-1`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`New Domain Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,enterKeyHint:`done`,autoComplete:`off`,...e})}),E&&(0,W.jsxs)(`div`,{className:`mt-1 flex gap-4`,children:[`Adding an apex domain?`,(0,W.jsx)(F,{variant:`positiveOutline`,type:`button`,onClick:D,children:`Add www as well`})]}),(0,W.jsx)(Q,{children:(0,W.jsx)(`span`,{className:`text-muted-foreground italic`,children:`Type in a domain like example.com or your.example.com, and you'll be guided through validating and binding your cluster to it.`})})]})}),(0,W.jsxs)(`div`,{className:`flex-0 self-start flex gap-1 md:pt-6.5`,children:[(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:b,children:[(0,W.jsx)(Mr,{}),` Add`]}),l.length>0&&(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:C,accessKey:`r`,type:`button`,disabled:s||c,children:[(0,W.jsx)(_r,{}),` `,(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`V`}),`alidate`]})]}),(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:f,accessKey:`r`,type:`button`,disabled:s||c,children:[(0,W.jsx)(fn,{}),` `,(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]})]})]})}),p.length>0&&(0,W.jsx)(`div`,{className:`flex-0 self-start md:pt-6.5`,children:(0,W.jsxs)(F,{variant:`submit`,onClick:v,disabled:_,children:[(0,W.jsx)(Ir,{}),` Bind `,o(p.length,`Domain`,`Domains`)]})})]})})}function bp(){return(0,W.jsx)(Yf,{className:`flex flex-col justify-start max-w-4xl`,children:(0,W.jsx)(yp,{})})}var xp=b({username:Ua,role:S().nonempty({error:`Please select a role.`}),password:Ha.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:S()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});async function Sp(e){await N.patch(`/ResetPasswordUpdater/${e}`)}async function Cp(e){let{instanceClient:t,...n}=e,{data:r}=await t.post(`/`,{operation:`add_user`,...n});return r}function wp(){return I({mutationFn:Cp})}async function Tp({username:e,password:t,role:n,active:r,instanceClient:i}){let{data:a}=await i.post(`/`,{operation:`alter_user`,username:e,password:t,role:n,active:r});return a}function Ep(){return I({mutationFn:Tp})}async function Dp({username:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_user`,username:e});return n}function Op(){return I({mutationFn:Dp})}async function kp({clusterId:e,initialUsername:t,desiredUsername:n,newPassword:r,tempPassword:i,instanceClient:a}){if(!i)throw Error(`You may not have permission to set the password on this cluster.`);let o=a;try{let a=await Ia({username:t,password:i,instanceClient:o,entityId:e});return a.instanceClient&&(o=a.instanceClient),n===`HDB_ADMIN`?await Tp({username:n,password:r,instanceClient:o}):(await Cp({username:n,password:r,role:`super_user`,active:!0,instanceClient:o}),await Ia({username:n,password:r,instanceClient:o,entityId:e}),await Dp({username:f,instanceClient:o})),await Sp(e),a}catch(t){throw await d({entityId:e,instanceClient:o}),t}}function Ap(){return I({mutationFn:kp})}function jp(){let{user:e}=Ie(),{clusterId:t}=L({strict:!1}),{data:n}=R(Ba(t,!0)),r=Oe(),i=(0,G.useMemo)(()=>s(n),[n]),a=Hi({operationsUrl:i}),{redirect:o}=ce({strict:!1}),c=ne(),l=bt({resolver:_t(xp),defaultValues:{confirmPassword:``,password:``,role:`super_user`,username:e?.email??``}}),{setFocus:d,control:p,handleSubmit:m}=l;(0,G.useEffect)(()=>{d(`password`)},[d]);let h=n?.instances?.find(e=>e.tempPassword)?.tempPassword,{mutate:g,isPending:_}=Ap(),v=(0,G.useCallback)(async e=>{if(!i){H.error(`Cluster is not yet fully loaded, please wait a moment before trying to sign in.`);return}g({instanceClient:a,clusterId:t,newPassword:e.password,tempPassword:h,initialUsername:f,desiredUsername:e.username},{onSuccess:async({message:e,user:t})=>{H.success(e),u.setUserForEntity(n,t),c.invalidate(),await r({to:o?.startsWith(`/`)?o:`../`})}})},[n,t,a,r,i,o,c,g,h]);return n&&!n.resetPassword?(0,W.jsx)(de,{to:`../sign-in`,replace:!0}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`nav`,{"aria-label":`Breadcrumb`,className:`fixed top-20 w-full h-12 z-39 px-4 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none flex items-center`,children:(0,W.jsx)(Oa,{})}),(0,W.jsx)(`div`,{className:`items-center justify-center flex mt-32 py-4 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,W.jsxs)(`div`,{className:`text-foreground w-xs`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light`,children:`Create Admin User`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`You are ready to create your first user in your new cluster. These credentials belong to you alone, and you can create more users and roles once you create this first one.`}),(0,W.jsx)(q,{...l,children:(0,W.jsxs)(`form`,{id:`cluster-create-admin-form`,name:`cluster-create-admin-form`,onSubmit:m(v),className:`my-4`,children:[(0,W.jsx)(Y,{control:p,name:`username`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Username`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{autoComplete:`username`,type:`text`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:p,name:`password`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,autoComplete:`new-password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:p,name:`confirmPassword`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Confirm Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,autoComplete:`new-password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(F,{disabled:_,type:`submit`,variant:`submit`,className:`w-full my-2`,children:`Create Admin User`})]})}),(0,W.jsxs)(`p`,{className:`text-muted-foreground flex gap-2 align-middle`,children:[(0,W.jsx)(Tn,{size:36,className:`flex-none`}),(0,W.jsx)(`span`,{children:`These credentials will be used to sign into your cluster directly, providing you a secure connection from your browser to your cluster.`})]})]})})]})}function Mp({columns:e,data:t,renderRowWrapper:n}){let r=ge({data:t,columns:e,getCoreRowModel:xe()});return(0,W.jsx)(`div`,{className:`bg-card dark:bg-black-dark rounded-md`,children:(0,W.jsxs)(zu,{children:[(0,W.jsx)(Bu,{children:r.getHeaderGroups().map(e=>(0,W.jsx)(Hu,{className:`border-none`,children:e.headers.map(e=>(0,W.jsx)(Uu,{className:`p-4`,style:{width:`${e.getSize()}%`},children:e.isPlaceholder?null:Ce(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,W.jsx)(Vu,{className:`bg-background dark:bg-black`,children:r.getRowModel().rows?.length?r.getRowModel().rows.map(e=>{let t=(0,W.jsx)(Hu,{"data-state":e.getIsSelected()&&`selected`,className:`hover:bg-muted/10 data-[state=selected]:bg-muted`,children:e.getVisibleCells().map(e=>(0,W.jsx)(Gu,{className:`p-4`,style:{width:`${e.column.getSize()}%`},children:Ce(e.column.columnDef.cell,e.getContext())},e.id))});return(0,W.jsx)(G.Fragment,{children:n?n(e.original,t):t},e.id)}):(0,W.jsx)(Hu,{children:(0,W.jsx)(Gu,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})})}function Np(){return(0,W.jsx)(`div`,{className:`flex-col items-center justify-center px-16 space-y-3 text-center pt-30`,children:(0,W.jsx)(`p`,{children:`No instances found.`})})}async function Pp({instance:e,instanceClient:t}){try{await d({instanceClient:t,entityId:e.id})}catch{}u.signOutLocally(e.id),e.clusterId&&u.signOutLocally(e.clusterId)}async function Fp({instanceId:e,action:t,safeMode:n}){let r=n===void 0?{}:{safeMode:n},{data:i}=await N.post(`/HDBInstance/${e}/container/${t}`,r);return i}function Ip(){return I({mutationFn:Fp})}var Lp={stop:`Stopping`,start:`Starting`,restart:`Restarting`};function Rp(e){let{clusterId:t}=L({strict:!1}),{mutateAsync:n,isPending:r}=Ip(),i=ie();return{run:(0,G.useCallback)(async(r,a)=>{let o=a?.label??Lp[r],s=e.name??e.id,c=H.loading(o,{description:`${o} ${s}. Status will update shortly.`,duration:3e4,action:{label:`Dismiss`,onClick:()=>H.dismiss()}});try{await n({instanceId:e.id,action:r,safeMode:a?.safeMode}),t&&i.invalidateQueries({queryKey:[t]}),i.invalidateQueries({queryKey:[e.id]}),H.dismiss(c),H.success(`Request accepted`,{description:`${s} is ${o.toLowerCase()}. The status will update automatically.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}})}catch{H.dismiss(c)}},[t,e.id,e.name,n,i]),isPending:r}}function zp({entityId:e,instanceClient:t},n){return B({queryKey:[`get_status`,e],staleTime:9e3,refetchInterval:1e4,retryDelay:1e4,throwOnError:!1,enabled:n,queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`get_status`});return e}})}function Bp(e,t){return e?.systemStatus?.find(e=>e.id===t)?.status}async function Vp({instanceClient:e,id:t,status:n}){let{data:r}=await e.post(`/`,{operation:`set_status`,id:t,status:n});return r}function Hp(){return I({mutationFn:Vp,onSuccess:(e,t)=>hn.invalidateQueries({queryKey:[`get_status`,t.entityId]})})}var Up=[`CLONE_READY`,`RUNNING`,`UPDATED`,`PENDING_UPGRADE`];function Wp(e,t,n){let{user:r}=Fe(e.id),i=(0,G.useMemo)(()=>p(e),[e]),a=Hi({operationsUrl:i}),{update:o}=us(),s=u.checkForFabricConnect(e.id),c=K({operationsUrl:i,instanceId:e.id,forceFabricConnect:!0}),{data:l}=R(zp(c,n&&o&&!Ho(e.status))),d=Bp(l,`availability`)||`Unknown`,f=d===`Available`,m=d===`Unavailable`,{mutate:h,isPending:g}=Hp(),{run:_,isPending:v}=Rp(e),[y,b]=(0,G.useState)(null),x=e.instanceFqdn,S=gu({secure:e.operationsApiSecure?`true`:`false`,port:e.operationsApiPort,fqdn:e.instanceFqdn}),[C,w]=As(x??``,S),T=(0,G.useCallback)(async()=>{await Pp({instance:e,instanceClient:a})},[e,a]),E=!!e.status&&Up.includes(e.status),D=!!r&&!s,O=E,k=!!x,A=o&&E&&(f||m),j=e.status===`RUNNING`,ee=e.status===`STOPPED`,M=o&&!t&&(j||ee),N=[O&&D&&{key:`direct-connect`,to:`../instance/${e.id}/`,icon:(0,W.jsx)(zr,{className:`text-green`}),label:`Direct Connect`},O&&D&&{key:`direct-sign-out`,onClick:T,variant:`destructive`,icon:(0,W.jsx)(xr,{}),label:`Direct Sign Out`},O&&!D&&o&&!t&&{key:`fabric-connect`,to:`../instance/${e.id}/`,icon:(0,W.jsx)(zr,{className:`text-green`}),label:`Fabric Connect`},O&&!D&&{key:`direct-sign-in`,to:`../instance/${e.id}/sign-in`,icon:(0,W.jsx)(br,{}),label:`Direct Sign In`},O&&k&&{type:`separator`,key:`copy-sep`},k&&{key:`copy-fqdn`,onClick:C,icon:(0,W.jsx)(Wn,{}),label:`Copy Instance FQDN`},k&&{key:`copy-api`,onClick:w,icon:(0,W.jsx)(Wn,{}),label:`Copy API URL`},(O||k)&&A&&{type:`separator`,key:`rotation-sep`},A&&f&&{key:`out-of-rotation`,variant:`destructive`,disabled:g,onClick:()=>h({...c,id:`availability`,status:`Unavailable`}),icon:(0,W.jsx)(Hr,{}),label:`Bring out of rotation`},A&&m&&{key:`into-rotation`,disabled:g,onClick:()=>h({...c,id:`availability`,status:`Available`}),icon:(0,W.jsx)(Vr,{}),label:`Bring back into rotation`},(O||k||A)&&M&&{type:`separator`,key:`container-sep`},M&&{type:`label`,key:`container-label`,className:`text-gray-600 text-xs`,label:`Container`},M&&ee&&{key:`container-start`,disabled:v,onClick:()=>void _(`start`,{safeMode:!1}),icon:(0,W.jsx)(jr,{}),label:`Start`},M&&ee&&{key:`container-start-safe`,disabled:v,onClick:()=>b(`start`),icon:(0,W.jsx)(gr,{}),label:`Start in safe mode`},M&&j&&{key:`container-restart`,disabled:v,onClick:()=>void _(`restart`,{safeMode:!1}),icon:(0,W.jsx)(Fr,{}),label:`Restart`},M&&j&&{key:`container-restart-safe`,disabled:v,onClick:()=>b(`restart`),icon:(0,W.jsx)(gr,{}),label:`Restart in safe mode`},M&&j&&{key:`container-stop`,variant:`destructive`,disabled:v,onClick:()=>void _(`stop`),icon:(0,W.jsx)(Gr,{}),label:`Stop`}].filter(Xi),P=(0,W.jsx)(xs,{open:y!==null,setOpen:e=>{e||b(null)},action:y??`restart`,targetName:e.name??e.id,scope:`instance`,isPending:v,onConfirm:()=>{let e=y;b(null),e&&_(e,{safeMode:!0,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})}});return N.length?{items:[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`label-sep`},...N],dialog:P}:{items:[],dialog:P}}function Gp({instance:e,isSelfManaged:t}){let[n,r]=(0,G.useState)(!1),{items:i,dialog:a}=Wp(e,t,n);return i.length?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(ci,{open:n,onOpenChange:r,children:[(0,W.jsx)(li,{asChild:!0,children:(0,W.jsx)(F,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Instance options`,children:(0,W.jsx)(Qn,{})})}),(0,W.jsx)(ui,{align:`end`,className:`min-w-48`,children:rs(i,`dropdown`)})]}),a]}):null}function Kp({isSelfManaged:e,instance:t}){let{user:n,isLoading:r}=Fe(t.id),i=Hi({operationsUrl:(0,G.useMemo)(()=>p(t),[t])}),{update:a}=us(),o=u.checkForFabricConnect(t.id),s=(0,G.useCallback)(async()=>{await Pp({instance:t,instanceClient:i})},[t,i]);return Ho(t.status)?(0,W.jsx)(`span`,{className:`text-muted-foreground text-sm`,children:`—`}):r||!t.status||![`CLONE_READY`,`RUNNING`,`UPDATED`,`PENDING_UPGRADE`].includes(t.status)?(0,W.jsx)(vr,{className:`animate-spin`,color:`gray`}):!n||o?(0,W.jsxs)(`span`,{className:`flex gap-4`,children:[a&&!e&&(0,W.jsx)(V,{to:`../instance/${t.id}/`,className:`text-sm`,"aria-label":`Connect to ${t.name} instance`,title:`Connect to ${t.name} instance`,children:(0,W.jsx)(F,{variant:`positiveOutline`,children:`Fabric Connect`})}),(0,W.jsx)(V,{to:`../instance/${t.id}/sign-in`,className:`text-sm`,"aria-label":`Sign in to ${t.name} instance`,title:`Sign in to ${t.name} instance`,children:(0,W.jsx)(F,{variant:a?`defaultOutline`:`positiveOutline`,children:`Direct Sign In`})})]}):(0,W.jsxs)(`span`,{className:`flex gap-4`,children:[(0,W.jsx)(V,{to:`../instance/${t.id}/`,className:`text-sm`,"aria-label":`Go to ${t.name} instance`,title:`Go to ${t.name} instance`,children:(0,W.jsx)(F,{variant:`positiveOutline`,children:`Direct Connect`})}),(0,W.jsx)(F,{variant:`destructiveOutline`,className:`text-sm`,"aria-label":`Sign out from ${t.name} instance`,title:`Sign out from ${t.name} instance`,onClick:s,children:`Direct Sign Out`})]})}function qp({instance:e,isSelfManaged:t,children:n}){let[r,i]=(0,G.useState)(!1),{items:a,dialog:o}=Wp(e,t,r);return a.length?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Yo,{onOpenChange:i,children:[(0,W.jsx)(Xo,{asChild:!0,children:n}),(0,W.jsx)(Zo,{className:`min-w-48`,children:rs(a,`context`)})]}),o]}):(0,W.jsx)(W.Fragment,{children:n})}function Jp({instance:e,index:t}){let{update:n}=us(),r=K({operationsUrl:(0,G.useMemo)(()=>p(e),[e]),instanceId:e.id,forceFabricConnect:!0}),{mutate:i,isPending:a}=Hp(),[o,s]=(0,G.useState)(!1);(0,G.useEffect)(()=>{let e=setTimeout(()=>s(!0),t*500);return()=>clearTimeout(e)},[t]);let c=Ho(e.status),{data:l,isLoading:u,isFetching:d}=R(zp(r,o&&n&&!c)),f=Bp(l,`availability`)||`Unknown`,m=f===`Available`,h=f===`Unavailable`;return n?c?(0,W.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsx)(`span`,{className:`inline-block size-4 rounded-full bg-muted-foreground/40`,"aria-label":`Not running`})}),(0,W.jsx)(Rt,{children:`Not running`})]})}):(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsx)(`div`,{className:`flex items-center`,children:u||!o||d&&!l?(0,W.jsx)(vr,{className:`animate-spin size-5 text-muted-foreground`}):(0,W.jsx)(ao,{variant:m?`success`:h?`destructive`:`default`,className:`size-4 rounded-full p-0`,children:(0,W.jsx)(`span`,{className:`sr-only`,children:m?`Online`:`Offline`})})})}),(0,W.jsxs)(Rt,{children:[d&&l?`Refreshing... `:``,f]})]}),n&&(0,W.jsxs)(`div`,{className:`flex gap-1`,children:[m&&(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsx)(F,{type:`button`,variant:`destructiveGhost`,size:`icon`,onClick:()=>i({...r,id:`availability`,status:`Unavailable`}),disabled:a,children:a?(0,W.jsx)(vr,{className:`animate-spin size-4`}):(0,W.jsx)(Hr,{className:`size-4`})})}),(0,W.jsx)(Rt,{children:`Bring out of rotation`})]}),h&&(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsx)(F,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>i({...r,id:`availability`,status:`Available`}),disabled:a,children:a?(0,W.jsx)(vr,{className:`animate-spin size-4`}):(0,W.jsx)(Vr,{className:`size-4`})})}),(0,W.jsx)(Rt,{children:`Bring back into rotation`})]})]})]}):null}function Yp(){let{clusterId:e}=L({strict:!1}),{data:t,isLoading:n}=R(Ba(e,!0)),r=hs(t),i=(0,G.useMemo)(()=>[{id:`instanceActions`,size:1,minSize:1,cell:e=>(0,W.jsx)(`div`,{className:`flex justify-end gap-2 items-center`,children:(0,W.jsx)(Kp,{isSelfManaged:r,instance:e.row.original})})},r&&{accessorKey:`instanceFqdn`,size:90,header:`URL`,cell:e=>gu({secure:e.row.original.operationsApiSecure?`true`:`false`,port:e.row.original.operationsApiPort,fqdn:e.row.original.instanceFqdn})},!r&&{accessorKey:`name`,size:90,header:`Name`},!r&&{accessorKey:`status`,header:`Status`,size:1,minSize:1,cell:e=>{let t=e.getValue();return(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(Jp,{instance:e.row.original,index:e.row.index}),t?(0,W.jsx)(ao,{variant:Vo(t),children:Ea(t)}):null,e.row.original.safeMode&&!Ho(e.row.original.status)?(0,W.jsxs)(ao,{variant:`warning`,title:`Running in safe mode — user apps/components are not loaded`,children:[(0,W.jsx)(gr,{}),`Safe mode`]}):null]})}},!r&&{accessorKey:`version`,size:1,minSize:1,header:`Version`},!r&&{accessorKey:`storageGb`,size:1,minSize:1,header:`Storage`,cell:e=>`${e.getValue()} GB`},!r&&{accessorKey:`usedStorageGb`,size:1,minSize:1,header:`Used Storage`,cell:e=>{let t=e.getValue();return t===void 0?`-`:`${t} GB`}},!r&&{accessorKey:`cpuCores`,size:1,minSize:1,header:`Cores/Threads`,cell:e=>(0,W.jsxs)(W.Fragment,{children:[e.row.original.cpuCores,` / `,e.row.original.threads]})},!r&&{accessorKey:`memoryMb`,size:1,minSize:1,header:`Memory`,cell:e=>`${e.getValue()/1024} GB`},{id:`instanceMenu`,size:1,minSize:1,cell:e=>(0,W.jsx)(`div`,{className:`flex justify-end`,children:(0,W.jsx)(Gp,{isSelfManaged:r,instance:e.row.original})})}].filter(Xi),[r]),a=(0,G.useMemo)(()=>t?.instances?t.instances.filter(e=>e.status&&!Pa.includes(e.status)).sort(Js):[],[t]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Bo,{}),(0,W.jsx)(Fs,{children:(0,W.jsx)(Lt,{className:`p-0 min-h-96`,children:(0,W.jsx)(Ft,{className:`p-0 min-h-96`,children:n?(0,W.jsx)(Gl,{}):a.length?(0,W.jsx)(Mp,{data:a,columns:i,renderRowWrapper:(e,t)=>(0,W.jsx)(qp,{instance:e,isSelfManaged:r,children:t})}):(0,W.jsx)(Np,{})})})})]})}function Xp(){let{clusterId:e}=L({strict:!1}),{immediate:t}=ce({strict:!1}),n=t===!0||t===`true`,{data:r,isLoading:i}=R(Ba(e,2e3)),a=r?.status,o=(0,G.useMemo)(()=>a&&Na.includes(a),[a]);return i||!r?(0,W.jsx)(Yf,{className:`flex justify-center`,children:(0,W.jsx)(Gl,{})}):o?(0,W.jsx)(Yf,{className:`flex justify-center`,children:(0,W.jsxs)(`div`,{className:`center w-2xl flex flex-col gap-4`,children:[(0,W.jsx)(`h1`,{className:`text-xl text-center`,children:`All done!`}),(0,W.jsx)(bs,{cluster:r,forceProgressBarVisible:!0}),(0,W.jsx)(`p`,{children:`Your cluster finished updating, and is ready for interaction.`}),(0,W.jsx)(`div`,{className:`text-center`,children:(0,W.jsx)(gs,{cluster:r})})]})}):(0,W.jsx)(Yf,{className:`flex justify-center`,children:(0,W.jsxs)(`div`,{className:`center w-2xl flex flex-col gap-4`,children:[(0,W.jsx)(`h1`,{className:`text-xl text-center`,children:`Here we go!`}),(0,W.jsx)(bs,{cluster:r,forceProgressBarVisible:!0}),(0,W.jsxs)(`p`,{children:[n?`Your cluster is applying the latest changes immediately, without waiting to take instances out of rotation.`:`Your cluster is updating with the latest changes. This includes waiting several minutes to let traffic drain safely.`,` `,(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[`We will let you know when we are ready for you to connect! In the meantime, join us on`,` `,(0,W.jsx)(`a`,{href:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,children:`Discord`}),`! Get real-time help from our engineers, see feature drops early, and connect with others building on Fabric.`]})]})]})})}function Zp({children:e,className:t}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Bo,{}),(0,W.jsx)(`div`,{className:_(`mt-32 px-4 py-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))] flex justify-center`,t),children:e})]})}function Qp(){let e=ne(),{clusterId:t}=L({strict:!1}),{data:n,isLoading:r}=R(Ba(t,2e3)),i=n?.status,a=(0,G.useMemo)(()=>i&&Na.includes(i),[i]),o=Wo(i),[,s]=vn(bn.SavedClusterState,null),c=(0,G.useCallback)(()=>{s(n),e.navigate({to:`/${n.organizationId}/new-cluster`})},[n,e,s]);return r||!n?(0,W.jsx)(Zp,{className:`flex justify-center`,children:(0,W.jsx)(Gl,{})}):o?(0,W.jsx)(Zp,{className:`flex justify-center`,children:(0,W.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4 items-center`,children:[(0,W.jsx)(Gn,{className:`w-24 h-24`}),(0,W.jsxs)(`span`,{children:[`Your cluster failed to successfully start. This is usually caused by temporary communication problems. Would you like to try again? We also get notified about these failures. `,(0,W.jsx)(Ns,{}),` if you want more help.`]}),(0,W.jsx)(F,{type:`button`,variant:`positiveOutline`,onClick:c,children:`Try Again`})]})}):a?(0,W.jsx)(Zp,{className:`flex justify-center`,children:(0,W.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4`,children:[(0,W.jsx)(`h1`,{className:`text-xl text-center`,children:`It's ready!`}),(0,W.jsx)(bs,{cluster:n,forceProgressBarVisible:!0}),(0,W.jsxs)(`p`,{children:[`Let's set up your secure, browser-to-cluster connection now.`,` `,(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Did you know during this step, you connect straight to your cluster, providing a private secure connection? That's `,(0,W.jsx)(`em`,{children:`Direct Connect`}),`! Once you create your user, you will have the option to`,` `,(0,W.jsx)(`em`,{children:`Fabric Connect`}),` from your Fabric account without having to sign in again.`]})]}),(0,W.jsx)(`div`,{className:`text-center`,children:(0,W.jsx)(gs,{cluster:n})})]})}):(0,W.jsx)(Zp,{className:`flex justify-center`,children:(0,W.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4`,children:[(0,W.jsx)(`h1`,{className:`text-xl text-center`,children:`Here we go!`}),(0,W.jsx)(bs,{cluster:n,forceProgressBarVisible:!0}),(0,W.jsxs)(`p`,{children:[`Your cluster is spinning up with the latest changes, including your own DNS records and private connections. Please wait while we get everything going.`,` `,(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[`We will let you know when we are ready for you to connect! In the meantime, join us on`,` `,(0,W.jsx)(`a`,{href:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,children:`Discord`}),`! Get real-time help from our engineers, see feature drops early, and connect with others building on Fabric.`]})]})]})})}z({getParentRoute:()=>Bf,path:`instances`,head:()=>({meta:[{title:`Instances — Harper Fabric`}]}),component:Yp}),z({getParentRoute:()=>Bf,path:`starting-up`,head:()=>({meta:[{title:`Starting Up — Harper Fabric`}]}),component:Qp}),z({getParentRoute:()=>Bf,path:`scaling`,head:()=>({meta:[{title:`Scaling — Harper Fabric`}]}),component:Xp}),z({getParentRoute:()=>Bf,path:`domains`,head:()=>({meta:[{title:`Domains — Harper Fabric`}]}),component:bp});function $p({location:e,params:t}){let n=u.checkForFabricConnect(t.clusterId);if(u.getConnectionById(t.clusterId).user&&!n){let t=e?.search?.redirect;throw _e({to:t?.startsWith(`/`)?t:`../`})}}function em({location:e,params:t}){let n=u.checkForFabricConnect(t.instanceId);if(u.getConnectionById(t.instanceId).user&&!n){let t=e?.search?.redirect;throw _e({to:t?.startsWith(`/`)?t:`../`})}}z({getParentRoute:()=>Bf,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:Xa,beforeLoad:$p}),z({getParentRoute:()=>Bf,path:`instance/$instanceId/sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:Xa,beforeLoad:em}),z({getParentRoute:()=>Bf,path:`finish-setup`,head:()=>({meta:[{title:`Create Admin User — Harper Fabric`}]}),component:jp}),z({getParentRoute:()=>Bf,path:`/`,head:()=>({meta:[{title:`Cluster — Harper Fabric`}]}),component:Hf});function tm(e){return z({getParentRoute:()=>e,path:`apis`,head:()=>({meta:[{title:`APIs — Harper Fabric`}]})}).lazy(()=>je(()=>import(`./index.lazy-CGmTtyPL.js`).then(e=>e.route),__vite__mapDeps([14,1,2,3,4,5,6,7,15,16,17,18,19])))}function nm(e,t){return[z({getParentRoute:()=>e,path:t===`cluster`?`apps`:`/`,head:()=>({meta:[{title:`Applications — Harper Fabric`}]}),component:ye(()=>je(()=>import(`./applications-EmZVBabu.js`),__vite__mapDeps([20,1,18,3,2,4,5,6,7,21,8,16,22,23,24,15,25,26,27,28,10,11,17,13,29])),`ApplicationsEditor`)})]}async function rm({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_certificates`});return t}function im(e){return B({queryKey:[e.entityId,`list_certificates`],queryFn:()=>rm(e)})}var am=[{header:`Certificate Name`,accessorKey:`name`,enableSorting:!0},{header:`Issuer`,accessorKey:`details.issuer`,enableSorting:!0},ue().display({header:`Expires At`,enableSorting:!1,id:`details.valid_to`,cell:e=>e.row.original.details.valid_to?new Date(e.row.original.details.valid_to).toLocaleString():`N/A`})];function om({className:e,...t}){return(0,W.jsx)(`textarea`,{"data-slot":`input`,className:P(`border-input file:text-foreground placeholder:text-muted-foreground selection:bg-purple
|
|
10
|
+
aria-invalid:focus-visible:ring-[1px] aria-invalid:focus-visible:outline-none md:text-sm dark:aria-invalid:focus-visible:ring-1`,e),...n})}var Pa=[`RUNNING`],Fa=[`TERMINATING`,`TERMINATED`,`REMOVED`];function Ia(){return`https://fabric.harper.fast/#/?createCluster=`+encodeURIComponent(JSON.stringify({deploymentDescription:`Self-Hosted`,performanceDescription:`Self Supported and Managed`,instances:[{secure:String(location.protocol===`https:`),fqdn:location.hostname,port:parseInt(location.port,10)}]}))}async function La({username:e,password:t,instanceClient:n,entityId:i}){let a={username:e,password:t};u.checkForBasicAuth(i)&&(n.defaults.auth=a,n.defaults.withCredentials=!1);let{data:{message:o}}=await n.post(`/`,{operation:`login`,username:e,password:t});if(!u.checkForBasicAuth(i))try{let e=await r({instanceClient:n});return u.setLastConnectMode(i,`direct`),{message:o,user:e}}catch(e){console.error(`Failed to get user after login, trying basic auth`,e)}try{n.defaults.auth=a,n.defaults.withCredentials=!1;let e=await r({instanceClient:n,auth:a});return u.flagForBasicAuth(i,a),u.setLastConnectMode(i,`direct`),{message:o,user:e}}catch(e){throw n.defaults.auth=void 0,n.defaults.withCredentials=!0,e}return{message:o,user:await u.establishFabricConnectAuth({id:i,operationsUrl:n.defaults.baseURL}),instanceClient:g({id:i,operationsUrl:n.defaults.baseURL})}}function Ra(){return I({mutationFn:La})}function za({cluster:e,instance:t,instanceParams:n}){let r=Oe(),i=ne(),{redirect:a}=ce({strict:!1}),{mutate:o,isPending:s}=Ra();return{isPending:s,submitForm:(0,G.useCallback)(async s=>{o({...s,...n},{onSuccess:async({message:n,user:o})=>{if(H.success(n),e?.instances?.length&&!t)for(let t of e.instances)u.setUserForEntity(t,o);let s=h;if(!s)throw Error(`Sign in failed due to missing cluster or instance.`);u.setUserForEntity(s,o),i.invalidate(),await r({to:a?.startsWith(`/`)?a:`/`})}})},[e,t,n,r,a,i,o])}}async function Ba(e){let{data:t}=await N.get(`/Cluster/${e}`);return t}function Va(e,t){return B({queryKey:[e],queryFn:()=>Ba(e),retry:!1,staleTime:1900,enabled:!!e,refetchInterval:t?t===!0?1e4:t:void 0})}var Ha=w({error:`Please enter a valid email address.`}).toLowerCase().trim(),Ua=S().nonempty({error:`Please enter your password.`}),Wa=S().nonempty({error:`Please enter a username.`}),Ga=b({username:Wa,password:Ua}),Ka=b({email:Ha,password:Ua});function qa({entityId:e,instanceClient:t}){return B({queryKey:[`health`,e],queryFn:async()=>{try{return await t.get(`/health`),!0}catch{return!1}},retry:2,refetchInterval:5e3})}var Ja=[`localhost`,`127.0.0.1`],Ya=function(e){return e.MixedLoopback=`MixedLoopback`,e.InsecureCookieOutsideChromeAndFirefox=`InsecureCookieOutsideChromeAndFirefox`,e}({});function Xa(e,t,n){if(!n||!t||!e)return null;let r=new URL(n).hostname,i=Ja.includes(t),a=Ja.includes(r);if(i&&a&&r!==t)return`MixedLoopback`;if(!i&&a){let t=e.indexOf(`Chrome`)>=0,n=e.indexOf(`Firefox`)>=0;if(!t&&!n)return`InsecureCookieOutsideChromeAndFirefox`}return null}function Za(){let{clusterId:e,instanceId:t}=L({strict:!1}),{data:n}=R(Va(e,!0)),r=(0,G.useMemo)(()=>t&&n&&n?.instances?.find(e=>e.id===t)||void 0,[n,t]),i=(0,G.useMemo)(()=>n?.status&&Pa.includes(n.status),[n?.status]),a=`instance`,o=(0,G.useMemo)(()=>n?r?(u.flagForFabricConnect(r.id,!1),p(r)):(u.flagForFabricConnect(n.id,!1),s(n)):null,[n,r]);(0,G.useEffect)(()=>{r?u.setUserForEntity(r,null):n&&u.setUserForEntity(n,null)},[r?.id??n?.id]);let c=K({operationsUrl:o}),l=(0,G.useMemo)(()=>o?.includes(`localhost`)||o?.includes(`127.0.0.1`),[o]),d=(0,G.useMemo)(()=>Xa(navigator.userAgent,location.hostname,o),[o]),{data:f}=R(qa(c)),m=bt({resolver:_t(Ga),defaultValues:{username:``,password:``}}),{control:h,handleSubmit:g}=m,{submitForm:v,isPending:y}=za({cluster:n,instance:r,instanceParams:c});return!t&&n&&!n?.fqdn?(0,W.jsx)(de,{to:`../instances`,replace:!0}):i&&n?.resetPassword?(0,W.jsx)(de,{to:`/${n.organizationId}/${n.id}/finish-setup`,replace:!0}):!i&&n?.resetPassword?(0,W.jsx)(de,{to:`/${n.organizationId}/${n.id}/starting-up`,replace:!0}):(0,W.jsxs)(W.Fragment,{children:[!1,(0,W.jsx)(`div`,{className:_(`min-h-screen`,`items-center justify-center flex`),children:(0,W.jsxs)(`div`,{className:`text-foreground w-xs py-8`,children:[(0,W.jsxs)(`h1`,{className:`text-2xl font-light`,children:[`Sign in to Harper `,`Local`]}),(0,W.jsx)(q,{...m,children:(0,W.jsxs)(`form`,{id:`auth-${a}-signin-form`,name:`auth-${a}-signin-form`,onSubmit:g(v),className:`my-4`,children:[(0,W.jsx)(Y,{control:h,name:`username`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Username`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{autoComplete:`username`,autoFocus:!0,type:`text`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:h,name:`password`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(F,{disabled:y,type:`submit`,variant:`submit`,className:`w-full my-2`,children:`Sign In`}),f===!1&&(0,W.jsxs)(`div`,{className:`p-4 mt-4 text-sm text-yellow-800 rounded-lg bg-yellow-50 dark:bg-gray-800 dark:text-yellow-300`,role:`alert`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`Warning!`}),` This `,a,` is not responding to GET`,` `,(0,W.jsxs)(`a`,{href:`${o}health`,className:`underline`,target:`_blank`,children:[o,`health`]}),` `,`checks.`,(0,W.jsxs)(`ol`,{className:`list-decimal ml-8 mt-2`,children:[(0,W.jsx)(`li`,{children:`Is the server running?`}),(0,W.jsxs)(`li`,{children:[`Have you`,` `,(0,W.jsx)(`a`,{href:`https://docs.harperdb.io/docs/developers/security/configuration#cors`,target:`_blank`,rel:`noreferrer`,className:`underline`,children:`enabled CORS`}),` `,`for the operations API?`]}),l&&(0,W.jsxs)(`li`,{children:[`Have you allowed`,` `,(0,W.jsx)(`a`,{href:`https://www.google.com/search?q=How+do+I+enable+local+network+access+in+my+browser%3F`,className:`underline`,target:`_blank`,rel:`noreferrer`,children:`local network access`}),` `,`in your browser?`]})]})]}),d===Ya.MixedLoopback&&(0,W.jsxs)(`div`,{className:`p-4 mt-4 text-sm text-yellow-800 rounded-lg bg-yellow-50 dark:bg-gray-800 dark:text-yellow-300`,role:`alert`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`Warning!`}),` `,`Your login might not work because you're mixing 127.0.0.1 and localhost. Pick one or the other.`]}),d===Ya.InsecureCookieOutsideChromeAndFirefox&&(0,W.jsxs)(`div`,{className:`p-4 mt-4 text-sm text-yellow-800 rounded-lg bg-yellow-50 dark:bg-gray-800 dark:text-yellow-300`,role:`alert`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`Warning!`}),` `,`Your login might not work because your browser doesn't consider localhost to be secure, so it doesn't pass the cookies along. Firefox or Chromium based browsers should pass the cookies properly.`]}),(0,W.jsxs)(`div`,{className:`p-4 mt-4 text-sm rounded-lg bg-purple-950`,role:`alert`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`Did you know?`}),` `,`You can add this instance to your Harper account to manage it remotely.`,(0,W.jsx)(`div`,{className:`text-center pt-2`,children:(0,W.jsx)(V,{to:Ia(),target:`_blank`,children:(0,W.jsx)(F,{type:`button`,variant:`positive`,children:`Connect to Harper Fabric`})})})]})]})})]})})]})}async function Qa({email:e}){let{data:t}=await N.post(`/ForgotPassword/`,{email:e});if(t)return t;throw Error(`Something went wrong`)}function $a(){return I({mutationFn:e=>Qa(e)})}var eo=b({email:Ha});function to(){let e=Oe(),{me:t}=ce({strict:!1}),n=bt({resolver:_t(eo),defaultValues:{email:t||``}}),r=n.watch(`email`),{setFocus:i,control:a,handleSubmit:o}=n;(0,G.useEffect)(()=>{i(`email`)},[i]);let{mutate:s,isPending:c}=$a(),l=async t=>{s(t,{onSuccess:t=>{H.success(`Success`,{description:`${t}`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),e({to:`/sign-in`,search:{me:r}})}})};return(0,W.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light`,children:`Enter your account email`}),(0,W.jsx)(`p`,{className:`text-sm pt-1`,children:`If a matching account exists, we'll send you a password reset link.`}),(0,W.jsx)(q,{...n,children:(0,W.jsxs)(`form`,{id:`auth-forgot-password-form`,name:`auth-forgot-password-form`,onSubmit:o(l),className:`my-4`,children:[(0,W.jsx)(Y,{control:a,name:`email`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-2`,children:[(0,W.jsx)(Z,{children:`Email`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{disabled:c,type:`email`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(F,{type:`submit`,variant:`submit`,disabled:c,className:`w-full my-2`,children:`Send Password Reset Email`})]})}),(0,W.jsxs)(`div`,{className:`flex px-4 mt-4 underline place-content-between`,children:[(0,W.jsx)(V,{className:`text-sm hover:text-blue-300`,to:`/sign-in`,search:{me:r},children:`Sign in to your account`}),(0,W.jsx)(V,{className:`text-sm hover:text-blue-300`,to:`/sign-up`,search:{me:r},children:`Sign up for free`})]})]})}var no=async({token:e,password:t})=>{let{data:n}=await N.put(`/ResetPassword/`,{token:e,newPassword:t});return n};function ro(){return I({mutationFn:e=>no(e)})}var io=b({password:Ua.min(8,{error:`Password must be at least 8 characters long.`}).max(50,{error:`Password cannot be longer than 50 characters.`}),confirmPassword:S()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function ao(){let{token:e}=ce({strict:!1}),t=Oe();(0,G.useEffect)(()=>{e||t({to:`/sign-in`})},[e,t]);let n=bt({resolver:_t(io),defaultValues:{password:``,confirmPassword:``}}),{setFocus:r,control:i,handleSubmit:a}=n;(0,G.useEffect)(()=>{r(`password`)},[r]);let{mutate:o,isPending:s}=ro(),c=(0,G.useCallback)(async n=>{o({token:e,password:n.password},{onSuccess:()=>{H.success(`Success`,{description:`Your password has been reset successfully.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),t({to:`/sign-in`})}})},[t,o,e]);return(0,W.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light`,children:`Reset Password`}),(0,W.jsx)(q,{...n,children:(0,W.jsxs)(`form`,{id:`auth-reset-password-form`,name:`auth-reset-password-form`,className:`my-4`,onSubmit:a(c),children:[(0,W.jsx)(Y,{control:i,name:`password`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-2`,children:[(0,W.jsx)(Z,{children:`New Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{disabled:s,type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:i,name:`confirmPassword`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-2`,children:[(0,W.jsx)(Z,{children:`Confirm Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{disabled:s,type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(F,{variant:`submit`,type:`submit`,disabled:s,className:`w-full my-2`,children:`Submit New Password`})]})})]})}function oo({className:e,variant:t,asChild:n=!1,...r}){return(0,W.jsx)(n?Ue:`span`,{"data-slot":`badge`,className:P(Vi({variant:t}),e),...r})}function so(){return(0,W.jsx)(oo,{className:`pointer-events-none absolute -top-2 right-3 z-10 rounded-full border-primary bg-primary px-1.5 py-0 text-[10px] font-medium text-white shadow-sm`,children:`Last used`})}function co({text:e,disabled:t,onClick:n,lastUsed:r=!1}){let i=(0,W.jsxs)(`a`,{href:`/oauth/github/login?redirect=%2F%23%2Fcheck-oauth`,onClick:n,"aria-disabled":t||void 0,className:_(`github-signin-btn`,t&&`opacity-50 cursor-default`),children:[(0,W.jsx)(`img`,{src:`/github/GitHub_Invertocat_White.svg`,alt:``,className:`github-icon`}),e]});return r?(0,W.jsxs)(`div`,{className:`relative flex flex-col`,children:[i,(0,W.jsx)(so,{})]}):i}function lo({text:e,disabled:t,onClick:n,lastUsed:r=!1}){let i=(0,W.jsxs)(`a`,{href:`/oauth/google/login?redirect=%2F%23%2Fcheck-oauth`,onClick:n,"aria-disabled":t||void 0,className:_(`gsi-material-button`,t&&`opacity-50 cursor-default`),children:[(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`gsi-material-button-state`}),(0,W.jsxs)(`div`,{className:`gsi-material-button-content-wrapper`,children:[(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`gsi-material-button-icon`,children:(0,W.jsxs)(`svg`,{version:`1.1`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 48 48`,xmlnsXlink:`http://www.w3.org/1999/xlink`,className:`block`,children:[(0,W.jsx)(`path`,{fill:`#EA4335`,d:`M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z`}),(0,W.jsx)(`path`,{fill:`#4285F4`,d:`M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z`}),(0,W.jsx)(`path`,{fill:`#FBBC05`,d:`M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z`}),(0,W.jsx)(`path`,{fill:`#34A853`,d:`M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z`}),(0,W.jsx)(`path`,{fill:`none`,d:`M0 0h48v48H0z`})]})}),(0,W.jsx)(`span`,{className:`gsi-material-button-contents`,children:e}),(0,W.jsx)(`span`,{className:`hidden`,children:e})]})]});return r?(0,W.jsxs)(`div`,{className:`relative flex flex-col`,children:[i,(0,W.jsx)(so,{})]}):i}function uo(e){if(!y(e)||e.response?.status!==403)return!1;let t=e.response.data,n=typeof t==`string`?t:mn(t?.error)??mn(t?.message)??``;return/verif/i.test(n)}var fo=async({email:e})=>{let{data:t}=await N.post(`/ResendVerificationEmail/`,{email:e});return t};function po(){return I({mutationFn:e=>fo(e)})}function mo(){let e=Oe(),t=ie(),n=ne(),{redirect:r}=ce({strict:!1}),{mutate:i,isPending:a}=ho(),{mutate:o}=po();return{isPending:a,submitForm:(0,G.useCallback)(a=>{i(a,{onSuccess:async i=>{u.setUserForEntity(h,i),Ca();let a=Tn(i),o=ba(i.email);_a?.identify?.({username:i.email,type:`email`,...o?{company:o}:{}}),await t.invalidateQueries({queryKey:m,refetchType:`none`}),n.invalidate(),await e({to:r?.startsWith(`/`)?r:a})},onError:t=>{if(uo(t)){o({email:a.email},{onSuccess:()=>H.info(`Verify your email to finish signing in`,{description:`We sent a new verification link to ${a.email}.`})}),e({to:`/verifying?email=`+encodeURIComponent(a.email)});return}gn(t)}})},[e,t,r,o,n,i])}}function ho(){return I({mutationFn:e=>go(e),meta:{skipGlobalErrorToast:!0}})}async function go({email:e,password:t}){let{data:n}=await N.post(`/Login/`,{email:e,password:t});if(n)return n;throw Error(`Something went wrong`)}function _o(){let[e,t]=vn(bn.RememberSignInMethod,!0),[n,r]=vn(bn.LastUsedSignInMethod,null),i=(0,G.useCallback)(t=>{e&&(yn(bn.LastUsedSignInMethod,t),r(t))},[e,r]),a=(0,G.useCallback)(()=>{r(null),t(!1)},[r,t]),o=(0,G.useCallback)(()=>{t(!0)},[t]);return{lastUsed:e?n:null,remember:e,recordMethod:i,disable:a,enable:o}}var vo=`mx-auto mt-3 block text-xs text-muted-foreground underline hover:text-foreground dark:text-inherit dark:hover:text-blue-300`;function yo(){let{me:e}=ce({strict:!1}),t=bt({resolver:_t(Ka),defaultValues:{email:e||``,password:``}}),{handleSubmit:n,control:r}=t,i=t.watch(`email`),{submitForm:a,isPending:o}=mo(),{lastUsed:s,remember:c,recordMethod:l,disable:u,enable:d}=_o();return(0,W.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light text-center`,children:`Sign in to Harper Fabric`}),(0,W.jsx)(q,{...t,children:(0,W.jsxs)(`form`,{id:`auth-signin-form`,name:`auth-signin-form`,onSubmit:n(a),className:`my-4`,children:[(0,W.jsx)(Y,{control:r,name:`email`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Email`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`email`,autoFocus:!0,autoComplete:`email`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r,name:`password`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,autoComplete:`current-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(F,{type:`submit`,variant:`submit`,className:`w-full my-2`,disabled:o,children:`Sign In`}),(0,W.jsxs)(`div`,{className:`flex px-4 mt-4 underline place-content-between`,children:[(0,W.jsx)(V,{className:`text-sm text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/sign-up`,search:{me:i},children:`Sign up for free`}),(0,W.jsx)(V,{className:`text-sm text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/forgot-password`,search:{me:i},children:`Forgot password?`})]})]})}),(0,W.jsx)(`hr`,{"aria-hidden":`true`,className:`border-border dark:border-gray-600 my-6`}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,W.jsx)(lo,{text:`Sign in with Google`,lastUsed:s===`google`,onClick:()=>l(`google`)}),(0,W.jsx)(co,{text:`Sign in with GitHub`,lastUsed:s===`github`,onClick:()=>l(`github`)})]}),c?s&&(0,W.jsx)(`button`,{type:`button`,onClick:u,className:vo,children:`On a shared device? Forget my sign-in method.`}):(0,W.jsx)(`button`,{type:`button`,onClick:d,className:vo,children:`Remember my last sign-in method on this device.`})]})}var bo=/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžæÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,'-]+$/u;async function xo(e){let{data:t}=await N.post(`/User/`,e);if(t)return t;throw Error(`Something went wrong`)}function So(){return I({mutationFn:e=>xo(e)})}var Co=b({email:Ha.max(80,{error:`Email cannot be longer than 80 characters.`}),firstname:S().trim().min(2,{error:`Please enter your first name.`}).regex(bo,{error:`First name can only contain letters, spaces, and hyphens.`}).max(40,{error:`First name cannot be longer than 40 characters.`}),lastname:S().trim().min(2,{error:`Please enter your last name.`}).regex(bo,{error:`Last name can only contain letters, spaces, and hyphens.`}).max(80,{error:`Last name cannot be longer than 80 characters.`}),password:Ua.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:S(),acceptTerms:D().refine(e=>e===!0,{message:`You must accept the Privacy Policy and Terms of Service.`})}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function wo(){let e=Oe(),{email:t,me:n}=ce({strict:!1}),[r,i]=(0,G.useState)(!1),a=bt({resolver:_t(Co),defaultValues:{firstname:``,lastname:``,email:n||t||``,password:``,confirmPassword:``,acceptTerms:!1}}),o=a.watch(`email`),s=a.watch(`acceptTerms`),{setFocus:c,control:l,handleSubmit:u}=a;(0,G.useEffect)(()=>{c(`firstname`)},[c]);let{mutate:d}=So(),f=(0,G.useCallback)(async t=>{let{confirmPassword:n,acceptTerms:r,...i}=t;d(i,{onSuccess:()=>{let t=ba(i.email);_a?.identify?.({username:i.email,type:`email`,firstname:i.firstname,lastname:i.lastname,...t?{company:t}:{}}),Ca(),e({to:`/verifying?email=`+encodeURIComponent(i.email)})}})},[e,d]),p=(0,G.useCallback)(e=>{if(!s)return i(!0),setTimeout(()=>i(!1),1e3),e.preventDefault(),!1},[s]),m=(0,W.jsx)(Y,{control:l,name:`acceptTerms`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex flex-row items-start space-x-3 space-y-0 p-1 transition-colors duration-300 ${r?`bg-red-500/20 animate-pulse rounded`:``}`,children:[(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`size-4 rounded border-gray-300 bg-white text-purple-600 focus:ring-purple-500`,checked:e.value,onChange:e.onChange})}),(0,W.jsxs)(`div`,{className:`space-y-1 leading-none`,children:[(0,W.jsxs)(Z,{className:`text-xs font-normal`,children:[`I accept the`,` `,(0,W.jsx)(`a`,{href:`https://www.harper.fast/resources/privacy-policy`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,"aria-label":`Privacy Policy (opens in new tab)`,children:`Privacy Policy`}),` `,`and`,` `,(0,W.jsx)(`a`,{href:`https://www.harper.fast/resources/paas-terms-of-service`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,"aria-label":`Terms of Service (opens in new tab)`,children:`Terms of Service`})]}),(0,W.jsx)(Q,{})]})]})});return(0,W.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light text-center`,children:`Sign up for Harper Fabric`}),(0,W.jsxs)(q,{...a,children:[(0,W.jsxs)(`div`,{className:`flex flex-col gap-2 my-6`,children:[m,(0,W.jsx)(lo,{text:`Sign up with Google`,disabled:!s,onClick:p}),(0,W.jsx)(co,{text:`Sign up with GitHub`,disabled:!s,onClick:p})]}),(0,W.jsx)(`hr`,{className:`border-gray-600`}),(0,W.jsxs)(`form`,{id:`auth-signup-form`,name:`auth-signup-form`,onSubmit:u(f),className:`grid gap-4 my-4`,children:[(0,W.jsx)(Y,{control:l,name:`firstname`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`First Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,className:`dark:bg-black dark:border-black`,autoCapitalize:`words`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:l,name:`lastname`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Last Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,className:`dark:bg-black dark:border-black`,autoCapitalize:`words`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:l,name:`email`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Email`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`email`,readOnly:!!t,disabled:!!t,className:`dark:bg-black dark:border-black`,autoComplete:`email`,autoCapitalize:`none`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:l,name:`password`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:l,name:`confirmPassword`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Confirm Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),m,(0,W.jsx)(F,{type:`submit`,variant:`submit`,className:`w-full my-4`,children:`Sign Up For Free`})]})]}),(0,W.jsx)(`div`,{className:`flex px-4 mt-4 underline place-content-between`,children:(0,W.jsx)(V,{className:`m-auto text-sm hover:text-blue-300`,to:`/sign-in`,search:{me:o},children:`Already have an account? Sign in instead.`})})]})}var To=async e=>{let{data:t}=await N.put(`/VerifyEmail/`,{token:e.toString()});return t};function Eo(){return I({mutationFn:e=>To(e)})}var Do=b({email:Ha});function Oo(){let e=Oe(),{mutate:t,isPending:n}=po(),r=bt({resolver:_t(Do),defaultValues:{email:``}}),i=r.watch(`email`),{setFocus:a,control:o,handleSubmit:s}=r;(0,G.useEffect)(()=>{a(`email`)},[a]);let c=(0,G.useCallback)(async n=>{t(n,{onSuccess:t=>{H.success(`Success`,{description:`${t}`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),e({to:`/sign-in`,search:{me:i}})}})},[i,e,t]);return(0,W.jsxs)(q,{...r,children:[(0,W.jsx)(`p`,{className:`text-sm py-2`,children:`Please Enter an Email`}),(0,W.jsxs)(`form`,{id:`auth-verify-email-form`,name:`auth-verify-email-form`,onSubmit:s(c),className:`my-4`,children:[(0,W.jsx)(Y,{control:o,name:`email`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-2`,children:[(0,W.jsx)(Z,{children:`Email`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{disabled:n,type:`email`,className:`dark:bg-black dark:border-black`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(F,{type:`submit`,variant:`submit`,disabled:n,className:`w-full my-2`,children:`Send Verification Email`})]})]})}function ko(){let{token:e}=ce({strict:!1}),t=Oe(),{mutate:n,isPending:r}=Eo(),i=(0,G.useCallback)(e=>{n(e,{onSuccess:()=>{H.success(`Success`,{description:`Email verified successfully`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),t({to:`/sign-in`})}})},[n,t]);return(0,G.useEffect)(()=>{e&&i(e)},[i,e]),(0,W.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,W.jsx)(`h1`,{className:`text-3xl font-light`,children:`Verify Email`}),r?(0,W.jsx)(`p`,{className:`text-sm pt-1`,children:`Verifying email...`}):(0,W.jsx)(Oo,{})]})}function Ao(){let{email:e}=ce({strict:!1}),{mutate:t,isPending:n}=po(),r=(0,G.useCallback)(n=>(n.preventDefault(),e&&t({email:e},{onSuccess:e=>{H.success(`Code Sent`,{description:`${e}`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}})}}),!1),[e,t]);return(0,W.jsxs)(`div`,{className:`text-foreground dark:text-white w-lg flex flex-col gap-4`,children:[(0,W.jsxs)(`h1`,{className:`text-3xl font-light`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`text-2xl animate-flower-dance mr-4`,title:`Loading`,children:`🌼`}),`Check your email!`]}),(0,W.jsxs)(`p`,{children:[`Your account has been created! You should receive an email with a link to `,(0,W.jsx)(`strong`,{children:`[Verify My Email]`}),`!`]}),(0,W.jsxs)(`p`,{children:[`From: `,(0,W.jsx)(`strong`,{children:`harper@notifications.harperfabric.com`})]}),(0,W.jsxs)(`p`,{children:[`To: `,(0,W.jsx)(`strong`,{children:e||`your email`})]}),(0,W.jsx)(`p`,{children:`Can you click it? Then we can carry on to more fun things!`}),(0,W.jsxs)(`div`,{className:`underline flex gap-4`,children:[(0,W.jsx)(V,{className:`text-sm text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/sign-in`,search:{me:e},children:`I did it, let me sign in!`}),(0,W.jsx)(V,{className:`text-sm opacity-50 text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:void 0,onClick:r,disabled:n,children:`Send me another code, please.`})]})]})}var jo=z({getParentRoute:()=>pa,id:`_authLayout`,component:ga}),Mo=z({getParentRoute:()=>jo,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:yo,beforeLoad:({context:e,location:t})=>{let n=e.authentication[h]?.user;if(n){let e=t?.search,r=Tn(n);throw _e({to:e?.redirect?.startsWith(`/`)?e.redirect:r})}}}),No=z({getParentRoute:()=>pa,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:Za,beforeLoad:({context:e,location:t})=>{if(e.authentication.OverallAppSignIn?.user){let e=t?.search;throw _e({to:e?.redirect?.startsWith(`/`)?e.redirect:`/`})}}}),Po=z({getParentRoute:()=>jo,path:`sign-up`,head:()=>({meta:[{title:`Sign Up — Harper Fabric`}]}),component:wo}),Fo=z({getParentRoute:()=>jo,path:`forgot-password`,head:()=>({meta:[{title:`Forgot Password — Harper Fabric`}]}),component:to}),Io=z({getParentRoute:()=>jo,path:`verify-email`,head:()=>({meta:[{title:`Verify Email — Harper Fabric`}]}),component:ko}),Lo=z({getParentRoute:()=>jo,path:`verifying`,head:()=>({meta:[{title:`Check Your Email — Harper Fabric`}]}),component:Ao}),Ro=z({getParentRoute:()=>jo,path:`check-oauth`,head:()=>({meta:[{title:`Signing In — Harper Fabric`}]}),component:Ta}),zo=z({getParentRoute:()=>jo,path:`reset-password`,head:()=>({meta:[{title:`Reset Password — Harper Fabric`}]}),component:ao});jo.addChildren([Mo,Po,Ro,Fo,Io,Lo,zo]);var Bo=[No];function Vo({children:e}){return(0,W.jsx)(`nav`,{className:`fixed top-20 w-full h-12 z-39 py-2 px-4 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none`,children:(0,W.jsxs)(`div`,{className:`flex items-center h-full space-x-2`,children:[(0,W.jsx)(ka,{}),e]})})}function Ho(e){if(qo(e)||Jo(e))return`warning`;if(Wo(e))return`success`;switch(e){case`STOPPED`:return`destructive`;case`TERMINATING`:case`TERMINATED`:case`FAILED`:case`REMOVED`:case`ERROR`:return`destructive`;default:return`default`}}function Uo(e){switch(e){case`STOPPED`:case`STOPPING`:case`STARTING`:case`RESTARTING`:return!0;default:return!1}}function Wo(e){switch(e){case`RUNNING`:case`UPDATED`:return!0;default:return!1}}function Go(e){switch(e){case`FAILED`:return!0;default:return!1}}function Ko(e){switch(e){case`TERMINATED`:return!0;default:return!1}}function qo(e){switch(e){case`CLONE_PENDING`:case`PENDING_UPGRADE`:return!0;default:return!1}}function Jo(e){switch(e){case`PROVISIONING`:case`CLONING`:case`CLONE_READY`:case`UPDATING_HDB_NODES`:case`DRAINING`:case`UPDATING`:return!0;default:return!1}}function Yo({typeOfThingBeingDeleted:e,nameOfThingBeingDeleted:t,isModalOpen:n,hideDataLossWarning:r,setIsModalOpen:i,deletionConfirmed:a,deletionPending:o,trigger:s,presentParticiple:c=`Deleting`,transitiveVerb:l=`Delete`}){return(0,W.jsxs)(qt,{open:n,onOpenChange:i,children:[s&&(0,W.jsx)(Gt,{asChild:!0,children:s}),(0,W.jsxs)(tn,{className:`sm:max-w-[750px]`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsxs)(Jt,{children:[`Are you sure you want to `,l.toLowerCase(),` this `,e,`?`]}),(0,W.jsx)(Ht,{children:`This action cannot be undone.`})]}),!r&&(0,W.jsxs)(`div`,{className:`p-3 my-5 text-white rounded-md bg-amber-600`,children:[(0,W.jsxs)(`p`,{className:`flex space-x-1 font-semibold align-baseline`,children:[(0,W.jsx)(ti,{className:`inline-block size-5`}),` `,(0,W.jsx)(`span`,{children:`Warning`})]}),(0,W.jsxs)(`p`,{className:`pt-2 text-base`,children:[`By `,c.toLowerCase(),` `,e,` `,(0,W.jsx)(`span`,{className:`font-semibold`,children:t}),` `,`you will lose the data stored in it permanently.`]})]}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-center space-x-5`,children:[(0,W.jsxs)(F,{type:`button`,onClick:()=>i(!1),children:[(0,W.jsx)(an,{}),` Cancel`]}),(0,W.jsxs)(F,{variant:`destructive`,onClick:a,disabled:o,children:[(0,W.jsx)(ei,{}),` `,l]})]})})]})]})}function Xo({...e}){return(0,W.jsx)(St,{"data-slot":`context-menu`,...e})}function Zo({...e}){return(0,W.jsx)(dt,{"data-slot":`context-menu-trigger`,...e})}function Qo({className:e,...t}){return(0,W.jsx)(Qe,{children:(0,W.jsx)(lt,{"data-slot":`context-menu-content`,className:P(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border p-1 shadow-md`,e),...t})})}function $o({className:e,inset:t,variant:n=`default`,...r}){return(0,W.jsx)(ut,{"data-slot":`context-menu-item`,"data-inset":t,"data-variant":n,className:P(`focus:bg-accent focus:text-grey dark:focus:bg-white/15 dark:focus:text-white`,`data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10`,`dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive`,`data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground`,`relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm`,`outline-hidden select-none`,`data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r})}function es({className:e,inset:t,...n}){return(0,W.jsx)(Xe,{"data-slot":`context-menu-label`,"data-inset":t,className:P(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function ts({className:e,...t}){return(0,W.jsx)(Ze,{"data-slot":`context-menu-separator`,className:P(`bg-border -mx-1 my-1 h-px`,e),...t})}function ns({className:e,...t}){return(0,W.jsx)(`span`,{"data-slot":`context-menu-shortcut`,className:P(`text-muted-foreground ml-auto text-xs tracking-widest`,e),...t})}var rs={dropdown:{Item:fi,Label:mi,Separator:hi},context:{Item:$o,Label:es,Separator:ts}};function is(e,t){let{Item:n,Label:r,Separator:i}=rs[t];return e.map(e=>{if(e.type===`separator`)return(0,W.jsx)(i,{},e.key);if(e.type===`label`)return(0,W.jsx)(r,{className:e.className,children:e.label},e.key);let t=(0,W.jsxs)(n,{className:e.className,onClick:e.onClick,disabled:e.disabled,variant:e.variant,children:[e.icon,e.label]});return e.to?(0,W.jsx)(V,{to:e.to,disabled:e.disabled,children:t},e.key):(0,W.jsx)(G.Fragment,{children:t},e.key)})}function as({items:e,children:t}){return e.length?(0,W.jsxs)(Xo,{children:[(0,W.jsx)(Zo,{asChild:!0,children:t}),(0,W.jsx)(Qo,{children:is(e,`context`)})]}):(0,W.jsx)(W.Fragment,{children:t})}function os(e,t,n,r){return e?e.super_user===!0||e.structure_user===!0||e[t]?.tables?.[n]?.[r]===!0:!1}function ss(e){let{user:t}=Ie(),{organizationId:n}=L({strict:!1});if(Ve(t))return{update:!0,remove:!0};let r=t?.roles?.[e??n];return!r||`oauthProviders`in r||!r.permission&&!r.organization?{update:!1,remove:!1}:r.permission?.super_user?{update:!0,remove:!0}:{update:r.organization.update,remove:r.organization.delete}}function cs(e){let{user:t}=Ie(),{organizationId:n}=L({strict:!1});if(Ve(t))return{create:!0,remove:!0,update:!0,view:!0};let r=t?.roles?.[e??n];if(!r||`oauthProviders`in r||!r.permission&&!r.organization?.roles)return{create:!1,remove:!1,update:!1,view:!1};if(r.permission?.super_user)return{create:!0,remove:!0,update:!0,view:!0};let i=r.organization.roles;return{create:i.create,remove:i.delete,update:i.update,view:i.view}}function ls(e,t){let{user:n}=Ie(),{organizationId:r,clusterId:i}=L({strict:!1});return us(n,e??r,t??i)}function us(e,t,n){if(Ve(e))return{create:!0,remove:!0,update:!0,view:!0};let r=e?.roles?.[t];if(!r||`oauthProviders`in r||!r.permission&&!r.organization?.clusters)return{create:!1,remove:!1,update:!1,view:!1};if(r.permission?.super_user)return{create:!0,remove:!0,update:!0,view:!0};let i=r.organization.clusters.resources?.find(e=>e.id===n),a=r.organization.clusters;return{create:a.create,remove:i?i.delete:a.delete,update:i?i.update:a.update,view:i?i.view:a.view}}function ds(e,t){let{user:n}=Ie(),{organizationId:r,clusterId:i}=L({strict:!1});return fs(n,e??r,t??i)}function fs(e,t,n){if(Ve(e))return{create:!0,remove:!0,update:!0,view:!0};let r=e?.roles?.[t];if(!r||`oauthProviders`in r||!r.permission&&!r.organization?.clusters)return{create:!1,remove:!1,update:!1,view:!1};if(r.permission?.super_user)return{create:!0,remove:!0,update:!0,view:!0};let i=r.organization.clusters.resources?.find(e=>e.id===n)?.instances,a=r.organization.clusters;return{create:i?i.create:a.create,remove:i?i.delete:a.delete,update:i?i.update:a.update,view:i?i.view:a.view}}function ps(e){let{clusterId:t,instanceId:n}=L({strict:!1}),{user:r}=Fe(e??n??t),i=r?.role?.permission;return i?i.super_user===!0:!1}function ms(e){let{clusterId:t,instanceId:n}=L({strict:!1}),{user:r}=Fe(e??n??t),i=r?.role?.permission;return i?i.super_user===!0||i.structure_user===!0:!1}function hs(e,t,n,r){let{clusterId:i,instanceId:a}=L({strict:!1}),{user:o}=Fe(e??a??i);return os(o?.role?.permission,t,n,r)}function gs(e){return!!e?.plans?.[0]?.planId?.startsWith(`self-hosted`)}function _s({cluster:e,hasCardLink:t=!1}){let{view:n,update:r}=ls(e.organizationId,e.id),i=`/${e.organizationId}/${e.id}`;if(n)return gs(e)?(0,W.jsx)(vs,{cluster:e,hasCardLink:t}):e.fqdn?e.resetPassword?r?(0,W.jsx)(V,{to:`${i}/finish-setup`,className:`text-sm text-nowrap`,"aria-label":`Set Password on ${e.name}`,title:`Set Password on ${e.name}`,children:(0,W.jsxs)(F,{variant:`positive`,className:`py-2 hover:border-b-2 animate-glow-pulse`,children:[`Finish Setup `,(0,W.jsx)(On,{className:`inline-block`})]})}):(0,W.jsx)(`span`,{className:`py-2 text-nowrap`,children:`Pending Owner Setup`}):(0,W.jsx)(vs,{cluster:e,hasCardLink:t}):t?(0,W.jsxs)(`span`,{className:`text-sm text-nowrap py-2 ml-auto`,children:[`Instances `,(0,W.jsx)(On,{className:`inline-block`})]}):(0,W.jsx)(V,{to:`${i}/instances`,className:`text-sm text-nowrap`,"aria-label":`View ${e.name}`,title:`View ${e.name}`,children:(0,W.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Instances `,(0,W.jsx)(On,{className:`inline-block`})]})})}function vs({cluster:e,hasCardLink:t}){return t?(0,W.jsxs)(`span`,{className:`text-sm text-nowrap py-2 ml-auto`,children:[`Open `,(0,W.jsx)(On,{className:`inline-block`})]}):(0,W.jsx)(V,{to:`/${e.organizationId}/${e.id}`,className:`text-sm text-nowrap`,"aria-label":`Open ${e.name}`,title:`Open ${e.name}`,children:(0,W.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Open `,(0,W.jsx)(On,{className:`inline-block`})]})})}function ys({clusterName:e,isPending:t,stopOpen:n,setStopOpen:r,onConfirmStop:i,restartOpen:a,setRestartOpen:o,onConfirmRestart:s}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(qt,{open:n,onOpenChange:r,children:(0,W.jsxs)(tn,{className:`sm:max-w-[560px]`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsxs)(Jt,{children:[`Stop cluster `,e,`?`]}),(0,W.jsx)(Ht,{children:`This stops every instance in the cluster. It will be offline and stop serving traffic until you start it again.`})]}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(F,{type:`button`,variant:`defaultOutline`,onClick:()=>r(!1),children:`Cancel`}),(0,W.jsx)(F,{type:`button`,variant:`destructive`,onClick:i,disabled:t,children:`Stop cluster`})]})})]})}),(0,W.jsx)(qt,{open:a,onOpenChange:o,children:(0,W.jsxs)(tn,{className:`sm:max-w-[560px]`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsxs)(Jt,{children:[`Restart cluster `,e]}),(0,W.jsx)(Ht,{children:`Choose how to restart the cluster's instances.`})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-3 py-2`,children:[(0,W.jsxs)(`button`,{type:`button`,disabled:t,onClick:()=>s(`rolling`),className:`rounded-lg border border-border p-4 text-left transition-colors hover:border-primary hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary disabled:opacity-60`,children:[(0,W.jsxs)(`div`,{className:`font-medium`,children:[`Rolling `,(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`(recommended)`})]}),(0,W.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`One instance at a time, waiting for each to rejoin before moving on. No downtime.`})]}),(0,W.jsxs)(`button`,{type:`button`,disabled:t,onClick:()=>s(`parallel`),className:`rounded-lg border border-border p-4 text-left transition-colors hover:border-primary hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary disabled:opacity-60`,children:[(0,W.jsx)(`div`,{className:`font-medium`,children:`Parallel`}),(0,W.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`All instances at once. Faster, but the whole cluster is briefly offline.`})]})]}),(0,W.jsx)(Ut,{children:(0,W.jsx)(F,{type:`button`,variant:`defaultOutline`,onClick:()=>o(!1),children:`Cancel`})})]})})]})}function bs(e,t){let n=[];if(e)for(let r of e)n.push(r[t]);return n}function xs({cluster:e,forceProgressBarVisible:t}){let[n,r]=(0,G.useState)(t||!1),{data:i}=R(Va(n&&e.id,2e3));(0,G.useEffect)(function(){(qo(e.status)||Jo(e.status))&&r(!0)},[n,e.status,i?.instances]);let a=(0,G.useMemo)(()=>{let e=bs(i?.plans??[],`planId`),t=i?.instances??[],n=0,r={},a=0,o={},s=0,c={},l=0,u={};for(let i of t){let t=i.status;!t||Ko(t)||(qo(t)?(n+=1,r[t]=`${n} ${Da(t)}`):Jo(t)?(a+=1,o[t]=`${a} ${Da(t)}`):Go(t)?(l+=1,u[t]=`${l} ${Da(t)}`):!i.planId||!e.includes(i.planId)?(a+=1,o.DRAINING_TRAFFIC=`${a} ${Da(`Draining Traffic`)}`):Wo(t)&&(s+=1,c[t]=`${s} ${Da(t)}`))}let d=n+a+s;return{pendingWidth:`${d===0?100:n===0?0:n/d*100}%`,updatingWidth:`${a===0?0:a/d*100}%`,failedWidth:`${l===0?0:l/d*100}%`,runningWidth:`${s===0?0:s/d*100}%`,text:[...Object.values(c).sort(),...Object.values(u).sort(),...Object.values(o).sort(),...Object.values(r).sort()].join(` · `)}},[i]);return n?(0,W.jsxs)(`div`,{className:`w-full text-center`,children:[(0,W.jsxs)(`div`,{className:`w-full h-2.5 rounded-full overflow-clip flex shadow`,children:[(0,W.jsx)(`div`,{style:{width:a.runningWidth},className:`grow bg-green/80 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`}),(0,W.jsx)(`div`,{style:{width:a.failedWidth},className:`grow bg-red/80 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`}),(0,W.jsx)(`div`,{style:{width:a.updatingWidth},className:`grow animate-pulse bg-yellow/80 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`}),(0,W.jsx)(`div`,{style:{width:a.pendingWidth},className:`grow bg-gray-600 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`})]}),a.text&&(0,W.jsx)(`div`,{className:`text-xs text-muted-foreground font-light mt-2`,children:a.text})]}):null}function Ss({open:e,setOpen:t,action:n,targetName:r,scope:i,isPending:a,onConfirm:o}){let s=n===`start`?`Start`:`Restart`;return(0,W.jsx)(qt,{open:e,onOpenChange:t,children:(0,W.jsxs)(tn,{className:`sm:max-w-[560px]`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsxs)(Jt,{className:`flex items-center gap-2`,children:[(0,W.jsx)(_r,{className:`size-5 text-yellow`}),s,` `,r,` in safe mode?`]}),(0,W.jsxs)(Ht,{children:[`Safe mode boots Harper`,` `,(0,W.jsx)(`strong`,{className:`text-foreground`,children:`without loading your applications or components`}),`. Use it to recover `,i===`cluster`?`a cluster`:`an instance`,` `,`that a bad app, component, or config is keeping from starting. Then fix or remove what's broken and`,` `,n===`start`?`start`:`restart`,` normally to bring everything back.`]})]}),(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:i===`cluster`?`All instances are ${n===`start`?`started`:`restarted`} at once (parallel)${n===`restart`?`, so expect a brief interruption while they come back.`:`.`}`:`The instance ${n===`start`?`starts`:`restarts`} in safe mode${n===`restart`?`, so expect a brief interruption while it comes back.`:`.`}`}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(F,{type:`button`,variant:`defaultOutline`,onClick:()=>t(!1),children:`Cancel`}),(0,W.jsxs)(F,{type:`button`,variant:`warning`,onClick:o,disabled:a,children:[(0,W.jsx)(_r,{}),` `,s,` in safe mode`]})]})})]})})}async function Cs(e){let{data:t}=await N.delete(`/Cluster/${e}`,{timeout:0});return t}function ws(){return I({mutationFn:e=>Cs(e)})}async function Ts({clusterId:e,action:t,safeMode:n,strategy:r}){let i={};n!==void 0&&(i.safeMode=n),r!==void 0&&(i.strategy=r);let{data:a}=await N.post(`/Cluster/${e}/container/${t}`,i);return a}function Es(){return I({mutationFn:Ts})}var Ds={stop:`Stopping`,start:`Starting`,restart:`Restarting`};function Os(e){let{mutateAsync:t,isPending:n}=Es(),r=ie();return{run:(0,G.useCallback)(async(n,i)=>{let a=i?.label??Ds[n],o=H.loading(a,{description:`${a} cluster ${e.name}. Status will update automatically.`,duration:3e4,action:{label:`Dismiss`,onClick:()=>H.dismiss()}});try{await t({clusterId:e.id,action:n,safeMode:i?.safeMode,strategy:i?.strategy}),r.invalidateQueries({queryKey:[e.organizationId]}),r.invalidateQueries({queryKey:[e.id]}),H.dismiss(o),H.success(`Request accepted`,{description:`${e.name} is ${a.toLowerCase()}. The status will update automatically.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}})}catch{H.dismiss(o)}},[e.id,e.name,e.organizationId,t,r]),isPending:n}}async function ks(e){if(!navigator.clipboard)return H.error(`Clipboard access is not available in this environment.`),!1;try{return await navigator.clipboard.writeText(e),!0}catch{return H.error(`Failed to copy to clipboard.`),!1}}function As(e){ks(e).then(e=>{e&&H.info(`Copied to clipboard!`,{icon:(0,W.jsx)(Wn,{}),duration:1e3})})}function js(...e){return(0,G.useMemo)(()=>e.map(e=>()=>As(e)),e)}function Ms(){return As}function Ns({cluster:e}){let t=ne(),n=ie(),r=(0,G.useMemo)(()=>s(e),[e]),i=Ui({operationsUrl:r}),a=Fe(e.id),[,o]=vn(bn.SavedClusterState,null),{view:c,update:l,remove:f,create:p}=ls(e.organizationId,e.id),{mutate:m,isPending:h}=ws(),[g,_]=(0,G.useState)(!1),[v,y]=(0,G.useState)(!1),[b,x]=(0,G.useState)(!1),[S,C]=(0,G.useState)(!1),[w,T]=(0,G.useState)(null),{run:E,isPending:D}=Os(e),O=e.status===`RUNNING`,k=e.status===`STOPPED`,A=e.status===`PARTIAL`,j=e.status===`STOPPING`||e.status===`STARTING`||e.status===`RESTARTING`,ee=j||k||A,M=(0,G.useMemo)(()=>!!(e.status&&Pa.includes(e.status)),[e.status]),N=gs(e),P=l&&!N,F=u.checkForFabricConnect(e.id),I=!F&&!!a.user,L=(0,G.useMemo)(()=>!!(e.status&&Fa.includes(e.status)),[e.status]),te=(0,G.useMemo)(()=>!!(e.status&&Go(e.status)),[e.status]),re=l&&!N&&!L&&!Jo(e.status)&&!qo(e.status),ae=(0,G.useCallback)(async()=>{_(!0);let t=await Ba(e.id).catch(e=>(console.error(`Failed to lookup cluster details, proceeding without checking instances.`,e),null));if(await d({entityId:e.id,instanceClient:i}),t?.instances?.length)for(let e of t.instances)u.setUserForEntity(e,null);u.setUserForEntity(e,null)},[e,i]),R=(0,G.useCallback)(()=>{o(e),t.navigate({to:`/${e.organizationId}/new-cluster`})},[e,t,o]),oe=(0,G.useCallback)(()=>y(!0),[]),se=(0,G.useCallback)(()=>{let r=e.organizationId;m(e.id,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[r],refetchType:`active`}),await t.invalidate(),H.success(`Success`,{description:N?`Cluster successfully removed.`:`Cluster successfully terminated.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),y(!1)},onError:()=>{H.error(`Error`,{description:N?`Failed to remove cluster: ${e.name}`:`Failed to terminate cluster: ${e.name}.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),y(!1)}})},[t,e.organizationId,e.id,e.name,m,N,n]),ce=!c||L?void 0:e.status===`STOPPED`?`/${e.organizationId}/${e.id}/instances`:e.status===`PARTIAL`?`/${e.organizationId}/${e.id}`:M?N?`/${e.organizationId}/${e.id}`:e.fqdn?e.resetPassword?void 0:`/${e.organizationId}/${e.id}`:`/${e.organizationId}/${e.id}/instances`:void 0,le=e.domains?.[0]?.domain||e.fqdn,[z,ue]=js(`${le}`,`https://${le}`),de=[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`label-separator`},M&&l&&!a.isLoading&&(!I||F)&&{key:`sign-in`,to:`${e.id}/sign-in`,disabled:g,icon:(0,W.jsx)(hr,{className:`text-green`}),label:`Direct Sign In`},M&&c&&!!r&&!a.isLoading&&I&&{key:`direct-sign-out`,onClick:ae,disabled:g,label:`Direct Sign Out`},M&&l&&{key:`edit`,to:`${e.id}/edit`,disabled:g,icon:(0,W.jsx)(Rr,{className:`text-purple-600`}),label:N?`Edit`:`Edit Scaling`},re&&{key:`edit-version`,to:`${e.id}/edit/version`,disabled:g,icon:(0,W.jsx)(cr,{className:`text-fuchsia-300`}),label:`Edit Version`},M&&l&&!1,M&&c&&{key:`instances`,to:`${e.id}/instances`,disabled:g,icon:(0,W.jsx)(Br,{className:`text-orange-300`}),label:`Instances`},M&&c&&!!a.user&&{key:`deployments`,to:`${e.id}/config/deployments`,disabled:g,icon:(0,W.jsx)(Pr,{className:`text-sky-400`}),label:`Deployments`},P&&(O||k||A)&&{type:`separator`,key:`container-separator`},P&&(O||k||A)&&{type:`label`,key:`container-label`,className:`text-gray-600 text-xs`,label:`Container`},P&&(k||A)&&{key:`container-start`,disabled:D,onClick:()=>void E(`start`,{safeMode:!1,strategy:`parallel`}),icon:(0,W.jsx)(Mr,{}),label:`Start`},P&&k&&{key:`container-start-safe`,disabled:D,onClick:()=>T(`start`),icon:(0,W.jsx)(_r,{}),label:`Start in safe mode`},P&&(O||A)&&{key:`container-restart`,disabled:D,onClick:()=>C(!0),icon:(0,W.jsx)(Ir,{}),label:`Restart`},P&&O&&{key:`container-restart-safe`,disabled:D,onClick:()=>T(`restart`),icon:(0,W.jsx)(_r,{}),label:`Restart in safe mode`},P&&(O||A)&&{key:`container-stop`,variant:`destructive`,disabled:D,onClick:()=>x(!0),icon:(0,W.jsx)(Kr,{}),label:`Stop`},M&&c&&!!e.fqdn&&{type:`separator`,key:`copy-separator`},M&&c&&!!e.fqdn&&{key:`copy-host-name`,onClick:z,disabled:g,icon:(0,W.jsx)(Gn,{}),label:`Copy Host Name`},M&&c&&!!e.fqdn&&{key:`copy-api-url`,onClick:ue,disabled:g,icon:(0,W.jsx)(Gn,{}),label:`Copy API URL`},te&&p&&{key:`try-again`,onClick:R,className:`focus:bg-green/70 focus:text-white`,label:`Try Again`},!L&&f&&M&&{type:`separator`,key:`remove-separator`},!L&&f&&{key:`remove`,onClick:oe,className:`focus:bg-red/70 focus:text-white`,icon:(0,W.jsx)(ei,{className:`text-red-300`}),label:N?`Remove`:`Terminate`}].filter(Zi);return(0,W.jsx)(as,{items:L?[]:de,children:(0,W.jsxs)(Lt,{className:`relative h-full justify-between transition-[transform,box-shadow] duration-200 ${ce?`hover:scale-[1.02] hover:shadow-lg hover:ring-2 hover:ring-primary/60 dark:hover:ring-violet-400/70`:`hover:shadow-lg`}`,children:[ce&&(0,W.jsx)(V,{to:ce,"aria-label":`${N||e.fqdn?`Open`:`View`} ${e.name}`,className:`absolute inset-0 rounded-[inherit] focus-visible:ring-2 focus-visible:ring-purple-200 focus-visible:outline-none`}),(0,W.jsxs)(Pt,{children:[(0,W.jsxs)(It,{className:`flex items-center justify-between`,children:[le?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`truncate max-w-48`,children:le}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Copy host name`,onClick:e=>{e.stopPropagation(),z()},className:`relative z-10 -m-1.5 p-1.5 rounded-md text-muted-foreground cursor-pointer hover:bg-accent/60 hover:text-foreground`,children:(0,W.jsx)(Xn,{size:16})}),(0,W.jsx)(`span`,{className:`grow`})]}):(0,W.jsx)(`span`,{children:`Self-Hosted`}),!L&&(0,W.jsxs)(li,{children:[(0,W.jsx)(ui,{"aria-label":`Cluster options`,onClick:e=>e.stopPropagation(),className:`relative z-10 -m-2 p-2 rounded-md hover:bg-accent/60`,children:(0,W.jsx)($n,{})}),(0,W.jsx)(di,{children:is(de,`dropdown`)})]})]}),(0,W.jsx)(Nt,{children:(0,W.jsx)(`h2`,{children:e.name})})]}),(0,W.jsxs)(Ft,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(xs,{cluster:e}),M&&c&&(0,W.jsx)(_s,{cluster:e,hasCardLink:!!ce}),ee&&e.status&&(0,W.jsxs)(oo,{variant:k?`destructive`:`warning`,children:[j&&(0,W.jsx)(yr,{className:`animate-spin`}),Da(e.status)]}),te&&e.status&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(oo,{variant:Ho(e.status),children:Da(e.status)}),(0,W.jsx)(`span`,{className:`text-xs`,children:`Click "..." to choose how to proceed.`})]})]}),(0,W.jsx)(Yo,{typeOfThingBeingDeleted:`cluster`,transitiveVerb:N?`Remove`:`Terminate`,presentParticiple:N?`Removing`:`Terminating`,nameOfThingBeingDeleted:e.name,isModalOpen:v,hideDataLossWarning:N,setIsModalOpen:e=>y(e),deletionConfirmed:se,deletionPending:h}),(0,W.jsx)(ys,{clusterName:e.name,isPending:D,stopOpen:b,setStopOpen:x,onConfirmStop:()=>{x(!1),E(`stop`,{strategy:`parallel`})},restartOpen:S,setRestartOpen:C,onConfirmRestart:e=>{C(!1),E(`restart`,{safeMode:!1,strategy:e})}}),(0,W.jsx)(Ss,{open:w!==null,setOpen:e=>{e||T(null)},action:w??`restart`,targetName:e.name,scope:`cluster`,isPending:D,onConfirm:()=>{let e=w;T(null),e&&E(e,{safeMode:!0,strategy:`parallel`,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})}})]})})}function Ps({overEmail:e}){return(0,W.jsx)(`a`,{href:e?`mailto:support@harperdb.io`:`https://discord.com/channels/1415002037439041710/1415002038286286994`,target:`_blank`,rel:`noreferrer`,className:`underline`,children:`Contact us`})}function Fs({children:e,className:t}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vo,{}),(0,W.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))] relative ${t??``}`,children:e})]})}function Is({children:e}){let{organizationId:t,clusterId:n}=L({strict:!1}),{view:r,update:i}=ls(t,n),{data:a}=R(Va(n,!1)),o=a?gs(a):!1,s=`/${t}/${n}`;return(0,W.jsx)(`div`,{className:`relative mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,W.jsxs)(`div`,{className:`md:grid gap-6 md:grid-cols-12`,children:[(0,W.jsx)(`aside`,{className:`md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,W.jsx)(wi,{items:[{to:s,label:`Overview`,icon:gr,exact:!0},i&&{to:`${s}/edit`,label:o?`Configuration`:`Scaling`,icon:sr,exact:!0},i&&!o&&{to:`${s}/edit/version`,label:`Version`,icon:Xr,exact:!0},i&&!o&&{to:`${s}/domains`,label:`Domains`,icon:lr},r&&{to:`${s}/instances`,label:`Instances`,icon:Br}].filter(Boolean),ariaLabel:`Cluster sections`})}),(0,W.jsx)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:e})]})})}async function Ls(e){let{data:t}=await N.get(`/Plan/`,{params:{organizationId:e}});return t}function Rs(e){return B({queryKey:[e,`instancePlan`],queryFn:()=>Ls(e),retry:!1})}var zs=[`stable`,`next`,`beta`,`alpha`];function Bs(e){let t=zs.indexOf(e);return t===-1?zs.length:t}function Vs(e){let t=new Map;for(let n of e){let e=t.get(n.version);(!e||Bs(n.name)<Bs(e.name))&&t.set(n.version,n)}return[...t.values()]}async function Hs(e){let{data:t}=await N.get(`/HarperVersions/`,{params:{organizationId:e}}),n=t;return{...n,value:Vs(n.value)}}function Us(e){return B({queryKey:[e,`HarperVersions`],queryFn:()=>Hs(e),staleTime:6e4,retry:!1})}async function Ws({organizationId:e,availableHosts:t}={}){let{data:n}=await N.get(`/Region/`,{params:{availableHosts:t,organizationId:e}});return n}function Gs({organizationId:e,availableHosts:t}={}){return B({queryKey:[e,`regionLocations`,t],queryFn:()=>Ws({organizationId:e,availableHosts:t}),retry:!1})}function Ks(e){return(t,n)=>t[e]===n[e]?0:t[e]>n[e]?1:-1}function qs(e){let t=e.split(`.`).map(Number);return(t[0]<<24|t[1]<<16|t[2]<<8|t[3])>>>0}function Js(e){return typeof e==`string`&&/^(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|1?\d?\d)){3}$/.test(e)}function Ys(e,t){return e.instanceFqdn===t.instanceFqdn?e.operationsApiPort-t.operationsApiPort:Js(e.instanceFqdn)&&Js(t.instanceFqdn)?qs(e.instanceFqdn)-qs(t.instanceFqdn):e.instanceFqdn>t.instanceFqdn?1:-1}function Xs(e,t){let n={};for(let r of e){let e=r[t];if(e!==void 0)if(Array.isArray(e))for(let t of e)n[t]||(n[t]=[]),n[t].push(r);else n[e]||(n[e]=[]),n[e].push(r)}return n}function Zs(e,t){let n={};for(let r of e){let e=r[t];if(e!==void 0)if(Array.isArray(e))for(let t of e)n[t]=r;else n[e]=r}return n}function Qs(e,t,n){let r=Xs(e,t),i={};for(let e in r)i[e]=Zs(r[e],n);return i}function $s({duration:e,message:t,lateMessage:n}){let r=(0,G.useRef)(0),i=(0,G.useRef)(0),[a,o]=(0,G.useState)(!1),[s,c]=(0,G.useState)(`5%`),l=(0,G.useCallback)(function t(n){i.current||=n;let a=n-i.current,s=Math.min(a/e,1);c(Math.max(5,s*100)+`%`),s<1?r.current=requestAnimationFrame(t):o(!0)},[e]);return(0,G.useEffect)(()=>(r.current=requestAnimationFrame(l),()=>cancelAnimationFrame(r.current)),[l]),(0,W.jsxs)(W.Fragment,{children:[a?n:t,(0,W.jsx)(sn,{width:s,animated:!1})]})}async function ec(e){let{data:t}=await N.post(`/Cluster/`,e,{timeout:0});return t}function tc(){return I({mutationFn:e=>ec(e)})}async function nc(e){let{id:t,...n}=e,{data:r}=await N.put(`/Cluster/${t}`,n,{timeout:0});return r}function rc(){return I({mutationFn:e=>nc(e)})}function ic(e){return!!e&&e!==`undefined`&&e!==`null`}async function ac(e){if(!ic(e))throw Error(`getOrganization called without a valid organization id (got: ${e})`);let{data:t}=await N.get(`/Organization/${e}`);return t}function oc(e){return B({queryKey:[e],queryFn:()=>ac(e),retry:!1,enabled:ic(e),refetchInterval:1e4})}var sc=`ENTERPRISE`;function cc(e,t){if(t<=0)return``;if(e.length<=t)return e;let n=e.split(`-`);if(n.length===1)return n[0].slice(0,t);let r=[n[0],...n.slice(1).map(e=>e.charAt(0))],i=r.join(`-`);if(i.length<=t)return i;let a=r.slice(1).join(``).length,o=r.length-1,s=t-a-o;if(s>0)return r[0]=r[0].slice(0,s),r.join(`-`);{let e=[],i=0;t>0&&(e.push(n[0].charAt(0)),i=1);for(let n=1;n<r.length&&i+2<=t;n++)e.push(r[n]),i+=2;return e.join(`-`)}}function lc(e,t,n=`-`){let r=t.split(n)[0];return e.findIndex(e=>e.startsWith(r))!==-1}function uc(e){return e.replace(/[^a-zA-Z0-9]/g,`-`).replace(/([a-z])([A-Z])/g,`$1-$2`).toLowerCase().replace(/-+/g,`-`).replace(/^-+|-+$/g,``)}function dc(e){return e!==void 0&&e>0}function fc(e,t,n){return t===void 0?Promise.resolve():e.invalidateQueries({predicate:e=>e.queryKey[0]===t||e.queryKey[1]===t,...n})}async function pc(e){await N.put(`/Payment/`,e)}function mc(){return I({mutationFn:e=>pc(e)})}function hc(e){let{mutate:t}=mc();return(0,G.useCallback)((n,r)=>{t({paymentMethodId:typeof n==`string`?n:n.id,organizationId:e},{onSuccess:()=>{H.success(`Success! Your payment method has been saved.`),r(!0)},onError:()=>{H.error(`Failed to process payment method details. Please try another payment method.`),r(!1)}})},[t,e])}var gc=(0,G.createContext)(null);function _c(){return(0,G.useContext)(gc)}var vc=n(((e,t)=>{t.exports=`SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED`})),yc=n(((e,t)=>{var n=vc();function r(){}function i(){}i.resetWarningCache=r,t.exports=function(){function e(e,t,r,i,a,o){if(o!==n){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name=`Invariant Violation`,s}}e.isRequired=e;function t(){return e}var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return a.PropTypes=a,a}})),bc=n(((e,t)=>{t.exports=yc()()})),xc=e(bc(),1);function Sc(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Cc(e){if(Array.isArray(e))return e}function wc(e,t,n){return(t=Nc(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Tc(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function Ec(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
11
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Dc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Oc(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Dc(Object(n),!0).forEach(function(t){wc(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dc(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function kc(e,t){if(e==null)return{};var n,r,i=Ac(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Ac(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function jc(e,t){return Cc(e)||Tc(e,t)||Fc(e,t)||Ec()}function Mc(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Nc(e){var t=Mc(e,`string`);return typeof t==`symbol`?t:t+``}function Pc(e){"@babel/helpers - typeof";return Pc=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Pc(e)}function Fc(e,t){if(e){if(typeof e==`string`)return Sc(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Sc(e,t):void 0}}var Ic=function(e,t,n){var r=!!n,i=G.useRef(n);G.useEffect(function(){i.current=n},[n]),G.useEffect(function(){if(!r||!e)return function(){};var n=function(){if(i.current)return i.current.apply(i,arguments)};return e.on(t,n),function(){e.off(t,n)}},[r,t,e,i])},Lc=function(e){var t=G.useRef(e);return G.useEffect(function(){t.current=e},[e]),t.current},Rc=function(e){return e!==null&&Pc(e)===`object`},zc=function(e){return Rc(e)&&typeof e.then==`function`},Bc=function(e){return Rc(e)&&typeof e.elements==`function`&&typeof e.createToken==`function`&&typeof e.createPaymentMethod==`function`&&typeof e.confirmCardPayment==`function`},Vc=`[object Object]`,Hc=function e(t,n){if(!Rc(t)||!Rc(n))return t===n;var r=Array.isArray(t);if(r!==Array.isArray(n))return!1;var i=Object.prototype.toString.call(t)===Vc;if(i!==(Object.prototype.toString.call(n)===Vc))return!1;if(!i&&!r)return t===n;var a=Object.keys(t),o=Object.keys(n);if(a.length!==o.length)return!1;for(var s={},c=0;c<a.length;c+=1)s[a[c]]=!0;for(var l=0;l<o.length;l+=1)s[o[l]]=!0;var u=Object.keys(s);if(u.length!==a.length)return!1;var d=t,f=n;return u.every(function(t){return e(d[t],f[t])})},Uc=function(e,t,n){return Rc(e)?Object.keys(e).reduce(function(r,i){var a=!Rc(t)||!Hc(e[i],t[i]);return n.includes(i)?(a&&console.warn(`Unsupported prop change: options.${i} is not a mutable property.`),r):a?Oc(Oc({},r||{}),{},wc({},i,e[i])):r},null):null},Wc="Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.",Gc=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wc;if(e===null||Bc(e))return e;throw Error(t)},Kc=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wc;if(zc(e))return{tag:`async`,stripePromise:Promise.resolve(e).then(function(e){return Gc(e,t)})};var n=Gc(e,t);return n===null?{tag:`empty`}:{tag:`sync`,stripe:n}},qc=function(e){!e||!e._registerWrapper||!e.registerAppInfo||(e._registerWrapper({name:`react-stripe-js`,version:`6.7.0`}),e.registerAppInfo({name:`react-stripe-js`,version:`6.7.0`,url:`https://stripe.com/docs/stripe-js/react`}))},Jc=G.createContext(null);Jc.displayName=`ElementsContext`;var Yc=function(e,t){if(!e)throw Error(`Could not find Elements context; You need to wrap the part of your app that ${t} in an <Elements> provider.`);return e},Xc=function(e){var t=e.stripe,n=e.options,r=e.children,i=G.useMemo(function(){return Kc(t)},[t]),a=jc(G.useState(function(){return{stripe:i.tag===`sync`?i.stripe:null,elements:i.tag===`sync`?i.stripe.elements(n):null}}),2),o=a[0],s=a[1];G.useEffect(function(){var e=!0,t=function(e){s(function(t){return t.stripe?t:{stripe:e,elements:e.elements(n)}})};return i.tag===`async`&&!o.stripe?i.stripePromise.then(function(n){n&&e&&t(n)}):i.tag===`sync`&&!o.stripe&&t(i.stripe),function(){e=!1}},[i,o,n]);var c=Lc(t);G.useEffect(function(){c!==null&&c!==t&&console.warn("Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.")},[c,t]);var l=Lc(n);return G.useEffect(function(){if(o.elements){var e=Uc(n,l,[`clientSecret`,`fonts`]);e&&o.elements.update(e)}},[n,l,o.elements]),G.useEffect(function(){qc(o.stripe)},[o.stripe]),G.createElement(Jc.Provider,{value:o},r)};Xc.propTypes={stripe:xc.default.any,options:xc.default.object};var Zc=function(e){return Yc(G.useContext(Jc),e)},Qc=function(){return Zc(`calls useElements()`).elements},$c=function(e){var t=e.children;return t(Zc(`mounts <ElementsConsumer>`))};$c.propTypes={children:xc.default.func.isRequired};var el=G.createContext(null);el.displayName=`CheckoutContext`;var tl=function(e){var t=G.useContext(el),n=G.useContext(Jc);if(t){if(n)throw Error(`You cannot wrap the part of your app that ${e} in both a checkout provider and <Elements> provider.`);return t}else return Yc(n,e)},nl=[`mode`],rl=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},il=function(e,t,n){var r=`${rl(e)}Element`,i=t?function(e){tl(`mounts <${r}>`);var t=e.id,n=e.className;return G.createElement(`div`,{id:t,className:n})}:function(t){var n=t.id,i=t.className,a=t.options,o=a===void 0?{}:a,s=t.onBlur,c=t.onFocus,l=t.onReady,u=t.onChange,d=t.onEscape,f=t.onClick,p=t.onLoadError,m=t.onLoaderStart,h=t.onNetworksChange,g=t.onConfirm,_=t.onCancel,v=t.onShippingAddressChange,y=t.onShippingRateChange,b=t.onSavedPaymentMethodRemove,x=t.onSavedPaymentMethodUpdate,S=t.onAvailablePaymentMethodsChange,C=tl(`mounts <${r}>`),w=`elements`in C?C.elements:null,T=`checkoutState`in C?C.checkoutState:null,E=T?.type===`success`||T?.type===`loading`?T.sdk:null,D=jc(G.useState(null),2),O=D[0],k=D[1],A=G.useRef(null),j=G.useRef(null);Ic(O,`blur`,s),Ic(O,`focus`,c),Ic(O,`escape`,d),Ic(O,`click`,f),Ic(O,`loaderror`,p),Ic(O,`loaderstart`,m),Ic(O,`networkschange`,h),Ic(O,`confirm`,g),Ic(O,`cancel`,_),Ic(O,`shippingaddresschange`,v),Ic(O,`shippingratechange`,y),Ic(O,`savedpaymentmethodremove`,b),Ic(O,`savedpaymentmethodupdate`,x),Ic(O,`availablepaymentmethodschange`,S),Ic(O,`change`,u);var ee;l&&(ee=e===`expressCheckout`?l:function(){l(O)}),Ic(O,`ready`,ee),G.useLayoutEffect(function(){if(A.current===null&&j.current!==null&&(w||E)){var t=null;if(E){var n=E,i=E;switch(e){case`paymentForm`:t=i.createForm(o);break;case`payment`:t=n.createPaymentElement(o);break;case`address`:if(`mode`in o){var a=o.mode,s=kc(o,nl);if(a===`shipping`)t=n.createShippingAddressElement(s);else if(a===`billing`)t=n.createBillingAddressElement(s);else throw Error(`Invalid options.mode. mode must be 'billing' or 'shipping'.`)}else throw Error(`You must supply options.mode. mode must be 'billing' or 'shipping'.`);break;case`expressCheckout`:t=n.createExpressCheckoutElement(o);break;case`currencySelector`:t=E.createCurrencySelectorElement();break;case`taxId`:t=n.createTaxIdElement(o);break;case`contactDetails`:t=n.createContactDetailsElement();break;default:throw Error(`<${r}> is not supported inside a checkout provider. Use an <Elements> provider instead.`)}}else w&&(t=w.create(e,o));A.current=t,k(t),t&&t.mount(j.current)}},[w,E,o]);var M=Lc(o);return G.useEffect(function(){if(A.current){var e=Uc(o,M,[`paymentRequest`]);e&&`update`in A.current&&A.current.update(e)}},[o,M]),G.useLayoutEffect(function(){return function(){if(A.current&&typeof A.current.destroy==`function`)try{A.current.destroy(),A.current=null}catch{}}},[]),G.createElement(`div`,{id:n,className:i,ref:j})};return i.propTypes={id:xc.default.string,className:xc.default.string,onChange:xc.default.func,onBlur:xc.default.func,onFocus:xc.default.func,onReady:xc.default.func,onEscape:xc.default.func,onClick:xc.default.func,onLoadError:xc.default.func,onLoaderStart:xc.default.func,onNetworksChange:xc.default.func,onConfirm:xc.default.func,onCancel:xc.default.func,onShippingAddressChange:xc.default.func,onShippingRateChange:xc.default.func,onSavedPaymentMethodRemove:xc.default.func,onSavedPaymentMethodUpdate:xc.default.func,onAvailablePaymentMethodsChange:xc.default.func,options:xc.default.object},i.displayName=r,i.__elementType=e,i},al=typeof window>`u`,ol=G.createContext(null);ol.displayName=`EmbeddedCheckoutProviderContext`;var sl=function(){return tl(`calls useStripe()`).stripe};il(`auBankAccount`,al),il(`card`,al),il(`cardNumber`,al),il(`cardExpiry`,al),il(`cardCvc`,al),il(`currencySelector`,al),il(`iban`,al);var cl=il(`payment`,al);il(`expressCheckout`,al),il(`paymentRequestButton`,al),il(`linkAuthentication`,al),il(`contactDetails`,al);var ll=il(`address`,al);il(`shippingAddress`,al),il(`paymentMethodMessaging`,al),il(`taxId`,al),il(`issuingCardNumberDisplay`,al),il(`issuingCardCvcDisplay`,al),il(`issuingCardExpiryDisplay`,al),il(`issuingCardPinDisplay`,al),il(`issuingCardCopyButton`,al);function ul({hasExistingBilling:e,onPaymentAdded:t,onSaveStateForBillingRedirect:n}){let{organizationId:r}=L({strict:!1}),i=sl(),a=_c(),o=Qc(),[s,c]=(0,G.useState)(!1),l=hc(r),u=(0,G.useCallback)(()=>{t(!1)},[t]);return(0,W.jsxs)(`form`,{id:`billing-add-payment-method-form`,name:`billing-add-payment-method-form`,onSubmit:(0,G.useCallback)(async e=>{if(e.preventDefault(),!i||!o)return;c(!0),await o.submit(),n?.(!0);let s=await i.confirmSetup({clientSecret:a.clientSecret,elements:o,redirect:`if_required`,confirmParams:{return_url:`${window.location.origin}/#/${r}/billing/confirm`}});s.error?(console.error(s.error.message),H.error(s.error.message),c(!1),n?.(!1)):s.setupIntent.payment_method&&(l(s.setupIntent.payment_method,t),n?.(!1))},[o,t,n,r,l,i,a.clientSecret]),className:`max-w-xl`,children:[(0,W.jsx)(cl,{}),(0,W.jsx)(ll,{options:{mode:`billing`}}),(0,W.jsxs)(`div`,{className:`mt-4 flex gap-8 items-center`,children:[(0,W.jsxs)(F,{disabled:!i||!o||s,variant:`submit`,children:[(0,W.jsx)(Lr,{}),` Add Payment Method`]}),e&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`text-xs text-gray-600`,children:`Your existing payment method will be overwritten.`}),(0,W.jsx)(F,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Cancel`})]})]})]})}var dl=`dahlia`,fl=`https://js.stripe.com`,pl=`${fl}/${dl}/stripe.js`,ml=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/,hl=/^https:\/\/js\.stripe\.com\/(v3|[a-z]+)\/stripe\.js(\?.*)?$/,gl=`loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used`,_l=function(e){return ml.test(e)||hl.test(e)},vl=function(){for(var e=document.querySelectorAll(`script[src^="${fl}"]`),t=0;t<e.length;t++){var n=e[t];if(_l(n.src))return n}return null},yl=function(e){var t=e&&!e.advancedFraudSignals?`?advancedFraudSignals=false`:``,n=document.createElement(`script`);n.src=`${pl}${t}`;var r=document.head||document.body;if(!r)throw Error(`Expected document.body not to be null. Stripe.js requires a <body> element.`);return r.appendChild(n),n},bl=null,xl=null,Sl=null,Cl=function(e){return function(t){e(Error(`Failed to load Stripe.js`,{cause:t}))}},wl=function(e,t){return function(){window.Stripe?e(window.Stripe):t(Error(`Stripe.js not available`))}},Tl=function(e){return bl===null?(bl=new Promise(function(t,n){if(typeof window>`u`||typeof document>`u`){t(null);return}if(window.Stripe&&e&&console.warn(gl),window.Stripe){t(window.Stripe);return}try{var r=vl();if(r&&e)console.warn(gl);else if(!r)r=yl(e);else if(r&&Sl!==null&&xl!==null){var i;r.removeEventListener(`load`,Sl),r.removeEventListener(`error`,xl),(i=r.parentNode)==null||i.removeChild(r),r=yl(e)}Sl=wl(t,n),xl=Cl(n),r.addEventListener(`load`,Sl),r.addEventListener(`error`,xl)}catch(e){n(e);return}}),bl.catch(function(e){return bl=null,Promise.reject(e)})):bl},El,Dl=function(){return El||(El=Tl(null).catch(function(e){return El=null,Promise.reject(e)}),El)};Promise.resolve().then(function(){return Dl()}).catch(function(e){console.warn(e)});async function Ol(e){let{data:t}=await N.post(`/StripeAccount/`,e);return t}function kl(){return I({mutationFn:e=>Ol(e)})}async function Al(e){let{data:t}=await N.post(`/Payment/`,{organizationId:e.organizationId});return t}function jl(){return I({mutationFn:e=>Al(e)})}function Ml(e){let{enabled:t,existingStripeId:n,organizationId:r}=e,{mutate:i}=kl(),{mutate:a}=jl(),[o,s]=(0,G.useState)(void 0);return(0,G.useEffect)(()=>{},[i,t,n,a,(0,G.useCallback)(e=>{s(e.clientSecret)},[]),r]),o}function Nl({children:e}){let{organizationId:t}=L({strict:!1}),{data:n}=R(oc(t)),r=Ml({organizationId:t,enabled:!!n,existingStripeId:n?.stripeId}),i=Ai();return(0,G.useMemo)(()=>({clientSecret:r||``,appearance:{theme:i===`dark`?`night`:`stripe`}}),[r,i]),console.error(`No VITE_PUBLIC_STRIPE_KEY is configured for this environment.`),(0,W.jsx)(`div`,{className:`mt-20 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:`Setting up your billing is currently disabled. Please check back again later.`})}function Pl({onPaymentAdded:e,onSaveStateForBillingRedirect:t}){let{organizationId:n}=L({strict:!1}),{data:r}=R(oc(n)),i=r?.billing,a=i?.paymentMethod;return(0,W.jsxs)(Nl,{children:[(0,W.jsx)(`div`,{className:`mt-2 mb-6`,children:!a&&`You currently have no payment method on file. Please fill out the secure form below.`}),(0,W.jsx)(ul,{hasExistingBilling:!!i,onSaveStateForBillingRedirect:t,onPaymentAdded:e})]})}var Fl=function(e){return e.PASS=`pass`,e.FAIL=`fail`,e.PENDING=`pending`,e.ERROR=`error`,e}({});function Il(e){switch(e){case Fl.PASS:return`success`;case Fl.FAIL:case Fl.ERROR:return`destructive`;case Fl.PENDING:default:return`default`}}function Ll(e){switch(e){case Fl.PASS:return`READY`;case Fl.FAIL:case Fl.ERROR:case Fl.PENDING:default:return e.toUpperCase()}}function Rl(e,t){return`${String(e).padStart(2,`0`)}/${String(t%100).padStart(2,`0`)}`}function zl(e){let{onSaveStateForBillingRedirect:t,onReplacingPaymentMethod:n}=e??{},{organizationId:r}=L({strict:!1}),{update:i}=ss(r),{data:a,refetch:o}=R(oc(r)),s=a?.billing?.paymentMethod,[c,l]=(0,G.useState)(!1),u=(0,G.useCallback)(()=>{l(!c),n?.(!c)},[n,c]),d=(0,G.useCallback)(e=>{l(!1),n?.(!1),e&&o()},[n,o]);return a?.type===`ENTERPRISE`?(0,W.jsxs)(`span`,{children:[`You are part of an enterprise organization! We don’t currently show your payment methods on this page. Want to explore your solution with Harper more? `,(0,W.jsx)(Ps,{}),`, we would love to talk!`]}):s&&!c?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`mt-2`,children:[s.brand?.toUpperCase()??`Card`,` ending in `,s.last4??`••••`,s.expMonth&&s.expYear?(0,W.jsxs)(W.Fragment,{children:[`(exp `,Rl(s.expMonth,s.expYear),`)`]}):null,s.status?(0,W.jsxs)(W.Fragment,{children:[`—`,` `,(0,W.jsx)(oo,{variant:Il(s.status),children:Ll(s.status)})]}):null]}),i&&(0,W.jsx)(`div`,{className:`mt-2 mb-6`,children:(0,W.jsx)(F,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Replace Payment Method`})})]}):i?(0,W.jsx)(Pl,{onSaveStateForBillingRedirect:t,onPaymentAdded:d}):(0,W.jsx)(`div`,{children:`This org doesn't have a payment method, and you don't have access to add one. Please contact your administrator.`})}function Bl({clusterId:e,isPending:t,onGoBackToDetails:n,onSaveStateForBillingRedirect:r,onSubmit:i,organizationId:a,selectedPlan:s}){let{data:c}=R(oc(a)),l=c?.billing,u=c?.type===sc,d=u||l?.paymentMethod?.status===Fl.PASS,[f,p]=(0,G.useState)(!1),m=dc(s?.planLimits?.expirationMonths)&&s.planLimits.expirationMonths<1e3&&s.planLimits.expirationMonths,h=(0,W.jsx)(W.Fragment,{children:(0,W.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end mt-3 max-w-xl`,children:[(0,W.jsxs)(F,{type:`button`,variant:`defaultOutline`,disabled:t,onClick:n,children:[(0,W.jsx)(an,{}),` Back to Details`]}),(0,W.jsxs)(F,{disabled:t||!d||f,type:`submit`,variant:`submit`,onClick:i,children:[e?`Edit Cluster`:`Create New Cluster`,` `,(0,W.jsx)(On,{})]})]})});if(u)return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`ul`,{className:`list-disc ml-6 max-w-lg`,children:[(0,W.jsx)(`li`,{children:`Reminder: you will be billed at your contracted rate for any additional infrastructure.`}),(0,W.jsxs)(`li`,{children:[`Your account representative can work with you to sort out more precise details, and to help accomplish your objectives with this cluster. `,(0,W.jsx)(Ps,{overEmail:!0}),`, we are here to help.`]})]}),h]});let g=m&&`, or ${o(m,`month`,`months`)} elapse`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`ul`,{className:`list-disc ml-6 mb-6`,children:[(0,W.jsx)(`li`,{children:`You will be billed for this cluster today, and will receive a license for the block of usage you've requested.`}),e&&(0,W.jsx)(`li`,{children:`If you scale up, you'll be charged for the additional blocks you've purchased now, and your next auto renewal will be for all purchased blocks.`}),e&&(0,W.jsx)(`li`,{children:`If you remove a region, that region's usage block will not be used anymore (because it is specific to that region).`}),(0,W.jsxs)(`li`,{children:[`When that block is used up`,g,`, you will be automatically renewed.`]}),(0,W.jsx)(`li`,{children:`While refunds are not available, we’d be happy to assist you with troubleshooting.`}),(0,W.jsxs)(`li`,{children:[`We would love to work with you to sort out more precise details, and to help accomplish your objectives with this cluster. `,(0,W.jsx)(Ps,{overEmail:!0}),`, we are here to help.`]})]}),(0,W.jsx)(`p`,{className:`text-muted-foreground text-sm mb-6`,children:`Payment method:`}),(0,W.jsx)(zl,{onSaveStateForBillingRedirect:r,onReplacingPaymentMethod:p}),h]})}var Vl=/(^$|^(?:localhost|(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}|(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,})$)/i,Hl=65535,Ul=S().max(20,`Must be at most 20 characters long.`).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,`Can only contain lowercase letters, numbers and dashes. Must not start or end with a dash.`),Wl=b({clusterName:S().nonempty(`Please enter a cluster name.`).max(255,`Cluster name cannot be longer than 255 characters long.`),abbreviatedName:M([O(``),A(),Ul]).optional(),fqdn:S().regex(Vl,`Please enter a valid host name without the port or any path.`).optional(),version:S().optional(),deploymentDescription:S().nonempty(`Please select a deployment tier.`),performanceDescription:S().nonempty(`Please select a performance tier.`),regionPlans:C(b({regionName:S().nonempty(`Please select a region.`),latencyDescription:S().nonempty(`Please select a latency tier.`)})).max(50,{error:`A maximum of 50 regions can be selected for each cluster. `}),instances:C(b({secure:j([`true`,`false`]),fqdn:S().nonempty(`Please enter the host name of your instance.`).regex(Vl,`Please enter a valid host name without the port or any path.`),port:T().min(0,`Positive thinking only, please.`).max(Hl,`That port number is too high.`).optional()})).max(100,{error:`A maximum of 100 instances can be added to each cluster.`}),skipToBilling:D().optional(),skipGtmWait:D().optional(),sourceClusterId:S().optional()});function Gl({calculatedNames:e,disabled:t,form:n}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Y,{control:n.control,name:`abbreviatedName`,render:({field:n})=>(0,W.jsxs)(X,{className:`col-span-3`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Host Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...n,type:`text`,maxLength:Ul.maxLength,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:e.suggestedAbbreviatedName,disabled:t})}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(X,{className:`col-span-3 `,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Full Host Name`}),(0,W.jsx)(J,{children:(0,W.jsx)(`span`,{children:e.fullHostName})}),(0,W.jsx)(Q,{})]})]})}function Kl({className:e}={}){return(0,W.jsx)(`div`,{className:(0,G.useMemo)(()=>_(`animate-pulse h-2.5 bg-gray-200 rounded-full dark:bg-gray-700`,!e?.includes(`mb-`)&&`mb-4 `,!e?.includes(`w-`)&&`w-48 `,e),[e])})}var ql={Colocated:`Shared infrastructure for optimized value`,Dedicated:`Dedicated infrastructure for consistent performance`,"Self-Hosted":`Your own infrastructure`};function Jl({availableDeploymentTypes:e,disabled:t,form:n}){return(0,W.jsx)(Y,{control:n.control,name:`deploymentDescription`,render:({field:r})=>(0,W.jsxs)(X,{className:`col-span-3`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Harper Deployment`}),(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Kl,{}),children:(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...r,disabled:t,onValueChange:e=>{r.onChange(e),n.trigger()},children:[(0,W.jsx)($t,{className:`w-full h-auto`,children:(0,W.jsx)(Vt,{placeholder:`Choose Tier`})}),(0,W.jsx)(Qt,{children:(0,W.jsx)(Kt,{children:e.map(e=>(0,W.jsxs)(zt,{value:e,children:[(0,W.jsx)(`dt`,{className:`text-left font-bold text-sm/6`,children:e}),ql[e]&&(0,W.jsx)(`dd`,{className:`font-light`,children:ql[e]})]},e))})})]})})}),(0,W.jsx)(Q,{})]})})}function Yl({disabled:e,form:t}){return(0,W.jsx)(Y,{control:t.control,name:`fqdn`,render:({field:t})=>(0,W.jsxs)(X,{className:`md:col-span-6 col-span-3`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Optional Cluster Load Balancer Host Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...t,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:`example.your-company.com`,disabled:e})}),(0,W.jsx)(Q,{})]})})}function Xl({className:e,disabled:t,form:n}){return(0,W.jsx)(Y,{control:n.control,name:`clusterName`,render:({field:n})=>(0,W.jsxs)(X,{className:e,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Cluster Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{autoFocus:!0,type:`text`,maxLength:Wl.shape.clusterName.maxLength,autoCapitalize:`words`,disabled:t,...n})}),(0,W.jsx)(Q,{})]})})}function Zl({availablePerformanceDescriptions:e,form:t,selectedDeployment:n}){return(0,W.jsx)(Y,{control:t.control,name:`performanceDescription`,render:({field:r})=>(0,W.jsxs)(X,{className:`col-span-3`,children:[(0,W.jsxs)(Z,{className:`pb-1`,children:[n.startsWith(`Self`)?`Support`:`Performance`,` & Usage`]}),(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Kl,{}),children:(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...r,onValueChange:e=>{r.onChange(e),t.trigger()},disabled:!e?.length,children:[(0,W.jsx)($t,{className:`w-full h-auto`,children:(0,W.jsx)(Vt,{placeholder:`Choose Tier`})}),(0,W.jsx)(Qt,{children:(0,W.jsx)(Kt,{children:e.map(e=>(0,W.jsxs)(zt,{value:e.performanceTier,children:[(0,W.jsxs)(`dt`,{className:`text-left font-bold text-sm/6 flex items-center gap-2`,children:[e.name,e.isPremium&&(0,W.jsx)(oo,{children:`Premium`})]}),e.description&&(0,W.jsx)(`dd`,{className:`text-left font-light`,children:e.description})]},e.name))})})]})})}),(0,W.jsx)(Q,{})]})})}function Ql({className:e,...t}){let{formDescriptionId:n}=Ma();return(0,W.jsx)(`p`,{"data-slot":`form-description`,id:n,className:P(`text-muted-foreground text-sm`,e),...t})}function $l({className:e,form:t}){return(0,W.jsx)(Y,{control:t.control,name:`skipGtmWait`,render:({field:t})=>(0,W.jsxs)(X,{className:e,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-4 h-4 cursor-pointer`,checked:t.value||!1,onChange:t.onChange,onBlur:t.onBlur,name:t.name,ref:t.ref})}),(0,W.jsx)(Z,{className:`cursor-pointer`,children:`Immediate upgrade and restart`})]}),(0,W.jsx)(Ql,{children:`Apply changes immediately without waiting for each instance to be taken out of the load balancer (faster, but potentially less safe).`})]})})}function eu({className:e,disabled:t,form:n,harperVersions:r}){return r?.value?.length?(0,W.jsx)(Y,{control:n.control,name:`version`,render:({field:i})=>(0,W.jsxs)(X,{className:e,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Harper Version`}),(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Kl,{}),children:(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...i,disabled:t,onValueChange:e=>{i.onChange(e),n.trigger()},children:[(0,W.jsx)($t,{className:`w-full h-auto`,children:(0,W.jsx)(Vt,{placeholder:`Choose Version`})}),(0,W.jsx)(Qt,{children:(0,W.jsx)(Kt,{children:r?.value.map(e=>(0,W.jsxs)(zt,{value:e.version,children:[e.version,` `,(0,W.jsx)(`span`,{className:`font-light opacity-50`,children:e.name})]},e.version))})})]})})}),(0,W.jsx)(Q,{})]})}):null}var tu=new RegExp(/^\d+/);function nu(e,t){let n=parseInt(e.match(tu)?.[0]||`0`,10),r=parseInt(t.match(tu)?.[0]||`0`,10);return n===r?0:n>r?1:-1}function ru(e){return new Intl.NumberFormat().format(e)}var iu=[`K`,`M`,`B`,`T`,`Qa`,`Qi`,`Sx`,`Sp`,`Oc`,`No`,`Dc`];function au(e){let t=1e3,n=e;if(Math.abs(n)<t)return String(Math.round(n));let r=-1;do n/=t,++r;while(Math.round(Math.abs(n)*10)/10>=t&&r<iu.length-1);return`${ru(Math.round(n))} ${iu[r]}`}function ou(e,t){let n=Object.values(t).flatMap(e=>Object.values(e)).map(e=>e.purchasedBlockMultiplier??1),r=Math.max(...n,1),i=Math.min(...n,r),a=t=>{let n=e.map(t).filter(e=>typeof e==`number`&&e>0);return n.length?{min:Math.min(...n),max:Math.max(...n)}:{min:0,max:0}},o=a(e=>e.planLimits?.readsPerMinuteCount),s=a(e=>e.planLimits?.totalReadCount);return{readRate:{min:o.min*i,max:o.max*r},totalReads:{min:s.min*i,max:s.max*r},writeRate:a(e=>e.planLimits?.writesPerMinuteCount),totalWrites:a(e=>e.planLimits?.totalWriteCount)}}function su(e,{min:t,max:n}){if(e<=0)return 0;let r=Math.max(Math.min(t,e),1),i=Math.max(n,e);if(i<=r)return 1;let a=(Math.log(e)-Math.log(r))/(Math.log(i)-Math.log(r));return Math.min(Math.max(a,0),1)}function cu({selectedPlan:e,selectedRegion:t,usageScale:n,isEnterprise:r,cloudProvider:i}){let[a,s]=(0,G.useState)(!1),c=(0,G.useCallback)(()=>{s(!a)},[a,s]),l=e?.planLimits,u=e?.resourcesPerInstance,d=i&&e?.cloudInstanceTypes?.[i],f=dc(l?.expirationMonths)&&l.expirationMonths<1e3&&l.expirationMonths,p=t?.purchasedBlockMultiplier??1,m=(0,G.useMemo)(()=>l?[dc(l.totalReadCount)&&{label:`Total Reads`,value:au(l.totalReadCount*p)},dc(l.totalReadsBytes)&&{label:`Total Read Transfer`,value:`${en(l.totalReadsBytes*p)}`},dc(l.readsPerMinuteCount)&&{label:`Read Rate`,value:`${au(l.readsPerMinuteCount*60*p)}/hr`},dc(l.readsPerMinuteBytes)&&{label:`Read Bandwidth`,value:`${en(l.readsPerMinuteBytes*60*p)}/hr`},dc(l.totalWriteCount)&&{label:`Total Writes`,value:au(l.totalWriteCount)},dc(l.totalWritesBytes)&&{label:`Total Write Transfer`,value:`${en(l.totalWritesBytes)}`},dc(l.writesPerMinuteCount)&&{label:`Write Rate`,value:`${au(l.writesPerMinuteCount*60)}/hr`},dc(l.writesPerMinuteBytes)&&{label:`Write Bandwidth`,value:`${en(l.writesPerMinuteBytes*60)}/hr`},dc(l.totalRealTimeMessageDeliveries)&&{label:`Total Real-Time Messages`,value:`${au(l.totalRealTimeMessageDeliveries*p)} messages`},dc(l.totalRealTimeMessageDeliveryBytes)&&{label:`Total Real-Time Message Transfer`,value:`${en(l.totalRealTimeMessageDeliveryBytes*p)}`},dc(l.realTimeMessageDeliveriesPerMinute)&&{label:`Real-Time Message Rate`,value:`${au(l.realTimeMessageDeliveriesPerMinute*60*p)}/hr`},dc(l.realTimeMessageDeliveryBytesPerMinute)&&{label:`Real-Time Message Bandwidth`,value:`${en(l.realTimeMessageDeliveryBytesPerMinute*60*p)}/hr`},dc(l.tlsHandshakes)&&{label:`TLS Handshakes`,value:`${au(l.tlsHandshakes*60*p)}`},dc(l.applicationComputeHours)&&{label:`Application Compute Hours`,value:`${au(l.applicationComputeHours*p)}`},!!u&&dc(u.storageGb)&&{label:`Storage`,value:`${en(u.storageGb*1e9)}`},!!u&&dc(u.cpuCores)&&{label:`Maximum CPU Cores`,value:`${au(u.cpuCores)}`},!!u&&dc(u.memoryMb)&&{label:`Memory`,value:`${u.memoryMb/1024} GB`},!!d&&{label:`Cloud Instance Type`,value:d},!!f&&{label:`Expiration`,value:o(f,`month`,`months`)},!!t?.id&&{label:`Region ID`,value:t.id},!!e?.id&&{label:`Plan ID`,value:e.id}].filter(Zi):[],[f,t,e,p]);if(!l)return``;if(!dc(l.totalReadCount))return`This plan has no usage limits.`;let h=r?`for the contracted rate`:`for the price listed above`,g=f?` in ${o(f,`month`,`months`)} or`:``,_=dc(l.readsPerMinuteCount)?l.readsPerMinuteCount*p:0,v=dc(l.writesPerMinuteCount)?l.writesPerMinuteCount:0,y=l.totalReadCount*p,b=dc(l.totalWriteCount)?l.totalWriteCount:0,x=[_>0&&{icon:sr,label:`Read Rate`,value:`${au(_)}/min`,fill:su(_,n.readRate)},y>0&&{icon:An,label:`Total Reads`,value:au(y),fill:su(y,n.totalReads)},v>0&&{icon:sr,label:`Write Rate`,value:`${au(v)}/min`,fill:su(v,n.writeRate)},b>0&&{icon:Dn,label:`Total Writes`,value:au(b),fill:su(b,n.totalWrites)},!!f&&{icon:Fn,label:`License Term`,value:o(f,`month`,`months`)}].filter(Zi);return(0,W.jsxs)(X,{className:`basis-full`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-2`,children:[(0,W.jsx)(Z,{onClick:c,className:`cursor-pointer`,children:`Usage block included with this plan`}),(0,W.jsxs)(F,{type:`button`,variant:`link`,className:`text-foreground`,onClick:c,children:[`Learn More `,a?(0,W.jsx)(Bt,{}):(0,W.jsx)(On,{})]})]}),(0,W.jsx)(`div`,{className:`grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-5`,children:x.map(e=>(0,W.jsx)(lu,{icon:e.icon,label:e.label,value:e.value,fill:e.fill},e.label))}),(0,W.jsx)(J,{children:(0,W.jsxs)(`dl`,{className:P(`divide-y divide-border rounded-md overflow-hidden transition-[max-height] duration-200 ease-in`,a?`max-h-fit border border-border`:`max-h-0`),children:[(0,W.jsxs)(`div`,{className:`text-sm px-4 py-5 leading-relaxed text-muted-foreground`,children:[`This plan licenses Harper for the usage limits below, `,h,`. The usage license expires`,g,` `,`when any usage limit is reached. New usage blocks are automatically purchased/billed as blocks are consumed.`]}),m.map((e,t)=>(0,W.jsxs)(`div`,{className:P(`px-4 py-1 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-3`,t%2==0&&`bg-muted dark:bg-grey-700`),children:[(0,W.jsx)(`dt`,{className:`text-sm/6 font-medium text-foreground`,children:e.label}),(0,W.jsx)(`dd`,{className:`mt-1 text-sm/6 text-muted-foreground sm:col-span-2 sm:mt-0`,children:e.value})]},e.label))]})}),(0,W.jsx)(Q,{})]})}function lu({icon:e,label:t,value:n,fill:r}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-md border border-border bg-background/50 p-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,W.jsx)(e,{className:`size-4 shrink-0`}),(0,W.jsx)(`span`,{className:`text-xs font-medium`,children:t})]}),(0,W.jsx)(`span`,{className:`text-lg font-bold text-foreground tabular-nums`,children:n}),r!==void 0&&(0,W.jsx)(`div`,{className:`h-1.5 w-full overflow-hidden rounded-full bg-sky-500/15`,children:(0,W.jsx)(`div`,{className:`h-full rounded-full bg-sky-500 transition-[width] duration-300`,style:{width:`${Math.max(Math.min(r,1)*100,4)}%`}})})]})}function uu({control:e,fieldArray:t,form:n,index:r,regionNameToLatencyToRegion:i,premiumOnlyRegions:a,usageScale:o,selectedPlan:s,isEnterprise:c,cloudProvider:l}){let u=(0,G.useMemo)(()=>Object.keys(i).sort(),[i]),d=n.watch(`deploymentDescription`)?.startsWith(`Dedicated`),f=n.watch(`regionPlans.${r}.regionName`),p=n.watch(`regionPlans.${r}.latencyDescription`),m=(0,G.useMemo)(()=>Object.keys(i[f]||{}).sort(nu).reverse(),[i,f]),h=s?.allowedRegionIds,g=(0,G.useCallback)(e=>!h?.length||Object.values(i[e]||{}).some(e=>h.includes(e.id)),[h,i]),_=(0,G.useCallback)(e=>{if(!h?.length)return!0;let t=i[f]?.[e]?.id;return!t||h.includes(t)},[h,i,f]);(0,G.useEffect)(function(){if(f&&m?.length&&!m?.includes(p)){let e=p?.split(` `)[0].toLowerCase(),t=m.find(t=>!e||t.split(` `)[0].toLowerCase()===e)||m[0];n.setValue(`regionPlans.${r}.latencyDescription`,t),n.trigger()}},[m,n,r,p,f]);let v=(0,G.useCallback)(()=>{t?.remove(r),n.trigger()},[t,n,r]);return(0,W.jsxs)(`div`,{className:`md:col-span-6 col-span-3 py-2 pl-4 border-l-4 border-border gap-6 flex flex-wrap items-start`,children:[(0,W.jsx)(Y,{control:e,name:`regionPlans.${r}.regionName`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex-1`,children:[(0,W.jsxs)(Z,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(Tr,{className:`size-4 shrink-0`}),`Region `,t.fields.length>1?r+1:``]}),(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`Choose Region`})}),(0,W.jsx)(Qt,{children:(0,W.jsx)(Kt,{children:u.map(e=>(0,W.jsx)(zt,{value:e,disabled:!g(e),children:(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e,a.regionNames.has(e)&&(0,W.jsx)(oo,{children:`Premium`})]})},e))})})]})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:e,name:`regionPlans.${r}.latencyDescription`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex-1`,children:[(0,W.jsxs)(Z,{children:[`Estimated `,d?`P95`:`P90`,` Latency, Distribution`]}),(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,disabled:!m?.length,children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`Choose Latency Tier`})}),(0,W.jsx)(Qt,{children:(0,W.jsx)(Kt,{children:m.map(e=>(0,W.jsx)(zt,{value:e,disabled:!_(e),children:(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e,(()=>{let t=i[f]?.[e]?.id;return t&&a.regionIds.has(t)&&(0,W.jsx)(oo,{children:`Premium`})})()]})},e))})})]})}),(0,W.jsx)(Q,{})]})}),t?.fields?.length&&t?.fields?.length>1&&(0,W.jsx)(`div`,{className:`flex-none mt-6`,children:(0,W.jsxs)(F,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:v,children:[(0,W.jsx)(ei,{}),` `,(0,W.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})}),(0,W.jsx)(cu,{selectedPlan:s,selectedRegion:i[f]?.[p],usageScale:o,isEnterprise:c,cloudProvider:l})]})}function du({form:e,regionLocations:t,regionNameToLatencyToRegion:n,premiumOnlyRegions:r,usageScale:i,selectedPlan:a,totalPrice:o,isEnterprise:s,cloudProvider:c}){let l=e.watch(`regionPlans`),u=ht({control:e.control,name:`regionPlans`}),d=(0,G.useMemo)(()=>{let e=l.map(e=>n?.[e.regionName]?.[e.latencyDescription]?.region);return o?t?.find(t=>!e.includes(t.region)):null},[t,n,l,o]),f=(0,G.useCallback)(()=>{d&&(u.append({regionName:d.region,latencyDescription:d.latencyDescription}),e.trigger())},[e,d,u]);return t?.length?(0,W.jsxs)(W.Fragment,{children:[u.fields.map((t,o)=>(0,W.jsx)(uu,{control:e.control,fieldArray:u,form:e,index:o,regionNameToLatencyToRegion:n,premiumOnlyRegions:r,usageScale:i,selectedPlan:a,isEnterprise:s,cloudProvider:c},t.id)),d&&(0,W.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,W.jsxs)(F,{type:`button`,variant:`positiveOutline`,onClick:f,children:[(0,W.jsx)(Nr,{}),`Add Additional Region Usage`]})})]}):(0,W.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,W.jsx)(oi,{className:`mt-0 m-0`,title:`No Regions Available`,showReturnToHome:!1,error:{message:(0,W.jsxs)(W.Fragment,{children:[`The deployment type you selected currently has no available regions. Please try a different deployment type, try again later, or `,(0,W.jsx)(Ps,{}),`.`]})}})})}function fu({control:e,fieldArray:t,form:n,index:r}){let i=(0,G.useCallback)(()=>{t?.remove(r)},[t,r]);return(0,W.jsxs)(`div`,{className:`md:col-span-6 col-span-3 p-4 rounded-md bg-accent gap-6 flex flex-wrap items-start`,children:[(0,W.jsx)(Y,{control:e,name:`instances.${r}.secure`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsxs)(Z,{children:[`Instance `,t.fields.length>1?r+1:``]}),(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...e,onValueChange:t=>{e.onChange(t),n.trigger()},children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`https://`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(zt,{value:`true`,children:`https://`}),(0,W.jsx)(zt,{value:`false`,children:`http://`})]})})]})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:e,name:`instances.${r}.fqdn`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex-3`,children:[(0,W.jsx)(Z,{children:`Host Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,onChange:t=>{e.onChange(t);let i=t.target.value,a=i===`localhost`||i===`127.0.0.1`,o=n.getFieldState(`instances.${r}.secure`);a&&!o.isDirty&&n.setValue(`instances.${r}.secure`,`false`)}})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:e,name:`instances.${r}.port`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Operations API Port`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`number`,min:0,max:Hl,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:String(l),onChange:t=>{e.onChange(t.target.value?parseInt(t.target.value,10):void 0),n.trigger()}})}),(0,W.jsx)(Q,{})]})}),t?.fields?.length&&t?.fields?.length>1&&(0,W.jsx)(`div`,{className:`flex-none mt-6`,children:(0,W.jsxs)(F,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:i,children:[(0,W.jsx)(ei,{}),` `,(0,W.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})})]})}function pu({form:e}){let t=ht({control:e.control,name:`instances`}),n=(0,G.useCallback)(()=>{t.append({secure:`true`,fqdn:``,port:l})},[t]);return(0,W.jsxs)(W.Fragment,{children:[t.fields.map((n,r)=>(0,W.jsx)(fu,{control:e.control,fieldArray:t,form:e,index:r},n.id)),(0,W.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,W.jsxs)(F,{type:`button`,variant:`positiveOutline`,onClick:n,children:[(0,W.jsx)(Nr,{}),`Add Instance`]})})]})}function mu(e,t){return!e.allowedRegionIds?.length||e.allowedRegionIds.includes(t)}function hu(e,t){let n=new Set,r=new Set;if(!e.length)return{regionNames:n,regionIds:r};let i=Math.min(...e.map(e=>e.planLevel??0)),a=e.filter(e=>(e.planLevel??0)===i),o=e.filter(e=>(e.planLevel??0)>i);if(!o.length)return{regionNames:n,regionIds:r};for(let[e,i]of Object.entries(t)){let t=!1,s=!0;for(let e of Object.values(i)){let n=a.some(t=>mu(t,e.id)),i=o.some(t=>mu(t,e.id));!n&&!i||(t=!0,n?s=!1:r.add(e.id))}t&&s&&n.add(e)}return{regionNames:n,regionIds:r}}function gu({calculatedNames:e,clusterId:t,deploymentToPerformanceToPlan:n,form:r,harperVersions:i,isEnterprise:a,cloudProvider:o,isPending:s,mode:c,partialUpgrade:l,regionLocations:u,regionNameToLatencyToRegion:d,selectedDeployment:f,selectedPerformance:p,selectedPlan:m,totalPrice:h}){let{isDirty:g,isValid:_}=gt(),v=(0,G.useMemo)(()=>{let e=n[f]||{},t=Object.values(e).map(e=>e.planLevel??0),r=t.length?Math.min(...t):0;return Object.keys(e).map(t=>{let n=(e[t].planLevel??0)>r,i=t.slice(0,-1).split(`(`);if(i.length>1)return{performanceTier:t,name:i[0],description:i[1],isPremium:n};let a=t.split(` for `);return a.length>1?{performanceTier:t,name:a[0],description:`For `+a[1],isPremium:n}:{performanceTier:t,name:t,description:``,isPremium:n}})},[n,f]),y=(0,G.useMemo)(()=>Object.keys(n).sort(),[n]),b=(0,G.useMemo)(()=>hu(Object.values(n[f]||{}),d),[n,d,f]),x=(0,G.useMemo)(()=>ou(Object.values(n).flatMap(e=>Object.values(e)),d),[n,d]);(0,G.useEffect)(function(){v?.length&&!v.find(e=>e.performanceTier===p)&&(r.setValue(`performanceDescription`,v[0].performanceTier),r.trigger())},[f,p,v,r]);let S=f===`Self-Hosted`,C=(0,W.jsx)(Ut,{className:`mt-3 mb-12`,children:(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:s||t&&!g&&!(c===`version`&&l)||!_,children:[c!==`version`&&h>0?`Confirm Payment Details`:t?`Edit Cluster`:`Create New Cluster`,(0,W.jsx)(On,{})]})});return c===`version`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-3 items-start gap-6 text-foreground md:grid-cols-6`,children:[(0,W.jsx)(Xl,{className:i?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!0,form:r}),(0,W.jsx)(eu,{className:`col-span-3`,form:r,harperVersions:i}),(0,W.jsx)($l,{className:`col-span-3 md:col-span-6`,form:r}),l&&(0,W.jsxs)(`p`,{className:`col-span-3 md:col-span-6 max-w-prose text-xs font-light text-amber-600 dark:text-amber-400`,children:[l.behindCount,` of `,l.total,` instances`,` `,l.behindCount===1?`is`:`are`,` still on an older version. Re-run the upgrade to bring`,` `,l.behindCount===1?`it`:`them`,` up to `,l.latest,`.`]})]}),C]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-3 items-start gap-6 text-foreground md:grid-cols-6`,children:[(0,W.jsx)(Xl,{className:i?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!!t,form:r}),(0,W.jsx)(eu,{className:`col-span-3`,disabled:!!t,form:r,harperVersions:i}),S?(0,W.jsx)(Yl,{form:r,disabled:!!t}):(0,W.jsx)(Gl,{form:r,calculatedNames:e,disabled:!!t}),(0,W.jsx)(Jl,{form:r,availableDeploymentTypes:y}),(0,W.jsx)(Zl,{availablePerformanceDescriptions:v,form:r,selectedDeployment:f}),S?(0,W.jsx)(pu,{form:r}):(0,W.jsx)(du,{form:r,regionLocations:u,regionNameToLatencyToRegion:d,premiumOnlyRegions:b,usageScale:x,selectedPlan:m,totalPrice:h,isEnterprise:a,cloudProvider:o}),t&&!S&&(0,W.jsx)($l,{className:`col-span-3 md:col-span-6`,form:r})]}),C]})}function _u(e){let{fqdn:t}=e,{secure:n,port:r}=e;return r||=l,r===443&&n===`false`&&(n=`true`),r===80&&n===`true`&&(n=`false`),`${n===`true`?`https`:`http`}://${t}${r===443||r===80?``:`:`+r}`.toLowerCase()}function vu(e,t,n){let r=e.find(e=>(n?!!e.priceUsd:!e.priceUsd)&&e.deploymentType===`colocated`)||e.find(e=>e.deploymentType===`colocated`)||e[0],i=r?.allowedRegionIds;if(r){let e=i?t.filter(e=>i.includes(e.id)):t,n=e.find(e=>e.region===`US`)||e[0];if(n)return{deploymentDescription:r.deploymentDescription,performanceDescription:r.performanceDescription,regionPlans:[{regionName:n.region,latencyDescription:n.latencyDescription}]}}return null}function yu(e,t,n){if(t&&n){let r=e.getValues();if(!r.deploymentDescription||!r.performanceDescription||!r.regionPlans.length){let i=vu(t,n);i&&(!r.deploymentDescription&&!r.performanceDescription&&(e.setValue(`deploymentDescription`,i.deploymentDescription),e.setValue(`performanceDescription`,i.performanceDescription)),r.regionPlans.length||e.setValue(`regionPlans`,i.regionPlans))}}}function bu({price:e}){return(0,W.jsx)(`span`,{className:`text-4xl`,children:new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).formatToParts(e||0).map((e,t)=>(0,W.jsx)(xu,{type:e.type,value:e.value},t))})}function xu({type:e,value:t}){switch(e){case`currency`:case`decimal`:case`fraction`:return(0,W.jsx)(`sup`,{className:`font-light text-xl`,children:t});default:return t}}function Su({alreadyUsingFree:e,clusterId:t,defaultValues:n,deploymentToPerformanceToPlan:r,harperVersions:i,mode:a,organization:s,organizationId:c,partialUpgrade:u,planTypes:d,regionLocationsColocated:f,regionLocationsDedicated:p,setSavedClusterState:m,startOffOnBilling:h}){let g=Oe(),v=ne(),y=s?.type===sc,b=s?.channel===`Akamai`?`linode`:void 0,x=ie(),{mutate:S,isPending:C}=tc(),{mutate:w,isPending:T}=rc(),[E,D]=(0,G.useState)(h),O=(0,G.useMemo)(()=>Qs(f?.sort(Ks(`latencyDescription`))||[],`region`,`latencyDescription`),[f]),k=(0,G.useMemo)(()=>Qs(p?.sort(Ks(`latencyDescription`))||[],`region`,`latencyDescription`),[p]),A=(0,G.useCallback)((t,n)=>{let i=new Set,a=r?.[t.deploymentDescription]?.[t.performanceDescription];if(t.deploymentDescription===`Self-Hosted`)for(let e=0;e<t.instances.length;e++){let r=_u(t.instances[e]);i.has(r)?n.addIssue({code:`custom`,path:[`instances.${e}.fqdn`],message:`Every instance url must be unique!`}):i.add(r)}else{a?.priceUsd===0&&e&&n.addIssue({code:`custom`,path:[`performanceDescription`],message:`Only one free cluster is allowed per organization.`});let r=a?.deploymentDescription===`Dedicated`?k:O;for(let e=0;e<t.regionPlans.length;e++){let o=t.regionPlans[e],s=r[o.regionName]?.[o.latencyDescription];i.has(o.regionName)?n.addIssue({code:`custom`,path:[`regionPlans.${e}.regionName`],message:`You can only select a region once!`}):i.add(o.regionName),a?.allowedRegionIds?.length&&s?.id&&(a.allowedRegionIds.includes(s.id)?e>=1&&n.addIssue({code:`custom`,path:[`regionPlans.${e}.regionName`],message:`You can only select one region with this performance tier!`}):lc(a.allowedRegionIds,s.id)?n.addIssue({code:`custom`,path:[`regionPlans.${e}.latencyDescription`],message:`This latency is not available with the selected performance tier!`}):n.addIssue({code:`custom`,path:[`regionPlans.${e}.regionName`],message:`This region is not available with the selected performance tier!`}))}}},[e,O,k,r]),j=bt({mode:`onChange`,resolver:_t(Wl.superRefine(A)),defaultValues:n}),[ee,M]=(0,G.useState)(!0);(0,G.useEffect)(()=>{ee&&n&&(m(null),M(!1))},[n,ee,m]);let N=j.watch(`clusterName`),P=j.watch(`abbreviatedName`),F=j.watch(`deploymentDescription`),I=j.watch(`performanceDescription`),L=j.watch(`regionPlans`),te=j.watch(`instances`),re=F===`Dedicated`?k:O,ae=F===`Dedicated`?p:f;(0,G.useEffect)(function(){let e=j.getValues();F&&(F===`Self-Hosted`?(e.abbreviatedName&&j.setValue(`abbreviatedName`,``),e.regionPlans.length&&j.setValue(`regionPlans`,[]),e.instances.length||j.setValue(`instances`,[{secure:`true`,fqdn:``,port:l}])):(e.fqdn&&j.setValue(`fqdn`,``),e.instances.length&&j.setValue(`instances`,[]),e.regionPlans.length||yu(j,d,ae)))},[j,d,ae,F]);let R=(0,G.useMemo)(()=>{let e=cc(uc(N),Ul.maxLength);return{suggestedAbbreviatedName:e,fullHostName:`${P||e}.${s.subdomain||`your-org`}.harperfabric.com`}},[N,P,s]),oe=(0,G.useMemo)(()=>r?.[F]?.[I],[r,F,I]);(0,G.useEffect)(function(){let e=oe?.allowedRegionIds;if(e?.length&&L?.length===1){let t=L[0],n=re?.[t.regionName]?.[t.latencyDescription];if(!e.includes(n?.id)){let t=ae?.filter(t=>e.includes(t.id)),n=t?.find(e=>e.region===`US`)||t?.[0];n&&(j.setValue(`regionPlans.0.regionName`,n.region),j.setValue(`regionPlans.0.latencyDescription`,n.latencyDescription),j.trigger())}}},[oe,L,j,re,ae]),(0,G.useEffect)(function(){if(F!==`Self-Hosted`&&Object.keys(re).length&&L.length)for(let e=0;e<L.length;e++){let t=L[e];re[t.regionName]||j.setValue(`regionPlans.${e}.regionName`,``)}},[j,re,F,L]);let se=oe?.priceUsd?F===`Self-Hosted`?te.length*oe.priceUsd:L.reduce((e,t)=>{let n=re?.[t.regionName]?.[t.latencyDescription];return e+(n?oe.priceUsd*n.instanceCount/2:0)},0):0,ce=oe?.planLimits?.expirationMonths,le=dc(ce)&&ce<1e3?ce:void 0,z=le?se/le:se,ue=(0,G.useCallback)(({creating:e,deploymentDescription:t})=>H.message(e?`Creating Cluster`:`Updating Cluster`,{description:(0,W.jsx)($s,{message:`This may take a little bit, hold tight!`,lateMessage:`Still working on it... why don't you grab a coffee, and I'll let you know when it's done?`,duration:t===`Dedicated`?6e4:5e3}),duration:0}),[]),de=(0,G.useCallback)(async({clusterId:e,sourceClusterId:t,creating:n,toastId:r,isSelfManaged:i,skipGtmWait:a})=>{if(t){let e=(await ac(c)).clusters?.find(e=>e.id===t);Go(e?.status)&&await Cs(t)}x.invalidateQueries({queryKey:[c],refetchType:`active`}),n||fc(x,e,{refetchType:`active`}),v.invalidate(),g(i?{to:`/${c}/${e}/instances`}:n?{to:`/${c}/${e}/starting-up`}:{to:`/${c}/${e}/scaling`,search:a?{immediate:!0}:void 0}),j.reset(),H.success(n?`Cluster Created`:`Cluster Updated`,{id:r,description:i?void 0:n?`It is being provisioned now.`:`The updates are being provisioned now.`,duration:5e3})},[x,v,g,c,j]),fe=(0,G.useCallback)(async()=>{let e=j.getValues(),n=[],i=r[e.deploymentDescription][e.performanceDescription],o=e.deploymentDescription===`Self-Hosted`;if(o)for(let t of e.instances)n.push({autoRenew:!0,instanceFqdn:t.fqdn,operationsApiPort:t.port||9925,operationsApiSecure:t.secure===`true`,planId:i.id});else for(let t of e.regionPlans){let e=re[t.regionName][t.latencyDescription];n.push({autoRenew:!0,planId:i.id,regionId:e.id})}m(null);let s=ue({creating:!t,deploymentDescription:e.deploymentDescription}),l=()=>H.dismiss(s);t?w(a===`version`?{id:t,version:e.version,skipGtmWait:e.skipGtmWait}:{id:t,regionPlans:n,skipGtmWait:e.skipGtmWait},{onSuccess:t=>de({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:o,creating:!1,toastId:s,skipGtmWait:e.skipGtmWait}),onError:l}):S({abbreviatedName:o?void 0:e.abbreviatedName||R.suggestedAbbreviatedName,autoRenew:!0,fqdn:o&&e.fqdn||void 0,name:e.clusterName,version:e.version,organizationId:c,regionPlans:n},{onSuccess:t=>de({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:o,creating:!0,toastId:s}),onError:l})},[R.suggestedAbbreviatedName,t,r,j,de,ue,c,re,m,w,S]),pe=(0,G.useCallback)(()=>{if(a!==`version`&&se>0){D(!0);return}return fe()},[a,fe,se]),me=(0,G.useCallback)(e=>{m(e?{clusterId:t,...j.getValues(),skipToBilling:!0}:null)},[t,j,m]),he=(0,G.useCallback)(()=>{D(!1)},[]),ge=!y&&`mr-37.5`;return(0,W.jsxs)(W.Fragment,{children:[!y&&a!==`version`&&(0,W.jsxs)(`div`,{className:`absolute top-3 right-4 md:right-12 flex flex-col items-end text-right`,children:[(0,W.jsx)(`dt`,{className:`font-light`,children:le?`Monthly Price`:`Total Price`}),(0,W.jsx)(`dd`,{className:`font-bold`,children:se>0?(0,W.jsxs)(`span`,{className:`inline-flex items-baseline`,children:[(0,W.jsx)(bu,{price:z}),!!le&&(0,W.jsxs)(`span`,{className:`font-light text-base text-muted-foreground`,children:[`/mo`,le>1&&(0,W.jsx)(`sup`,{children:`*`})]})]}):(0,W.jsx)(`span`,{className:`text-4xl text-green`,children:`Free`})})]}),(0,W.jsx)(q,{...j,children:E?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h1`,{className:_(`text-lg leading-none text-foreground font-semibold mb-4`,ge),children:`Cluster Billing`}),(0,W.jsx)(`p`,{className:_(`text-muted-foreground text-sm mb-2`,ge),children:`Please confirm the following billing details:`}),(0,W.jsx)(Bl,{clusterId:t,isPending:C||T,onGoBackToDetails:he,onSaveStateForBillingRedirect:me,onSubmit:fe,organizationId:c,selectedPlan:oe})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h1`,{className:_(`text-lg leading-none text-foreground font-semibold mb-4`,ge),children:`Cluster Configuration`}),(0,W.jsxs)(`div`,{className:_(`mb-6 flex flex-col items-start gap-2`,ge),children:[(0,W.jsx)(`p`,{className:`sr-only`,children:`Configure your Harper cluster and define deployment plans.`}),!y&&a!==`version`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(oo,{variant:`warning`,children:`Beta pricing subject to change.`}),!!le&&le>1&&se>0&&(0,W.jsxs)(`p`,{className:`max-w-prose text-xs font-light text-muted-foreground`,children:[`* Billed as`,` `,new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).format(se),` `,`every`,` `,o(le,`month`,`months`),`, or sooner if you reach a usage limit — then a new license is issued.`]})]})]}),(0,W.jsx)(`form`,{id:`cluster-upsert-form`,name:`cluster-upsert-form`,onSubmit:j.handleSubmit(pe),children:(0,W.jsx)(gu,{calculatedNames:R,clusterId:t,deploymentToPerformanceToPlan:r,form:j,isPending:C||T,harperVersions:i,mode:a,partialUpgrade:u,regionLocations:ae,regionNameToLatencyToRegion:re,selectedDeployment:F,selectedPerformance:I,selectedPlan:oe,totalPrice:se,isEnterprise:y,cloudProvider:b})})]})})]})}function Cu(e){return e?.clusterName!==void 0}function wu(e){let t=e.filter(e=>!!e&&!(e.status!=null&&Fa.includes(e.status))).map(e=>e.version).filter(e=>!!e);if(t.length<2)return null;let n=t.reduce((e,t)=>cn(t,e)>0?t:e),r=t.filter(e=>e!==n).length;return r>0?{latest:n,behindCount:r,total:t.length}:null}function Tu({isEdit:e,className:t,children:n}){return e?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vo,{}),(0,W.jsx)(Is,{children:(0,W.jsx)(`div`,{className:t,children:n})})]}):(0,W.jsx)(Fs,{className:t,children:n})}function Eu(){let{organizationId:e,clusterId:t,mode:n}=L({strict:!1}),{create:r,update:i}=ls(e),{organization:a,cluster:o}=ke({strict:!1}),[s,c]=vn(bn.SavedClusterState,null),{data:l}=R(Rs(e)),{data:u}=R(Gs({availableHosts:!0,organizationId:e})),{data:d}=R(Gs({organizationId:e})),{data:f}=R(Us(e)),p=(0,G.useMemo)(()=>{if(o){let e=o.instances?.map(e=>e.version).filter(Zi);if(f&&e){let t=[...e].sort(cn).pop(),n=new Set(e);return{...f,value:[!!t&&{name:`current`,version:t},...(f?.value||[]).filter(e=>!n.has(e.version)&&(!t||on(t,e.version)))].filter(Zi)}}}return f},[f,o]),m=(0,G.useMemo)(()=>wu(o?.instances??[]),[o]),h=(0,G.useMemo)(()=>{for(let e of a?.clusters??[])if(e.id!==o?.id&&l&&!Ko(e.status)&&!Go(e.status)&&e.plans)for(let t of e.plans){let e=l.find(e=>e.id===t.planId);if(e?.priceUsd===0&&!e.id.startsWith(`self-hosted`))return!0}return!1},[o?.id,a?.clusters,l]),g=(0,G.useMemo)(()=>Qs(l?.sort(Ks(`priceUsd`))||[],`deploymentDescription`,`performanceDescription`),[l]),_=(0,G.useMemo)(()=>{if(!l||!p||!u||!d||t&&!o)return null;let e=o;if(s){if(Cu(s))return{...s,clusterName:s.clusterName||``,abbreviatedName:s.abbreviatedName||``,version:s.version,deploymentDescription:s.deploymentDescription||``,performanceDescription:s.performanceDescription||``,fqdn:s.fqdn||``,regionPlans:s.regionPlans||[],instances:s.instances||[]};e=s}let n=l?.find(e=>e.id===o?.plans?.[0].planId),r=[],i=[],a=n?.deploymentDescription===`Dedicated`?d:u,c=vu(l,a,h),f=!1;if(e){if(e.plans){for(let t of e.plans)if(t.regionId){let e=a.find(e=>e.id===t.regionId);e&&r.push({regionName:e.region,latencyDescription:e.latencyDescription})}}if(!r.length&&e.instances){let t=e.instances.filter(e=>e.status&&!Fa.includes(e.status)).sort(Ys);for(let e of t)f=!0,i.push({fqdn:e.instanceFqdn,port:e.operationsApiPort,secure:e.operationsApiSecure?`true`:`false`})}}else c&&r.push(...c.regionPlans);!f&&!r.length&&r.push({regionName:``,latencyDescription:``});let m=p.value?.find(e=>e.name===`current`)?.version??p.value?.find(e=>e.name===`stable`)?.version;return{sourceClusterId:e?.id,autoRenew:e?.plans?.[0]?.autoRenew??!0,clusterName:e?.name??``,abbreviatedName:e?.abbreviatedName??``,version:m,deploymentDescription:n?.deploymentDescription??c?.deploymentDescription??``,performanceDescription:n?.performanceDescription??c?.performanceDescription??``,fqdn:f?e?.fqdn??``:``,instances:i,regionPlans:r}},[h,o,t,l,p,u,d,s]);return!_||!a||!l||!u||!d?(0,W.jsx)(Tu,{isEdit:!!t,children:(0,W.jsx)(Di,{centered:!0,text:`Loading...`})}):(o?.id?!i:!r)?(0,W.jsx)(Tu,{isEdit:!!t,children:(0,W.jsx)(oi,{title:`Not Allowed`,error:{message:(0,W.jsxs)(W.Fragment,{children:[`You do not have permission to `,o?.id?`update`:`create`,` clusters in this org.`]})}})}):l.length===0?(0,W.jsx)(Tu,{isEdit:!!t,children:(0,W.jsx)(oi,{title:`Cluster ${t?`Modification`:`Creation`} Not Currently Allowed`,error:{message:(0,W.jsxs)(W.Fragment,{children:[`There are no available deployment types right now! Please try again later, or `,(0,W.jsx)(Ps,{}),`.`]})}})}):(0,W.jsx)(Tu,{isEdit:!!t,className:`max-w-4xl mx-auto`,children:(0,W.jsx)(Su,{alreadyUsingFree:h,clusterId:t,defaultValues:_,deploymentToPerformanceToPlan:g,harperVersions:p,mode:n,organization:a,organizationId:e,partialUpgrade:m,planTypes:l,regionLocationsColocated:u,regionLocationsDedicated:d,setSavedClusterState:c,startOffOnBilling:Cu(s)&&s.skipToBilling===!0})})}function Du({children:e}){let{organizationId:t}=L({strict:!1}),{view:n}=cs(t),{update:r}=ss(t),i=`/${t}`;return(0,W.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,W.jsxs)(`div`,{className:`md:grid gap-6 md:grid-cols-12`,children:[(0,W.jsx)(`aside`,{className:`md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,W.jsx)(wi,{items:[{to:i,label:`Clusters`,icon:Br,exact:!0},n&&{to:`${i}/users`,label:`Users`,icon:ii},n&&{to:`${i}/roles`,label:`Roles`,icon:Hr},r&&{to:`${i}/billing`,label:`Billing`,icon:Zn,children:[{to:`${i}/billing`,label:`Payment Method`,exact:!0},{to:`${i}/billing/invoices`,label:`Invoices`}]},r&&{to:`${i}/settings`,label:`Settings`,icon:Vr}].filter(Boolean),ariaLabel:`Organization sections`})}),(0,W.jsx)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:e})]})})}var Ou={FAILED:0,UPDATING:1,PROVISIONING:2,RUNNING:3,TERMINATED:4},ku=Ou.RUNNING;function Au(e,t){return e.status===t.status?e.name.localeCompare(t.name):(e.status?Ou[e.status]??ku:ku)-(t.status?Ou[t.status]??ku:ku)}function ju(e,t){let n=t.toLowerCase();return t=>{for(let r of e){let e=t[r];if(e!=null)if(typeof e==`string`){if(e.toLowerCase().includes(n))return!0}else if(typeof e==`boolean`){if(e&&(n===`yes`||n===`true`||n===`1`)||!e&&(n===`no`||n===`false`||n===`0`))return!0}else throw Error(`curryFilterByFuzzySearch has not implemented support for `+typeof e+` fields yet!`)}return!1}}function Mu(){let{organizationId:e}=L({strict:!1}),{create:t}=ls(e),{data:n,isSuccess:r}=ae(oc(e)),[i]=vn(bn.SavedClusterState,null),[a,o]=(0,G.useState)(``),s=(0,G.useCallback)(()=>o(``),[]),c=(0,G.useCallback)(e=>{o(e.currentTarget.value?.toLowerCase()||``)},[]),l=(0,G.useMemo)(()=>n?.clusters?.slice().filter(e=>!Ko(e.status)).sort(Au)||[],[n?.clusters]),u=(0,G.useMemo)(()=>l.filter(ju([`id`,`name`],a))||[],[a,l]);return n&&l.length===0&&t?(0,W.jsx)(Eu,{}):i?(0,W.jsx)(de,{to:`/${e}/new-cluster`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vo,{children:r&&t&&(0,W.jsx)(`div`,{className:`flex w-full justify-end`,children:(0,W.jsx)(V,{to:`new-cluster`,children:(0,W.jsxs)(F,{variant:`positive`,accessKey:`n`,children:[(0,W.jsx)(Nr,{}),` `,(0,W.jsxs)(`span`,{className:`hidden sm:inline-block`,children:[(0,W.jsx)(`u`,{children:`N`}),`ew `,(0,W.jsx)(`span`,{className:`hidden md:inline-block`,children:`Cluster`})]})]})})})}),(0,W.jsxs)(Du,{children:[(0,W.jsxs)(`div`,{className:`relative mb-6 w-full`,children:[(0,W.jsx)(zr,{className:`pointer-events-none absolute left-0 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,W.jsx)($,{placeholder:`Filter by name`,className:`w-full rounded-none border-0 border-b border-border bg-transparent dark:bg-transparent pl-6 shadow-none focus-visible:border-primary focus-visible:ring-0`,value:a,onChange:c})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-9 mb-4`,children:[u.map(e=>(0,W.jsx)(`div`,{className:`col-span-1 md:col-span-3 xl:col-span-3 2xl:col-span-2`,children:(0,W.jsx)(Ns,{cluster:e})},e.id)),!u.length&&(0,W.jsxs)(`div`,{className:`col-span-1 md:col-span-9 text-center`,children:[(0,W.jsx)(`h2`,{className:`my-4 text-xl`,children:`No matches found.`}),(0,W.jsx)(F,{type:`button`,variant:`outline`,onClick:s,children:`Clear Filters`})]})]})]})]})}function Nu(){return`/#`+sa()}function Pu(){let{organizationId:e}=L({strict:!1}),t=Oe(),n=new URLSearchParams(window.location.search).get(`setup_intent_client_secret`),{setup_intent_client_secret:r}=ce({strict:!1}),[i]=vn(bn.SavedClusterState,null),a=n||r,o=sl(),s=hc(e),c=(0,G.useCallback)(()=>{let e=i?i.clusterId?`../../${i.clusterId}/edit`:`../../new-cluster`:`../`;window.history.replaceState(null,``,Nu()),t({search:void 0,to:e})},[t,i]);return(0,G.useEffect)(()=>{!o||!a||!s||!e||!c||(async function(){try{let{setupIntent:e}=await o.retrieveSetupIntent(a);switch(e?.status){case`succeeded`:e.payment_method===null?(H.error(`Failed to process payment method details. Please try another payment method.`),c()):s(e.payment_method,c);break;case`processing`:H.warning(`Processing payment method. Please check back later.`),c();break;case`requires_payment_method`:H.error(`Failed to process payment method details. Please try another payment method.`),c();break;default:H.error(`Failed to process payment method details. Please try another payment method.`),c();break}}catch(e){console.error(e),H.error(`Failed to process payment method details. Please try another payment method.`),c()}})()},[a,c,e,s,o]),(0,W.jsx)(Di,{centered:!0})}function Fu(){return(0,W.jsx)(Nl,{children:(0,W.jsx)(Pu,{})})}function Iu(){let{organizationId:e}=L({strict:!1}),{update:t}=ss(e);return t?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vo,{}),(0,W.jsx)(Du,{children:(0,W.jsx)(Se,{})})]}):(0,W.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:`You don't have access to manage payments for this organization. Please contact your administrator.`})}var Lu=500,Ru=16,zu=16;function Bu({className:e,containerClassName:t,containerRef:n,...r}){return(0,W.jsx)(`div`,{ref:n,"data-slot":`table-container`,className:P(`relative w-full overflow-x-auto`,t),children:(0,W.jsx)(`table`,{"data-slot":`table`,className:P(`w-full caption-bottom text-sm`,e),...r})})}function Vu({className:e,...t}){return(0,W.jsx)(`thead`,{"data-slot":`table-header`,className:P(`[&_tr]:border-b`,e),...t})}function Hu({className:e,...t}){return(0,W.jsx)(`tbody`,{"data-slot":`table-body`,className:P(`[&_tr:last-child]:border-0`,e),...t})}function Uu({className:e,...t}){return(0,W.jsx)(`tr`,{"data-slot":`table-row`,className:P(`border-b border-grey-700 transition-colors`,e),...t})}function Wu({className:e,...t}){return(0,W.jsx)(`th`,{"data-slot":`table-head`,className:P(`h-10 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}function Gu({header:e,onColumnClick:t,className:n,...r}){let i=(0,G.useCallback)(()=>{e.column.toggleSorting(e.column.getIsSorted()===`asc`);let n=e.column.getIsSorted()===!1||e.column.getIsSorted()!==`asc`;t?.(e.column.columnDef.accessorKey,n)},[e,t]),a=e.column.columnDef.enableSorting,o=e.getContext().table.options.enableColumnResizing===!0&&e.column.getCanResize(),s=e.isPlaceholder?null:Ce(e.column.columnDef.header,e.getContext()),c=e.getContext().table,l=e.getSize(),u=e.column.columnDef.minSize??c.options.defaultColumn?.minSize??20,d=(0,G.useCallback)(t=>{let n=t.currentTarget.closest(`table`);if(!n){e.column.resetSize();return}let r=`[data-col-id="${CSS.escape(e.column.id)}"]`,i=document.createRange(),a=e=>(i.selectNodeContents(e),i.getBoundingClientRect().width),o=0;n.querySelectorAll(`tbody ${r}`).forEach(e=>{o=Math.max(o,a(e))});let s=n.querySelector(`thead ${r} > div`),l=s?.querySelector(`.truncate`);if(s&&l){let e=Array.from(s.children).reduce((e,t)=>e+t.getBoundingClientRect().width,0)-l.getBoundingClientRect().width;o=Math.max(o,a(l)+e+zu)}let d=Math.min(Math.max(Math.ceil(o)+Ru,u),Lu);c.setColumnSizing(t=>({...t,[e.column.id]:d}))},[e,c,u]),f=e.column.getIsResizing()?Math.max(c.getState().columnSizingInfo.deltaOffset??0,u-l):0;return(0,W.jsxs)(Wu,{...r,"data-col-id":e.column.id,style:{width:`${l}px`,maxWidth:`${l}px`},className:P(`relative`,o&&`select-none`,a?`px-0`:`px-2`,n),children:[(0,W.jsx)(`div`,{className:P(`flex items-center min-w-0 overflow-hidden`,o&&`pr-4`),children:a?(0,W.jsxs)(F,{type:`button`,variant:`ghost`,className:P(`rounded-none min-w-0`,!e.column.getIsSorted()||e.column.getIsSorted()===`asc`?`cursor-n-resize`:`cursor-s-resize`),onClick:i,children:[(0,W.jsx)(`span`,{className:`truncate`,children:s}),e.column.getIsSorted()===`asc`?(0,W.jsx)(rn,{className:`shrink-0`}):e.column.getIsSorted()===`desc`?(0,W.jsx)(Bt,{className:`shrink-0`}):(0,W.jsx)(kn,{className:`shrink-0 text-gray-600`})]}):(0,W.jsx)(`span`,{className:`truncate`,children:s})}),o&&(0,W.jsx)(`div`,{"aria-hidden":!0,className:`absolute top-0 right-0 z-10 flex h-full w-4 cursor-col-resize items-center justify-center text-muted-foreground hover:text-foreground`,onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),onDoubleClick:d,style:{transform:e.column.getIsResizing()?`translateX(${f}px)`:``},children:(0,W.jsx)(ur,{className:`size-3.5`})})]})}function Ku({className:e,...t}){return(0,W.jsx)(`td`,{"data-slot":`table-cell`,className:P(`align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}function qu({columns:e,data:t,isFetching:n,onRowClick:r,onColumnClick:i,sortingState:a,children:o}){let s=ge({data:t,columns:e,getCoreRowModel:xe(),getSortedRowModel:fe(),initialState:{sorting:a}});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-end space-x-2 pb-4`,children:[(0,W.jsx)(`div`,{className:`grow lg:hidden`}),o,(0,W.jsx)(`div`,{className:`grow hidden lg:visible`})]}),(0,W.jsxs)(Bu,{containerClassName:`rounded-md bg-card dark:bg-black-dark`,children:[(0,W.jsx)(Vu,{children:s.getHeaderGroups().map(e=>(0,W.jsx)(Uu,{className:`border-none`,children:e.headers.map(e=>(0,W.jsx)(Gu,{header:e,onColumnClick:i},e.id))},e.id))}),(0,W.jsx)(Hu,{className:`bg-background dark:bg-black border border-border dark:border-grey-700`,children:s.getRowModel().rows?.length?s.getRowModel().rows.map(e=>(0,W.jsx)(Uu,{"data-state":e.getIsSelected()&&`selected`,onClick:()=>r?.(e),className:P(`hover:bg-muted/10 data-[state=selected]:bg-muted`,r&&`cursor-pointer`),children:e.getVisibleCells().map(e=>(0,W.jsx)(Ku,{className:`py-2 px-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,style:{width:`${e.column.getSize()}px`},children:Ce(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,W.jsx)(Uu,{children:(0,W.jsx)(Ku,{colSpan:e.length,className:`h-24 text-center`,children:n?(0,W.jsx)(`div`,{children:(0,W.jsx)(Di,{className:`p-12`})}):(0,W.jsx)(`span`,{children:`No results.`})})})})]})]})}function Ju(e){switch(e){case`paid`:return`success`;case`void`:case`uncollectible`:return`destructive`;default:return`default`}}function Yu(e){return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).format(e)}function Xu(e,t){if(e<45)return`a few seconds ago`;if(e<120)return`a minute ago`;let n=Math.floor(e/60);if(n<60)return`${n} minutes ago`;if(n<120)return`an hour ago`;let r=Math.floor(e/3600);return r>48?new Date(t).toLocaleString():`${r} hours ago`}var Zu=[{header:`Invoice Id`,accessorKey:`id`,enableSorting:!1},{header:`Status`,accessorKey:`status`,enableSorting:!1,cell:({cell:e})=>(0,W.jsx)(oo,{variant:Ju(e.getValue()),children:e.getValue()})},{header:`Date`,accessorKey:`periodStart`,enableSorting:!1,cell:({cell:e})=>{let t=e.row.original.periodStart*1e3,n=e.row.original.periodEnd*1e3,r=(Date.now()-t)/1e3,i=(Date.now()-n)/1e3;return Math.abs(r-i)<1e3?Xu(r,t):[t?Xu(r,t):`-`,n?Xu(i,n):`-`].join(` to `)}},{header:`Amount Due`,accessorKey:`amountDue`,enableSorting:!1,cell:({cell:e})=>Yu(e.getValue()?e.getValue()/100:0)},{header:`Amount Paid`,accessorKey:`amountPaid`,enableSorting:!1,cell:({cell:e})=>Yu(e.getValue()?e.getValue()/100:0)},{header:`Lines`,accessorKey:`lines`,enableSorting:!1,cell:({cell:e})=>{let t=e.getValue(),n=[];for(let e of t)n.push(`${e.quantity}x ${e.description} @ ${Yu(e.amount/100)}`);return n.join(`
|
|
12
|
+
`)}}];function Qu(e){return(0,G.useCallback)(async()=>{H.loading(`Refreshing...`,{id:`refreshing`});let t=Date.now();await e(),Date.now()-t<500&&await a(500),H.success(`Refreshed!`,{id:`refreshing`})},[e])}async function $u(e){let{data:t}=await N.get(`/Invoice/${e}`);return t}function ed(e,t){return B({queryKey:[e,`invoices`],queryFn:()=>$u(e),retry:!1,enabled:!!e,refetchInterval:t?1e4:void 0})}function td(){let{organizationId:e}=L({strict:!1}),{data:t}=R(oc(e)),{data:n,refetch:r,isLoading:i,isFetching:a,isRefetching:o}=R(ed(t?.type!==`ENTERPRISE`&&t?.id,!1)),s=Qu(r);return t?.type===`ENTERPRISE`?(0,W.jsxs)(`span`,{children:[`You are part of an enterprise organization! We don’t currently show your invoices on this page. Want to explore your solution with Harper more? `,(0,W.jsx)(Ps,{}),`, we would love to talk!`]}):i?(0,W.jsx)(Di,{centered:!0}):!n||!n.length?(0,W.jsxs)(`span`,{children:[`Your invoices will be shown here once one is available! Want to explore your solution with Harper more?`,` `,(0,W.jsx)(Ps,{overEmail:!0}),`, we would love to talk!`]}):(0,W.jsx)(qu,{data:n,columns:Zu,children:(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:s,accessKey:`r`,disabled:a||o,children:[(0,W.jsx)(fn,{}),(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]})})}function nd(e){let t=z({getParentRoute:()=>e,path:`billing`,head:()=>({meta:[{title:`Billing — Harper Fabric`}]}),component:Iu}),n=z({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Payment Methods — Harper Fabric`}]}),component:zl}),r=z({getParentRoute:()=>t,path:`invoices`,head:()=>({meta:[{title:`Invoices — Harper Fabric`}]}),component:td}),i=z({getParentRoute:()=>t,path:`confirm`,head:()=>({meta:[{title:`Confirm Payment — Harper Fabric`}]}),component:Fu});return t.addChildren([n,r,i])}async function rd(e){let{data:t}=await N.get(`/OrganizationRole/${e}`);return t}function id(e){return B({queryKey:[e,`roles`],queryFn:()=>rd(e),retry:!1,refetchInterval:10*1e3})}var ad=ue(),od=[{header:`Role Name`,accessorKey:`roleName`,enableSorting:!1},ad.display({header:`ID`,id:`id`,enableSorting:!1,cell:e=>(0,W.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,title:e.row.original.id,children:e.row.original.id})}),ad.display({header:`Users Assigned`,enableSorting:!1,id:`userIds`,cell:e=>!e.row.original.userIds||e.row.original.userIds.length===0?`No users assigned`:e.row.original.userIds.length})];async function sd(e){let{data:t}=await N.post(`/Role/`,e);return t}function cd(){return I({mutationFn:sd})}var ld=b({name:S().nonempty({error:`Please enter a role name.`}).regex(/^[a-zA-Z_]*$/,{error:`Role must contain only letters and underscores.`}).max(30,{error:`Role name cannot be longer than 30 characters.`}),update:D(),delete:D()});b({roles:b({create:D(),delete:D(),update:D(),view:D()}),clusters:b({create:D(),delete:D(),update:D(),view:D(),resources:C(b({id:S(),delete:D(),update:D(),view:D(),instances:b({create:D(),delete:D(),update:D(),view:D()})}))})});function ud(){let[e]=Ni(),t=Ai();return e===`dark`||e===`system`&&t===`dark`?`vs-dark`:`light`}var dd=(0,G.lazy)(async()=>(await je(()=>import(`./setup-B_NOw8rV.js`),__vite__mapDeps([9,4,1,10,11,12,13])),{default:(await je(()=>import(`./dist-DHjL6trB.js`),__vite__mapDeps([12,1,4]))).default}));function fd(e){return(0,W.jsx)(G.Suspense,{fallback:e.loading??null,children:(0,W.jsx)(dd,{...e})})}var pd={roles:{create:!0,view:!0,update:!0,delete:!0},clusters:{create:!0,view:!0,update:!0,delete:!0,resources:[]}};function md({isModalOpen:e,setIsModalOpen:t}){let n=ud(),r=ie(),{organizationId:i}=L({strict:!1}),[a,o]=(0,G.useState)(!0),[s,c]=(0,G.useState)(JSON.stringify(pd,null,2)),{mutate:l,isPending:u}=cd(),d=bt({resolver:_t(ld),defaultValues:{name:``,update:!1,delete:!1}}),f=(0,G.useCallback)(e=>{o(e.length===0)},[o]),p=(0,G.useCallback)(async e=>{let n=_n(s);if(!n)return;let o={...e,...n,organizationId:i};e&&a&&l(o,{onSuccess:()=>{H.success(`Organization role added successfully!`),t(!1),r.invalidateQueries({queryKey:[i,`roles`],refetchType:`active`}),d.reset()},onError:e=>{H.error(`Failed to add organization role: ${e.message}`)}})},[a,s,l,d,r,t,i]);return(0,W.jsx)(qt,{onOpenChange:t,open:e,children:(0,W.jsxs)(tn,{resizable:!0,children:[(0,W.jsx)(Jt,{children:`Add New Organization Role`}),(0,W.jsx)(Ht,{children:`Set the new organization role permissions.`}),(0,W.jsx)(q,{...d,children:(0,W.jsxs)(`form`,{id:`org-add-role-form`,name:`org-add-role-form`,className:`flex flex-1 min-h-0 flex-col gap-4 my-4`,onSubmit:d.handleSubmit(p),children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,W.jsx)(Y,{control:d.control,name:`name`,render:({field:e})=>(0,W.jsxs)(X,{className:`col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Role Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,className:``,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:d.control,name:`update`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Can Update Organization`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:d.control,name:`delete`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Can Delete Organization`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,W.jsx)(Q,{})]})})]}),(0,W.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,W.jsx)(fd,{className:`w-full h-full`,theme:n,defaultLanguage:`json`,onValidate:f,onChange:e=>{e&&c(e)},options:{automaticLayout:!0},defaultValue:JSON.stringify(pd,null,2)})}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,W.jsx)(F,{variant:`destructiveOutline`,type:`button`,onClick:()=>t(!1),disabled:u,children:`Cancel`}),(0,W.jsx)(F,{variant:`submit`,disabled:u||!a||!d.formState.isValid,children:`Save Changes`})]})})]})})]})})}async function hd({roleId:e}){let{data:t}=await N.delete(`/Role/${e}`,{id:e,deleted:!0});return t}function gd(){return I({mutationFn:({roleId:e})=>hd({roleId:e})})}async function _d({roleId:e,updatedRoleInfo:t}){let{data:n}=await N.put(`/Role/${e}`,t);return n}function vd(){return I({mutationFn:({roleId:e,updatedRoleInfo:t})=>_d({roleId:e,updatedRoleInfo:t})})}function yd({organizationId:e,roleId:t}){return B({queryKey:[e,`roles`,t],queryFn:()=>bd(t),refetchInterval:10*1e3})}async function bd(e){let{data:t}=await N.get(`/Role/${e}`);return t}function xd({onRoleDeleteClick:e,setIsConfirmingRoleDeletion:t,isRoleDeletionPending:n}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Jt,{children:`Confirm Role Deletion`}),(0,W.jsx)(Ht,{children:`Are you sure you want to delete this role? This action cannot be undone.`}),(0,W.jsxs)(Ut,{children:[(0,W.jsx)(F,{type:`button`,variant:`defaultOutline`,onClick:()=>t(!1),children:`Cancel`}),(0,W.jsx)(F,{variant:`destructiveOutline`,onClick:e,disabled:n,children:n?`Deleting...`:`Delete Role`})]})]})}function Sd({data:e,isModalOpen:t,closeModal:n}){return(0,W.jsx)(qt,{onOpenChange:(0,G.useCallback)(()=>n(!1),[n]),open:t,children:(0,W.jsx)(tn,{resizable:!0,children:(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Cd,{roleName:e.roleName}),children:(0,W.jsx)(wd,{data:e,closeModal:n})})})})}function Cd({roleName:e}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Jt,{children:[`Organization Role "`,e,`"`]}),(0,W.jsx)(Di,{centered:!0,text:`Loading role…`,className:`flex-1 min-h-0`})]})}function wd({data:e,closeModal:t}){let n=ie(),{data:r}=ae(yd({roleId:e.id,organizationId:e.organizationId})),i=Ie().user?.roles?.[e.organizationId]?.id===e.id,{update:a,remove:o}=cs(e.organizationId),{mutate:s,isPending:c}=vd(),{mutate:l,isPending:u}=gd(),d=ud(),[f,p]=(0,G.useState)(!1),m=bt({resolver:_t(ld),defaultValues:{name:e.roleName,update:r.organization.update||!1,delete:r.organization.delete||!1}}),h=(0,G.useCallback)(()=>{l({roleId:e.id},{onSuccess:()=>{H.success(`Role deleted successfully!`),t(!0),m.reset()},onError:e=>{H.error(`Error`,{description:`Failed to delete role: ${e instanceof Error?e.message:String(e)}.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}})}})},[e.id,l,m,t]),[g,_]=(0,G.useState)(!0),v=(0,G.useMemo)(()=>JSON.stringify({roles:{...r.organization.roles},clusters:{...r.organization.clusters}},null,2),[r]),[y,b]=(0,G.useState)(v),x=y!==v,S=(0,G.useCallback)(e=>{_(e.length===0)},[_]),C=(0,G.useCallback)(async r=>{if(!a)return;let i=_n(y);if(!i)return;let o={...r,...i,organizationId:e.organizationId};y&&g&&s({roleId:e.id,updatedRoleInfo:o},{onSuccess:async()=>{H.success(`Role updated successfully!`),await n.invalidateQueries({queryKey:[e.organizationId,`roles`,e.id]}),t(!1),m.reset()},onError:e=>{H.error(`Error`,{description:`Failed to update role: ${e instanceof Error?e.message:String(e)}.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}})}})},[t,e.id,e.organizationId,m,g,n,r,a,y,s]);return f?(0,W.jsx)(xd,{onRoleDeleteClick:h,setIsConfirmingRoleDeletion:p,isRoleDeletionPending:u}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Jt,{children:[i||!a?`View`:`Edit`,` Organization Role "`,e.roleName,`"`]}),(0,W.jsx)(q,{...m,children:(0,W.jsxs)(`form`,{id:`org-edit-role-form`,name:`org-edit-role-form`,className:`flex flex-1 min-h-0 flex-col gap-4 my-4`,onSubmit:m.handleSubmit(C),children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,W.jsx)(Y,{control:m.control,name:`name`,render:({field:e})=>(0,W.jsxs)(X,{className:`col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Role Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,className:``,...e,disabled:!0,readOnly:!0})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:m.control,name:`update`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Can Update Organization`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,disabled:i||!a,readOnly:i||!a,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:m.control,name:`delete`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Can Delete Organization`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,disabled:i||!a,readOnly:i||!a,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,W.jsx)(Q,{})]})})]}),(0,W.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,W.jsx)(fd,{className:`w-full h-full`,theme:d,defaultLanguage:`json`,onValidate:S,onChange:e=>{e&&b(e)},options:{readOnly:i||!a,automaticLayout:!0},defaultValue:y})}),!i&&(o||a)&&(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[o&&(0,W.jsx)(F,{type:`button`,variant:`destructiveOutline`,onClick:()=>p(!0),disabled:c,children:`Delete Role`}),a&&(0,W.jsx)(F,{variant:`submit`,disabled:!g||c||!m.formState.isValid||!m.formState.isDirty&&!x,children:`Save Changes`})]})})]})})]})}function Td(){let e=Oe(),t=ie(),{organizationId:n,orgRoleId:r}=L({strict:!1}),{create:i}=cs(n),{data:a,refetch:o,isFetching:s,isRefetching:c}=ae(id(n)),l=(0,G.useMemo)(()=>a&&a?.find(e=>e.id===r),[a,r]),u=!!r&&!!l,[d,f]=(0,G.useState)(!1),p=(0,G.useCallback)(async(i,a)=>{let o=[r?`..`:``,i].filter(Boolean);await e({to:o.join(`/`)}),a&&await t.invalidateQueries({queryKey:[n,`roles`],refetchType:`active`})},[r,e,t]),m=(0,G.useCallback)(()=>{f(!0)},[f]),h=(0,G.useCallback)(e=>p(e.original.id,!1),[p]),g=(0,G.useCallback)(e=>p(void 0,e),[p]),_=Qu(o);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vo,{}),(0,W.jsx)(Du,{children:(0,W.jsxs)(G.Suspense,{fallback:(0,W.jsx)(Di,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,W.jsxs)(qu,{data:a,columns:od,onRowClick:h,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:_,accessKey:`r`,disabled:s||c,children:[(0,W.jsx)(fn,{}),(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),i&&(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:m,accessKey:`a`,disabled:d,children:[(0,W.jsx)(Nr,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]})]}),i&&(0,W.jsx)(md,{isModalOpen:d,setIsModalOpen:f}),u&&(0,W.jsx)(Sd,{data:l,isModalOpen:u,closeModal:g},l.id)]})})]})}function Ed({className:e,...t}){return(0,W.jsx)(Ke,{"data-slot":`switch`,className:P(`peer data-[state=checked]:bg-green data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-grey-500 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50`,e),...t,children:(0,W.jsx)(tt,{"data-slot":`switch-thumb`,className:P(`bg-white dark:data-[state=unchecked]:bg-white dark:data-[state=checked]:bg-white pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0`)})})}function Dd(e){return`//oauth/${e}/login`}async function Od(e,t){let{data:n}=await N.patch(`/Organization/${e}/settings/oauth`,t);return n}var kd=b({domain:S().min(1,`Domain is required`),clientId:S().min(1,`Client ID is required`),clientSecret:S().min(1,`Client secret is required`),scope:S().optional()}),Ad=b({domain:S().min(1,`Domain is required`),clientId:S().optional(),clientSecret:S().optional(),scope:S().optional()});function jd(){let{organizationId:e}=L({strict:!1}),{user:t}=Ie(),{update:n}=ss(e),{data:r}=ae(oc(e)),i=ie(),[a,o]=(0,G.useState)(!1),[s,c]=(0,G.useState)(null),l=r.settings?.oauthConfigs??[],{mutate:u,isPending:d}=I({mutationFn:t=>Od(e,t),onSuccess:()=>void i.invalidateQueries({queryKey:[e]}),onError:()=>H.error(`Failed to update OAuth settings.`)}),f=bt({resolver:_t(kd),defaultValues:{domain:``,clientId:``,clientSecret:``,scope:`openid email profile`}}),p=e=>{u({provider:`okta`,...e},{onSuccess:()=>{H.success(`OAuth provider added.`),f.reset(),o(!1)}})},m=bt({resolver:_t(Ad)}),h=e=>{c(e.id??null),m.reset({domain:e.domain,clientId:``,clientSecret:``,scope:e.scope??``})},g=(e,t)=>{let n={id:e.id,provider:e.provider,domain:t.domain,scope:t.scope};t.clientId&&(n.clientId=t.clientId),t.clientSecret&&(n.clientSecret=t.clientSecret),u(n,{onSuccess:()=>{H.success(`OAuth provider updated.`),c(null)}})},_=(e,t)=>{u({id:e.id,provider:e.provider,[t]:!e[t]})},v=e=>`//oauth/${e}/callback`,y=async e=>{await ks(e)&&H.success(`Sign-in URL copied.`)},b=async e=>{await ks(e)&&H.success(`Redirect URI copied.`)};return n?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vo,{}),(0,W.jsx)(Du,{children:(0,W.jsxs)(`div`,{className:`max-w-2xl`,children:[(0,W.jsx)(`h2`,{className:`text-2xl text-foreground font-light mb-6`,children:`Authentication`}),(0,W.jsxs)(`section`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,W.jsx)(`h3`,{className:`text-lg text-foreground font-medium`,children:`OAuth Providers`}),!a&&(0,W.jsxs)(F,{variant:`positiveOutline`,size:`sm`,onClick:()=>o(!0),children:[(0,W.jsx)(Nr,{}),`Add Provider`]})]}),l.length===0&&!a&&(0,W.jsx)(`p`,{className:`text-muted-foreground text-sm mb-4`,children:`No OAuth providers configured.`}),l.map(e=>{let n=t?.oauthConfigId===e.id;return s===e.id?(0,W.jsxs)(`div`,{className:`border rounded-lg p-4 mb-3 text-foreground`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,W.jsx)(`h4`,{className:`font-medium`,children:`Edit Provider`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>c(null),className:`text-muted-foreground hover:text-foreground`,children:(0,W.jsx)(pn,{className:`size-4`})})]}),(0,W.jsx)(q,{...m,children:(0,W.jsxs)(`form`,{onSubmit:m.handleSubmit(t=>g(e,t)),className:`space-y-4`,children:[(0,W.jsx)(Y,{control:m.control,name:`domain`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Domain`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{placeholder:`company.okta.com`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:m.control,name:`clientId`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Client ID`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{placeholder:`Leave blank to keep existing`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:m.control,name:`clientSecret`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Client Secret`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,placeholder:`Leave blank to keep existing`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:m.control,name:`scope`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Scope`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{placeholder:`openid email profile`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,W.jsx)(F,{type:`submit`,variant:`positive`,disabled:d,children:d?`Saving...`:`Save`}),(0,W.jsx)(F,{type:`button`,variant:`outline`,onClick:()=>c(null),children:`Cancel`})]})]})})]},e.id):(0,W.jsx)(`div`,{className:`border rounded-lg p-4 mb-3 text-foreground`,children:(0,W.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between sm:gap-4`,children:[(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:e.domain}),(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground uppercase bg-muted px-2 py-0.5 rounded`,children:e.provider}),e.enabled===!1&&(0,W.jsx)(`span`,{className:`text-xs text-destructive bg-destructive/10 px-2 py-0.5 rounded`,children:`Disabled`})]}),(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground mb-2`,children:[`Client ID: `,(0,W.jsx)(`span`,{className:`text-foreground font-mono`,children:`****`})]}),e.id&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`mt-3 rounded-md bg-muted px-3 py-2`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1`,children:`Okta redirect URI`}),(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-1.5`,children:[`Add to `,(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`Login redirect URIs`}),` `,`in your Okta app settings.`]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-sm text-foreground font-mono truncate`,children:v(e.id)}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void b(v(e.id)),className:`hover:text-foreground shrink-0 text-muted-foreground`,title:`Copy redirect URI`,children:(0,W.jsx)(Xn,{className:`size-3.5`})})]})]}),(0,W.jsxs)(`div`,{className:`mt-2 rounded-md bg-muted px-3 py-2`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1.5`,children:`User login link`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`a`,{href:Dd(e.id),target:`_blank`,rel:`noreferrer`,className:`text-sm text-foreground truncate hover:underline`,children:Dd(e.id)}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0 text-muted-foreground`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>void y(Dd(e.id)),className:`hover:text-foreground`,title:`Copy login link`,children:(0,W.jsx)(Xn,{className:`size-3.5`})}),(0,W.jsx)(`a`,{href:Dd(e.id),target:`_blank`,rel:`noreferrer`,className:`hover:text-foreground`,title:`Open login link`,children:(0,W.jsx)(er,{className:`size-3.5`})})]})]})]})]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-3 sm:shrink-0`,children:[(0,W.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-foreground cursor-pointer`,children:[(0,W.jsx)(Ed,{checked:e.enabled!==!1,onCheckedChange:()=>_(e,`enabled`),disabled:d}),`Enabled`]}),(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-2 text-sm text-foreground ${n?`cursor-pointer`:`cursor-not-allowed opacity-50`}`,children:[(0,W.jsx)(Ed,{checked:!!e.required,onCheckedChange:()=>_(e,`required`),disabled:d||!n}),`Required`]})}),!n&&(0,W.jsxs)(Rt,{children:[`Sign in via `,e.provider,` first to enable Required`]})]}),(0,W.jsx)(F,{variant:`outline`,size:`sm`,onClick:()=>h(e),disabled:d,children:(0,W.jsx)(jr,{className:`size-4`})})]})]})},e.id)}),a&&(0,W.jsxs)(`div`,{className:`border rounded-lg p-4 text-foreground`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,W.jsx)(`h4`,{className:`font-medium`,children:`Add Okta Provider`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{o(!1),f.reset()},className:`text-muted-foreground hover:text-foreground`,children:(0,W.jsx)(pn,{className:`size-4`})})]}),(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-4`,children:[`After saving, copy the `,(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`Okta redirect URI`}),` `,`from the provider card and add it to your Okta app's`,` `,(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`Login redirect URIs`}),`.`]}),(0,W.jsx)(q,{...f,children:(0,W.jsxs)(`form`,{onSubmit:f.handleSubmit(p),className:`space-y-4`,children:[(0,W.jsx)(Y,{control:f.control,name:`domain`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Domain`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{placeholder:`company.okta.com`,autoFocus:!0,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:f.control,name:`clientId`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Client ID`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{placeholder:`Okta Client ID`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:f.control,name:`clientSecret`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Client Secret`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,placeholder:`Okta Client Secret`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:f.control,name:`scope`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Scope`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{placeholder:`openid email profile`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,W.jsx)(F,{type:`submit`,variant:`positive`,disabled:d,children:d?`Adding...`:`Add Provider`}),(0,W.jsx)(F,{type:`button`,variant:`outline`,onClick:()=>{o(!1),f.reset()},children:`Cancel`})]})]})})]})]})]})})]}):(0,W.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))] text-foreground`,children:`You don't have permission to manage settings for this organization.`})}k.object({email:Ha.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:k.string().nonempty({error:`Please select a role.`})});async function Md(e){let{data:t}=await N.post(`/UserInvite/`,e);return t}function Nd(){return I({mutationFn:e=>Md(e)})}function Pd({user:e}){let{update:t}=cs(),{mutate:n,isPending:r}=Nd(),i=e.roles?.[0]?.id,a=(0,G.useCallback)(t=>{if(t.stopPropagation(),!e.email||!i){H.error(`Cannot resend invite: this user has no email or role.`);return}n({email:e.email,roleId:i},{onSuccess:()=>H.success(`Invitation resent to ${e.email}.`)})},[n,i,e.email]);return t?(0,W.jsxs)(F,{variant:`ghost`,size:`sm`,className:`h-auto px-2 py-0 align-middle text-sm`,onClick:a,disabled:r||!i,children:[(0,W.jsx)(wr,{}),` Resend invite`]}):null}var Fd=ue(),Id=[{header:`User Id`,accessorKey:`id`,enableSorting:!1},{header:`Email`,accessorKey:`email`,enableSorting:!1},{header:`First Name`,accessorKey:`firstname`,enableSorting:!1},{header:`Last Name`,accessorKey:`lastname`,enableSorting:!1},Fd.display({header:`Roles`,enableSorting:!1,id:`roles`,cell:e=>e.row.original.roles?.map(e=>e.roleName)?.sort()?.join(`, `)}),{header:`Status`,accessorKey:`status`,enableSorting:!1},{header:`Verified`,accessorKey:`isVerified`,enableSorting:!1},Fd.display({header:``,enableSorting:!1,id:`actions`,cell:e=>e.row.original.status===`PENDING`?(0,W.jsx)(Pd,{user:e.row.original}):null})];function Ld({name:e,id:t}){return(0,W.jsxs)(`span`,{className:`flex items-baseline gap-2 truncate`,children:[(0,W.jsx)(`span`,{className:`truncate`,children:e}),(0,W.jsx)(`span`,{className:`text-muted-foreground font-mono text-xs`,children:t})]})}var Rd=k.object({email:Ha.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:k.string().nonempty({error:`Please select a role.`})});async function zd(e){let{data:t}=await N.post(`/OrganizationRole/`,e);return t}function Bd(){return I({mutationFn:e=>zd(e)})}function Vd({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let{organizationId:r}=L({strict:!1}),{data:i,isLoading:a}=R({...id(r),throwOnError:!0}),[o,s]=(0,G.useState)(!1),c=bt({resolver:_t(Rd),defaultValues:{email:``,roleId:``}}),{mutate:l,isPending:u}=Bd(),{mutate:d,isPending:f}=Nd(),p=(0,G.useCallback)(async e=>{e&&(o?d:l)(e,{onSuccess:()=>{let r=e.roleId;c.reset(),c.setValue(`roleId`,r),t(),H.success(`User invited successfully!`),n(!1),s(!1)},onError:e=>{e?.status===404&&s(!0)}})},[l,c,d,t,n,o]);return(0,W.jsx)(qt,{onOpenChange:()=>{n(!1),s(!1),c.reset()},open:e,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...c,children:(0,W.jsxs)(`form`,{id:`org-add-user-form`,name:`org-add-user-form`,onSubmit:c.handleSubmit(p),className:`grid gap-4 my-4`,children:[(0,W.jsx)(Zt,{children:(0,W.jsx)(Jt,{children:o?`Invite User`:`Add User`})}),(0,W.jsx)(Y,{control:c.control,name:`email`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Email`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`email`,enterKeyHint:`next`,autoComplete:`email`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:c.control,name:`roleId`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Roles`}),a?(0,W.jsx)(Kl,{}):(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...e,onValueChange:t=>e.onChange(t),children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`Choose Role`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(Xt,{children:`Role`}),i?.map(e=>(0,W.jsx)(zt,{value:e.id,children:(0,W.jsx)(Ld,{name:e.roleName,id:e.id})},e.id))]})})]})}),(0,W.jsx)(Q,{})]})}),o&&(0,W.jsxs)(Ht,{className:`p-3 my-5 text-white rounded-md bg-amber-600 flex`,children:[(0,W.jsx)(Cr,{className:`inline-block size-12 pr-2`}),(0,W.jsx)(`span`,{children:`This person doesn’t have a Fabric account. Do you want to invite them?`})]}),(0,W.jsx)(Ut,{children:(0,W.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:u||f,children:[(0,W.jsx)(Lr,{}),` `,o?`Invite User`:`Add User`]})})})]})})})})}async function Hd({roleId:e,userId:t}){let{data:n}=await N.delete(`/OrganizationRole/role/${e}/user/${t}`);return n}function Ud(){return I({mutationFn:({roleId:e,userId:t})=>Hd({roleId:e,userId:t})})}function Wd(e){let[t,n]=(0,G.useState)(e||!1);return[t,(0,G.useCallback)(e=>{n(typeof e==`boolean`?e:e.target.checked)},[])]}function Gd({data:e,readOnly:t,canRemove:n,orgRole:r,selectedRoles:i,setChangesMade:a}){let{mutate:o,isPending:s}=Bd(),{mutate:c,isPending:l}=Ud(),u=!!i[r.id],[d,f]=(0,G.useState)(u),[p,m]=Wd(u);return(0,G.useEffect)(()=>{p!==d&&(p?o({email:e.email,roleId:r.id},{onSuccess:()=>{f(p),a(!0),H.success(`Role added successfully`)}}):c({userId:e.id,roleId:r.id},{onSuccess:()=>{f(p),a(!0),H.success(`Role removed successfully`)}}))},[o,e.email,e.id,p,r.id,c,a,d]),(0,W.jsxs)(Na,{className:`flex`,children:[(0,W.jsx)($,{type:`checkbox`,className:`w-6`,disabled:t||s||l||!n&&p,checked:p,onChange:m}),(0,W.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:r.roleName})]},r.id)}function Kd({isSelf:e,isPending:t,onConfirm:n}){let[r,i]=(0,G.useState)(!1),a=e?{idle:`Leave organization`,confirm:`Confirm leave`,busy:`Leaving…`,warning:`You’ll lose access to this organization and everything in it. You won’t be able to return unless another member invites you back.`}:{idle:`Remove from organization`,confirm:`Confirm removal`,busy:`Removing…`,warning:`This revokes their access to this organization and everything in it. Their Harper account isn’t deleted, and they can be added back later.`},o=e?Sr:ni;return r?(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,W.jsxs)(`p`,{role:`alert`,className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3`,children:[(0,W.jsx)(ti,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,W.jsx)(`span`,{children:a.warning})]}),(0,W.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,W.jsx)(F,{type:`button`,variant:`ghostOutline`,disabled:t,onClick:()=>i(!1),children:`Cancel`}),(0,W.jsxs)(F,{type:`button`,variant:`destructive`,disabled:t,onClick:n,children:[(0,W.jsx)(o,{}),` `,t?a.busy:a.confirm]})]})]}):(0,W.jsx)(`div`,{className:`flex justify-start`,children:(0,W.jsxs)(F,{type:`button`,variant:`destructiveOutline`,disabled:t,onClick:()=>i(!0),children:[(0,W.jsx)(o,{}),` `,a.idle]})})}function qd(e){return e?.trim().toLowerCase()===`admin`}function Jd({canDelete:e,isSelf:t,orgUserCount:n,adminCount:r,isAdmin:i,roleCount:a}){let o=e?t&&n<=1?`sole-member`:t&&i&&r<=1?`last-admin`:null:null,s=e&&o===null;return{canRemoveRoles:s,showRemovalAction:s&&a>0,blockedReason:o}}function Yd({closeModal:e,data:t,isModalOpen:n,onUserUpdated:r,orgUserCount:i,orgAdminCount:a}){let{organizationId:o}=L({strict:!1}),s=Ie(),{update:c,remove:l}=cs(o),u=s.user?.email===t.email,[d,f]=(0,G.useState)(!1),{canRemoveRoles:p,showRemovalAction:m,blockedReason:h}=Jd({canDelete:l,isSelf:u,orgUserCount:i,adminCount:a,isAdmin:(t.roles??[]).some(e=>qd(e.roleName)),roleCount:t.roles?.length??0}),{mutateAsync:g}=Ud(),[_,v]=(0,G.useState)(!1),y=(0,G.useCallback)(async()=>{let e=t.roles??[];v(!0),(await Promise.allSettled(e.map(e=>g({userId:t.id,roleId:e.id})))).some(e=>e.status===`rejected`&&e.reason?.response?.status!==404)?H.error(u?`Something went wrong leaving the organization. Please try again.`:`Couldn’t remove ${t.email} from the organization. Please try again.`):H.success(u?`You’ve left the organization.`:`${t.email} was removed from the organization.`),v(!1),r()},[t.roles,t.id,t.email,u,g,r]);return(0,W.jsx)(qt,{onOpenChange:d?r:e,open:n,children:(0,W.jsxs)(tn,{resizable:!0,children:[(0,W.jsx)(Zt,{children:(0,W.jsxs)(Jt,{children:[c?`Edit `:`View `,` `,t.email,` `,u?`(yourself)`:``]})}),c&&(0,W.jsxs)(Ht,{children:[`Use the checkboxes to change which roles `,u?`you have`:`this user has`,`.`,m&&(u?` To leave the organization entirely, use the button below.`:` To remove this user from the organization entirely, use the button below.`)]}),(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Di,{centered:!0,text:`Loading roles…`,className:`flex-1 min-h-0`}),children:(0,W.jsx)(Xd,{data:t,organizationId:o,update:c,canRemove:p,setChangesMade:f})}),t.status===`PENDING`&&(0,W.jsx)(`div`,{className:`border-t border-border pt-4`,children:(0,W.jsx)(Pd,{user:t})}),m&&(0,W.jsx)(`div`,{className:`border-t border-border pt-4`,children:(0,W.jsx)(Kd,{isSelf:u,isPending:_,onConfirm:y})}),h&&(0,W.jsxs)(`p`,{className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3`,children:[(0,W.jsx)(ti,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,W.jsx)(`span`,{children:h===`sole-member`?`You’re the only member of this organization, so you can’t remove your roles or leave — it would be left with no one to manage it. If you no longer need this organization, terminate its clusters, then delete the organization from the ⋯ menu on the Organizations page.`:`You’re the only admin of this organization, so you can’t remove your roles or leave — it would be left with no one who can manage its members, roles, or clusters. Give another member the admin role first, then you can step back.`})]})]})})}function Xd({data:e,organizationId:t,update:n,canRemove:r,setChangesMade:i}){let{data:a}=ae(id(t)),o=(0,G.useMemo)(()=>e.roles?Zs(e.roles,`id`):{},[e]);return(0,W.jsx)(`div`,{className:`flex flex-1 min-h-0 flex-col gap-2 overflow-y-auto`,children:a.map(t=>(0,W.jsx)(Gd,{readOnly:!n,canRemove:r,data:e,orgRole:t,selectedRoles:o,setChangesMade:i},t.id))})}function Zd(e,t){return e.email>t.email?1:-1}function Qd(){let e=Oe(),{organizationId:t,orgUserId:n}=L({strict:!1}),{update:r}=cs(t),{data:i,refetch:a,isFetching:o,isRefetching:s}=ae(id(t)),c=(0,G.useMemo)(()=>{let e={};for(let t of i)if(t.users)for(let n of t.users)e[n.id]||(e[n.id]={...n,roles:[]}),e[n.id].roles.push(t);return Object.values(e).sort(Zd)},[i]),l=(0,G.useMemo)(()=>{let e=new Set;for(let t of i)if(qd(t.roleName))for(let n of t.users??[])e.add(n.id);return e.size},[i]),u=(0,G.useMemo)(()=>c?.find(e=>e.id===n),[c,n]),d=(0,G.useCallback)(t=>{let r=[n?`..`:``,t].filter(Boolean);e({to:r.join(`/`)})},[n,e]),f=!!n&&!!u,[p,m]=(0,G.useState)(!1),[h]=(0,G.useState)({attribute:`email`,descending:!1}),g=(0,G.useMemo)(()=>[{desc:h.descending,id:h.attribute}],[h]),_=(0,G.useCallback)(()=>{m(!0)},[m]),v=(0,G.useCallback)(()=>{a(),m(!1)},[a,m]),y=(0,G.useCallback)(e=>{d(e.original.id)},[d]),b=(0,G.useCallback)(()=>{d(void 0)},[d]),x=(0,G.useCallback)(()=>{a(),d(void 0)},[d,a]),S=Qu(a);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vo,{}),(0,W.jsx)(Du,{children:(0,W.jsxs)(G.Suspense,{fallback:(0,W.jsx)(Di,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,W.jsxs)(qu,{data:c,isFetching:o||s,columns:Id,onRowClick:y,sortingState:g,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:S,accessKey:`r`,disabled:o||s,children:[(0,W.jsx)(fn,{}),` `,(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),r&&(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:_,accessKey:`a`,disabled:p,children:[(0,W.jsx)(Nr,{}),` `,(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]})]}),r&&(0,W.jsx)(Vd,{isModalOpen:p,onChangesSaved:v,setIsModalOpen:m}),f&&(0,W.jsx)(Yd,{closeModal:b,data:u,isModalOpen:f,onUserUpdated:x,orgUserCount:c.length,orgAdminCount:l})]})})]})}function $d({className:e,...t}){return(0,W.jsx)(`div`,{"data-slot":`skeleton`,className:P(`bg-primary/10 animate-pulse rounded-md`,e),...t})}function ef({organizationId:e,organizationName:t,providers:n}){return(0,W.jsxs)(Lt,{className:`relative h-full justify-between opacity-90`,children:[(0,W.jsxs)(Pt,{children:[(0,W.jsx)(It,{className:`truncate`,children:e}),(0,W.jsx)(Nt,{children:(0,W.jsx)(`h2`,{children:t})})]}),(0,W.jsxs)(Ft,{className:`flex flex-col gap-2`,children:[(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground flex items-center gap-1.5 mb-1`,children:[(0,W.jsx)(mr,{className:`size-3 shrink-0`}),`Sign in with an OAuth provider to access this organization.`]}),n.map(e=>(0,W.jsx)(`a`,{href:Dd(e.oauthConfigId),children:(0,W.jsxs)(F,{variant:`outline`,className:`w-full`,children:[`Sign in with `,e.name]})},e.oauthConfigId))]})]})}var tf=b({couponId:S().nonempty({message:`Please enter a coupon ID.`}).trim()});async function nf({organizationId:e,couponId:t}){let{data:n}=await N.post(`/Coupon`,{organizationId:e,couponId:t},{validateStatus:e=>e>=200&&e<400||e===400||e===409});return n}function rf(){return I({mutationFn:nf})}function af({organizationId:e,organizationName:t,isOpen:n,onClose:r}){let{mutate:i,isPending:a}=rf(),o=bt({resolver:_t(tf),defaultValues:{couponId:``}}),{handleSubmit:s,control:c,reset:l}=o;(0,G.useEffect)(()=>{n&&l({couponId:``})},[n,l]);let u=(0,G.useCallback)(n=>{i({organizationId:e,couponId:n.couponId},{onSuccess:i=>{i?H.error(`Error`,{description:i||`Failed to add coupon.`}):(H.success(`Success`,{description:`Coupon "${n.couponId}" added to ${t||e}.`}),r())}})},[i,e,t,r]);return(0,W.jsx)(qt,{open:n,onOpenChange:e=>!e&&r(),children:(0,W.jsxs)(tn,{children:[(0,W.jsxs)(Zt,{children:[(0,W.jsx)(Jt,{children:`Add Coupon`}),(0,W.jsxs)(Ht,{children:[`Add a coupon code to`,` `,t||e,`. This coupon will be applied to the next billing cycle.`,(0,W.jsx)(`br`,{}),`Coupons can be created in our`,` `,(0,W.jsx)(`a`,{href:`https://dashboard.stripe.com/`,target:`_blank`,rel:`noreferrer`,className:`text-purple hover:underline`,children:`Stripe Dashboard`}),`.`]})]}),(0,W.jsx)(q,{...o,children:(0,W.jsxs)(`form`,{onSubmit:s(u),children:[(0,W.jsx)(`div`,{className:`grid gap-4 py-4`,children:(0,W.jsx)(Y,{control:c,name:`couponId`,render:({field:e})=>(0,W.jsxs)(X,{className:`grid items-center gap-4`,children:[(0,W.jsx)(Z,{children:`Coupon ID`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,placeholder:`e.g. 100OFF`,disabled:a})}),(0,W.jsx)(Q,{})]})})}),(0,W.jsxs)(Ut,{children:[(0,W.jsx)(F,{type:`button`,variant:`ghost`,onClick:r,disabled:a,children:`Cancel`}),(0,W.jsx)(F,{type:`submit`,disabled:a,children:a?`Adding...`:`Add Coupon`})]})]})})]})})}function of({organizationRole:e,onDeleteOrgModal:t}){let{organizationId:n,organizationName:r,roleName:i}=e,{remove:a,update:o}=ss(n),s=o,{view:c}=cs(n),l=ze(),[u,d]=(0,G.useState)(!1),f=(0,G.useCallback)(()=>{t(e)},[t,e]),p=[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`sep-top`},{key:`clusters`,to:`${n}`,icon:(0,W.jsx)(Br,{className:`size-4 mr-2 text-blue-500`}),label:`Clusters`},c&&{key:`roles`,to:`${n}/roles`,icon:(0,W.jsx)(Hr,{className:`size-4 mr-2 text-purple`}),label:`Roles`},c&&{key:`users`,to:`${n}/users`,icon:(0,W.jsx)(ii,{className:`size-4 mr-2 text-orange-500`}),label:`Users`},s&&{key:`billing`,to:`${n}/billing`,icon:(0,W.jsx)(Zn,{className:`size-4 mr-2 text-green-500`}),label:`Billing`},o&&{key:`settings`,to:`${n}/settings`,icon:(0,W.jsx)(mr,{className:`size-4 mr-2 text-yellow-500`}),label:`Settings`},l&&{key:`add-coupon`,onClick:()=>d(!0),icon:(0,W.jsx)(Qr,{className:`size-4 mr-2 text-pink-500`}),label:`Add Coupon`},{type:`separator`,key:`sep-bottom`},{key:`delete`,onClick:f,className:`focus:bg-red/70 focus:text-white`,icon:(0,W.jsx)($r,{className:`size-4 mr-2 text-red-500`}),label:`Delete`}].filter(Zi);return(0,W.jsx)(as,{items:a?p:[],children:(0,W.jsxs)(Lt,{className:`relative h-full justify-between transition-[transform,box-shadow] duration-200 hover:scale-[1.02] hover:shadow-lg hover:ring-2 hover:ring-primary/60 dark:hover:ring-violet-400/70`,children:[(0,W.jsx)(V,{to:n,"aria-label":`View ${r??n}`,className:`absolute inset-0 rounded-[inherit] focus-visible:ring-2 focus-visible:ring-purple-200 focus-visible:outline-none`}),(0,W.jsxs)(Pt,{children:[(0,W.jsxs)(It,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`truncate`,children:n}),a&&(0,W.jsxs)(li,{children:[(0,W.jsx)(ui,{"aria-label":`Options`,onClick:e=>e.stopPropagation(),className:`relative z-10 -m-2 p-2 rounded-md hover:bg-accent/60 hover:text-foreground`,children:(0,W.jsx)($n,{})}),(0,W.jsx)(di,{children:is(p,`dropdown`)})]})]}),(0,W.jsx)(Nt,{children:(0,W.jsx)(`h2`,{children:r})})]}),(0,W.jsxs)(Ft,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(oo,{className:`min-w-0 shrink`,title:Da(i),children:(0,W.jsx)(`span`,{className:`truncate`,children:Da(i)})}),(0,W.jsxs)(`span`,{className:`text-sm shrink-0 py-2 whitespace-nowrap ml-auto`,children:[`View `,(0,W.jsx)(On,{className:`inline-block`})]})]}),(0,W.jsx)(af,{organizationId:n,organizationName:r,isOpen:u,onClose:()=>d(!1)})]})})}async function sf(e){let{data:t}=await N.delete(`/Organization/${e}`);return t}function cf(){return I({mutationFn:e=>sf(e)})}async function lf(e){let{data:t}=await N.post(`/Organization/`,{...e});return t}function uf(){return I({mutationFn:e=>lf(e)})}var df=S().max(62,{error:`Must be at most 62 characters long.`}).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{error:`Please only use lowercase letters, digits and dashes (-) in the subdomain. Must not start or end with a dash.`}),ff=b({name:S().max(255,{error:`Name cannot be longer than 255 characters.`}),subdomain:M([O(``),A(),df]).optional()});function pf(){let{user:e}=Ie(),t=Oe(),n=bt({resolver:_t(ff),defaultValues:{name:``,subdomain:``}}),{setFocus:r,watch:i}=n;(0,G.useEffect)(()=>{r(`name`)},[r]);let a=`${e?.firstname} ${e?.lastname} Org`,o=i(`name`)||a,s=i(`subdomain`),c=(0,G.useMemo)(()=>{let e=cc(uc(o),df.maxLength);return{suggestedSubdomain:e,fullHostName:`future-cluster-names.${s||e}.harperfabric.com`}},[o,s]),{mutate:l,isPending:d}=uf(),f=ie(),p=(0,G.useCallback)(async e=>{l({name:e.name||a,subdomain:e.subdomain||c.suggestedSubdomain},{onSuccess:e=>{f.invalidateQueries({queryKey:m,refetchType:`active`}),u.reloadUser(h),t({to:`/${e.id}`})}})},[c.suggestedSubdomain,f,l,a,t]);return(0,W.jsx)(W.Fragment,{children:(0,W.jsx)(q,{...n,children:(0,W.jsxs)(`form`,{id:`org-add-form`,name:`org-add-form`,onSubmit:n.handleSubmit(p),className:`grid gap-6 text-foreground max-w-xl`,children:[(0,W.jsx)(Y,{control:n.control,name:`name`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,maxLength:ff.shape.name.maxLength,autoCapitalize:`words`,placeholder:a,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:n.control,name:`subdomain`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Subdomain`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,maxLength:df.maxLength,autoCapitalize:`none`,placeholder:c.suggestedSubdomain,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Full Host Name`}),(0,W.jsx)(J,{children:(0,W.jsx)(`span`,{children:c.fullHostName})}),(0,W.jsx)(Q,{})]}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:d,children:[`Create New Organization `,(0,W.jsx)(On,{})]})})]})})})}function mf(){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vo,{}),(0,W.jsx)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:(0,W.jsx)(pf,{})})]})}var hf={org:`organization`,clu:`cluster`,ins:`instance`},gf=/^(org|clu|ins)-[a-z0-9]+$/;function _f(e){if(typeof e!=`string`)return null;let t=e.trim(),n=gf.exec(t);return n?{kind:hf[n[1]],id:t}:null}function vf(e,t){let n=e*12;return`/Admin/Organization/?${[...t?[`name=ct=${encodeURIComponent(t)}`]:[],`status=ne=DELETED`,`sort(name)`,`limit(${n},${n+12+1})`].join(`&`)}`}async function yf(e,t){let{data:n}=await N.get(vf(e,t));return{organizations:n.slice(0,12),hasNextPage:n.length>12}}var bf={organizations:[],hasNextPage:!1};function xf(e){return e instanceof v&&(e.response?.status===404||e.status===404)}async function Sf(e){try{let{data:t}=await N.get(`/Admin/Organization/${e}`);return t?{organizations:[t],hasNextPage:!1}:bf}catch(e){if(xf(e))return bf;throw e}}async function Cf(e){try{let{data:t}=await N.get(`/Cluster/${e}`),n=t?.organizationId;return n?await Sf(n):bf}catch(e){if(xf(e))return bf;throw e}}function wf(e,t){let n=_f(t);return B({queryKey:[`admin-all-organizations`,t,e],queryFn:()=>n?.kind===`organization`?Sf(n.id):n?.kind===`cluster`?Cf(n.id):yf(e,t),placeholderData:le,retry:!1})}function Tf(e,t=300,n){let[r,i]=(0,G.useState)(e);return(0,G.useEffect)(()=>{let n=setTimeout(()=>i(e),t);return()=>clearTimeout(n)},[n?n(e):e,t]),r}function Ef(e,t){if(e===t)return!0;if(!e||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let i of n)if(!r.includes(i)||e[i]!==t[i])return!1;return!0}function Df(e,t){let[n,r]=(0,G.useState)(t),[i,a]=(0,G.useState)(e);return(0,G.useEffect)(()=>{Ef(n,t)||(r(t),a(e))},[n,t,e]),Ef(n,t)?[i,a]:[e,a]}var Of={};function kf(e,t,n){let r=(0,G.useCallback)((e,n)=>t(e,n),[n]);(0,G.useEffect)(()=>(Of[e]||(Of[e]=[]),Of[e].push(r),function(){let t=Of[e].indexOf(r);t>=0&&Of[e].splice(t,1)}),[e,t,r])}function Af(e,t,n){let r=Of[e];if(r)for(let e of r)e(t,n)}function jf(e,t,n){return r=>Af(e,t,n??r)}function Mf(e,t,n){return(0,G.useCallback)(r=>Af(e,t,n??r),[e,t,n])}function Nf(e,t){return _n(sessionStorage.getItem(String(e)))??t}function Pf(e,t){t==null?sessionStorage.removeItem(String(e)):sessionStorage.setItem(String(e),JSON.stringify(t))}function Ff(e,t){let n=Df(Nf(e,t),[e]),[r,i]=n;return(0,G.useEffect)(()=>{Pf(e,r),Af(`Session:${e}`,r)},[e,r]),kf(`Session:${e}`,function(e){r!==e&&i(e)},[r,e,t]),(0,G.useEffect)(function(){let n=n=>{n.key===e&&i(Nf(e,t))};return window.addEventListener(`storage`,n),()=>{window.removeEventListener(`storage`,n)}},[e,i,t]),n}function If(){let e=ie(),{data:t}=ae(c()),{mutate:n,isPending:r}=cf(),[i,a]=(0,G.useState)(!1),[o,s]=(0,G.useState)(null),[l,u]=(0,G.useState)(``),d=(0,G.useCallback)(()=>u(``),[]),f=ze(),[p,m]=Ff(`ShowAllOrganizations`,!1),[h,g]=(0,G.useState)(0),_=f&&p,v=(0,G.useCallback)(e=>{m(e),g(0)},[m]),y=Tf(l,300),b=(0,G.useMemo)(()=>{if(!f)return null;let e=_f(y);return e?.kind===`organization`||e?.kind===`cluster`?e:null},[f,y]),x=_||!!b,{data:S,isPending:C}=R({...wf(h,y),enabled:x}),{organizationRoles:w,oauthLockedOrgs:T}=(0,G.useMemo)(()=>{let e=t?.roles||{},n=[],r=[];for(let[t,i]of Object.entries(e))`oauthProviders`in i&&!f?r.push({organizationId:t,organizationName:i.organizationName,providers:i.oauthProviders}):n.push({organizationId:t,organizationName:i.organizationName,roleName:i.role??`fabric admin`});return{organizationRoles:n.filter(ju([`organizationId`,`organizationName`],l)).sort((e,t)=>(e.organizationName||``)>(t.organizationName||``)?1:-1),oauthLockedOrgs:r}},[l,t?.roles,f]),E=(0,G.useMemo)(()=>{let e=t?.roles||{};return(S?.organizations||[]).map(t=>({organizationId:t.id,organizationName:t.name,roleName:e[t.id]?.role||`fabric admin`}))},[S?.organizations,t?.roles]),D=x?E:w,O=(0,G.useCallback)(e=>{u(e.currentTarget.value||``),g(0)},[]),k=(0,G.useCallback)(t=>{t?.organizationId&&n(t.organizationId,{onSuccess:()=>{H.success(`Success`,{description:`Organization successfully deleted.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),e.invalidateQueries({queryKey:[]}),a(!1)},onError:()=>a(!1)})},[n,e,a]),A=(0,G.useCallback)(e=>{s(e),a(!0)},[]),{createCluster:j}=ce({strict:!1});return!_&&w.length===1&&!l.length&&j?(0,W.jsx)(de,{to:`/${w[0].organizationId}/new-cluster`,replace:!0}):!_&&!w.length&&!T.length&&!l.length?(0,W.jsx)(mf,{}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vo,{children:(0,W.jsxs)(`div`,{className:`flex w-full items-center justify-end gap-2`,children:[f&&(0,W.jsxs)(`label`,{className:`flex shrink-0 cursor-pointer items-center gap-2 text-xs`,children:[(0,W.jsx)(Ed,{checked:p,onCheckedChange:v,"aria-label":`Show all organizations`}),(0,W.jsx)(`span`,{className:`hidden sm:inline-block`,children:`All Orgs`})]}),(0,W.jsx)($,{placeholder:`Filter by name`,className:`inline-block w-full text-xs`,value:l,onChange:O}),(0,W.jsx)(V,{to:`/new-org`,children:(0,W.jsxs)(F,{variant:`positive`,accessKey:`n`,children:[(0,W.jsx)(Nr,{}),(0,W.jsxs)(`span`,{className:`hidden sm:inline-block`,children:[(0,W.jsx)(`u`,{children:`N`}),`ew `,(0,W.jsx)(`span`,{className:`hidden md:inline-block`,children:`Organization`})]})]})})]})}),(0,W.jsxs)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-12`,children:[!x&&T.map(e=>(0,W.jsx)(`div`,{className:`col-span-1 md:col-span-4 lg:col-span-3 2xl:col-span-2`,children:(0,W.jsx)(ef,{organizationId:e.organizationId,organizationName:e.organizationName,providers:e.providers})},e.organizationId)),x&&C?Array.from({length:12},(e,t)=>(0,W.jsx)($d,{className:`col-span-1 h-40 md:col-span-4 lg:col-span-3 2xl:col-span-2`},t)):D.map(e=>(0,W.jsx)(`div`,{className:`col-span-1 md:col-span-4 lg:col-span-3 2xl:col-span-2`,children:(0,W.jsx)(of,{organizationRole:e,onDeleteOrgModal:A})},e.organizationId)),!D.length&&!(x&&C)&&(x||!T.length)&&(0,W.jsxs)(`div`,{className:`col-span-1 md:col-span-12 text-center`,children:[(0,W.jsx)(`h2`,{className:`my-4 text-xl`,children:`No matches found.`}),(0,W.jsx)(F,{variant:`outline`,onClick:d,children:`Clear Filters`})]})]}),x&&(h>0||S?.hasNextPage)&&(0,W.jsxs)(`div`,{className:`flex items-center justify-center gap-4 py-6`,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,size:`sm`,className:`select-none`,disabled:h===0,onClick:()=>g(e=>e-1),children:[(0,W.jsx)(an,{}),`Previous`]}),(0,W.jsxs)(`span`,{className:`text-sm text-gray-500 dark:text-gray-400`,children:[`Page `,h+1]}),(0,W.jsxs)(F,{variant:`defaultOutline`,size:`sm`,className:`select-none`,disabled:!S?.hasNextPage,onClick:()=>g(e=>e+1),children:[`Next`,(0,W.jsx)(On,{})]})]})]}),o&&(0,W.jsx)(Yo,{typeOfThingBeingDeleted:`organization`,nameOfThingBeingDeleted:o.organizationName,isModalOpen:i,setIsModalOpen:()=>a(!1),deletionConfirmed:()=>k(o),deletionPending:r})]})}var Lf=z({getParentRoute:()=>ma,id:`_orgsLayout`});z({getParentRoute:()=>Lf,path:`/`,head:()=>({meta:[{title:`Organizations — Harper Fabric`}]}),component:If}),z({getParentRoute:()=>Lf,path:`/new-org`,head:()=>({meta:[{title:`New Organization — Harper Fabric`}]}),component:mf});var Rf=z({getParentRoute:()=>Lf,path:`$organizationId`,beforeLoad:async e=>{let{organizationId:t}=e.params;if(!ic(t))throw _e({to:`/`});return{organization:await e.context.queryClient.ensureQueryData(oc(t))}}});z({getParentRoute:()=>Rf,path:`/roles`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:Td}),z({getParentRoute:()=>Rf,path:`/roles/$orgRoleId`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:Td}),z({getParentRoute:()=>Rf,path:`/users`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:Qd}),z({getParentRoute:()=>Rf,path:`/users/$orgUserId`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:Qd}),z({getParentRoute:()=>Rf,path:`/settings`,component:jd}),nd(Rf);var zf=z({getParentRoute:()=>Rf,id:`_clusterLayout`});z({getParentRoute:()=>zf,path:`/`,head:()=>({meta:[{title:`Clusters — Harper Fabric`}]}),component:Mu}),z({getParentRoute:()=>Rf,path:`/new-cluster`,head:()=>({meta:[{title:`New Cluster — Harper Fabric`}]}),component:Eu}),z({getParentRoute:()=>Vf,path:`/edit`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:Eu}),z({getParentRoute:()=>Vf,path:`/edit/$mode`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:Eu});function Bf(){return(0,W.jsx)(Se,{})}var Vf=z({getParentRoute:()=>zf,path:`$clusterId`,component:Bf,beforeLoad:async({context:e,params:t})=>({cluster:await e.queryClient.ensureQueryData(Va(t.clusterId))})});function Hf({cluster:e}){let t=ne(),n=ie(),{update:r,remove:i}=ls(e.organizationId,e.id),{run:a,isPending:o}=Os(e),{mutate:s,isPending:c}=ws(),[l,u]=(0,G.useState)(!1),[d,f]=(0,G.useState)(!1),[p,m]=(0,G.useState)(!1),[h,g]=(0,G.useState)(null),_=e.status===`RUNNING`,v=e.status===`STOPPED`,y=e.status===`PARTIAL`,b=!r||o,x=(0,G.useCallback)(()=>{s(e.id,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),m(!1),H.success(`Success`,{description:`Cluster successfully terminated.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),t.navigate({to:`/${e.organizationId}`})},onError:()=>{m(!1)}})},[e.id,e.organizationId,s,n,t]),S=(0,G.useCallback)(()=>{let e=h;g(null),e&&a(e,{safeMode:!0,strategy:`parallel`,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})},[h,a]);return gs(e)||!r&&!i?null:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(li,{children:[(0,W.jsx)(ui,{asChild:!0,children:(0,W.jsxs)(F,{variant:`outline`,size:`sm`,disabled:o,className:`gap-1.5 hover:translate-y-0 data-[state=open]:[&>svg]:rotate-180`,children:[`Cluster actions`,(0,W.jsx)(dn,{className:`size-4 transition-transform`})]})}),(0,W.jsxs)(di,{align:`end`,className:`w-56`,children:[(0,W.jsx)(mi,{className:`text-gray-600 text-xs`,children:`Container`}),(0,W.jsxs)(fi,{disabled:b||!(v||y),onClick:()=>void a(`start`,{safeMode:!1,strategy:`parallel`}),children:[(0,W.jsx)(Mr,{}),` Start`]}),(0,W.jsxs)(fi,{disabled:b||!v,onClick:()=>g(`start`),children:[(0,W.jsx)(_r,{}),` Start in safe mode`]}),(0,W.jsxs)(fi,{disabled:b||!(_||y),onClick:()=>f(!0),children:[(0,W.jsx)(Ir,{}),` Restart`]}),(0,W.jsxs)(fi,{disabled:b||!_,onClick:()=>g(`restart`),children:[(0,W.jsx)(_r,{}),` Restart in safe mode`]}),(0,W.jsxs)(fi,{variant:`destructive`,disabled:b||!(_||y),onClick:()=>u(!0),children:[(0,W.jsx)(Kr,{}),` Stop`]}),(0,W.jsx)(hi,{}),(0,W.jsxs)(fi,{variant:`destructive`,disabled:!i,onClick:()=>m(!0),children:[(0,W.jsx)(ei,{}),` Terminate`]})]})]}),(0,W.jsx)(ys,{clusterName:e.name,isPending:o,stopOpen:l,setStopOpen:u,onConfirmStop:()=>{u(!1),a(`stop`,{strategy:`parallel`})},restartOpen:d,setRestartOpen:f,onConfirmRestart:e=>{f(!1),a(`restart`,{safeMode:!1,strategy:e})}}),(0,W.jsx)(Ss,{open:h!==null,setOpen:e=>{e||g(null)},action:h??`restart`,targetName:e.name,scope:`cluster`,isPending:o,onConfirm:S}),(0,W.jsx)(Yo,{typeOfThingBeingDeleted:`cluster`,transitiveVerb:`Terminate`,presentParticiple:`Terminating`,nameOfThingBeingDeleted:e.name,isModalOpen:p,setIsModalOpen:m,deletionConfirmed:x,deletionPending:c})]})}function Uf(){let{clusterId:e}=L({strict:!1}),t=ne(),n=Oe(),{data:r}=R(Va(e,!0)),{user:i,isLoading:a}=Fe(e),{view:o,update:c}=ls(r?.organizationId,r?.id),[l,f]=(0,G.useState)(!1),p=r?.domains?.[0]?.domain||r?.fqdn||``,[m,h]=js(p,p?`https://${p}`:``),_=r?`/${r.organizationId}/${r.id}`:``,v=(0,G.useCallback)(async()=>{if(r){f(!0);try{await u.establishFabricConnectAuth({id:r.id,operationsUrl:s(r)}),await t.invalidate()}catch{H.error(`Could not connect to this cluster through Fabric Connect.`)}finally{f(!1)}}},[r,t]),y=(0,G.useCallback)(()=>{r&&(u.setUserForEntity(r,null),u.flagForFabricConnect(r.id,!1)),n({to:`${_}/sign-in`})},[_,r,n]),b=(0,G.useCallback)(async()=>{if(r){try{await d({instanceClient:g({id:r.id}),entityId:r.id})}catch{}u.setUserForEntity(r,null),u.flagForFabricConnect(r.id,!1),u.flagForBasicAuth(r.id,null),await t.invalidate()}},[r,t]);if(!r)return(0,W.jsx)(Gf,{children:(0,W.jsx)(Kf,{})});if(!o)return(0,W.jsx)(de,{to:`/${r.organizationId}`,replace:!0});if(gs(r))return(0,W.jsx)(Wf,{cluster:r});if(!r.fqdn)return(0,W.jsx)(de,{to:`${_}/instances`,replace:!0});if(r.resetPassword)return c?(0,W.jsx)(de,{to:`${_}/${r.status&&Pa.includes(r.status)?`finish-setup`:`starting-up`}`,replace:!0}):(0,W.jsx)(Gf,{children:(0,W.jsxs)(`div`,{className:`text-center py-12`,children:[(0,W.jsx)(Br,{className:`size-12 text-muted-foreground mx-auto mb-4`}),(0,W.jsx)(`h1`,{className:`text-xl font-medium mb-2 text-foreground`,children:`Pending Owner Setup`}),(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground max-w-md mx-auto`,children:`This cluster needs an administrator to finish setup before it can be used.`})]})});let x=u.checkForFabricConnect(r.id),S=!!i,C=u.getLastConnectMode(r.id),w=(r.instances??[]).filter(e=>e.status&&!Fa.includes(e.status)).length,T=r.instances??[],E=!!r.status&&Pa.includes(r.status)&&T.length>0&&T.every(e=>e.safeMode);return(0,W.jsxs)(Gf,{children:[(0,W.jsxs)(`div`,{className:`flex items-start gap-4 mb-6`,children:[(0,W.jsx)(`div`,{className:`flex items-center justify-center size-12 rounded-xl bg-violet-50 text-primary dark:bg-grey-700 dark:text-violet-300 shrink-0`,children:(0,W.jsx)(Br,{className:`size-6`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light text-foreground`,children:r.name}),(0,W.jsx)(qf,{status:r.status}),E&&(0,W.jsx)(Jf,{})]}),(0,W.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-sm text-muted-foreground`,children:[(0,W.jsxs)(`span`,{children:[w,` `,w===1?`instance`:`instances`]}),(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,W.jsxs)(`a`,{href:`https://${p}`,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 hover:text-foreground hover:underline`,children:[p,(0,W.jsx)(er,{className:`size-3`})]}),(0,W.jsxs)(li,{children:[(0,W.jsx)(ui,{"aria-label":`Copy cluster URLs`,className:`rounded-md p-1 -m-1 hover:bg-accent/60 hover:text-foreground`,children:(0,W.jsx)(Xn,{className:`size-3.5`})}),(0,W.jsxs)(di,{align:`start`,children:[(0,W.jsx)(fi,{onClick:m,children:`Copy host name`}),(0,W.jsx)(fi,{onClick:h,children:`Copy API URL`})]})]})]})]}),(0,W.jsx)(Hf,{cluster:r})]}),a?(0,W.jsx)(Kf,{}):S?(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 text-sm`,children:[(0,W.jsx)(Vn,{className:`size-4 text-green shrink-0`}),(0,W.jsx)(`span`,{className:`font-medium text-green`,children:x?`Connected via Fabric Connect`:`Signed in directly`}),(0,W.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`· `,x?`through your Harper account`:`session cookie`]})]}),(0,W.jsxs)(V,{to:`${_}/apps`,className:`group flex items-center gap-4 rounded-2xl border-2 border-primary/30 bg-primary/5 p-6 transition-all hover:border-primary hover:bg-primary/10 dark:border-violet-400/30 dark:bg-violet-400/5 dark:hover:border-violet-400 dark:hover:bg-violet-400/10`,children:[(0,W.jsx)(`div`,{className:`flex size-12 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 dark:bg-violet-400/15 dark:text-violet-300`,children:(0,W.jsx)(Pr,{className:`size-6`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`div`,{className:`text-lg font-medium text-foreground`,children:`Enter cluster`}),(0,W.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Open the studio — apps, databases, APIs, logs, and config.`})]}),(0,W.jsx)(On,{className:`size-5 text-muted-foreground transition-transform group-hover:translate-x-1`})]}),(0,W.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-4 text-sm`,children:[x&&(0,W.jsx)(`button`,{type:`button`,onClick:y,className:`text-muted-foreground hover:text-foreground transition-colors`,children:`Switch to direct sign-in`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void b(),className:`text-muted-foreground hover:text-destructive transition-colors`,children:x?`Disconnect`:`Direct sign out`})]})]}):(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-sm font-medium text-foreground mb-3`,children:`Connect to this cluster`}),(0,W.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3.5`,children:[c&&!gs(r)&&(0,W.jsx)(Yf,{icon:ai,title:`Fabric Connect`,description:`Connect through your Harper account. No cluster credentials needed.`,pill:C===`fabric`?`last`:C?void 0:`recommended`,children:(0,W.jsx)(F,{className:`w-full`,disabled:l,onClick:()=>void v(),children:l?(0,W.jsx)(yr,{className:`animate-spin`}):`Fabric Connect`})}),(0,W.jsx)(Yf,{icon:mr,title:`Direct sign-in`,description:`Sign in with this cluster's Harper username and password.`,pill:C===`direct`?`last`:void 0,children:(0,W.jsx)(F,{className:`w-full`,variant:`outline`,onClick:y,children:`Direct sign-in`})})]})]})]})}function Wf({cluster:e}){let t=ne(),n=Oe(),r=`/${e.organizationId}/${e.id}`,i=(0,G.useMemo)(()=>(e.instances??[]).filter(e=>e.status&&!Fa.includes(e.status)).sort(Ys),[e.instances]),a=i.at(0),{user:o,isLoading:s}=Fe(a?.id),c=!!a&&!!o,l=(0,G.useCallback)(()=>{a&&n({to:`${r}/instance/${a.id}/sign-in`})},[r,a,n]),f=(0,G.useCallback)(async()=>{if(a){try{await d({instanceClient:g({id:a.id,operationsUrl:p(a)}),entityId:a.id})}catch{}u.setUserForEntity(a,null),u.flagForBasicAuth(a.id,null),await t.invalidate()}},[a,t]);return(0,W.jsxs)(Gf,{children:[(0,W.jsxs)(`div`,{className:`flex items-start gap-4 mb-6`,children:[(0,W.jsx)(`div`,{className:`flex items-center justify-center size-12 rounded-xl bg-violet-50 text-primary dark:bg-grey-700 dark:text-violet-300 shrink-0`,children:(0,W.jsx)(Br,{className:`size-6`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light text-foreground`,children:e.name}),(0,W.jsx)(`span`,{className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full text-muted-foreground bg-muted`,children:`Self-Hosted`})]}),(0,W.jsx)(`div`,{className:`mt-1 text-sm text-muted-foreground`,children:(0,W.jsxs)(V,{to:`${r}/instances`,className:`hover:text-foreground hover:underline`,children:[i.length,` `,i.length===1?`instance`:`instances`]})})]})]}),a?s?(0,W.jsx)(Kf,{}):c?(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 text-sm`,children:[(0,W.jsx)(Vn,{className:`size-4 text-green shrink-0`}),(0,W.jsx)(`span`,{className:`font-medium text-green`,children:`Signed in directly`}),(0,W.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`· `,a.name||a.instanceFqdn]})]}),(0,W.jsxs)(V,{to:`${r}/instance/${a.id}/`,className:`group flex items-center gap-4 rounded-2xl border-2 border-primary/30 bg-primary/5 p-6 transition-all hover:border-primary hover:bg-primary/10 dark:border-violet-400/30 dark:bg-violet-400/5 dark:hover:border-violet-400 dark:hover:bg-violet-400/10`,children:[(0,W.jsx)(`div`,{className:`flex size-12 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 dark:bg-violet-400/15 dark:text-violet-300`,children:(0,W.jsx)(Pr,{className:`size-6`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`div`,{className:`text-lg font-medium text-foreground`,children:`Enter cluster`}),(0,W.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Open the studio — apps, databases, APIs, logs, and config.`})]}),(0,W.jsx)(On,{className:`size-5 text-muted-foreground transition-transform group-hover:translate-x-1`})]}),(0,W.jsx)(`div`,{className:`mt-4 flex flex-wrap gap-4 text-sm`,children:(0,W.jsx)(`button`,{type:`button`,onClick:()=>void f(),className:`text-muted-foreground hover:text-destructive transition-colors`,children:`Direct sign out`})})]}):(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-sm font-medium text-foreground mb-3`,children:`Connect to this cluster`}),(0,W.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3.5`,children:(0,W.jsx)(Yf,{icon:mr,title:`Direct sign-in`,description:`Sign in with this instance's Harper username and password.`,children:(0,W.jsx)(F,{className:`w-full`,variant:`outline`,onClick:l,children:`Direct sign-in`})})})]}):(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`This cluster has no instances yet. Register one from the`,` `,(0,W.jsx)(V,{to:`${r}/instances`,className:`underline hover:text-foreground`,children:`Instances`}),` page.`]})]})}function Gf({children:e}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vo,{}),(0,W.jsx)(Is,{children:(0,W.jsx)(`div`,{className:`max-w-3xl`,children:e})})]})}function Kf(){return(0,W.jsx)(`div`,{className:`flex justify-center py-10 text-muted-foreground`,children:(0,W.jsx)(yr,{className:`size-6 animate-spin`})})}function qf({status:e}){return(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full ${e&&Pa.includes(e)?`text-green bg-green/10`:e===`STOPPED`?`text-destructive bg-destructive/10`:e===`PARTIAL`?`text-yellow bg-yellow/10`:`text-muted-foreground bg-muted`}`,children:[(0,W.jsx)(`span`,{className:`size-1.5 rounded-full bg-current`}),e?e.charAt(0)+e.slice(1).toLowerCase():`Unknown`]})}function Jf(){return(0,W.jsxs)(`span`,{title:`All instances running in safe mode — user apps/components are not loaded`,className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full text-yellow bg-yellow/10`,children:[(0,W.jsx)(_r,{className:`size-3`}),`Safe mode`]})}function Yf({icon:e,title:t,description:n,pill:r,children:i}){return(0,W.jsxs)(`div`,{className:`relative rounded-xl p-4.5 bg-card border ${r===`last`?`border-2 border-green`:r===`recommended`?`border-2 border-primary dark:border-violet-400`:`border-border`}`,children:[r&&(0,W.jsx)(`span`,{className:`absolute -top-2.5 left-4 rounded-full bg-card`,children:(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full ${r===`last`?`text-green bg-green/15`:`text-primary bg-violet-50 dark:text-violet-300 dark:bg-grey-700`}`,children:[r===`last`&&(0,W.jsx)(`span`,{className:`size-1.5 rounded-full bg-current`}),r===`last`?`Last used`:`Recommended`]})}),(0,W.jsx)(e,{className:`size-6 text-primary dark:text-violet-300 mb-2`}),(0,W.jsx)(`div`,{className:`text-[15px] font-medium text-foreground mb-1`,children:t}),(0,W.jsx)(`p`,{className:`text-[13px] text-muted-foreground leading-normal mb-4`,children:n}),i]})}function Xf({children:e,className:t}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vo,{}),(0,W.jsx)(Is,{children:(0,W.jsx)(`div`,{className:t,children:e})})]})}var Zf=new Set([`com`,`co`,`org`,`net`,`edu`,`gov`,`mil`,`me`,`biz`,`info`,`ac`,`or`,`ne`,`go`,`lg`,`asn`,`id`,`nom`,`sch`,`ltd`,`plc`]);function Qf(e){let t=e.split(`.`);if(t.length<=2)return`@`;let n=t[t.length-1],r=t[t.length-2],i=n.length===2&&Zf.has(r)?3:2;return t.length<=i?`@`:t.slice(0,-i).join(`.`)}function $f({cluster:{fqdn:e},domain:{domain:t,id:n}}){let r=Qf(t),[i,a,o]=js(r,e||``,n);return(0,W.jsxs)(`div`,{className:`grid gap-4 grid-cols-1 md:grid-cols-[80px_1fr] pb-6`,children:[(0,W.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap`,children:`This domain has been verified! Now to associate it with this cluster, add the following to your DNS registrar:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`CNAME`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordName`,value:r,onClick:i}),(0,W.jsx)(F,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:i,children:(0,W.jsx)(Xn,{className:`w-3.5 h-3.5`})})]})}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Target:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordTarget`,value:e,onClick:a}),(0,W.jsx)(F,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:a,children:(0,W.jsx)(Xn,{className:`w-3.5 h-3.5`})})]})}),(0,W.jsx)(`div`,{className:`col-span-1 text-xs`,children:`Domain ID:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-0.5 text-xs text-muted-foreground italic flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`domainId`,value:n,onClick:o}),(0,W.jsx)(F,{type:`button`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:o,children:(0,W.jsx)(Xn,{className:`w-3 h-3`})})]})}),(0,W.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap italic text-sm`,children:`Select this domain using the checkbox to the left, then click "Bind" in the top right to finish associating it with this cluster.`})]})}function ep({certificate:e,domain:t,cluster:n}){let r=Qf(t.domain),[i,a,o]=js(r,n.fqdn||``,t.id),s=(0,G.useMemo)(()=>e.issueDate&&!e.inProgress?{width:`100%`,color:`bg-green/80`,pulse:!1,text:`Certificate Issued`}:e.inProgress?{width:`100%`,color:`bg-yellow/80`,pulse:!0,text:`Generating Certificate...`}:{width:`100%`,color:`bg-gray-600`,pulse:!1,text:`Pending Certificate Generation...`},[e]);return(0,W.jsxs)(`div`,{className:`w-full max-w-2xl border border-border/50 rounded-md p-4 bg-gray-900/20`,children:[(0,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.jsx)(`div`,{className:`w-full h-1.5 rounded-full overflow-clip flex shadow-sm bg-gray-800`,children:(0,W.jsx)(`div`,{style:{width:s.width},className:`grow transition-[width] duration-1000 ease-in-out motion-reduce:transition-none ${s.color} ${s.pulse?`animate-pulse`:``}`})}),(0,W.jsx)(`div`,{className:`text-[10px] text-muted-foreground font-light mt-1 italic`,children:s.text})]}),(0,W.jsxs)(`div`,{className:`grid gap-2 grid-cols-1 md:grid-cols-[80px_1fr] text-sm`,children:[(0,W.jsx)(`div`,{className:`col-span-1 text-xs text-muted-foreground`,children:`CNAME:`}),(0,W.jsxs)(`div`,{className:`col-span-1 flex gap-2 items-center flex-wrap`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted px-2 py-0.5 rounded text-xs`,children:[(0,W.jsx)(`span`,{className:`truncate max-w-[150px]`,title:r,children:r}),(0,W.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:i,title:`Copy Name`,children:(0,W.jsx)(Xn,{className:`w-3 h-3`})})]}),(0,W.jsx)(tp,{}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted px-2 py-0.5 rounded text-xs`,children:[(0,W.jsx)(`span`,{className:`truncate max-w-[200px]`,title:n.fqdn||``,children:n.fqdn}),(0,W.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:a,title:`Copy Target`,children:(0,W.jsx)(Xn,{className:`w-3 h-3`})})]})]}),(0,W.jsx)(`div`,{className:`col-span-1 text-[10px] text-muted-foreground`,children:`Domain ID:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted px-2 py-0.5 rounded text-[10px] text-muted-foreground italic`,children:[(0,W.jsx)(`span`,{className:`truncate max-w-[200px]`,children:t.id}),(0,W.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,className:`h-3 w-3 p-0`,onClick:o,title:`Copy ID`,children:(0,W.jsx)(Xn,{className:`w-2.5 h-2.5`})})]})})]})]})}function tp(){return(0,W.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`w-3 h-3 text-muted-foreground`,children:[(0,W.jsx)(`path`,{d:`M5 12h14`}),(0,W.jsx)(`path`,{d:`m12 5 7 7-7 7`})]})}function np(e){let{enabled:t,entityId:n,databaseName:r,tableName:i,searchAttribute:a,sort:o,pageIndex:s,pageSize:c,onlyIfCached:l,getAttributes:u}=e;return B({enabled:t,queryKey:[n,r,i,`search_by_value`,a,o.attribute||`default`,o.descending||!1,s||0,c||0,l,u??null],retry:!1,staleTime:6e4,gcTime:5e3,queryFn:()=>rp(e)})}async function rp({instanceClient:e,databaseName:t,tableName:n,searchAttribute:r,sort:i,pageIndex:a,pageSize:o,onlyIfCached:s,getAttributes:c,headers:l}){let u=i.attribute.length&&!(i.attribute===r&&!i.descending),d=await e.post(`/`,{operation:`search_by_value`,get_attributes:c??[`*`],database:t,table:n,search_attribute:r,search_value:`*`,sort:u?i:void 0,offset:a*o,limit:o,onlyIfCached:s,noCacheStore:s},{timeout:0,headers:l,validateStatus:e=>e>=200&&e<400||e===404});return d.status===404?{data:[]}:d}function ip(e){return B({queryKey:[e,`ChallengeCertificate`],queryFn:async()=>{if(!e)return[];let{data:t}=await rp({searchAttribute:`domain`,entityId:e,databaseName:`data`,tableName:`ChallengeCertificate`,sort:{attribute:`domain`,descending:!0},instanceClient:g({id:e,forceFabricConnect:!0}),onlyIfCached:!1,pageIndex:0,pageSize:100});return t},enabled:!!e,refetchInterval:5e3})}function ap(e){return R(ip(e))}function op({domain:{challengeToken:e,challengeTxtRecord:t,domain:n,id:r},cluster:{fqdn:i}}){let a=Qf(n),[o,s,c,l,u]=js(t,e,a,i||``,r);return(0,W.jsxs)(`div`,{className:`grid gap-2 grid-cols-1 md:grid-cols-[80px_1fr] pb-6`,children:[(0,W.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap`,children:`Prove that you own this domain by adding the following to your DNS registrar:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`TXT`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`challengeName`,value:t,onClick:o}),(0,W.jsx)(F,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:o,children:(0,W.jsx)(Xn,{className:`w-3.5 h-3.5`})})]})}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Content:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`challengeToken`,value:e,onClick:s}),(0,W.jsx)(F,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:s,children:(0,W.jsx)(Xn,{className:`w-3.5 h-3.5`})})]})}),(0,W.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap mt-4`,children:`While you're at it, you should also add the CNAME record to point to this cluster:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`CNAME`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordName`,value:a,onClick:c}),(0,W.jsx)(F,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:c,children:(0,W.jsx)(Xn,{className:`w-3.5 h-3.5`})})]})}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,W.jsx)(`div`,{className:`col-span-1`,children:`Target:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordTarget`,value:i,onClick:l}),(0,W.jsx)(F,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:l,children:(0,W.jsx)(Xn,{className:`w-3.5 h-3.5`})})]})}),(0,W.jsx)(`div`,{className:`col-span-1 text-xs`,children:`Domain ID:`}),(0,W.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-0.5 text-xs text-muted-foreground italic flex-1 overflow-hidden`,children:[(0,W.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`domainId`,value:r,onClick:u}),(0,W.jsx)(F,{type:`button`,size:`sm`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:u,children:(0,W.jsx)(Xn,{className:`w-3 h-3`})})]})}),(0,W.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap mt-2`,children:`Then after your DNS TTL elapses, click the "Validate" button above.`})]})}async function sp({clusterId:e,domainIds:t,generateDomainCerts:n}){let{data:r}=await N.put(`/Cluster/${e}`,{domainIds:t,generateDomainCerts:n},{timeout:0});return r}function cp(){return I({mutationFn:e=>sp(e)})}k.object({domainId:k.string()});async function lp(e){let{data:t}=await N.delete(`/Domain/${e.domainId}`);return t}function up(){return I({mutationFn:e=>lp(e)})}function dp(e){return[...new Set(e)]}var fp=ue();function pp(e,t,n){let{data:r}=ap(e.id),i=(0,G.useMemo)(()=>!!r?.some(e=>!e.issueDate||e.inProgress),[r]),{mutate:a,isPending:o}=cp(),{mutate:s,isPending:c}=up(),l=o||c,u=(0,G.useCallback)((t,n)=>{if(!Wo(e.status)){H.error(`Cluster is currently `+e.status,{description:`To bind a domain, it must be running.`});return}a({clusterId:e.id,domainIds:dp((e.domainIds?.slice()||[]).concat([t])),generateDomainCerts:n},{onSuccess:()=>{hn.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),H.success(`Domain bound!`+(n?` Certificates are being generated in the background now.`:``))}})},[a,e]),d=(0,G.useCallback)(t=>{s({domainId:t},{onSuccess:()=>{hn.invalidateQueries({queryKey:[e.organizationId,`domains`],refetchType:`active`}),H.success(`Domain removed!`)}})},[s]),f=(0,G.useCallback)(t=>{a({clusterId:e.id,domainIds:(e.domainIds?.slice()||[]).filter(e=>e!==t),generateDomainCerts:!1},{onSuccess:()=>{hn.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),H.success(`Domain unbound!`)}})},[s]);return(0,G.useMemo)(()=>[fp.display({id:`select`,header:`Bind`,size:50,cell:r=>{let a=r.row.original;return a.status===`ACTIVE`&&!a.clusterId&&!gs(e)?(0,W.jsx)(`label`,{className:`p-10 -m-10`,children:(0,W.jsx)(`input`,{type:`checkbox`,checked:t.includes(a.id),onChange:()=>n(a.id),disabled:l||i})}):null}}),fp.display({header:`Domains`,id:`domain`,enableSorting:!1,size:150,cell:e=>{let t=e.row.original;return(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{children:t.domain}),(0,W.jsx)(F,{type:`button`,variant:`destructiveGhost`,className:`text-muted-foreground text-xs`,disabled:l||!!t.clusterId,onClick:()=>d(t.id),children:`Remove Domain`})]})}),(0,W.jsx)(Rt,{side:`bottom`,align:`center`,children:t.clusterId?`To delete this domain, please unbind it from all clusters first.`:`Remember to clean up your DNS records!`})]})}}),fp.display({header:`Next Steps`,enableSorting:!1,size:500,id:`nextSteps`,cell:t=>{let n=t.row.original,i=r?.find(e=>e.domain===n.domain);return n.status===`ACTIVE`&&n.clusterId?e.id===n.clusterId?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{children:`Bound to this cluster`}),i&&(!i.issueDate||i.inProgress)&&(0,W.jsx)(`div`,{className:`py-2`,children:(0,W.jsx)(ep,{certificate:i,domain:n,cluster:e})}),(0,W.jsx)(F,{type:`button`,variant:`destructiveGhost`,className:`text-muted-foreground text-xs`,disabled:l,onClick:()=>f(n.id),children:`Unbind Domain`})]}):`Bound to cluster ${n.clusterId}`:n.status===`PENDING_VALIDATION`?(0,W.jsx)(op,{domain:n,cluster:e}):gs(e)?`Cannot be associated with this self-managed cluster.`:n.status===`ACTIVE`&&!n.clusterId?(0,W.jsx)($f,{cluster:e,domain:n}):n.status}})],[e,u,l,r,i,t,n])}var mp=k.object({domain:k.string(),organizationId:k.string()});async function hp(e){let{data:t}=await N.post(`/Domain/`,e);return t}function gp(){return I({mutationFn:e=>hp(e)})}async function _p(e){let{data:t}=await N.post(`/Domain/${e}/validate`);return t}async function vp(e){let{data:t}=await N.get(`/Domain/?organizationId=${e}`);return t}function yp(e){return B({queryKey:[e,`domains`],queryFn:()=>vp(e)})}function bp(){let{organizationId:e,clusterId:t}=L({strict:!1}),{data:n}=ae(Va(t,!0)),{update:r}=cs(e),{data:i,refetch:a,isFetching:s,isRefetching:c}=R(yp(e)),l=(0,G.useMemo)(()=>i?.filter(e=>e.status===`PENDING_VALIDATION`)||[],[i]),[u]=(0,G.useState)({attribute:`domain`,descending:!1}),d=(0,G.useMemo)(()=>[{desc:u.descending,id:u.attribute}],[u]),f=Qu(a),[p,m]=(0,G.useState)([]),h=(0,G.useCallback)(e=>{m(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),{mutate:g,isPending:_}=cp(),v=(0,G.useCallback)(()=>{if(!Wo(n.status)){H.error(`Cluster is currently `+n.status,{description:`To bind a domain, it must be running.`});return}g({clusterId:n.id,domainIds:dp((n.domainIds?.slice()||[]).concat(p)),generateDomainCerts:!0},{onSuccess:()=>{hn.invalidateQueries({queryKey:[n.organizationId],refetchType:`active`}),H.success(`Domain(s) bound! Certificates are being generated in the background now.`),m([])}})},[n,p,g]),{mutateAsync:y,isPending:b}=gp(),x=bt({resolver:_t(mp),defaultValues:{domain:``,organizationId:e}}),S=(0,G.useCallback)(async e=>{if(e){let t=e.domain.split(/[,\s]+/).map(e=>e.trim()).filter(Boolean);for(let n of t)await y({...e,domain:n});x.reset(),await a(),H.success(`${o(t.length,`Domain`,`Domains`)} added! Please add the txt record above to your domain registrar.`)}},[y,x,a]),C=(0,G.useCallback)(async()=>{let e=`Validating ${o(l.length,`domain`,`domains`)}...`,t=`validatingDomains`,n=0,r=0;for(let i of l)try{H.loading(e,{description:`${n++} of ${l.length} checked`,id:t}),await _p(i.id)}catch{r+=1}r>0?H.error(`Validation failed!`,{description:`Please make sure the TXT record has been put in place. You may need to wait a bit for the DNS change to propagate.`,id:t}):(await a(),H.success(`Validation succeeded!`,{description:`Please take a look at the next steps for newly verified domains.`,id:t}))},[l]),w=pp(n,p,h),T=x.watch(`domain`),E=(0,G.useMemo)(()=>typeof T==`string`&&T.trim().split(`.`).length===2,[T]),D=(0,G.useCallback)(()=>{typeof T==`string`&&x.setValue(`domain`,`${T.trim()}, www.${T.trim()}`)},[T,x]);return(0,W.jsx)(qu,{data:i||[],isFetching:s||c,columns:w,sortingState:d,children:(0,W.jsxs)(`div`,{className:`w-full flex flex-col md:flex-row items-center md:justify-between md:space-x-2 space-y-2 md:space-y-0`,children:[r&&(0,W.jsx)(q,{...x,children:(0,W.jsxs)(`form`,{id:`cluster-add-domain-form`,name:`cluster-add-domain-form`,onSubmit:x.handleSubmit(S),className:`flex gap-1 flex-col md:flex-row`,children:[(0,W.jsx)(Y,{control:x.control,name:`domain`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex-1`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`New Domain Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,enterKeyHint:`done`,autoComplete:`off`,...e})}),E&&(0,W.jsxs)(`div`,{className:`mt-1 flex gap-4`,children:[`Adding an apex domain?`,(0,W.jsx)(F,{variant:`positiveOutline`,type:`button`,onClick:D,children:`Add www as well`})]}),(0,W.jsx)(Q,{children:(0,W.jsx)(`span`,{className:`text-muted-foreground italic`,children:`Type in a domain like example.com or your.example.com, and you'll be guided through validating and binding your cluster to it.`})})]})}),(0,W.jsxs)(`div`,{className:`flex-0 self-start flex gap-1 md:pt-6.5`,children:[(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:b,children:[(0,W.jsx)(Nr,{}),` Add`]}),l.length>0&&(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:C,accessKey:`r`,type:`button`,disabled:s||c,children:[(0,W.jsx)(vr,{}),` `,(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`V`}),`alidate`]})]}),(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:f,accessKey:`r`,type:`button`,disabled:s||c,children:[(0,W.jsx)(fn,{}),` `,(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]})]})]})}),p.length>0&&(0,W.jsx)(`div`,{className:`flex-0 self-start md:pt-6.5`,children:(0,W.jsxs)(F,{variant:`submit`,onClick:v,disabled:_,children:[(0,W.jsx)(Lr,{}),` Bind `,o(p.length,`Domain`,`Domains`)]})})]})})}function xp(){return(0,W.jsx)(Xf,{className:`flex flex-col justify-start max-w-4xl`,children:(0,W.jsx)(bp,{})})}var Sp=b({username:Wa,role:S().nonempty({error:`Please select a role.`}),password:Ua.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:S()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});async function Cp(e){await N.patch(`/ResetPasswordUpdater/${e}`)}async function wp(e){let{instanceClient:t,...n}=e,{data:r}=await t.post(`/`,{operation:`add_user`,...n});return r}function Tp(){return I({mutationFn:wp})}async function Ep({username:e,password:t,role:n,active:r,instanceClient:i}){let{data:a}=await i.post(`/`,{operation:`alter_user`,username:e,password:t,role:n,active:r});return a}function Dp(){return I({mutationFn:Ep})}async function Op({username:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_user`,username:e});return n}function kp(){return I({mutationFn:Op})}async function Ap({clusterId:e,initialUsername:t,desiredUsername:n,newPassword:r,tempPassword:i,instanceClient:a}){if(!i)throw Error(`You may not have permission to set the password on this cluster.`);let o=a;try{let a=await La({username:t,password:i,instanceClient:o,entityId:e});return a.instanceClient&&(o=a.instanceClient),n===`HDB_ADMIN`?await Ep({username:n,password:r,instanceClient:o}):(await wp({username:n,password:r,role:`super_user`,active:!0,instanceClient:o}),await La({username:n,password:r,instanceClient:o,entityId:e}),await Op({username:f,instanceClient:o})),await Cp(e),a}catch(t){throw await d({entityId:e,instanceClient:o}),t}}function jp(){return I({mutationFn:Ap})}function Mp(){let{user:e}=Ie(),{clusterId:t}=L({strict:!1}),{data:n}=R(Va(t,!0)),r=Oe(),i=(0,G.useMemo)(()=>s(n),[n]),a=Ui({operationsUrl:i}),{redirect:o}=ce({strict:!1}),c=ne(),l=bt({resolver:_t(Sp),defaultValues:{confirmPassword:``,password:``,role:`super_user`,username:e?.email??``}}),{setFocus:d,control:p,handleSubmit:m}=l;(0,G.useEffect)(()=>{d(`password`)},[d]);let h=n?.instances?.find(e=>e.tempPassword)?.tempPassword,{mutate:g,isPending:_}=jp(),v=(0,G.useCallback)(async e=>{if(!i){H.error(`Cluster is not yet fully loaded, please wait a moment before trying to sign in.`);return}g({instanceClient:a,clusterId:t,newPassword:e.password,tempPassword:h,initialUsername:f,desiredUsername:e.username},{onSuccess:async({message:e,user:t})=>{H.success(e),u.setUserForEntity(n,t),c.invalidate(),await r({to:o?.startsWith(`/`)?o:`../`})}})},[n,t,a,r,i,o,c,g,h]);return n&&!n.resetPassword?(0,W.jsx)(de,{to:`../sign-in`,replace:!0}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`nav`,{"aria-label":`Breadcrumb`,className:`fixed top-20 w-full h-12 z-39 px-4 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none flex items-center`,children:(0,W.jsx)(ka,{})}),(0,W.jsx)(`div`,{className:`items-center justify-center flex mt-32 py-4 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,W.jsxs)(`div`,{className:`text-foreground w-xs`,children:[(0,W.jsx)(`h1`,{className:`text-2xl font-light`,children:`Create Admin User`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`You are ready to create your first user in your new cluster. These credentials belong to you alone, and you can create more users and roles once you create this first one.`}),(0,W.jsx)(q,{...l,children:(0,W.jsxs)(`form`,{id:`cluster-create-admin-form`,name:`cluster-create-admin-form`,onSubmit:m(v),className:`my-4`,children:[(0,W.jsx)(Y,{control:p,name:`username`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Username`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{autoComplete:`username`,type:`text`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:p,name:`password`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,autoComplete:`new-password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:p,name:`confirmPassword`,render:({field:e})=>(0,W.jsxs)(X,{className:`my-4`,children:[(0,W.jsx)(Z,{children:`Confirm Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,autoComplete:`new-password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(F,{disabled:_,type:`submit`,variant:`submit`,className:`w-full my-2`,children:`Create Admin User`})]})}),(0,W.jsxs)(`p`,{className:`text-muted-foreground flex gap-2 align-middle`,children:[(0,W.jsx)(En,{size:36,className:`flex-none`}),(0,W.jsx)(`span`,{children:`These credentials will be used to sign into your cluster directly, providing you a secure connection from your browser to your cluster.`})]})]})})]})}function Np({columns:e,data:t,renderRowWrapper:n}){let r=ge({data:t,columns:e,getCoreRowModel:xe()});return(0,W.jsx)(`div`,{className:`bg-card dark:bg-black-dark rounded-md`,children:(0,W.jsxs)(Bu,{children:[(0,W.jsx)(Vu,{children:r.getHeaderGroups().map(e=>(0,W.jsx)(Uu,{className:`border-none`,children:e.headers.map(e=>(0,W.jsx)(Wu,{className:`p-4`,style:{width:`${e.getSize()}%`},children:e.isPlaceholder?null:Ce(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,W.jsx)(Hu,{className:`bg-background dark:bg-black`,children:r.getRowModel().rows?.length?r.getRowModel().rows.map(e=>{let t=(0,W.jsx)(Uu,{"data-state":e.getIsSelected()&&`selected`,className:`hover:bg-muted/10 data-[state=selected]:bg-muted`,children:e.getVisibleCells().map(e=>(0,W.jsx)(Ku,{className:`p-4`,style:{width:`${e.column.getSize()}%`},children:Ce(e.column.columnDef.cell,e.getContext())},e.id))});return(0,W.jsx)(G.Fragment,{children:n?n(e.original,t):t},e.id)}):(0,W.jsx)(Uu,{children:(0,W.jsx)(Ku,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})})}function Pp(){return(0,W.jsx)(`div`,{className:`flex-col items-center justify-center px-16 space-y-3 text-center pt-30`,children:(0,W.jsx)(`p`,{children:`No instances found.`})})}async function Fp({instance:e,instanceClient:t}){try{await d({instanceClient:t,entityId:e.id})}catch{}u.signOutLocally(e.id),e.clusterId&&u.signOutLocally(e.clusterId)}async function Ip({instanceId:e,action:t,safeMode:n}){let r=n===void 0?{}:{safeMode:n},{data:i}=await N.post(`/HDBInstance/${e}/container/${t}`,r);return i}function Lp(){return I({mutationFn:Ip})}var Rp={stop:`Stopping`,start:`Starting`,restart:`Restarting`};function zp(e){let{clusterId:t}=L({strict:!1}),{mutateAsync:n,isPending:r}=Lp(),i=ie();return{run:(0,G.useCallback)(async(r,a)=>{let o=a?.label??Rp[r],s=e.name??e.id,c=H.loading(o,{description:`${o} ${s}. Status will update shortly.`,duration:3e4,action:{label:`Dismiss`,onClick:()=>H.dismiss()}});try{await n({instanceId:e.id,action:r,safeMode:a?.safeMode}),t&&i.invalidateQueries({queryKey:[t]}),i.invalidateQueries({queryKey:[e.id]}),H.dismiss(c),H.success(`Request accepted`,{description:`${s} is ${o.toLowerCase()}. The status will update automatically.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}})}catch{H.dismiss(c)}},[t,e.id,e.name,n,i]),isPending:r}}function Bp({entityId:e,instanceClient:t},n){return B({queryKey:[`get_status`,e],staleTime:9e3,refetchInterval:1e4,retryDelay:1e4,throwOnError:!1,enabled:n,queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`get_status`});return e}})}function Vp(e,t){return e?.systemStatus?.find(e=>e.id===t)?.status}async function Hp({instanceClient:e,id:t,status:n}){let{data:r}=await e.post(`/`,{operation:`set_status`,id:t,status:n});return r}function Up(){return I({mutationFn:Hp,onSuccess:(e,t)=>hn.invalidateQueries({queryKey:[`get_status`,t.entityId]})})}var Wp=[`CLONE_READY`,`RUNNING`,`UPDATED`,`PENDING_UPGRADE`];function Gp(e,t,n){let{user:r}=Fe(e.id),i=(0,G.useMemo)(()=>p(e),[e]),a=Ui({operationsUrl:i}),{update:o}=ds(),s=u.checkForFabricConnect(e.id),c=K({operationsUrl:i,instanceId:e.id,forceFabricConnect:!0}),{data:l}=R(Bp(c,n&&o&&!Uo(e.status))),d=Vp(l,`availability`)||`Unknown`,f=d===`Available`,m=d===`Unavailable`,{mutate:h,isPending:g}=Up(),{run:_,isPending:v}=zp(e),[y,b]=(0,G.useState)(null),x=e.instanceFqdn,S=_u({secure:e.operationsApiSecure?`true`:`false`,port:e.operationsApiPort,fqdn:e.instanceFqdn}),[C,w]=js(x??``,S),T=(0,G.useCallback)(async()=>{await Fp({instance:e,instanceClient:a})},[e,a]),E=!!e.status&&Wp.includes(e.status),D=!!r&&!s,O=E,k=!!x,A=o&&E&&(f||m),j=e.status===`RUNNING`,ee=e.status===`STOPPED`,M=o&&!t&&(j||ee),N=[O&&D&&{key:`direct-connect`,to:`../instance/${e.id}/`,icon:(0,W.jsx)(Br,{className:`text-green`}),label:`Direct Connect`},O&&D&&{key:`direct-sign-out`,onClick:T,variant:`destructive`,icon:(0,W.jsx)(Sr,{}),label:`Direct Sign Out`},O&&!D&&o&&!t&&{key:`fabric-connect`,to:`../instance/${e.id}/`,icon:(0,W.jsx)(Br,{className:`text-green`}),label:`Fabric Connect`},O&&!D&&{key:`direct-sign-in`,to:`../instance/${e.id}/sign-in`,icon:(0,W.jsx)(xr,{}),label:`Direct Sign In`},O&&k&&{type:`separator`,key:`copy-sep`},k&&{key:`copy-fqdn`,onClick:C,icon:(0,W.jsx)(Gn,{}),label:`Copy Instance FQDN`},k&&{key:`copy-api`,onClick:w,icon:(0,W.jsx)(Gn,{}),label:`Copy API URL`},(O||k)&&A&&{type:`separator`,key:`rotation-sep`},A&&f&&{key:`out-of-rotation`,variant:`destructive`,disabled:g,onClick:()=>h({...c,id:`availability`,status:`Unavailable`}),icon:(0,W.jsx)(Ur,{}),label:`Bring out of rotation`},A&&m&&{key:`into-rotation`,disabled:g,onClick:()=>h({...c,id:`availability`,status:`Available`}),icon:(0,W.jsx)(Hr,{}),label:`Bring back into rotation`},(O||k||A)&&M&&{type:`separator`,key:`container-sep`},M&&{type:`label`,key:`container-label`,className:`text-gray-600 text-xs`,label:`Container`},M&&ee&&{key:`container-start`,disabled:v,onClick:()=>void _(`start`,{safeMode:!1}),icon:(0,W.jsx)(Mr,{}),label:`Start`},M&&ee&&{key:`container-start-safe`,disabled:v,onClick:()=>b(`start`),icon:(0,W.jsx)(_r,{}),label:`Start in safe mode`},M&&j&&{key:`container-restart`,disabled:v,onClick:()=>void _(`restart`,{safeMode:!1}),icon:(0,W.jsx)(Ir,{}),label:`Restart`},M&&j&&{key:`container-restart-safe`,disabled:v,onClick:()=>b(`restart`),icon:(0,W.jsx)(_r,{}),label:`Restart in safe mode`},M&&j&&{key:`container-stop`,variant:`destructive`,disabled:v,onClick:()=>void _(`stop`),icon:(0,W.jsx)(Kr,{}),label:`Stop`}].filter(Zi),P=(0,W.jsx)(Ss,{open:y!==null,setOpen:e=>{e||b(null)},action:y??`restart`,targetName:e.name??e.id,scope:`instance`,isPending:v,onConfirm:()=>{let e=y;b(null),e&&_(e,{safeMode:!0,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})}});return N.length?{items:[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`label-sep`},...N],dialog:P}:{items:[],dialog:P}}function Kp({instance:e,isSelfManaged:t}){let[n,r]=(0,G.useState)(!1),{items:i,dialog:a}=Gp(e,t,n);return i.length?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(li,{open:n,onOpenChange:r,children:[(0,W.jsx)(ui,{asChild:!0,children:(0,W.jsx)(F,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Instance options`,children:(0,W.jsx)($n,{})})}),(0,W.jsx)(di,{align:`end`,className:`min-w-48`,children:is(i,`dropdown`)})]}),a]}):null}function qp({isSelfManaged:e,instance:t}){let{user:n,isLoading:r}=Fe(t.id),i=Ui({operationsUrl:(0,G.useMemo)(()=>p(t),[t])}),{update:a}=ds(),o=u.checkForFabricConnect(t.id),s=(0,G.useCallback)(async()=>{await Fp({instance:t,instanceClient:i})},[t,i]);return Uo(t.status)?(0,W.jsx)(`span`,{className:`text-muted-foreground text-sm`,children:`—`}):r||!t.status||![`CLONE_READY`,`RUNNING`,`UPDATED`,`PENDING_UPGRADE`].includes(t.status)?(0,W.jsx)(yr,{className:`animate-spin`,color:`gray`}):!n||o?(0,W.jsxs)(`span`,{className:`flex gap-4`,children:[a&&!e&&(0,W.jsx)(V,{to:`../instance/${t.id}/`,className:`text-sm`,"aria-label":`Connect to ${t.name} instance`,title:`Connect to ${t.name} instance`,children:(0,W.jsx)(F,{variant:`positiveOutline`,children:`Fabric Connect`})}),(0,W.jsx)(V,{to:`../instance/${t.id}/sign-in`,className:`text-sm`,"aria-label":`Sign in to ${t.name} instance`,title:`Sign in to ${t.name} instance`,children:(0,W.jsx)(F,{variant:a?`defaultOutline`:`positiveOutline`,children:`Direct Sign In`})})]}):(0,W.jsxs)(`span`,{className:`flex gap-4`,children:[(0,W.jsx)(V,{to:`../instance/${t.id}/`,className:`text-sm`,"aria-label":`Go to ${t.name} instance`,title:`Go to ${t.name} instance`,children:(0,W.jsx)(F,{variant:`positiveOutline`,children:`Direct Connect`})}),(0,W.jsx)(F,{variant:`destructiveOutline`,className:`text-sm`,"aria-label":`Sign out from ${t.name} instance`,title:`Sign out from ${t.name} instance`,onClick:s,children:`Direct Sign Out`})]})}function Jp({instance:e,isSelfManaged:t,children:n}){let[r,i]=(0,G.useState)(!1),{items:a,dialog:o}=Gp(e,t,r);return a.length?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Xo,{onOpenChange:i,children:[(0,W.jsx)(Zo,{asChild:!0,children:n}),(0,W.jsx)(Qo,{className:`min-w-48`,children:is(a,`context`)})]}),o]}):(0,W.jsx)(W.Fragment,{children:n})}function Yp({instance:e,index:t}){let{update:n}=ds(),r=K({operationsUrl:(0,G.useMemo)(()=>p(e),[e]),instanceId:e.id,forceFabricConnect:!0}),{mutate:i,isPending:a}=Up(),[o,s]=(0,G.useState)(!1);(0,G.useEffect)(()=>{let e=setTimeout(()=>s(!0),t*500);return()=>clearTimeout(e)},[t]);let c=Uo(e.status),{data:l,isLoading:u,isFetching:d}=R(Bp(r,o&&n&&!c)),f=Vp(l,`availability`)||`Unknown`,m=f===`Available`,h=f===`Unavailable`;return n?c?(0,W.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsx)(`span`,{className:`inline-block size-4 rounded-full bg-muted-foreground/40`,"aria-label":`Not running`})}),(0,W.jsx)(Rt,{children:`Not running`})]})}):(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsx)(`div`,{className:`flex items-center`,children:u||!o||d&&!l?(0,W.jsx)(yr,{className:`animate-spin size-5 text-muted-foreground`}):(0,W.jsx)(oo,{variant:m?`success`:h?`destructive`:`default`,className:`size-4 rounded-full p-0`,children:(0,W.jsx)(`span`,{className:`sr-only`,children:m?`Online`:`Offline`})})})}),(0,W.jsxs)(Rt,{children:[d&&l?`Refreshing... `:``,f]})]}),n&&(0,W.jsxs)(`div`,{className:`flex gap-1`,children:[m&&(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsx)(F,{type:`button`,variant:`destructiveGhost`,size:`icon`,onClick:()=>i({...r,id:`availability`,status:`Unavailable`}),disabled:a,children:a?(0,W.jsx)(yr,{className:`animate-spin size-4`}):(0,W.jsx)(Ur,{className:`size-4`})})}),(0,W.jsx)(Rt,{children:`Bring out of rotation`})]}),h&&(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsx)(F,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>i({...r,id:`availability`,status:`Available`}),disabled:a,children:a?(0,W.jsx)(yr,{className:`animate-spin size-4`}):(0,W.jsx)(Hr,{className:`size-4`})})}),(0,W.jsx)(Rt,{children:`Bring back into rotation`})]})]})]}):null}function Xp(){let{clusterId:e}=L({strict:!1}),{data:t,isLoading:n}=R(Va(e,!0)),r=gs(t),i=(0,G.useMemo)(()=>[{id:`instanceActions`,size:1,minSize:1,cell:e=>(0,W.jsx)(`div`,{className:`flex justify-end gap-2 items-center`,children:(0,W.jsx)(qp,{isSelfManaged:r,instance:e.row.original})})},r&&{accessorKey:`instanceFqdn`,size:90,header:`URL`,cell:e=>_u({secure:e.row.original.operationsApiSecure?`true`:`false`,port:e.row.original.operationsApiPort,fqdn:e.row.original.instanceFqdn})},!r&&{accessorKey:`name`,size:90,header:`Name`},!r&&{accessorKey:`status`,header:`Status`,size:1,minSize:1,cell:e=>{let t=e.getValue();return(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(Yp,{instance:e.row.original,index:e.row.index}),t?(0,W.jsx)(oo,{variant:Ho(t),children:Da(t)}):null,e.row.original.safeMode&&!Uo(e.row.original.status)?(0,W.jsxs)(oo,{variant:`warning`,title:`Running in safe mode — user apps/components are not loaded`,children:[(0,W.jsx)(_r,{}),`Safe mode`]}):null]})}},!r&&{accessorKey:`version`,size:1,minSize:1,header:`Version`},!r&&{accessorKey:`storageGb`,size:1,minSize:1,header:`Storage`,cell:e=>`${e.getValue()} GB`},!r&&{accessorKey:`usedStorageGb`,size:1,minSize:1,header:`Used Storage`,cell:e=>{let t=e.getValue();return t===void 0?`-`:`${t} GB`}},!r&&{accessorKey:`cpuCores`,size:1,minSize:1,header:`Cores/Threads`,cell:e=>(0,W.jsxs)(W.Fragment,{children:[e.row.original.cpuCores,` / `,e.row.original.threads]})},!r&&{accessorKey:`memoryMb`,size:1,minSize:1,header:`Memory`,cell:e=>`${e.getValue()/1024} GB`},{id:`instanceMenu`,size:1,minSize:1,cell:e=>(0,W.jsx)(`div`,{className:`flex justify-end`,children:(0,W.jsx)(Kp,{isSelfManaged:r,instance:e.row.original})})}].filter(Zi),[r]),a=(0,G.useMemo)(()=>t?.instances?t.instances.filter(e=>e.status&&!Fa.includes(e.status)).sort(Ys):[],[t]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vo,{}),(0,W.jsx)(Is,{children:(0,W.jsx)(Lt,{className:`p-0 min-h-96`,children:(0,W.jsx)(Ft,{className:`p-0 min-h-96`,children:n?(0,W.jsx)(Kl,{}):a.length?(0,W.jsx)(Np,{data:a,columns:i,renderRowWrapper:(e,t)=>(0,W.jsx)(Jp,{instance:e,isSelfManaged:r,children:t})}):(0,W.jsx)(Pp,{})})})})]})}function Zp(){let{clusterId:e}=L({strict:!1}),{immediate:t}=ce({strict:!1}),n=t===!0||t===`true`,{data:r,isLoading:i}=R(Va(e,2e3)),a=r?.status,o=(0,G.useMemo)(()=>a&&Pa.includes(a),[a]);return i||!r?(0,W.jsx)(Xf,{className:`flex justify-center`,children:(0,W.jsx)(Kl,{})}):o?(0,W.jsx)(Xf,{className:`flex justify-center`,children:(0,W.jsxs)(`div`,{className:`center w-2xl flex flex-col gap-4`,children:[(0,W.jsx)(`h1`,{className:`text-xl text-center`,children:`All done!`}),(0,W.jsx)(xs,{cluster:r,forceProgressBarVisible:!0}),(0,W.jsx)(`p`,{children:`Your cluster finished updating, and is ready for interaction.`}),(0,W.jsx)(`div`,{className:`text-center`,children:(0,W.jsx)(_s,{cluster:r})})]})}):(0,W.jsx)(Xf,{className:`flex justify-center`,children:(0,W.jsxs)(`div`,{className:`center w-2xl flex flex-col gap-4`,children:[(0,W.jsx)(`h1`,{className:`text-xl text-center`,children:`Here we go!`}),(0,W.jsx)(xs,{cluster:r,forceProgressBarVisible:!0}),(0,W.jsxs)(`p`,{children:[n?`Your cluster is applying the latest changes immediately, without waiting to take instances out of rotation.`:`Your cluster is updating with the latest changes. This includes waiting several minutes to let traffic drain safely.`,` `,(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[`We will let you know when we are ready for you to connect! In the meantime, join us on`,` `,(0,W.jsx)(`a`,{href:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,children:`Discord`}),`! Get real-time help from our engineers, see feature drops early, and connect with others building on Fabric.`]})]})]})})}function Qp({children:e,className:t}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vo,{}),(0,W.jsx)(`div`,{className:_(`mt-32 px-4 py-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))] flex justify-center`,t),children:e})]})}function $p(){let e=ne(),{clusterId:t}=L({strict:!1}),{data:n,isLoading:r}=R(Va(t,2e3)),i=n?.status,a=(0,G.useMemo)(()=>i&&Pa.includes(i),[i]),o=Go(i),[,s]=vn(bn.SavedClusterState,null),c=(0,G.useCallback)(()=>{s(n),e.navigate({to:`/${n.organizationId}/new-cluster`})},[n,e,s]);return r||!n?(0,W.jsx)(Qp,{className:`flex justify-center`,children:(0,W.jsx)(Kl,{})}):o?(0,W.jsx)(Qp,{className:`flex justify-center`,children:(0,W.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4 items-center`,children:[(0,W.jsx)(Kn,{className:`w-24 h-24`}),(0,W.jsxs)(`span`,{children:[`Your cluster failed to successfully start. This is usually caused by temporary communication problems. Would you like to try again? We also get notified about these failures. `,(0,W.jsx)(Ps,{}),` if you want more help.`]}),(0,W.jsx)(F,{type:`button`,variant:`positiveOutline`,onClick:c,children:`Try Again`})]})}):a?(0,W.jsx)(Qp,{className:`flex justify-center`,children:(0,W.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4`,children:[(0,W.jsx)(`h1`,{className:`text-xl text-center`,children:`It's ready!`}),(0,W.jsx)(xs,{cluster:n,forceProgressBarVisible:!0}),(0,W.jsxs)(`p`,{children:[`Let's set up your secure, browser-to-cluster connection now.`,` `,(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Did you know during this step, you connect straight to your cluster, providing a private secure connection? That's `,(0,W.jsx)(`em`,{children:`Direct Connect`}),`! Once you create your user, you will have the option to`,` `,(0,W.jsx)(`em`,{children:`Fabric Connect`}),` from your Fabric account without having to sign in again.`]})]}),(0,W.jsx)(`div`,{className:`text-center`,children:(0,W.jsx)(_s,{cluster:n})})]})}):(0,W.jsx)(Qp,{className:`flex justify-center`,children:(0,W.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4`,children:[(0,W.jsx)(`h1`,{className:`text-xl text-center`,children:`Here we go!`}),(0,W.jsx)(xs,{cluster:n,forceProgressBarVisible:!0}),(0,W.jsxs)(`p`,{children:[`Your cluster is spinning up with the latest changes, including your own DNS records and private connections. Please wait while we get everything going.`,` `,(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[`We will let you know when we are ready for you to connect! In the meantime, join us on`,` `,(0,W.jsx)(`a`,{href:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,children:`Discord`}),`! Get real-time help from our engineers, see feature drops early, and connect with others building on Fabric.`]})]})]})})}z({getParentRoute:()=>Vf,path:`instances`,head:()=>({meta:[{title:`Instances — Harper Fabric`}]}),component:Xp}),z({getParentRoute:()=>Vf,path:`starting-up`,head:()=>({meta:[{title:`Starting Up — Harper Fabric`}]}),component:$p}),z({getParentRoute:()=>Vf,path:`scaling`,head:()=>({meta:[{title:`Scaling — Harper Fabric`}]}),component:Zp}),z({getParentRoute:()=>Vf,path:`domains`,head:()=>({meta:[{title:`Domains — Harper Fabric`}]}),component:xp});function em({location:e,params:t}){let n=u.checkForFabricConnect(t.clusterId);if(u.getConnectionById(t.clusterId).user&&!n){let t=e?.search?.redirect;throw _e({to:t?.startsWith(`/`)?t:`../`})}}function tm({location:e,params:t}){let n=u.checkForFabricConnect(t.instanceId);if(u.getConnectionById(t.instanceId).user&&!n){let t=e?.search?.redirect;throw _e({to:t?.startsWith(`/`)?t:`../`})}}z({getParentRoute:()=>Vf,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:Za,beforeLoad:em}),z({getParentRoute:()=>Vf,path:`instance/$instanceId/sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:Za,beforeLoad:tm}),z({getParentRoute:()=>Vf,path:`finish-setup`,head:()=>({meta:[{title:`Create Admin User — Harper Fabric`}]}),component:Mp}),z({getParentRoute:()=>Vf,path:`/`,head:()=>({meta:[{title:`Cluster — Harper Fabric`}]}),component:Uf});function nm(e){return z({getParentRoute:()=>e,path:`apis`,head:()=>({meta:[{title:`APIs — Harper Fabric`}]})}).lazy(()=>je(()=>import(`./index.lazy-BPnXo1Wj.js`).then(e=>e.route),__vite__mapDeps([14,1,2,3,4,5,6,7,15,16,17,18,19])))}function rm(e,t){return[z({getParentRoute:()=>e,path:t===`cluster`?`apps`:`/`,head:()=>({meta:[{title:`Applications — Harper Fabric`}]}),component:ye(()=>je(()=>import(`./applications-C6zKD9Rb.js`),__vite__mapDeps([20,1,18,3,2,4,5,6,7,21,8,16,22,23,24,15,25,26,27,28,10,11,17,13,29])),`ApplicationsEditor`)})]}async function im({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_certificates`});return t}function am(e){return B({queryKey:[e.entityId,`list_certificates`],queryFn:()=>im(e)})}var om=[{header:`Certificate Name`,accessorKey:`name`,enableSorting:!0},{header:`Issuer`,accessorKey:`details.issuer`,enableSorting:!0},ue().display({header:`Expires At`,enableSorting:!1,id:`details.valid_to`,cell:e=>e.row.original.details.valid_to?new Date(e.row.original.details.valid_to).toLocaleString():`N/A`})];function sm({className:e,...t}){return(0,W.jsx)(`textarea`,{"data-slot":`input`,className:P(`border-input file:text-foreground placeholder:text-muted-foreground selection:bg-purple
|
|
13
13
|
selection:text-primary-foreground
|
|
14
14
|
dark:aria-invalid:outline-destructive dark:aria-invalid:ring-destructive/50 ring-ring/10
|
|
15
15
|
dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 aria-invalid:outline-destructive/60
|
|
@@ -17,14 +17,14 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
17
17
|
flex w-full min-w-0 rounded-md border bg-white text-foreground dark:bg-grey-700 dark:text-white px-3 py-2 text-base
|
|
18
18
|
file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium
|
|
19
19
|
focus-visible:ring-1 focus-visible:outline-none focus-visible:ring-purple disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50
|
|
20
|
-
aria-invalid:focus-visible:ring-[1px] aria-invalid:focus-visible:outline-none md:text-sm dark:aria-invalid:focus-visible:ring-1`,e),...t})}async function sm({instanceClient:e},t){let{data:n}=await e.post(`/`,{operation:`add_certificate`,...t});return n}var cm=b({name:S().min(1,`Name is required`),certificate:S().min(1,`Certificate is required`),private_key:S().optional(),is_authority:D().default(!1),hosts:S().optional(),uses:S().optional()});function lm(){return I({mutationFn:({instanceParams:e,certificateParams:t})=>sm(e,t)})}function um({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=bt({resolver:_t(cm),defaultValues:{name:``,certificate:``,private_key:``,is_authority:!1,hosts:``,uses:``}}),i=K(),{mutate:a,isPending:o}=lm(),s=(0,G.useCallback)(async e=>{let{hosts:o,uses:s,private_key:c,...l}=e,u=o?o.split(`,`).map(e=>e.trim()).filter(Boolean):void 0,d=s?s.split(`,`).map(e=>e.trim()).filter(Boolean):void 0;a({instanceParams:i,certificateParams:{...l,private_key:c||void 0,hosts:u&&u.length>0?u:void 0,uses:d&&d.length>0?d:void 0}},{onSuccess:()=>{r.reset(),t(),H.success(`Certificate added successfully!`),n(!1)}})},[a,r,i,t,n]),c=(0,G.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,W.jsx)(qt,{onOpenChange:n,open:e,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...r,children:(0,W.jsxs)(`form`,{id:`instance-add-certificate-form`,name:`instance-add-certificate-form`,onSubmit:r.handleSubmit(s),className:`grid gap-4 my-4`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsx)(Jt,{children:`Add New Certificate`}),(0,W.jsx)(Ht,{children:`Enter the details of your Certificate below.`})]}),(0,W.jsx)(Y,{control:r.control,name:`name`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`is_authority`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex flex-row items-center justify-between rounded-lg border border-gray-800 p-3 shadow-sm`,children:[(0,W.jsx)(`div`,{className:`space-y-0.5`,children:(0,W.jsx)(Z,{children:`Is Authority`})}),(0,W.jsx)(J,{children:(0,W.jsx)(Td,{checked:e.value,onCheckedChange:e.onChange})})]})}),(0,W.jsx)(Y,{control:r.control,name:`certificate`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Certificate`}),(0,W.jsx)(J,{children:(0,W.jsx)(om,{autoComplete:`off`,autoCapitalize:`off`,rows:5,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`hosts`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Hosts (optional)`}),(0,W.jsx)(Zl,{children:`Comma-separated list of hostnames this certificate is valid for.`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,placeholder:`e.g. example.com, *.example.com`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`uses`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Uses (optional)`}),(0,W.jsx)(Zl,{children:`Comma-separated list of intended uses, e.g. "https, operations, wss".`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,placeholder:`e.g. https, operations, wss`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`private_key`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Private Key (optional)`}),(0,W.jsx)(Zl,{children:`PEM formatted private key string.`}),(0,W.jsx)(J,{children:(0,W.jsx)(om,{autoComplete:`off`,autoCapitalize:`off`,rows:5,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,W.jsx)(F,{variant:`destructiveOutline`,type:`button`,onClick:c,disabled:o,children:`Cancel`}),(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:o||!r.formState.isDirty||!r.formState.isValid,children:[(0,W.jsx)(Ir,{}),` Add Certificate`]})]})})]})})})})}async function dm({instanceClient:e},t){let{data:n}=await e.post(`/`,{operation:`remove_certificate`,name:t});return n}function fm(){return I({mutationFn:({instanceParams:e,name:t})=>dm(e,t)})}function pm({data:e,isModalOpen:t,closeModal:n,onSelectCertificate:r,onChangesSaved:i}){let{name:a}=e,o=K(),{mutate:s,isPending:c}=fm(),[l,u]=(0,G.useState)(!1),d=(0,G.useCallback)(()=>{u(!0)},[]),f=(0,G.useCallback)(()=>{s({instanceParams:o,name:a},{onSuccess:()=>{H.success(`Certificate removed successfully!`),r(void 0),i()}})},[a,s,o,i,r]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(qt,{onOpenChange:n,open:t,children:(0,W.jsx)(tn,{className:`sm:max-w-[800px] max-h-[90vh] overflow-y-auto`,"aria-describedby":void 0,children:(0,W.jsxs)(`div`,{className:`grid gap-4 my-4`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsxs)(Jt,{children:[`View Certificate: `,a]}),(0,W.jsx)(Ht,{children:`Details of the selected certificate.`})]}),(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 text-sm bg-muted p-4 rounded-lg border border-border`,children:[(0,W.jsxs)(`div`,{className:`col-span-2`,children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Issuer`}),(0,W.jsx)(`p`,{className:`text-muted-foreground break-all`,children:e.details.issuer||`N/A`})]}),(0,W.jsxs)(`div`,{className:`col-span-2`,children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Subject`}),(0,W.jsx)(`p`,{className:`text-muted-foreground break-all`,children:e.details.subject||`N/A`})]}),e.details.subject_alt_name&&(0,W.jsxs)(`div`,{className:`col-span-2`,children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Subject Alternative Name`}),(0,W.jsx)(`p`,{className:`text-muted-foreground break-all`,children:e.details.subject_alt_name})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Valid From`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.details.valid_from?new Date(e.details.valid_from).toLocaleString():`N/A`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Valid To (Expires At)`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.details.valid_to?new Date(e.details.valid_to).toLocaleString():`N/A`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Serial Number`}),(0,W.jsx)(`p`,{className:`text-muted-foreground font-mono text-xs break-all`,children:e.details.serial_number||`N/A`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Private Key Name`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.private_key_name||`N/A`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Is Authority`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.is_authority?`Yes`:`No`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Is Self-Signed`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.is_self_signed?`Yes`:`No`})]}),e.hosts&&e.hosts.length>0&&(0,W.jsxs)(`div`,{className:`col-span-2`,children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Hosts`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.hosts.join(`, `)})]}),(0,W.jsxs)(`div`,{className:`col-span-2`,children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Uses`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.uses?.join(`, `)||`N/A`})]})]}),(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(Ma,{children:`Certificate Content`}),(0,W.jsx)(om,{autoComplete:`off`,autoCapitalize:`off`,rows:8,readOnly:!0,className:`font-mono text-xs`,value:e.certificate})]})]}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,W.jsx)(F,{type:`button`,variant:`destructiveOutline`,onClick:d,disabled:c,children:`Remove Certificate`}),(0,W.jsx)(F,{type:`button`,variant:`defaultOutline`,onClick:()=>n(),children:`Close`})]})})]})})}),(0,W.jsx)(Jo,{isModalOpen:l,setIsModalOpen:u,deletionConfirmed:f,deletionPending:c,typeOfThingBeingDeleted:`certificate`,presentParticiple:`Removing`,transitiveVerb:`Remove`,nameOfThingBeingDeleted:a,hideDataLossWarning:!0})]})}function mm(){let e=Oe(),{certName:t}=L({strict:!1}),{data:n,refetch:r,isFetching:i,isRefetching:a}=R(im(K())),o=(0,G.useMemo)(()=>n?.find(e=>e.name===t),[n,t]),s=(0,G.useCallback)(n=>{let r=n?.original?.name,i=[t?`..`:``,r].filter(Boolean);e({to:i.join(`/`)})},[t,e]),c=!!t&&!!o,[l,u]=(0,G.useState)(!1),d=(0,G.useCallback)(()=>{u(!0)},[u]),f=Zu(r);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Ku,{columns:am,data:n||[],isFetching:i,onRowClick:s,children:[(0,W.jsx)(V,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,to:`https://docs.harperdb.io/docs/developers/operations-api/certificate-management`,target:`_blank`,children:`Certificate Management Docs`}),(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:f,accessKey:`r`,disabled:i||a,children:[(0,W.jsx)(fn,{}),(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:d,accessKey:`a`,disabled:l,children:[(0,W.jsx)(Mr,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]})]}),l&&(0,W.jsx)(um,{isModalOpen:l,onChangesSaved:r,setIsModalOpen:u}),c&&(0,W.jsx)(pm,{isModalOpen:c,closeModal:s,data:o,onSelectCertificate:s,onChangesSaved:r})]})}var hm=new Set([`success`,`failed`,`rolled_back`]);function gm(e){return!!e&&hm.has(e)}var _m=2e3,vm=1e4;async function ym({instanceClient:e,project:t,status:n,since:r,until:i,limit:a,offset:o}){let{data:s}=await e.post(`/`,{operation:`list_deployments`,project:t,status:n,since:r,until:i,limit:a,offset:o});return s}function bm(e){let{entityId:t,project:n,status:r,since:i,until:a,limit:o,offset:s,pollWhileOpen:c}=e;return B({queryKey:[t,`list_deployments`,{project:n,status:r,since:i,until:a,limit:o,offset:s}],queryFn:()=>ym(e),retry:!1,enabled:e.enabled!==!1,refetchInterval:c?e=>(e.state.data?.deployments??[]).some(e=>!gm(e.status))?_m:vm:!1})}var xm={pending:`warning`,extracting:`warning`,installing:`warning`,loading:`warning`,replicating:`warning`,restarting:`warning`,success:`success`,failed:`destructive`,rolled_back:`destructive`},Sm={pending:`Pending`,extracting:`Extracting`,installing:`Installing`,loading:`Loading`,replicating:`Replicating`,restarting:`Restarting`,success:`Success`,failed:`Failed`,rolled_back:`Rolled back`};function Cm({status:e}){return(0,W.jsx)(ao,{variant:xm[e]??`secondary`,children:Sm[e]??e})}var wm=ue();function Tm(e){return e?Yu((Date.now()-e)/1e3,e):`—`}var Em=[{header:`Project`,accessorKey:`project`,enableSorting:!1},wm.display({header:`Status`,id:`status`,enableSorting:!1,cell:e=>(0,W.jsx)(Cm,{status:e.row.original.status})}),wm.display({header:`Started`,id:`started_at`,enableSorting:!1,cell:e=>Tm(e.row.original.started_at)}),wm.display({header:`Completed`,id:`completed_at`,enableSorting:!1,cell:e=>Tm(e.row.original.completed_at)}),{header:`User`,accessorKey:`user`,enableSorting:!1},{header:`Origin`,accessorKey:`origin_node`,enableSorting:!1}];function Dm({className:e,orientation:t=`horizontal`,decorative:n=!0,...r}){return(0,W.jsx)(Je,{"data-slot":`separator-root`,decorative:n,orientation:t,className:P(`bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px`,e),...r})}function Om({className:e,children:t,...n}){return(0,W.jsxs)(at,{"data-slot":`scroll-area`,className:P(`relative`,e),...n,children:[(0,W.jsx)(st,{"data-slot":`scroll-area-viewport`,className:`focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1`,children:t}),(0,W.jsx)(km,{}),(0,W.jsx)(kt,{})]})}function km({className:e,orientation:t=`vertical`,...n}){return(0,W.jsx)(We,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:P(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent`,e),...n,children:(0,W.jsx)(Dt,{"data-slot":`scroll-area-thumb`,className:`bg-border relative flex-1 rounded-full`})})}async function*Am(e,t){let n=e.getReader(),r=new TextDecoder(`utf-8`),i=``,a=!1;try{for(;;){if(t?.aborted)return;let{value:e,done:s}=await n.read();if(s){a=!0;break}i+=r.decode(e,{stream:!0}),yield*o()}if(i+=r.decode(),i.trim()){let e=jm(i);e&&(yield e)}}finally{a||n.cancel().catch(()=>{}),n.releaseLock()}function*o(){for(;;){let e=i.indexOf(`
|
|
20
|
+
aria-invalid:focus-visible:ring-[1px] aria-invalid:focus-visible:outline-none md:text-sm dark:aria-invalid:focus-visible:ring-1`,e),...t})}async function cm({instanceClient:e},t){let{data:n}=await e.post(`/`,{operation:`add_certificate`,...t});return n}var lm=b({name:S().min(1,`Name is required`),certificate:S().min(1,`Certificate is required`),private_key:S().optional(),is_authority:D().default(!1),hosts:S().optional(),uses:S().optional()});function um(){return I({mutationFn:({instanceParams:e,certificateParams:t})=>cm(e,t)})}function dm({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=bt({resolver:_t(lm),defaultValues:{name:``,certificate:``,private_key:``,is_authority:!1,hosts:``,uses:``}}),i=K(),{mutate:a,isPending:o}=um(),s=(0,G.useCallback)(async e=>{let{hosts:o,uses:s,private_key:c,...l}=e,u=o?o.split(`,`).map(e=>e.trim()).filter(Boolean):void 0,d=s?s.split(`,`).map(e=>e.trim()).filter(Boolean):void 0;a({instanceParams:i,certificateParams:{...l,private_key:c||void 0,hosts:u&&u.length>0?u:void 0,uses:d&&d.length>0?d:void 0}},{onSuccess:()=>{r.reset(),t(),H.success(`Certificate added successfully!`),n(!1)}})},[a,r,i,t,n]),c=(0,G.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,W.jsx)(qt,{onOpenChange:n,open:e,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...r,children:(0,W.jsxs)(`form`,{id:`instance-add-certificate-form`,name:`instance-add-certificate-form`,onSubmit:r.handleSubmit(s),className:`grid gap-4 my-4`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsx)(Jt,{children:`Add New Certificate`}),(0,W.jsx)(Ht,{children:`Enter the details of your Certificate below.`})]}),(0,W.jsx)(Y,{control:r.control,name:`name`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`is_authority`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex flex-row items-center justify-between rounded-lg border border-gray-800 p-3 shadow-sm`,children:[(0,W.jsx)(`div`,{className:`space-y-0.5`,children:(0,W.jsx)(Z,{children:`Is Authority`})}),(0,W.jsx)(J,{children:(0,W.jsx)(Ed,{checked:e.value,onCheckedChange:e.onChange})})]})}),(0,W.jsx)(Y,{control:r.control,name:`certificate`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Certificate`}),(0,W.jsx)(J,{children:(0,W.jsx)(sm,{autoComplete:`off`,autoCapitalize:`off`,rows:5,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`hosts`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Hosts (optional)`}),(0,W.jsx)(Ql,{children:`Comma-separated list of hostnames this certificate is valid for.`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,placeholder:`e.g. example.com, *.example.com`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`uses`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Uses (optional)`}),(0,W.jsx)(Ql,{children:`Comma-separated list of intended uses, e.g. "https, operations, wss".`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,placeholder:`e.g. https, operations, wss`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`private_key`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Private Key (optional)`}),(0,W.jsx)(Ql,{children:`PEM formatted private key string.`}),(0,W.jsx)(J,{children:(0,W.jsx)(sm,{autoComplete:`off`,autoCapitalize:`off`,rows:5,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,W.jsx)(F,{variant:`destructiveOutline`,type:`button`,onClick:c,disabled:o,children:`Cancel`}),(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:o||!r.formState.isDirty||!r.formState.isValid,children:[(0,W.jsx)(Lr,{}),` Add Certificate`]})]})})]})})})})}async function fm({instanceClient:e},t){let{data:n}=await e.post(`/`,{operation:`remove_certificate`,name:t});return n}function pm(){return I({mutationFn:({instanceParams:e,name:t})=>fm(e,t)})}function mm({data:e,isModalOpen:t,closeModal:n,onSelectCertificate:r,onChangesSaved:i}){let{name:a}=e,o=K(),{mutate:s,isPending:c}=pm(),[l,u]=(0,G.useState)(!1),d=(0,G.useCallback)(()=>{u(!0)},[]),f=(0,G.useCallback)(()=>{s({instanceParams:o,name:a},{onSuccess:()=>{H.success(`Certificate removed successfully!`),r(void 0),i()}})},[a,s,o,i,r]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(qt,{onOpenChange:n,open:t,children:(0,W.jsx)(tn,{className:`sm:max-w-[800px] max-h-[90vh] overflow-y-auto`,"aria-describedby":void 0,children:(0,W.jsxs)(`div`,{className:`grid gap-4 my-4`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsxs)(Jt,{children:[`View Certificate: `,a]}),(0,W.jsx)(Ht,{children:`Details of the selected certificate.`})]}),(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 text-sm bg-muted p-4 rounded-lg border border-border`,children:[(0,W.jsxs)(`div`,{className:`col-span-2`,children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Issuer`}),(0,W.jsx)(`p`,{className:`text-muted-foreground break-all`,children:e.details.issuer||`N/A`})]}),(0,W.jsxs)(`div`,{className:`col-span-2`,children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Subject`}),(0,W.jsx)(`p`,{className:`text-muted-foreground break-all`,children:e.details.subject||`N/A`})]}),e.details.subject_alt_name&&(0,W.jsxs)(`div`,{className:`col-span-2`,children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Subject Alternative Name`}),(0,W.jsx)(`p`,{className:`text-muted-foreground break-all`,children:e.details.subject_alt_name})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Valid From`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.details.valid_from?new Date(e.details.valid_from).toLocaleString():`N/A`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Valid To (Expires At)`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.details.valid_to?new Date(e.details.valid_to).toLocaleString():`N/A`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Serial Number`}),(0,W.jsx)(`p`,{className:`text-muted-foreground font-mono text-xs break-all`,children:e.details.serial_number||`N/A`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Private Key Name`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.private_key_name||`N/A`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Is Authority`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.is_authority?`Yes`:`No`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Is Self-Signed`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.is_self_signed?`Yes`:`No`})]}),e.hosts&&e.hosts.length>0&&(0,W.jsxs)(`div`,{className:`col-span-2`,children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Hosts`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.hosts.join(`, `)})]}),(0,W.jsxs)(`div`,{className:`col-span-2`,children:[(0,W.jsx)(`p`,{className:`font-semibold`,children:`Uses`}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:e.uses?.join(`, `)||`N/A`})]})]}),(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(Na,{children:`Certificate Content`}),(0,W.jsx)(sm,{autoComplete:`off`,autoCapitalize:`off`,rows:8,readOnly:!0,className:`font-mono text-xs`,value:e.certificate})]})]}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,W.jsx)(F,{type:`button`,variant:`destructiveOutline`,onClick:d,disabled:c,children:`Remove Certificate`}),(0,W.jsx)(F,{type:`button`,variant:`defaultOutline`,onClick:()=>n(),children:`Close`})]})})]})})}),(0,W.jsx)(Yo,{isModalOpen:l,setIsModalOpen:u,deletionConfirmed:f,deletionPending:c,typeOfThingBeingDeleted:`certificate`,presentParticiple:`Removing`,transitiveVerb:`Remove`,nameOfThingBeingDeleted:a,hideDataLossWarning:!0})]})}function hm(){let e=Oe(),{certName:t}=L({strict:!1}),{data:n,refetch:r,isFetching:i,isRefetching:a}=R(am(K())),o=(0,G.useMemo)(()=>n?.find(e=>e.name===t),[n,t]),s=(0,G.useCallback)(n=>{let r=n?.original?.name,i=[t?`..`:``,r].filter(Boolean);e({to:i.join(`/`)})},[t,e]),c=!!t&&!!o,[l,u]=(0,G.useState)(!1),d=(0,G.useCallback)(()=>{u(!0)},[u]),f=Qu(r);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(qu,{columns:om,data:n||[],isFetching:i,onRowClick:s,children:[(0,W.jsx)(V,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,to:`https://docs.harperdb.io/docs/developers/operations-api/certificate-management`,target:`_blank`,children:`Certificate Management Docs`}),(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:f,accessKey:`r`,disabled:i||a,children:[(0,W.jsx)(fn,{}),(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:d,accessKey:`a`,disabled:l,children:[(0,W.jsx)(Nr,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]})]}),l&&(0,W.jsx)(dm,{isModalOpen:l,onChangesSaved:r,setIsModalOpen:u}),c&&(0,W.jsx)(mm,{isModalOpen:c,closeModal:s,data:o,onSelectCertificate:s,onChangesSaved:r})]})}var gm=new Set([`success`,`failed`,`rolled_back`]);function _m(e){return!!e&&gm.has(e)}var vm=2e3,ym=1e4;async function bm({instanceClient:e,project:t,status:n,since:r,until:i,limit:a,offset:o}){let{data:s}=await e.post(`/`,{operation:`list_deployments`,project:t,status:n,since:r,until:i,limit:a,offset:o});return s}function xm(e){let{entityId:t,project:n,status:r,since:i,until:a,limit:o,offset:s,pollWhileOpen:c}=e;return B({queryKey:[t,`list_deployments`,{project:n,status:r,since:i,until:a,limit:o,offset:s}],queryFn:()=>bm(e),retry:!1,enabled:e.enabled!==!1,refetchInterval:c?e=>(e.state.data?.deployments??[]).some(e=>!_m(e.status))?vm:ym:!1})}var Sm={pending:`warning`,extracting:`warning`,installing:`warning`,loading:`warning`,replicating:`warning`,restarting:`warning`,success:`success`,failed:`destructive`,rolled_back:`destructive`},Cm={pending:`Pending`,extracting:`Extracting`,installing:`Installing`,loading:`Loading`,replicating:`Replicating`,restarting:`Restarting`,success:`Success`,failed:`Failed`,rolled_back:`Rolled back`};function wm({status:e}){return(0,W.jsx)(oo,{variant:Sm[e]??`secondary`,children:Cm[e]??e})}var Tm=ue();function Em(e){return e?Xu((Date.now()-e)/1e3,e):`—`}var Dm=[{header:`Project`,accessorKey:`project`,enableSorting:!1},Tm.display({header:`Status`,id:`status`,enableSorting:!1,cell:e=>(0,W.jsx)(wm,{status:e.row.original.status})}),Tm.display({header:`Started`,id:`started_at`,enableSorting:!1,cell:e=>Em(e.row.original.started_at)}),Tm.display({header:`Completed`,id:`completed_at`,enableSorting:!1,cell:e=>Em(e.row.original.completed_at)}),{header:`User`,accessorKey:`user`,enableSorting:!1},{header:`Origin`,accessorKey:`origin_node`,enableSorting:!1}];function Om({className:e,orientation:t=`horizontal`,decorative:n=!0,...r}){return(0,W.jsx)(Je,{"data-slot":`separator-root`,decorative:n,orientation:t,className:P(`bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px`,e),...r})}function km({className:e,children:t,...n}){return(0,W.jsxs)(at,{"data-slot":`scroll-area`,className:P(`relative`,e),...n,children:[(0,W.jsx)(st,{"data-slot":`scroll-area-viewport`,className:`focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1`,children:t}),(0,W.jsx)(Am,{}),(0,W.jsx)(kt,{})]})}function Am({className:e,orientation:t=`vertical`,...n}){return(0,W.jsx)(We,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:P(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent`,e),...n,children:(0,W.jsx)(Dt,{"data-slot":`scroll-area-thumb`,className:`bg-border relative flex-1 rounded-full`})})}async function*jm(e,t){let n=e.getReader(),r=new TextDecoder(`utf-8`),i=``,a=!1;try{for(;;){if(t?.aborted)return;let{value:e,done:s}=await n.read();if(s){a=!0;break}i+=r.decode(e,{stream:!0}),yield*o()}if(i+=r.decode(),i.trim()){let e=Mm(i);e&&(yield e)}}finally{a||n.cancel().catch(()=>{}),n.releaseLock()}function*o(){for(;;){let e=i.indexOf(`
|
|
21
21
|
|
|
22
22
|
`),t=i.indexOf(`\r
|
|
23
23
|
\r
|
|
24
|
-
`),n=-1,r=0;if(e!==-1&&(t===-1||e<t)?(n=e,r=2):t!==-1&&(n=t,r=4),n===-1)return;let a=i.slice(0,n);i=i.slice(n+r);let o=
|
|
25
|
-
`),id:r,retry:i}}function Mm(e){try{return JSON.parse(e.data)}catch{return e.data}}var Nm=class extends Error{constructor(e,t){super(e,t),this.name=`SSEUnsupportedError`}},Pm=class extends Error{constructor(e,t){super(e,t),this.name=`SSEInconclusiveError`}},Fm=class extends Error{code;phase;deploymentId;constructor(e,t){super(e),this.name=`SSEOperationError`,this.code=t?.code,this.phase=t?.phase,this.deploymentId=t?.deploymentId}};function Im({id:e=h,operationsUrl:t,port:n,secure:r,forceFabricConnect:i,disableFabricConnect:a}={}){let o=t||u.getOperationsUrl(e);if(o&&(n||r!==void 0)){let e=new URL(o);n&&(e.port=String(n)),r!==void 0&&(e.protocol=r?`https:`:`http:`),o=e.toString()}let s=u.checkForBasicAuth(e),c=i||a||s?void 0:u.getOperationToken(e),l=!c&&!a&&(i||u.checkForFabricConnect(e));if(l&&(e.startsWith(`clu-`)?o=N.defaults.baseURL+`/Cluster/${e}/operation`:e.startsWith(`ins-`)&&(o=N.defaults.baseURL+`/HDBInstance/${e}/operation`)),!o)throw Error(`No operations URL is known for "${e}"; cannot open an SSE stream.`);let d={"Content-Type":`application/json`,Accept:`text/event-stream`};return c?d.Authorization=`Bearer ${c}`:s&&!l&&(d.Authorization=`Basic ${btoa(`${s.username}:${s.password}`)}`),{url:o.replace(/\/+$/,``)+`/`,headers:d,credentials:l||!s&&!c?`include`:`same-origin`,mode:l?`proxy`:`direct`}}async function Lm({connection:e,body:t,signal:n,idleTimeoutMs:r=12e4,onMessage:i}){let{url:a,headers:o,credentials:s}=Im(e),c=new AbortController,{signal:l,cleanup:u}=Rm([n,c.signal]),d,f=()=>{d&&clearTimeout(d),d=setTimeout(()=>c.abort(),r)};try{let e;try{f(),e=await fetch(a,{method:`POST`,headers:o,credentials:s,body:JSON.stringify(t),signal:l})}catch(e){throw n?.aborted?e:new Nm(`Failed to open the SSE stream.`,{cause:e})}let r=e.headers.get(`content-type`)??``;if(!e.ok||!r.includes(`text/event-stream`)||!e.body)throw await e.body?.cancel().catch(()=>{}),new Nm(`Server did not return an event stream (status ${e.status}, content-type "${r}").`);let u=!1,d;try{for await(let t of Am(e.body,l)){if(f(),i?.(t),t.event===`done`){u=!0;let e=Mm(t);d=e?.result??e;break}if(t.event===`error`){u=!0;let e=Mm(t);if(!e||typeof e!=`object`)throw new Fm(typeof e==`string`&&e?e:`The operation failed.`);let n=e;throw new Fm(mn(n.message)??`The operation failed.`,{code:n.code,phase:n.phase,deploymentId:n.deployment_id})}}}catch(e){throw c.signal.aborted&&!n?.aborted?new Pm(`The stream went idle before completing.`,{cause:e}):e}if(!u)throw new Pm(`The stream ended without a terminal event.`);return d}finally{clearTimeout(d),u()}}function Rm(e){let t=()=>{},n=e.filter(e=>!!e);if(n.length===1)return{signal:n[0],cleanup:t};if(typeof AbortSignal.any==`function`)return{signal:AbortSignal.any(n),cleanup:t};let r=new AbortController;function i(){for(let e of n)e.removeEventListener(`abort`,a)}function a(e){r.abort(e.target.reason),i()}for(let e of n){if(e.aborted){r.abort(e.reason),i();break}e.addEventListener(`abort`,a)}return{signal:r.signal,cleanup:i}}var zm=[`prepare`,`load`,`replicate`,`restart`,`success`];async function Bm({connection:e,package:t,project:n,replicated:r,install_command:i,restart:a,signal:o,onEvent:s}){return await Lm({connection:e,body:{operation:`deploy_component`,package:t,project:n,replicated:r,install_command:i||void 0,restart:a},signal:o,onMessage:e=>{if(s)switch(e.event){case`phase`:s({type:`phase`,data:Mm(e)});break;case`install`:s({type:`install`,data:Mm(e)});break;case`peer`:s({type:`peer`,data:Mm(e)});break}}})??{}}var Vm={prepare:`Prepare`,load:`Load`,replicate:`Replicate`,restart:`Restart`,success:`Finish`};function Hm({status:e,isCurrent:t}){return e===`done`?(0,W.jsx)(un,{className:`size-4 text-success`}):e===`error`?(0,W.jsx)(pn,{className:`size-4 text-destructive`}):e===`start`||t?(0,W.jsx)(vr,{className:`size-4 animate-spin text-primary`}):(0,W.jsx)(Vn,{className:`size-4 text-muted-foreground`})}function Um({state:e}){let t=(0,G.useRef)(null);(0,G.useEffect)(()=>{t.current?.scrollIntoView({block:`end`})},[e.installLog.length]);let n=e.lifecycle===`error`;return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(`ol`,{className:`flex flex-col gap-2`,children:zm.map(t=>{let n=e.phases[t];return(0,W.jsxs)(`li`,{className:`flex items-center gap-2 text-sm`,children:[(0,W.jsx)(Hm,{status:n,isCurrent:e.currentPhase===t&&n!==`done`}),(0,W.jsx)(`span`,{className:P(n?`text-foreground`:`text-muted-foreground`),children:Vm[t]??t})]},t)})}),e.installLog.length>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(Dm,{className:`mb-2`}),(0,W.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Install output`}),(0,W.jsx)(Om,{className:`h-40 rounded-md border bg-muted/40`,children:(0,W.jsxs)(`pre`,{className:`whitespace-pre-wrap break-words p-2 font-mono text-xs leading-relaxed`,children:[e.installLog.map(e=>(0,W.jsx)(`div`,{className:P(e.stream===`stderr`&&`text-destructive`),children:e.line},e.id)),(0,W.jsx)(`div`,{ref:t})]})})]}),e.peers.length>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(Dm,{className:`mb-2`}),(0,W.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Replication`}),(0,W.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:e.peers.map((e,t)=>{let n=e.status===`failed`,r=mn(e.error??e.reason);return(0,W.jsxs)(`li`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[n?(0,W.jsx)(pn,{className:`size-4 text-destructive`}):(0,W.jsx)(un,{className:`size-4 text-success`}),(0,W.jsx)(`span`,{className:`truncate`,children:e.node??`node ${t+1}`})]}),n&&r&&(0,W.jsx)(`span`,{className:`truncate text-xs text-destructive`,children:r})]},t)})})]}),n&&e.error&&(0,W.jsxs)(`div`,{className:`flex items-start gap-2 text-sm text-destructive`,children:[(0,W.jsx)(Hn,{className:`mt-0.5 size-4 shrink-0`}),(0,W.jsx)(`span`,{children:e.error})]}),e.lifecycle===`inconclusive`&&(0,W.jsx)(ao,{variant:`warning`,className:`self-start`,children:`Live updates ended early — verifying…`})]})}var Wm={lifecycle:`idle`,phases:{},installLog:[],peers:[]},Gm=1e3;function Km(e,t){switch(t.kind){case`reset`:return Wm;case`start`:return{...Wm,lifecycle:`streaming`};case`event`:{let{event:n}=t;if(n.type===`phase`){let{phase:t,status:r}=n.data;return{...e,lifecycle:`streaming`,phases:{...e.phases,[t]:r},currentPhase:r===`start`?t:e.currentPhase}}if(n.type===`install`){let t=(e.installLog[e.installLog.length-1]?.id??0)+1,r=e.installLog.concat({id:t,stream:n.data.stream,line:n.data.line});return{...e,installLog:r.length>Gm?r.slice(-1e3):r}}return{...e,peers:e.peers.concat(n.data)}}case`settled`:return{...e,lifecycle:t.lifecycle,error:t.error}}}function qm(){let[e,t]=(0,G.useReducer)(Km,Wm),n=(0,G.useCallback)(e=>t({kind:`event`,event:e}),[]),r=(0,G.useCallback)(()=>t({kind:`start`}),[]),i=(0,G.useCallback)(()=>t({kind:`reset`}),[]),a=(0,G.useCallback)((e,n)=>t({kind:`settled`,lifecycle:e,error:n}),[]);return(0,G.useMemo)(()=>({state:e,onEvent:n,markStarted:r,markSettled:a,reset:i}),[e,n,r,a,i])}function Jm(){let{data:e}=R(ln(K()));return!!e?.version&&on(`5.1.0`,e.version)}function Ym(){let e=K();return Jm()&&u.isDirectConnection(e.entityId)}async function Xm({instanceClient:e,deploymentId:t}){let{data:n}=await e.post(`/`,{operation:`get_deployment`,deployment_id:t});return n}function Zm(e){return B({queryKey:[e.entityId,`get_deployment`,e.deploymentId],queryFn:()=>Xm(e),retry:!1,refetchInterval:t=>e.pollWhileActive&&!gm(t.state.data?.status)?2e3:!1})}async function Qm({connection:e,deploymentId:t,signal:n,onEvent:r}){return await Lm({connection:e,body:{operation:`get_deployment`,deployment_id:t},signal:n,onMessage:e=>{if(r)switch(e.event){case`phase`:r({type:`phase`,data:Mm(e)});break;case`install`:r({type:`install`,data:Mm(e)});break;case`peer`:r({type:`peer`,data:Mm(e)});break}}})??{}}function $m({label:e,value:t}){return t==null||t===``?null:(0,W.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e}),(0,W.jsx)(`span`,{className:`break-words text-sm`,children:t})]})}function eh(e){return e?Yu((Date.now()-e)/1e3,e):void 0}function th({deploymentId:e}){let t=K(),n=Ym(),r=ie(),i=qm(),{data:a,isLoading:o,error:s}=R(Zm({...t,deploymentId:e,pollWhileActive:!0})),c=!!a&&!gm(a.status);if((0,G.useEffect)(()=>{if(!n||!c)return;let a=new AbortController;return i.reset(),i.markStarted(),Qm({connection:{id:t.entityId},deploymentId:e,signal:a.signal,onEvent:i.onEvent}).then(()=>i.markSettled(`success`)).catch(()=>{a.signal.aborted||i.markSettled(`inconclusive`)}).finally(()=>{a.signal.aborted||r.invalidateQueries({queryKey:[t.entityId,`get_deployment`,e]})}),()=>a.abort()},[n,c,e,t.entityId]),o)return(0,W.jsx)(Ei,{className:`flex h-full flex-col items-center justify-center`,text:`Loading deployment...`});if(s||!a)return(0,W.jsx)(`div`,{className:`p-4 text-sm text-destructive`,children:`Could not load this deployment.`});let l=c&&(i.state.installLog.length>0||Object.keys(i.state.phases).length>0);return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4 p-1`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-lg font-semibold`,children:a.project}),(0,W.jsx)(Cm,{status:a.status}),a.phase&&(0,W.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:a.phase})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 md:grid-cols-3`,children:[(0,W.jsx)($m,{label:`Deployment ID`,value:(0,W.jsx)(`span`,{className:`font-mono text-xs`,children:a.deployment_id})}),(0,W.jsx)($m,{label:`User`,value:a.user}),(0,W.jsx)($m,{label:`Origin node`,value:a.origin_node}),(0,W.jsx)($m,{label:`Started`,value:eh(a.started_at)}),(0,W.jsx)($m,{label:`Completed`,value:eh(a.completed_at)}),(0,W.jsx)($m,{label:`Restart mode`,value:a.restart_mode??void 0}),(0,W.jsx)($m,{label:`Package`,value:a.package_identifier??void 0}),(0,W.jsx)($m,{label:`Payload size`,value:a.payload_size==null?void 0:en(a.payload_size)}),(0,W.jsx)($m,{label:`Payload hash`,value:a.payload_hash?(0,W.jsx)(`span`,{className:`font-mono text-xs`,children:a.payload_hash}):void 0}),(0,W.jsx)($m,{label:`Restorable`,value:a.restorable===void 0?void 0:a.restorable?`Yes`:`No`}),(0,W.jsx)($m,{label:`Rollback of`,value:a.rollback_of?(0,W.jsx)(`span`,{className:`font-mono text-xs`,children:a.rollback_of}):void 0})]}),l&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Dm,{}),(0,W.jsx)(Um,{state:i.state})]}),a.error&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Dm,{}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1 rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm`,children:[(0,W.jsxs)(`span`,{className:`font-medium text-destructive`,children:[`Error`,typeof a.error.phase==`string`&&a.error.phase?` during ${a.error.phase}`:``,typeof a.error.code==`string`||typeof a.error.code==`number`?` (${a.error.code})`:``]}),(0,W.jsx)(`span`,{className:`break-words`,children:mn(a.error)??`Unknown error`})]})]}),!!a.peer_results?.length&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Dm,{}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Replication`}),(0,W.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:a.peer_results.map((e,t)=>{let n=mn(e.error);return(0,W.jsxs)(`li`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(`span`,{className:`truncate`,children:e.node}),(0,W.jsxs)(`span`,{className:e.status===`failed`?`text-destructive`:`text-success`,children:[e.status??`ok`,n?`: ${n}`:``]})]},e.node??t)})})]})]}),!!a.event_log?.length&&(0,W.jsx)(nh,{deployment:a})]})}function nh({deployment:e}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Dm,{}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Activity`}),(0,W.jsx)(`ol`,{className:`flex flex-col gap-1 text-xs`,children:e.event_log.map((e,t)=>(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:new Date(e.t).toLocaleTimeString()}),(0,W.jsx)(`span`,{className:`font-medium`,children:e.event}),(0,W.jsx)(`span`,{className:`break-words text-muted-foreground`,children:typeof e.data==`string`?e.data:JSON.stringify(e.data)})]},t))})]})]})}function rh({deploymentId:e,isModalOpen:t,closeModal:n}){return(0,W.jsx)(qt,{onOpenChange:n,open:t,children:(0,W.jsxs)(tn,{resizable:!0,"aria-describedby":void 0,children:[(0,W.jsx)(Zt,{children:(0,W.jsx)(Jt,{children:`Deployment`})}),(0,W.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:(0,W.jsx)(th,{deploymentId:e})})]})})}function ih(){let e=Oe(),t=fs(),{deploymentId:n}=L({strict:!1}),{data:r,isFetching:i,isRefetching:a,refetch:o,error:s}=R(bm({...K(),limit:100,enabled:t,pollWhileOpen:!0})),c=(0,G.useMemo)(()=>r?.deployments??[],[r]),l=(0,G.useCallback)(t=>{let r=[n?`..`:``,t].filter(Boolean);e({to:r.join(`/`)||`.`})},[n,e]),u=(0,G.useCallback)(e=>l(e.original.deployment_id),[l]),d=(0,G.useCallback)(()=>l(void 0),[l]),f=Zu(o);return t?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Ku,{data:c,isFetching:i||a,columns:Em,onRowClick:u,children:(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:f,accessKey:`r`,disabled:i||a,children:[(0,W.jsx)(fn,{}),` `,(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]})}),s&&(0,W.jsx)(`div`,{className:`mt-2 text-sm text-muted-foreground`,children:`Could not load deployments. This instance may not support deployment history.`}),!s&&!i&&c.length===0&&(0,W.jsx)(`div`,{className:`mt-2 text-sm text-muted-foreground`,children:`No deployments yet.`}),!!n&&(0,W.jsx)(rh,{deploymentId:n,isModalOpen:!0,closeModal:d})]}):(0,W.jsx)(`div`,{className:`p-2 text-sm text-muted-foreground`,children:`Viewing deployments requires super-user permissions on this instance.`})}function ah(){return(0,W.jsx)(yp,{})}function oh({clusterId:e,instanceId:t,organizationId:n},r){return`/`+[n,e,t&&`instance`,t,r].filter(Xi).join(`/`)}var sh=`flex items-center p-2 rounded-lg group`,ch={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-gray-700`},lh={className:`text-black bg-white pointer-events-none cursor-default`};function uh(){let e=L({strict:!1}),{version:t}=De({strict:!1}),n=on(`4.6.0`,t),r=on(`5.1.0`,t),i=on(`5.2.0-alpha.1`,t),{clusterId:a}=e,o=fs(),{data:s}=R(Ba(a,!1));s===void 0||hs(s);let c=o&&(0,W.jsxs)(W.Fragment,{children:[n&&(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:oh(e,`config/certificates`),className:sh,inactiveProps:ch,activeProps:lh,children:[(0,W.jsx)(Vr,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Certificates`})]})}),r&&(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:oh(e,`config/deployments`),className:sh,inactiveProps:ch,activeProps:lh,children:[(0,W.jsx)(Nr,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Deployments`})]})}),!1,(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:oh(e,`config/roles`),className:sh,inactiveProps:ch,activeProps:lh,children:[(0,W.jsx)(ur,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Roles`})]})}),i&&(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:oh(e,`config/secrets`),className:sh,inactiveProps:ch,activeProps:lh,children:[(0,W.jsx)(yr,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Secrets`})]})}),n&&(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:oh(e,`config/ssh-keys`),className:sh,inactiveProps:ch,activeProps:lh,children:[(0,W.jsx)(mr,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`SSH Keys`})]})}),(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:oh(e,`config/users`),className:sh,inactiveProps:ch,activeProps:lh,children:[(0,W.jsx)(ri,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Users`})]})})]});return(0,W.jsxs)(`div`,{className:`md:grid gap-4 md:grid-cols-12 min-h-[calc(100vh-(--spacing(36)))]`,children:[(0,W.jsxs)(`section`,{className:`col-span-1 text-foreground md:col-span-4 lg:col-span-3 md:border-r border-b md:border-b-0 md:pr-4 border-gray-700`,children:[(0,W.jsx)(dh,{params:e,children:c}),(0,W.jsx)(fh,{params:e,children:c})]}),(0,W.jsx)(`section`,{className:`col-span-1 text-foreground md:col-span-8 lg:col-span-9 md:pt-4`,children:(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Ei,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:(0,W.jsx)(Se,{})})})]})}function dh({params:e,children:t}){return(0,W.jsxs)(`div`,{className:`hidden md:block pl-4 pt-4`,children:[(0,W.jsxs)(V,{to:oh(e,`config`),className:sh,activeOptions:{exact:!0},inactiveProps:ch,activeProps:lh,children:[(0,W.jsx)(Fn,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Overview`})]}),t&&(0,W.jsx)(`ul`,{className:`border-t border-gray-700 pt-4 mt-4 space-y-2`,children:t})]})}function fh({params:e,children:t}){return(0,W.jsxs)(`ul`,{className:`flex space-x-2 md:hidden py-2 px-4`,children:[(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:oh(e,`config`),className:sh,activeOptions:{exact:!0},inactiveProps:ch,activeProps:lh,children:[(0,W.jsx)(Fn,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Overview`})]})}),t]})}async function ph(e,t=3,n=1e3){let r=0;if(t<=0)throw Error(`retries must be greater than 0`);let i;for(;r<t;)try{return await e()}catch(e){if(r++,i=e,r===t)break;await a(n)}throw i}async function mh({operation:e,replicated:t,instanceClient:n}){let{data:i}=await n.post(`/`,{operation:e,service:e===`restart_service`?`http`:void 0,replicated:t});return await a(1e4),await ph(()=>r({instanceClient:n,timeout:3e3}),12,15e3),i}function hh(){return I({mutationFn:mh})}function gh({onRestartedSuccessfully:e}={}){let{clusterId:t}=L({strict:!1}),n=ie(),[i,s]=(0,G.useState)(!1);return{onRestartClick:(0,G.useCallback)(async()=>{if(!t)throw Error(`clusterId must be set in the route to invoke useRestartClusterClick`);s(!0);let i=!1,c={duration:6e4,action:{label:`Cancel`,onClick:()=>{i=!0}}},l=H.loading(`Restarting`,{...c,description:(0,W.jsx)(sn,{animated:!0,width:`0%`})}),d=await za(t),f=u.checkForFabricConnect(d.id),m=d?.instances??[],h=m.filter(e=>e.status===`RUNNING`).map(e=>g({id:e.id,forceFabricConnect:f,operationsUrl:p(e)})).reverse(),_=0;if(h.length)for(let e=0;e<h.length;e++){let t=h[e];if(!i){H.loading(`Restarting Instance ${e+1} of ${h.length}`,{...c,id:l,description:(0,W.jsx)(sn,{animated:!0,width:(e===0?0:e/h.length*100)+`%`})});try{await r({instanceClient:t}),await mh({operation:`restart`,replicated:!1,instanceClient:t}),_+=1}catch{e+1!==h.length&&(H.loading(`Failed Restarting Instance ${e+1} of ${h.length}`,{...c,id:l,description:`We will carry on momentarily.`}),await a(3e3))}}}if(s(!1),dc(n,t),i)H.error(`Cancelled`,{id:l,description:`The restart was partially cancelled.`,duration:1e4,action:{label:`Dismiss`,onClick:()=>H.dismiss()}});else if(m.length===_)e?.(),H.success(`Success`,{id:l,description:`Cluster fully restarted!`,duration:1e4,action:{label:`Dismiss`,onClick:()=>H.dismiss()}});else{let e=o(m.length,`instance`,`instances`),t=o(_,`"RUNNING" instance was`,`"RUNNING" instances were`);H.error(`Error`,{id:l,description:`Failed to fully restart cluster.
|
|
26
|
-
`+([m.length===0&&`No instances were found within the cluster to restart.`,_===0&&`No instances were in a "RUNNING" state of ${e}.`,m.length!==_&&`Only ${t} restarted of ${e}.`].filter(
|
|
27
|
-
`+([m.length===0&&`No instances were found within the cluster to restart.`,v===0&&`No instances were in a "RUNNING" state of ${e}.`,m.length!==v&&`Only ${t} restarted of ${e}.`].filter(
|
|
24
|
+
`),n=-1,r=0;if(e!==-1&&(t===-1||e<t)?(n=e,r=2):t!==-1&&(n=t,r=4),n===-1)return;let a=i.slice(0,n);i=i.slice(n+r);let o=Mm(a);o&&(yield o)}}}function Mm(e){let t=e.split(/\r?\n/),n=`message`,r,i,a=[];for(let e of t){if(e===``||e.startsWith(`:`))continue;let t=e.indexOf(`:`),o=t===-1?e:e.slice(0,t),s=t===-1?``:e.slice(t+1);switch(s.startsWith(` `)&&(s=s.slice(1)),o){case`event`:n=s;break;case`data`:a.push(s);break;case`id`:r=s;break;case`retry`:{let e=Number(s);Number.isFinite(e)&&(i=e);break}}}return a.length===0&&n===`message`?null:{event:n,data:a.join(`
|
|
25
|
+
`),id:r,retry:i}}function Nm(e){try{return JSON.parse(e.data)}catch{return e.data}}var Pm=class extends Error{constructor(e,t){super(e,t),this.name=`SSEUnsupportedError`}},Fm=class extends Error{constructor(e,t){super(e,t),this.name=`SSEInconclusiveError`}},Im=class extends Error{code;phase;deploymentId;constructor(e,t){super(e),this.name=`SSEOperationError`,this.code=t?.code,this.phase=t?.phase,this.deploymentId=t?.deploymentId}};function Lm({id:e=h,operationsUrl:t,port:n,secure:r,forceFabricConnect:i,disableFabricConnect:a}={}){let o=t||u.getOperationsUrl(e);if(o&&(n||r!==void 0)){let e=new URL(o);n&&(e.port=String(n)),r!==void 0&&(e.protocol=r?`https:`:`http:`),o=e.toString()}let s=u.checkForBasicAuth(e),c=i||a||s?void 0:u.getOperationToken(e),l=!c&&!a&&(i||u.checkForFabricConnect(e));if(l&&(e.startsWith(`clu-`)?o=N.defaults.baseURL+`/Cluster/${e}/operation`:e.startsWith(`ins-`)&&(o=N.defaults.baseURL+`/HDBInstance/${e}/operation`)),!o)throw Error(`No operations URL is known for "${e}"; cannot open an SSE stream.`);let d={"Content-Type":`application/json`,Accept:`text/event-stream`};return c?d.Authorization=`Bearer ${c}`:s&&!l&&(d.Authorization=`Basic ${btoa(`${s.username}:${s.password}`)}`),{url:o.replace(/\/+$/,``)+`/`,headers:d,credentials:l||!s&&!c?`include`:`same-origin`,mode:l?`proxy`:`direct`}}async function Rm({connection:e,body:t,signal:n,idleTimeoutMs:r=12e4,onMessage:i}){let{url:a,headers:o,credentials:s}=Lm(e),c=new AbortController,{signal:l,cleanup:u}=zm([n,c.signal]),d,f=()=>{d&&clearTimeout(d),d=setTimeout(()=>c.abort(),r)};try{let e;try{f(),e=await fetch(a,{method:`POST`,headers:o,credentials:s,body:JSON.stringify(t),signal:l})}catch(e){throw n?.aborted?e:new Pm(`Failed to open the SSE stream.`,{cause:e})}let r=e.headers.get(`content-type`)??``;if(!e.ok||!r.includes(`text/event-stream`)||!e.body)throw await e.body?.cancel().catch(()=>{}),new Pm(`Server did not return an event stream (status ${e.status}, content-type "${r}").`);let u=!1,d;try{for await(let t of jm(e.body,l)){if(f(),i?.(t),t.event===`done`){u=!0;let e=Nm(t);d=e?.result??e;break}if(t.event===`error`){u=!0;let e=Nm(t);if(!e||typeof e!=`object`)throw new Im(typeof e==`string`&&e?e:`The operation failed.`);let n=e;throw new Im(mn(n.message)??`The operation failed.`,{code:n.code,phase:n.phase,deploymentId:n.deployment_id})}}}catch(e){throw c.signal.aborted&&!n?.aborted?new Fm(`The stream went idle before completing.`,{cause:e}):e}if(!u)throw new Fm(`The stream ended without a terminal event.`);return d}finally{clearTimeout(d),u()}}function zm(e){let t=()=>{},n=e.filter(e=>!!e);if(n.length===1)return{signal:n[0],cleanup:t};if(typeof AbortSignal.any==`function`)return{signal:AbortSignal.any(n),cleanup:t};let r=new AbortController;function i(){for(let e of n)e.removeEventListener(`abort`,a)}function a(e){r.abort(e.target.reason),i()}for(let e of n){if(e.aborted){r.abort(e.reason),i();break}e.addEventListener(`abort`,a)}return{signal:r.signal,cleanup:i}}var Bm=[`prepare`,`load`,`replicate`,`restart`,`success`];async function Vm({connection:e,package:t,project:n,replicated:r,install_command:i,restart:a,signal:o,onEvent:s}){return await Rm({connection:e,body:{operation:`deploy_component`,package:t,project:n,replicated:r,install_command:i||void 0,restart:a},signal:o,onMessage:e=>{if(s)switch(e.event){case`phase`:s({type:`phase`,data:Nm(e)});break;case`install`:s({type:`install`,data:Nm(e)});break;case`peer`:s({type:`peer`,data:Nm(e)});break}}})??{}}var Hm={prepare:`Prepare`,load:`Load`,replicate:`Replicate`,restart:`Restart`,success:`Finish`};function Um({status:e,isCurrent:t}){return e===`done`?(0,W.jsx)(un,{className:`size-4 text-success`}):e===`error`?(0,W.jsx)(pn,{className:`size-4 text-destructive`}):e===`start`||t?(0,W.jsx)(yr,{className:`size-4 animate-spin text-primary`}):(0,W.jsx)(Hn,{className:`size-4 text-muted-foreground`})}function Wm({state:e}){let t=(0,G.useRef)(null);(0,G.useEffect)(()=>{t.current?.scrollIntoView({block:`end`})},[e.installLog.length]);let n=e.lifecycle===`error`;return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(`ol`,{className:`flex flex-col gap-2`,children:Bm.map(t=>{let n=e.phases[t];return(0,W.jsxs)(`li`,{className:`flex items-center gap-2 text-sm`,children:[(0,W.jsx)(Um,{status:n,isCurrent:e.currentPhase===t&&n!==`done`}),(0,W.jsx)(`span`,{className:P(n?`text-foreground`:`text-muted-foreground`),children:Hm[t]??t})]},t)})}),e.installLog.length>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(Om,{className:`mb-2`}),(0,W.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Install output`}),(0,W.jsx)(km,{className:`h-40 rounded-md border bg-muted/40`,children:(0,W.jsxs)(`pre`,{className:`whitespace-pre-wrap break-words p-2 font-mono text-xs leading-relaxed`,children:[e.installLog.map(e=>(0,W.jsx)(`div`,{className:P(e.stream===`stderr`&&`text-destructive`),children:e.line},e.id)),(0,W.jsx)(`div`,{ref:t})]})})]}),e.peers.length>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(Om,{className:`mb-2`}),(0,W.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Replication`}),(0,W.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:e.peers.map((e,t)=>{let n=e.status===`failed`,r=mn(e.error??e.reason);return(0,W.jsxs)(`li`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[n?(0,W.jsx)(pn,{className:`size-4 text-destructive`}):(0,W.jsx)(un,{className:`size-4 text-success`}),(0,W.jsx)(`span`,{className:`truncate`,children:e.node??`node ${t+1}`})]}),n&&r&&(0,W.jsx)(`span`,{className:`truncate text-xs text-destructive`,children:r})]},t)})})]}),n&&e.error&&(0,W.jsxs)(`div`,{className:`flex items-start gap-2 text-sm text-destructive`,children:[(0,W.jsx)(Un,{className:`mt-0.5 size-4 shrink-0`}),(0,W.jsx)(`span`,{children:e.error})]}),e.lifecycle===`inconclusive`&&(0,W.jsx)(oo,{variant:`warning`,className:`self-start`,children:`Live updates ended early — verifying…`})]})}var Gm={lifecycle:`idle`,phases:{},installLog:[],peers:[]},Km=1e3;function qm(e,t){switch(t.kind){case`reset`:return Gm;case`start`:return{...Gm,lifecycle:`streaming`};case`event`:{let{event:n}=t;if(n.type===`phase`){let{phase:t,status:r}=n.data;return{...e,lifecycle:`streaming`,phases:{...e.phases,[t]:r},currentPhase:r===`start`?t:e.currentPhase}}if(n.type===`install`){let t=(e.installLog[e.installLog.length-1]?.id??0)+1,r=e.installLog.concat({id:t,stream:n.data.stream,line:n.data.line});return{...e,installLog:r.length>Km?r.slice(-1e3):r}}return{...e,peers:e.peers.concat(n.data)}}case`settled`:return{...e,lifecycle:t.lifecycle,error:t.error}}}function Jm(){let[e,t]=(0,G.useReducer)(qm,Gm),n=(0,G.useCallback)(e=>t({kind:`event`,event:e}),[]),r=(0,G.useCallback)(()=>t({kind:`start`}),[]),i=(0,G.useCallback)(()=>t({kind:`reset`}),[]),a=(0,G.useCallback)((e,n)=>t({kind:`settled`,lifecycle:e,error:n}),[]);return(0,G.useMemo)(()=>({state:e,onEvent:n,markStarted:r,markSettled:a,reset:i}),[e,n,r,a,i])}function Ym(){let{data:e}=R(ln(K()));return!!e?.version&&on(`5.1.0`,e.version)}function Xm(){let e=K();return Ym()&&u.isDirectConnection(e.entityId)}async function Zm({instanceClient:e,deploymentId:t}){let{data:n}=await e.post(`/`,{operation:`get_deployment`,deployment_id:t});return n}function Qm(e){return B({queryKey:[e.entityId,`get_deployment`,e.deploymentId],queryFn:()=>Zm(e),retry:!1,refetchInterval:t=>e.pollWhileActive&&!_m(t.state.data?.status)?2e3:!1})}async function $m({connection:e,deploymentId:t,signal:n,onEvent:r}){return await Rm({connection:e,body:{operation:`get_deployment`,deployment_id:t},signal:n,onMessage:e=>{if(r)switch(e.event){case`phase`:r({type:`phase`,data:Nm(e)});break;case`install`:r({type:`install`,data:Nm(e)});break;case`peer`:r({type:`peer`,data:Nm(e)});break}}})??{}}function eh({label:e,value:t}){return t==null||t===``?null:(0,W.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e}),(0,W.jsx)(`span`,{className:`break-words text-sm`,children:t})]})}function th(e){return e?Xu((Date.now()-e)/1e3,e):void 0}function nh({deploymentId:e}){let t=K(),n=Xm(),r=ie(),i=Jm(),{data:a,isLoading:o,error:s}=R(Qm({...t,deploymentId:e,pollWhileActive:!0})),c=!!a&&!_m(a.status);if((0,G.useEffect)(()=>{if(!n||!c)return;let a=new AbortController;return i.reset(),i.markStarted(),$m({connection:{id:t.entityId},deploymentId:e,signal:a.signal,onEvent:i.onEvent}).then(()=>i.markSettled(`success`)).catch(()=>{a.signal.aborted||i.markSettled(`inconclusive`)}).finally(()=>{a.signal.aborted||r.invalidateQueries({queryKey:[t.entityId,`get_deployment`,e]})}),()=>a.abort()},[n,c,e,t.entityId]),o)return(0,W.jsx)(Di,{className:`flex h-full flex-col items-center justify-center`,text:`Loading deployment...`});if(s||!a)return(0,W.jsx)(`div`,{className:`p-4 text-sm text-destructive`,children:`Could not load this deployment.`});let l=c&&(i.state.installLog.length>0||Object.keys(i.state.phases).length>0);return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4 p-1`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-lg font-semibold`,children:a.project}),(0,W.jsx)(wm,{status:a.status}),a.phase&&(0,W.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:a.phase})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 md:grid-cols-3`,children:[(0,W.jsx)(eh,{label:`Deployment ID`,value:(0,W.jsx)(`span`,{className:`font-mono text-xs`,children:a.deployment_id})}),(0,W.jsx)(eh,{label:`User`,value:a.user}),(0,W.jsx)(eh,{label:`Origin node`,value:a.origin_node}),(0,W.jsx)(eh,{label:`Started`,value:th(a.started_at)}),(0,W.jsx)(eh,{label:`Completed`,value:th(a.completed_at)}),(0,W.jsx)(eh,{label:`Restart mode`,value:a.restart_mode??void 0}),(0,W.jsx)(eh,{label:`Package`,value:a.package_identifier??void 0}),(0,W.jsx)(eh,{label:`Payload size`,value:a.payload_size==null?void 0:en(a.payload_size)}),(0,W.jsx)(eh,{label:`Payload hash`,value:a.payload_hash?(0,W.jsx)(`span`,{className:`font-mono text-xs`,children:a.payload_hash}):void 0}),(0,W.jsx)(eh,{label:`Restorable`,value:a.restorable===void 0?void 0:a.restorable?`Yes`:`No`}),(0,W.jsx)(eh,{label:`Rollback of`,value:a.rollback_of?(0,W.jsx)(`span`,{className:`font-mono text-xs`,children:a.rollback_of}):void 0})]}),l&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Om,{}),(0,W.jsx)(Wm,{state:i.state})]}),a.error&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Om,{}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1 rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm`,children:[(0,W.jsxs)(`span`,{className:`font-medium text-destructive`,children:[`Error`,typeof a.error.phase==`string`&&a.error.phase?` during ${a.error.phase}`:``,typeof a.error.code==`string`||typeof a.error.code==`number`?` (${a.error.code})`:``]}),(0,W.jsx)(`span`,{className:`break-words`,children:mn(a.error)??`Unknown error`})]})]}),!!a.peer_results?.length&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Om,{}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Replication`}),(0,W.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:a.peer_results.map((e,t)=>{let n=mn(e.error);return(0,W.jsxs)(`li`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(`span`,{className:`truncate`,children:e.node}),(0,W.jsxs)(`span`,{className:e.status===`failed`?`text-destructive`:`text-success`,children:[e.status??`ok`,n?`: ${n}`:``]})]},e.node??t)})})]})]}),!!a.event_log?.length&&(0,W.jsx)(rh,{deployment:a})]})}function rh({deployment:e}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Om,{}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Activity`}),(0,W.jsx)(`ol`,{className:`flex flex-col gap-1 text-xs`,children:e.event_log.map((e,t)=>(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:new Date(e.t).toLocaleTimeString()}),(0,W.jsx)(`span`,{className:`font-medium`,children:e.event}),(0,W.jsx)(`span`,{className:`break-words text-muted-foreground`,children:typeof e.data==`string`?e.data:JSON.stringify(e.data)})]},t))})]})]})}function ih({deploymentId:e,isModalOpen:t,closeModal:n}){return(0,W.jsx)(qt,{onOpenChange:n,open:t,children:(0,W.jsxs)(tn,{resizable:!0,"aria-describedby":void 0,children:[(0,W.jsx)(Zt,{children:(0,W.jsx)(Jt,{children:`Deployment`})}),(0,W.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:(0,W.jsx)(nh,{deploymentId:e})})]})})}function ah(){let e=Oe(),t=ps(),{deploymentId:n}=L({strict:!1}),{data:r,isFetching:i,isRefetching:a,refetch:o,error:s}=R(xm({...K(),limit:100,enabled:t,pollWhileOpen:!0})),c=(0,G.useMemo)(()=>r?.deployments??[],[r]),l=(0,G.useCallback)(t=>{let r=[n?`..`:``,t].filter(Boolean);e({to:r.join(`/`)||`.`})},[n,e]),u=(0,G.useCallback)(e=>l(e.original.deployment_id),[l]),d=(0,G.useCallback)(()=>l(void 0),[l]),f=Qu(o);return t?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(qu,{data:c,isFetching:i||a,columns:Dm,onRowClick:u,children:(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:f,accessKey:`r`,disabled:i||a,children:[(0,W.jsx)(fn,{}),` `,(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]})}),s&&(0,W.jsx)(`div`,{className:`mt-2 text-sm text-muted-foreground`,children:`Could not load deployments. This instance may not support deployment history.`}),!s&&!i&&c.length===0&&(0,W.jsx)(`div`,{className:`mt-2 text-sm text-muted-foreground`,children:`No deployments yet.`}),!!n&&(0,W.jsx)(ih,{deploymentId:n,isModalOpen:!0,closeModal:d})]}):(0,W.jsx)(`div`,{className:`p-2 text-sm text-muted-foreground`,children:`Viewing deployments requires super-user permissions on this instance.`})}function oh(){return(0,W.jsx)(bp,{})}function sh({clusterId:e,instanceId:t,organizationId:n},r){return`/`+[n,e,t&&`instance`,t,r].filter(Zi).join(`/`)}var ch=`flex items-center p-2 rounded-lg group`,lh={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-gray-700`},uh={className:`text-black bg-white pointer-events-none cursor-default`};function dh(){let e=L({strict:!1}),{version:t}=De({strict:!1}),n=on(`4.6.0`,t),r=on(`5.1.0`,t),i=on(`5.2.0-alpha.1`,t),{clusterId:a}=e,o=ps(),{data:s}=R(Va(a,!1));s===void 0||gs(s);let c=o&&(0,W.jsxs)(W.Fragment,{children:[n&&(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:sh(e,`config/certificates`),className:ch,inactiveProps:lh,activeProps:uh,children:[(0,W.jsx)(Hr,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Certificates`})]})}),r&&(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:sh(e,`config/deployments`),className:ch,inactiveProps:lh,activeProps:uh,children:[(0,W.jsx)(Pr,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Deployments`})]})}),!1,(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:sh(e,`config/roles`),className:ch,inactiveProps:lh,activeProps:uh,children:[(0,W.jsx)(dr,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Roles`})]})}),i&&(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:sh(e,`config/secrets`),className:ch,inactiveProps:lh,activeProps:uh,children:[(0,W.jsx)(br,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Secrets`})]})}),n&&(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:sh(e,`config/ssh-keys`),className:ch,inactiveProps:lh,activeProps:uh,children:[(0,W.jsx)(hr,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`SSH Keys`})]})}),(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:sh(e,`config/users`),className:ch,inactiveProps:lh,activeProps:uh,children:[(0,W.jsx)(ii,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Users`})]})})]});return(0,W.jsxs)(`div`,{className:`md:grid gap-4 md:grid-cols-12 min-h-[calc(100vh-(--spacing(36)))]`,children:[(0,W.jsxs)(`section`,{className:`col-span-1 text-foreground md:col-span-4 lg:col-span-3 md:border-r border-b md:border-b-0 md:pr-4 border-gray-700`,children:[(0,W.jsx)(fh,{params:e,children:c}),(0,W.jsx)(ph,{params:e,children:c})]}),(0,W.jsx)(`section`,{className:`col-span-1 text-foreground md:col-span-8 lg:col-span-9 md:pt-4`,children:(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Di,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:(0,W.jsx)(Se,{})})})]})}function fh({params:e,children:t}){return(0,W.jsxs)(`div`,{className:`hidden md:block pl-4 pt-4`,children:[(0,W.jsxs)(V,{to:sh(e,`config`),className:ch,activeOptions:{exact:!0},inactiveProps:lh,activeProps:uh,children:[(0,W.jsx)(In,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Overview`})]}),t&&(0,W.jsx)(`ul`,{className:`border-t border-gray-700 pt-4 mt-4 space-y-2`,children:t})]})}function ph({params:e,children:t}){return(0,W.jsxs)(`ul`,{className:`flex space-x-2 md:hidden py-2 px-4`,children:[(0,W.jsx)(`li`,{children:(0,W.jsxs)(V,{to:sh(e,`config`),className:ch,activeOptions:{exact:!0},inactiveProps:lh,activeProps:uh,children:[(0,W.jsx)(In,{className:`hidden md:inline-block`}),` `,(0,W.jsx)(`span`,{className:`ms-3`,children:`Overview`})]})}),t]})}async function mh(e,t=3,n=1e3){let r=0;if(t<=0)throw Error(`retries must be greater than 0`);let i;for(;r<t;)try{return await e()}catch(e){if(r++,i=e,r===t)break;await a(n)}throw i}async function hh({operation:e,replicated:t,instanceClient:n}){let{data:i}=await n.post(`/`,{operation:e,service:e===`restart_service`?`http`:void 0,replicated:t});return await a(1e4),await mh(()=>r({instanceClient:n,timeout:3e3}),12,15e3),i}function gh(){return I({mutationFn:hh})}function _h({onRestartedSuccessfully:e}={}){let{clusterId:t}=L({strict:!1}),n=ie(),[i,s]=(0,G.useState)(!1);return{onRestartClick:(0,G.useCallback)(async()=>{if(!t)throw Error(`clusterId must be set in the route to invoke useRestartClusterClick`);s(!0);let i=!1,c={duration:6e4,action:{label:`Cancel`,onClick:()=>{i=!0}}},l=H.loading(`Restarting`,{...c,description:(0,W.jsx)(sn,{animated:!0,width:`0%`})}),d=await Ba(t),f=u.checkForFabricConnect(d.id),m=d?.instances??[],h=m.filter(e=>e.status===`RUNNING`).map(e=>g({id:e.id,forceFabricConnect:f,operationsUrl:p(e)})).reverse(),_=0;if(h.length)for(let e=0;e<h.length;e++){let t=h[e];if(!i){H.loading(`Restarting Instance ${e+1} of ${h.length}`,{...c,id:l,description:(0,W.jsx)(sn,{animated:!0,width:(e===0?0:e/h.length*100)+`%`})});try{await r({instanceClient:t}),await hh({operation:`restart`,replicated:!1,instanceClient:t}),_+=1}catch{e+1!==h.length&&(H.loading(`Failed Restarting Instance ${e+1} of ${h.length}`,{...c,id:l,description:`We will carry on momentarily.`}),await a(3e3))}}}if(s(!1),fc(n,t),i)H.error(`Cancelled`,{id:l,description:`The restart was partially cancelled.`,duration:1e4,action:{label:`Dismiss`,onClick:()=>H.dismiss()}});else if(m.length===_)e?.(),H.success(`Success`,{id:l,description:`Cluster fully restarted!`,duration:1e4,action:{label:`Dismiss`,onClick:()=>H.dismiss()}});else{let e=o(m.length,`instance`,`instances`),t=o(_,`"RUNNING" instance was`,`"RUNNING" instances were`);H.error(`Error`,{id:l,description:`Failed to fully restart cluster.
|
|
26
|
+
`+([m.length===0&&`No instances were found within the cluster to restart.`,_===0&&`No instances were in a "RUNNING" state of ${e}.`,m.length!==_&&`Only ${t} restarted of ${e}.`].filter(Zi).shift()||``),duration:1e4,action:{label:`Dismiss`,onClick:()=>H.dismiss()}})}},[t,e,n]),isRestartPending:i}}function vh({operation:e,instanceClient:t,onRestartedSuccessfully:n}){let{clusterId:r,instanceId:i}=L({strict:!1}),a=`Instance`,{mutateAsync:o,isPending:s}=gh(),c=ie();return{onRestartClick:(0,G.useCallback)(async()=>{let s=H.loading(`Restarting`,{description:`Restarting instance. This may take up to 60 seconds.`,duration:18e4,action:{label:`Dismiss`,onClick:()=>H.dismiss()}});try{await o({operation:e,replicated:e===`restart_service`&&!1,instanceClient:t}),fc(c,r),fc(c,i),H.dismiss(s),H.success(`Success`,{description:`${a} restarted!`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}}),n?.()}catch{H.dismiss(s),H.error(`Error`,{description:`Failed to restart instance.`,action:{label:`Dismiss`,onClick:()=>H.dismiss()}})}},[r,t,i,n,e,c,o,a]),isRestartPending:s}}function yh({className:e,disabled:t,hideText:n,instanceClient:r,operation:i,targetNoun:a,tooltip:o,variant:s}){let{onRestartClick:c,isRestartPending:l}=_h(),{onRestartClick:u,isRestartPending:d}=vh({operation:i,instanceClient:r});return(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsxs)(F,{type:`button`,variant:s||`positiveOutline`,className:_(`mx-0 md:mx-4`,e),onClick:a===`Cluster`&&i===`restart`?c:u,disabled:t||d||l,title:`Restart ${a}`,children:[(0,W.jsx)(Fr,{className:`pointer-events-none`}),n!==!0&&(0,W.jsxs)(`span`,{className:`hidden md:inline-block pointer-events-none`,children:[`Restart `,(0,W.jsx)(`span`,{className:`hidden 2xl:inline-block`,children:a})]})]})}),(0,W.jsx)(Rt,{side:`bottom`,children:o||(i===`restart_service`?`Restarts all service threads to apply changes. No downtime expected. Performance may be briefly slower during restart.`:`This fully restarts the Harper service and causes downtime.`)})]})}var bh=E(`relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current`,{variants:{variant:{default:`bg-card text-card-foreground`,destructive:`text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90`,warning:`border-amber-500/50 text-amber-600 dark:text-amber-400 bg-amber-50/50 dark:bg-amber-950/20 [&>svg]:text-amber-600 dark:[&>svg]:text-amber-400`}},defaultVariants:{variant:`default`}});function xh({className:e,variant:t,...n}){return(0,W.jsx)(`div`,{"data-slot":`alert`,role:`alert`,className:P(bh({variant:t}),e),...n})}function Sh({className:e,...t}){return(0,W.jsx)(`div`,{"data-slot":`alert-title`,className:P(`col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight`,e),...t})}function Ch({className:e,...t}){return(0,W.jsx)(`div`,{"data-slot":`alert-description`,className:P(`text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed`,e),...t})}async function wh({clusterId:e,instanceId:t}){return null}function Th(e){return B({queryKey:[e.clusterId,e.instanceId],queryFn:()=>wh(e),retry:!1})}var Eh=({loadingRegistration:e,registrationInfo:t})=>{let n=!!t?.version&&parseInt(t.version[0],10)>=5&&`https://github.com/HarperFast/harper/releases/tag/v${t.version}`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`dt`,{className:`font-bold text-sm/6`,children:`Harper Version`}),(0,W.jsx)(`dd`,{className:`text-sm/6 sm:mt-2`,children:e?(0,W.jsx)(Kl,{className:`w-10`}):n?(0,W.jsx)(`a`,{href:n,target:`_blank`,className:`underline hover:text-blue-300`,rel:`noopener noreferrer`,children:t.version}):t?.version||`Unknown`})]})},Dh=({loading:e,timestamp:t})=>{let n=t?new Date(t).toLocaleString():`Never`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`dt`,{className:`font-bold text-sm/6`,children:`Last Deployed`}),(0,W.jsx)(`dd`,{className:`text-sm/6 sm:mt-2`,children:e?(0,W.jsx)(Kl,{className:`w-24`}):n})]})};async function Oh({instanceClient:e,...t}){let{data:n}=await e.post(`/`,{operation:`set_configuration`,...t});return n}function kh({onRestartedSuccessfully:e}={}){let t=K(),n=ie(),[i,s]=(0,G.useState)(!1);return{onConfigUpdate:(0,G.useCallback)(async i=>{s(!0);let c=!1,l={duration:6e4,action:{label:`Cancel`,onClick:()=>{c=!0}}},d=H.loading(`Restarting`,{...l,description:(0,W.jsx)(sn,{animated:!0,width:`0%`})}),f=t.entityType===`cluster`?await Ba(t.entityId):null,m=t.entityType===`cluster`?f?.instances||[]:[{id:t.entityId,status:`RUNNING`}],h=!!f&&u.checkForFabricConnect(f.id),_=t.entityType===`cluster`?m.filter(e=>e.status===`RUNNING`).map(e=>g({id:e.id,forceFabricConnect:h,operationsUrl:p(e)})).reverse():[t.instanceClient],v=0;if(_.length)for(let e=0;e<_.length;e++){let t=_[e];if(!c){H.loading(`Updating Instance ${e+1} of ${_.length}`,{...l,id:d,description:(0,W.jsx)(sn,{animated:!0,width:(e===0?0:e/_.length*100)+`%`})});try{await r({instanceClient:t}),await Oh({...i,instanceClient:t}),await hh({operation:`restart_service`,replicated:!1,instanceClient:t}),v+=1}catch{e+1!==_.length&&(H.loading(`Failed Restarting Instance ${e+1} of ${_.length}`,{...l,id:d,description:`We will carry on momentarily.`}),await a(3e3))}}}if(s(!1),n.invalidateQueries({queryKey:[`get_configuration`,t.entityId]}),c)H.error(`Cancelled`,{id:d,description:`The config update was partially cancelled.`,duration:1e4,action:{label:`Dismiss`,onClick:()=>H.dismiss()}});else if(m.length===v)e?.(),H.success(`Success`,{id:d,description:`Your configuration has been updated successfully!`,duration:1e4,action:{label:`Dismiss`,onClick:()=>H.dismiss()}});else{let e=o(m.length,`instance`,`instances`),t=o(v,`"RUNNING" instance was`,`"RUNNING" instances were`);H.error(`Error`,{id:d,description:`Failed to fully update cluster.
|
|
27
|
+
`+([m.length===0&&`No instances were found within the cluster to restart.`,v===0&&`No instances were in a "RUNNING" state of ${e}.`,m.length!==v&&`Only ${t} restarted of ${e}.`].filter(Zi).shift()||``),duration:1e4,action:{label:`Dismiss`,onClick:()=>H.dismiss()}})}},[t,e,n]),isPending:i}}async function Ah({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_components`});return t}function jh(e){return B({queryKey:[e.entityId,`get_components`],queryFn:()=>Ah(e),retry:!1,enabled:e.enabled!==!1})}function Mh({entityId:e,instanceClient:t}){return B({queryKey:[`get_configuration`,e],queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`get_configuration`});return e}})}function Nh({entityId:e,instanceClient:t},n){return B({queryKey:[`get_usage_licenses`,e],enabled:n,queryFn:async()=>{try{let{data:e}=await t.post(`/`,{operation:`get_usage_licenses`});return e}catch(e){return console.error(e),null}}})}var Ph={http:{port:`blocked`,securePort:`blocked`},threads:`blocked`,authentication:{enableSessions:`blocked`},logging:{auditLog:`blocked`,root:`blocked`,rotation:{path:`blocked`}},mqtt:{network:{port:`blocked`,securePort:`blocked`}},operationsApi:{network:{domainSocket:`blocked`,port:`blocked`,securePort:`blocked`}},rootPath:`blocked`,replication:`blocked_except_databases`,storage:`blocked`,tls:`blocked`,node:`blocked`,license:`blocked`,componentsRoot:`blocked`,analytics:`allowed`,applications:`allowed`,localStudio:`allowed`};function Fh(e,t,n){if(JSON.stringify(t)===JSON.stringify(n))return!1;let r=e.split(`.`),i=Ph;for(let e=0;e<r.length;e++){let t=r[e];if(i===`blocked`)return!0;if(i===`blocked_except_databases`)return t!==`databases`;if(typeof i==`object`&&i&&t in i)i=i[t];else return!1}return i===`blocked`}function Ih(e,t=Ph){if(typeof e!=`object`||!e)return e;let n=Array.isArray(e)?[]:{};for(let r in e){let i=e[r],a=t?.[r];if(a!==`blocked`)if(a===`blocked_except_databases`){i&&typeof i==`object`&&`databases`in i&&(n.replication={databases:i.databases});continue}else if(typeof a==`object`&&a){let e=Ih(i,a);e!==void 0&&(typeof e!=`object`||Object.keys(e).length>0)&&(n[r]=e)}else n[r]=i}return n}function Lh(e,t){if(typeof e!=`object`||!e||typeof t!=`object`||!t)return JSON.stringify(e)===JSON.stringify(t)?void 0:t;let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let i of r){let r=e[i],a=t[i];if(typeof r==`object`&&r&&typeof a==`object`&&a&&!Array.isArray(r)&&!Array.isArray(a)){let e=Lh(r,a);Object.keys(e).length>0&&(n[i]=e)}else JSON.stringify(r)!==JSON.stringify(a)&&(n[i]=a)}return n}function Rh(e,t=``){let n={};for(let r in e){let i=e[r],a=t?`${t}_${r}`:r;typeof i==`object`&&i&&!Array.isArray(i)?Object.assign(n,Rh(i,a)):n[a]=i}return n}var zh=t({getWorker:()=>Vh,jsonDefaults:()=>Bh}),Bh=new class{constructor(e,t,n){this._onDidChange=new Sn,this._languageId=e,this.setDiagnosticsOptions(t),this.setModeConfiguration(n)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}}(`json`,{validate:!0,allowComments:!0,schemas:[],enableSchemaRequest:!1,schemaRequest:`warning`,schemaValidation:`warning`,comments:`error`,trailingCommas:`error`},{documentFormattingEdits:!0,documentRangeFormattingEdits:!0,completionItems:!0,hovers:!0,documentSymbols:!0,tokens:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0}),Vh=()=>Hh().then(e=>e.getWorker());function Hh(){return je(()=>import(`./jsonMode-X_blmtuO.js`),__vite__mapDeps([30,10,1,11,31,32,33]))}xn.register({id:`json`,extensions:[`.json`,`.bowerrc`,`.jshintrc`,`.jscsrc`,`.eslintrc`,`.babelrc`,`.har`],aliases:[`JSON`,`json`],mimetypes:[`application/json`]}),xn.onLanguage(`json`,()=>{Hh().then(e=>e.setupMode(Bh))});var Uh=`5.9.3`,Wh=t({JsxEmit:()=>Kh,ModuleKind:()=>Gh,ModuleResolutionKind:()=>Yh,NewLineKind:()=>qh,ScriptTarget:()=>Jh,getJavaScriptWorker:()=>ng,getTypeScriptWorker:()=>tg,javascriptDefaults:()=>eg,typescriptDefaults:()=>$h,typescriptVersion:()=>Zh}),Gh=(e=>(e[e.None=0]=`None`,e[e.CommonJS=1]=`CommonJS`,e[e.AMD=2]=`AMD`,e[e.UMD=3]=`UMD`,e[e.System=4]=`System`,e[e.ES2015=5]=`ES2015`,e[e.ESNext=99]=`ESNext`,e))(Gh||{}),Kh=(e=>(e[e.None=0]=`None`,e[e.Preserve=1]=`Preserve`,e[e.React=2]=`React`,e[e.ReactNative=3]=`ReactNative`,e[e.ReactJSX=4]=`ReactJSX`,e[e.ReactJSXDev=5]=`ReactJSXDev`,e))(Kh||{}),qh=(e=>(e[e.CarriageReturnLineFeed=0]=`CarriageReturnLineFeed`,e[e.LineFeed=1]=`LineFeed`,e))(qh||{}),Jh=(e=>(e[e.ES3=0]=`ES3`,e[e.ES5=1]=`ES5`,e[e.ES2015=2]=`ES2015`,e[e.ES2016=3]=`ES2016`,e[e.ES2017=4]=`ES2017`,e[e.ES2018=5]=`ES2018`,e[e.ES2019=6]=`ES2019`,e[e.ES2020=7]=`ES2020`,e[e.ESNext=99]=`ESNext`,e[e.JSON=100]=`JSON`,e[e.Latest=99]=`Latest`,e))(Jh||{}),Yh=(e=>(e[e.Classic=1]=`Classic`,e[e.NodeJs=2]=`NodeJs`,e))(Yh||{}),Xh=class{constructor(e,t,n,r,i){this._onDidChange=new Sn,this._onDidExtraLibsChange=new Sn,this._extraLibs=Object.create(null),this._removedExtraLibs=Object.create(null),this._eagerModelSync=!1,this.setCompilerOptions(e),this.setDiagnosticsOptions(t),this.setWorkerOptions(n),this.setInlayHintsOptions(r),this.setModeConfiguration(i),this._onDidExtraLibsChangeTimeout=-1}get onDidChange(){return this._onDidChange.event}get onDidExtraLibsChange(){return this._onDidExtraLibsChange.event}get modeConfiguration(){return this._modeConfiguration}get workerOptions(){return this._workerOptions}get inlayHintsOptions(){return this._inlayHintsOptions}getExtraLibs(){return this._extraLibs}addExtraLib(e,t){let n;if(n=t===void 0?`ts:extralib-${Math.random().toString(36).substring(2,15)}`:t,this._extraLibs[n]&&this._extraLibs[n].content===e)return{dispose:()=>{}};let r=1;return this._removedExtraLibs[n]&&(r=this._removedExtraLibs[n]+1),this._extraLibs[n]&&(r=this._extraLibs[n].version+1),this._extraLibs[n]={content:e,version:r},this._fireOnDidExtraLibsChangeSoon(),{dispose:()=>{let e=this._extraLibs[n];e&&e.version===r&&(delete this._extraLibs[n],this._removedExtraLibs[n]=r,this._fireOnDidExtraLibsChangeSoon())}}}setExtraLibs(e){for(let e in this._extraLibs)this._removedExtraLibs[e]=this._extraLibs[e].version;if(this._extraLibs=Object.create(null),e&&e.length>0)for(let t of e){let e=t.filePath||`ts:extralib-${Math.random().toString(36).substring(2,15)}`,n=t.content,r=1;this._removedExtraLibs[e]&&(r=this._removedExtraLibs[e]+1),this._extraLibs[e]={content:n,version:r}}this._fireOnDidExtraLibsChangeSoon()}_fireOnDidExtraLibsChangeSoon(){this._onDidExtraLibsChangeTimeout===-1&&(this._onDidExtraLibsChangeTimeout=window.setTimeout(()=>{this._onDidExtraLibsChangeTimeout=-1,this._onDidExtraLibsChange.fire(void 0)},0))}getCompilerOptions(){return this._compilerOptions}setCompilerOptions(e){this._compilerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}getDiagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setWorkerOptions(e){this._workerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setInlayHintsOptions(e){this._inlayHintsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setMaximumWorkerIdleTime(e){}setEagerModelSync(e){this._eagerModelSync=e}getEagerModelSync(){return this._eagerModelSync}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(void 0)}},Zh=Uh,Qh={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,diagnostics:!0,documentRangeFormattingEdits:!0,signatureHelp:!0,onTypeFormattingEdits:!0,codeActions:!0,inlayHints:!0},$h=new Xh({allowNonTsExtensions:!0,target:99},{noSemanticValidation:!1,noSyntaxValidation:!1,onlyVisible:!1},{},{},Qh),eg=new Xh({allowNonTsExtensions:!0,allowJs:!0,target:99},{noSemanticValidation:!0,noSyntaxValidation:!1,onlyVisible:!1},{},{},Qh),tg=()=>rg().then(e=>e.getTypeScriptWorker()),ng=()=>rg().then(e=>e.getJavaScriptWorker());function rg(){return je(()=>import(`./tsMode-CevZSdk5.js`),__vite__mapDeps([34,10,1,11,32]))}xn.onLanguage(`typescript`,()=>rg().then(e=>e.setupTypeScript($h))),xn.onLanguage(`javascript`,()=>rg().then(e=>e.setupJavaScript(eg)));var ig=Wh,ag=zh,og=JSON.parse(`{
|
|
28
28
|
"$schema": "https://json-schema.org/draft-06/schema",
|
|
29
29
|
"$id": "https://harper.fast/schema/config-root.schema.json",
|
|
30
30
|
"title": "HarperDB Root Configuration",
|
|
@@ -667,19 +667,19 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
667
667
|
}
|
|
668
668
|
]
|
|
669
669
|
}
|
|
670
|
-
`),og=`inmemory://harper/config-root.json`,sg=`harper://schemas/config-root.json`;function cg(){let e=ig.jsonDefaults,{schemas:t=[],...n}=e.diagnosticsOptions;t.some(e=>e.uri===sg)||e.setDiagnosticsOptions({...n,validate:!0,enableSchemaRequest:!1,schemas:[...t,{uri:sg,fileMatch:[og],schema:ag}]})}var lg=({children:e})=>(0,W.jsx)(W.Fragment,{children:e});function ug(){let{clusterId:e,instanceId:t}=L({strict:!1}),{data:n,isLoading:r}=R(wh({clusterId:e,instanceId:t})),i=K(),{version:a}=De({strict:!1}),{data:o}=R(Mh(i,!1));n?.cluster;let s=n?.instance,{data:c,isLoading:l}=R(ln(i)),{data:u,isLoading:d}=R(jh(i)),f=fs(),{data:p,isLoading:m}=R(Ah({...i,enabled:f})),h=(0,G.useMemo)(()=>{if(!p)return null;let e=0,t=n=>{n.mtime&&(e=Math.max(e,new Date(n.mtime).getTime())),`entries`in n&&n.entries&&n.entries.forEach(t)};return t(p),e||null},[p]),g=(0,G.useMemo)(()=>u?Fh(u):null,[u]),_=ld(),[v,y]=(0,G.useState)(!1),[b,x]=(0,G.useState)(``),[S,C]=(0,G.useState)(null),[w,T]=(0,G.useState)([]),{onConfigUpdate:E,isPending:D}=Oh();(0,G.useEffect)(()=>{g&&!v&&(x(JSON.stringify(g,null,4)),C(null),T([]))},[g,v]);let O=(0,G.useCallback)(e=>{if(x(e||``),e)try{let t=JSON.parse(e);C(null);let n=[],r=(e,t,i=``)=>{for(let a in e){let o=i?`${i}.${a}`:a,s=e[a],c=t?.[a];Ph(o,s,c)?n.push(o):typeof s==`object`&&s&&!Array.isArray(s)&&r(s,c,o)}for(let r in t){let a=i?`${i}.${r}`:r;r in e||Ph(a,void 0,t[r])&&n.push(a)}};g&&r(t,g),T(n)}catch(e){C(e.message),T([])}},[u]),k=(0,G.useCallback)(()=>{cg()},[]),A=(0,G.useCallback)(()=>{if(!(S||w.length>0))try{let e=JSON.parse(b),t=Lh(Ih(g,e));E(t),y(!1)}catch(e){C(e.message)}},[b,S,E,g,w.length]);return(0,G.useMemo)(()=>[],[o,s]),(0,W.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,W.jsx)(lg,{children:(0,W.jsxs)(`dl`,{className:`grid grid-cols-1 sm:grid-cols-3`,children:[(0,W.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,W.jsx)(Th,{loadingRegistration:l,registrationInfo:c})}),(0,W.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,W.jsx)(Eh,{loading:m,timestamp:h})}),(0,W.jsx)(`div`,{className:`px-4 pb-4 text-right sm:col-span-1 sm:px-0`,children:(0,W.jsx)(vh,{targetNoun:`Instance`,instanceClient:i.instanceClient,operation:`restart`})})]})}),(0,W.jsxs)(`div`,{className:`flex-none flex items-center justify-between mb-2`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`h3`,{className:`font-bold text-sm/6`,children:[`Instance Config `,v?`(editing)`:`(read only)`]}),!t&&!1]}),(0,W.jsx)(`div`,{className:`flex items-center gap-2 pr-4`,children:v?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(F,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>y(!1),children:[(0,W.jsx)(pn,{className:`w-4 h-4 mr-1`}),` Cancel`]}),(0,W.jsxs)(F,{size:`sm`,disabled:!!S||w.length>0||D,onClick:A,children:[(0,W.jsx)(Ir,{className:`w-4 h-4 mr-1`}),` `,D?`Saving...`:`Save & Restart`]})]}):(0,W.jsxs)(F,{size:`sm`,onClick:()=>y(!0),children:[(0,W.jsx)(Wr,{className:`w-4 h-4 mr-1`}),` Edit`]})})]}),S&&(0,W.jsxs)(bh,{variant:`destructive`,className:`mb-4`,children:[(0,W.jsx)(Rn,{className:`h-4 w-4`}),(0,W.jsx)(xh,{children:`Invalid JSON`}),(0,W.jsx)(Sh,{children:S})]}),w.length>0&&(0,W.jsxs)(bh,{variant:`destructive`,className:`mb-4`,children:[(0,W.jsx)(Rn,{className:`h-4 w-4`}),(0,W.jsx)(xh,{children:`Restricted Configuration`}),(0,W.jsxs)(Sh,{children:[`The following fields cannot be modified via Studio:`,(0,W.jsx)(`ul`,{className:`list-disc ml-4 mt-2`,children:w.map(e=>(0,W.jsx)(`li`,{children:(0,W.jsx)(`code`,{children:e})},e))})]})]}),(0,W.jsx)(`div`,{className:`grow`,children:d?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Gl,{className:`w-full`}),(0,W.jsx)(Gl,{className:`w-full`}),(0,W.jsx)(Gl,{className:`w-1/2`})]}):(0,W.jsx)(dd,{className:`w-full min-h-full h-96`,path:og,language:`json`,theme:_,onMount:k,options:{readOnly:!v,scrollBeyondLastLine:!1},value:v?b:JSON.stringify(g,null,4),onChange:O})})]})}var dg=ue(),fg=[{header:`Role`,accessorKey:`role`,enableSorting:!1},dg.display({header:`ID`,id:`id`,enableSorting:!1,cell:e=>(0,W.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,title:e.row.original.id,children:e.row.original.id})}),dg.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>Yu((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),dg.display({header:`Updated`,id:`__updatedtime__`,enableSorting:!1,cell:e=>Yu((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}),dg.display({header:`Super User`,id:`super_user`,enableSorting:!1,cell:e=>e.row.original.permission.super_user?`Yes`:`No`}),dg.display({header:`Structure User`,id:`structure_user`,enableSorting:!1,cell:e=>e.row.original.permission.structure_user?`Yes`:`No`})];async function pg(e){let{role:t,super_user:n,structure_user:r,instanceClient:i}=e,{data:a}=await i.post(`/`,{operation:`add_role`,role:t,permission:{super_user:n,structure_user:r}});return a}function mg(){return I({mutationFn:pg})}var hg=b({role:S().nonempty({error:`Please enter a role.`}).regex(/^[a-zA-Z_]*$/,{error:`Role must contain only letters and underscores.`}).max(30,{error:`Role cannot be longer than 30 characters.`}),super_user:D(),structure_user:D()});function gg({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=bt({resolver:_t(hg),defaultValues:{role:``,super_user:!1,structure_user:!1}}),i=K(),{mutate:a,isPending:o}=mg(),s=(0,G.useCallback)(async e=>{e&&a({role:e.role,super_user:e.super_user,structure_user:e.structure_user,...i},{onSuccess:e=>{r.reset(),t(e.id),H.success(`Role added successfully!`),n(!1)}})},[a,r,i,t,n]),c=(0,G.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,W.jsx)(qt,{onOpenChange:n,open:e,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...r,children:(0,W.jsxs)(`form`,{id:`instance-add-role-form`,name:`instance-add-role-form`,onSubmit:r.handleSubmit(s),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,W.jsxs)(Zt,{className:`md:col-span-2`,children:[(0,W.jsx)(Jt,{children:`Add New Role`}),(0,W.jsx)(Ht,{children:`After adding the role, you will be able to edit the per-table permissions.`})]}),(0,W.jsx)(Y,{control:r.control,name:`role`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`super_user`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex`,children:[(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-6`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,W.jsx)(Z,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Super User`}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`structure_user`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex`,children:[(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-6`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,W.jsx)(Z,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Structure User`}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Ut,{className:`md:col-span-2`,children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,W.jsx)(F,{variant:`destructiveOutline`,type:`button`,onClick:c,disabled:o,children:`Cancel`}),(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:o,children:[(0,W.jsx)(Ir,{}),` Add Role`]})]})})]})})})})}function _g({entityId:e,instanceClient:t}){return B({queryKey:[e,`list_roles`],queryFn:()=>vg({instanceClient:t}),refetchInterval:1e4})}async function vg({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_roles`});return t}function yg({instanceDatabaseMap:e,currentRolePermissions:t,version:n,showAttributes:r}){let i={...t};if(t.super_user||t.structure_user||t.cluster_user)return t;let[a,o,s]=n.split(`.`).map(e=>parseInt(e,10)),c=n!==`2.0.000`&&a<=2&&o<=1&&s<=2;for(let n in e){i[n]={tables:{}};for(let a in e[n]){let o=e[n][a].attributes.map(e=>e.attribute).sort();if(c){let e=t&&t[n]&&t[n].tables[a];i[n].tables[a]=bg(e,o,r)}else{let e=t&&t[n]&&t[n].tables[a];i[n].tables[a]=xg(e,o,r)}}}return i}function bg(e,t,n){let r=e&&Xs(e.attribute_restrictions,`attribute_name`);return{read:!e||e.read,insert:!e||e.insert,update:!e||e.update,delete:!e||e.delete,attribute_restrictions:t.filter(()=>n).map(t=>{let n=r?.[t];return{attribute_name:t,read:n?n.read:!e||e.read,insert:n?n.insert:!e||e.insert,update:n?n.update:!e||e.update,delete:n?n.delete:!e||e.delete}})}}function xg(e,t,n){let r=e&&Xs(e.attribute_permissions||[],`attribute_name`);return{read:e?e.read:!1,insert:e?e.insert:!1,update:e?e.update:!1,delete:e?e.delete:!1,attribute_permissions:n?t.map(t=>{let n=r?.[t];return{attribute_name:t,read:n?n.read:e?.attribute_permissions?.length?!1:e?.read||!1,insert:n?n.insert:e?.attribute_permissions?.length?!1:e?.insert||!1,update:n?n.update:e?.attribute_permissions?.length?!1:e?.update||!1}}):null}}async function Sg({id:e,permission:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`alter_role`,id:e,permission:t});return r}function Cg(){return I({mutationFn:Sg})}async function wg({id:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_role`,id:e});return n}function Tg(){return I({mutationFn:wg})}async function Eg({instanceClient:e,skipRecordCount:t}){let{data:n}=await e.post(`/`,{operation:`describe_all`,skip_record_count:t||void 0,exact_count:!t&&void 0});return n}function Dg(e){return B({queryKey:[e.entityId,`describe_all`,!!e.skipRecordCount],queryFn:()=>Eg(e),staleTime:6e4,gcTime:5e3,retry:!1})}function Og({data:e,instanceId:t,clusterId:n,isModalOpen:r,closeModal:i,onSelectRole:a,onChangesSaved:o}){let s=ld(),{role:c,permission:l}=e,[u,d]=(0,G.useState)(JSON.stringify(l,null,2)),f=K(),[p,m]=(0,G.useState)(!0),{data:h}=R(Dg({...f,skipRecordCount:!0})),{data:g}=R(ln(f)),_=Fe(t??n).user?.role?.id===e.id,[v,y]=Ud(u?.includes(`attribute_name`)),{mutate:b,isPending:x}=Cg(),{mutate:S,isPending:C}=Tg(),[w,T]=(0,G.useState)(!1),E=(0,G.useCallback)(e=>{m(e.length===0)},[m]),D=(0,G.useMemo)(()=>JSON.stringify(h&&g&&yg({instanceDatabaseMap:h,currentRolePermissions:u&&_n(u)||l,version:g.version,showAttributes:v}),null,2),[l,h,g,v]);(0,G.useEffect)(()=>{d(D)},[D]);let O=(0,G.useCallback)(t=>{if(t){let n=JSON.parse(t);if(n.super_user||n.structure_user||n.cluster_user)for(let e in n)(e!==`super_user`&&e!==`structure_user`&&e!==`cluster_user`||n[e]===!1)&&delete n[e];b({id:e.id,permission:n,...f},{onSuccess:()=>{H.success(`Role updated successfully!`),a(void 0),o()}})}},[b,e.id,f,o,a]),k=(0,G.useCallback)(()=>{S({id:e.id,...f},{onSuccess:()=>{H.success(`Role deleted successfully!`),a(void 0),o()}})},[e.id,S,f,o,a]),A=(0,G.useCallback)(()=>{u&&p&&O(u)},[u,O,p]),j=(0,G.useCallback)(()=>{T(!0)},[]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(qt,{onOpenChange:i,open:r,children:(0,W.jsxs)(tn,{resizable:!0,children:[(0,W.jsxs)(Jt,{children:[_?`View`:`Edit`,` Role "`,c,`"`]}),(0,W.jsx)(Ht,{children:_?`You can view your own role, but you cannot edit it. Please assign yourself a different role to edit this role.`:`Edit the role's permissions in JSON format or remove the role entirely.`}),(0,W.jsx)(`div`,{className:`flex-1 min-h-0`,children:D?(0,W.jsx)(dd,{className:`w-full h-full`,theme:s,defaultLanguage:`json`,value:u,options:{readOnly:_,automaticLayout:!0},onValidate:E,onChange:d,defaultValue:D}):(0,W.jsx)(Gl,{})}),(0,W.jsx)(Ut,{children:!_&&(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,W.jsx)(F,{type:`button`,variant:`destructiveOutline`,onClick:j,disabled:x,children:`Delete Role`}),(0,W.jsx)(`div`,{className:`grow`}),(0,W.jsxs)(Ma,{className:`flex`,children:[(0,W.jsx)($,{type:`checkbox`,className:`w-6`,checked:v,onChange:y}),(0,W.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Pick Attributes`})]}),(0,W.jsx)(F,{variant:`submit`,onClick:A,disabled:x||!p,children:`Save Changes`})]})})]})}),(0,W.jsx)(Jo,{isModalOpen:w,setIsModalOpen:T,deletionConfirmed:k,deletionPending:C,typeOfThingBeingDeleted:`role`,nameOfThingBeingDeleted:c,hideDataLossWarning:!0})]})}function kg(){let e=Oe(),{clusterId:t,instanceId:n,roleId:r}=L({strict:!1}),{data:i,refetch:a,isFetching:o,isRefetching:s}=ae(_g(K())),c=(0,G.useMemo)(()=>i?.find(e=>e.id===r),[i,r]),l=(0,G.useCallback)(t=>{let n=[r?`..`:``,t].filter(Boolean);e({to:n.join(`/`)})},[r,e]),u=!!r&&!!c,[d,f]=(0,G.useState)(!1),p=(0,G.useCallback)(()=>{f(!0)},[f]),m=(0,G.useCallback)(e=>{a(),f(!1),l(e)},[l,a]),h=(0,G.useCallback)(e=>{l(e.original.id)},[l]),g=(0,G.useCallback)(()=>{l(void 0)},[l]),_=Zu(a);return(0,W.jsxs)(G.Suspense,{fallback:(0,W.jsx)(Ei,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,W.jsxs)(Ku,{columns:fg,data:i,isFetching:o,onRowClick:h,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:_,accessKey:`r`,disabled:o||s,children:[(0,W.jsx)(fn,{}),(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:p,accessKey:`a`,disabled:d,children:[(0,W.jsx)(Mr,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]})]}),(0,W.jsx)(gg,{isModalOpen:d,onChangesSaved:m,setIsModalOpen:f}),u&&(0,W.jsx)(Og,{instanceId:n,clusterId:t,isModalOpen:u,closeModal:g,data:c,onSelectRole:l,onChangesSaved:()=>a()})]})}function Ag(e){return!!e?.entries}function jg(e){if(!e?.entries)return[];let t=new Set;for(let n of e.entries)Ag(n)&&t.add(n.name);return[...t].sort((e,t)=>e.localeCompare(t))}function Mg({components:e,granted:t,onAdd:n,disabled:r,actionLabel:i=`Add`,commitOnBlur:a=!1}){let[o,s]=(0,G.useState)(``),[c,l]=(0,G.useState)(!1),[u,d]=(0,G.useState)(0),[f,p]=(0,G.useState)(!1),m=(0,G.useId)(),h=(0,G.useId)(),g=(0,G.useRef)(!1),_=(0,G.useRef)(!1),v=r||f,y=(0,G.useMemo)(()=>{if(e.length===0)return[];let n=o.trim(),r=n.toLowerCase(),i=new Set(t),a=e.filter(e=>!i.has(e)),s=(n?a.filter(e=>e.toLowerCase().includes(r)):a).map(e=>({value:e,custom:!1})),c=a.some(e=>e.toLowerCase()===r);return n&&!c&&s.push({value:n,custom:!0}),s},[e,t,o]),b=y.length===0?0:Math.min(u,y.length-1),x=(0,G.useCallback)(async e=>{if(_.current)return;let r=e.trim();if(!r||t.includes(r)){s(``);return}_.current=!0,p(!0);try{await n(r),s(``),l(!1)}catch{}finally{_.current=!1,p(!1)}},[t,n]),S=(0,G.useCallback)(()=>{x(y[b]?.value??o)},[x,y,b,o]),C=(0,G.useCallback)(e=>{if(e.key===`ArrowDown`){e.preventDefault(),l(!0),d(Math.min(b+1,Math.max(0,y.length-1)));return}if(e.key===`ArrowUp`){e.preventDefault(),d(Math.max(0,b-1));return}if(e.key===`Escape`){c&&(e.preventDefault(),e.stopPropagation(),l(!1));return}e.key===`Enter`&&(e.preventDefault(),S())},[c,y,b,S]),w=(0,G.useCallback)(()=>{g.current||(l(!1),a&&o.trim()&&S())},[a,o,S]),T=c&&y.length>0;return(0,W.jsxs)(`div`,{className:`relative grid gap-2`,children:[(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)($,{type:`text`,role:`combobox`,"aria-expanded":T,"aria-controls":T?m:void 0,"aria-autocomplete":`list`,"aria-activedescendant":T&&y[b]?`${h}-${b}`:void 0,autoComplete:`off`,autoCapitalize:`off`,placeholder:e.length>0?`Search applications…`:`application name`,value:o,onChange:e=>{s(e.target.value),d(0),l(!0)},onFocus:()=>l(!0),onKeyDown:C,onBlur:w,disabled:v}),(0,W.jsxs)(F,{type:`button`,variant:`positiveOutline`,onMouseDown:e=>e.preventDefault(),onClick:S,disabled:v||!o.trim(),children:[(0,W.jsx)(Mr,{}),` `,i]})]}),T&&(0,W.jsx)(`ul`,{id:m,role:`listbox`,className:`bg-popover text-popover-foreground absolute top-11 z-10 max-h-56 w-full overflow-auto rounded-md border p-1 shadow-md`,children:y.map((e,t)=>{let n=t===b;return(0,W.jsx)(`li`,{id:`${h}-${t}`,role:`option`,"aria-selected":n,onMouseEnter:()=>d(t),onMouseDown:t=>{t.preventDefault(),g.current=!0,x(e.value).finally(()=>{g.current=!1})},className:P(`flex cursor-pointer items-center gap-2 rounded px-2 py-1.5 text-sm`,n&&`bg-accent text-accent-foreground`),children:e.custom?(0,W.jsxs)(`span`,{className:`truncate`,children:[`Use “`,(0,W.jsx)(`span`,{className:`font-mono`,children:e.value}),`” — not a deployed application`]}):(0,W.jsx)(`span`,{className:`truncate font-mono`,children:e.value})},e.custom?`__custom__${e.value}`:e.value)})})]})}var Ng=`enc:v1:`;function Pg(e){let t=e.replace(/-----BEGIN [^-]+-----/,``).replace(/-----END [^-]+-----/,``).replace(/\s+/g,``),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}function Fg(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function Ig(e){return Fg(e).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function Lg(e){return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function Rg(){if(typeof crypto>`u`||!crypto.subtle)throw Error(`Secret encryption requires a secure context (HTTPS or localhost).`);return crypto.subtle}async function zg(e,t,n){let r=Rg(),i=Pg(t),a=await r.importKey(`spki`,Lg(i),{name:`RSA-OAEP`,hash:`SHA-256`},!1,[`encrypt`]),o=crypto.getRandomValues(new Uint8Array(32)),s=crypto.getRandomValues(new Uint8Array(12)),c=await r.importKey(`raw`,Lg(o),{name:`AES-GCM`},!1,[`encrypt`]),l=new Uint8Array(await r.encrypt({name:`AES-GCM`,iv:Lg(s),tagLength:128},c,Lg(new TextEncoder().encode(e)))),u=l.slice(0,l.length-16),d=l.slice(l.length-16),f={kid:n,k:Fg(new Uint8Array(await r.encrypt({name:`RSA-OAEP`},a,Lg(o)))),iv:Fg(s),ct:Fg(u),tag:Fg(d)};return Ng+Ig(new TextEncoder().encode(JSON.stringify(f)))}function Bg(e){let t=e?.response?.data;return t?.error??t?.message??String(e)}var Vg=`does not match`;function Hg(e){return e.includes(Vg)}async function Ug({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_secrets_public_key`});return{publicKey:t.public_key,fingerprint:t.fingerprint}}var Wg=N;async function Gg(e){let{data:t}=await Wg.post(`/ClusterSecrets`,{operation:`get_secrets_public_key`,clusterId:e});return{publicKey:t.publicKey,fingerprint:t.fingerprint}}function Kg(e){return B({queryKey:[e.entityId,`get_secrets_public_key`,e.managedClusterId??`node`],queryFn:()=>e.managedClusterId?Gg(e.managedClusterId):Ug(e),staleTime:5*6e4,retry:!1})}async function qg({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_secrets`});return t}function Jg(e){return B({queryKey:[e.entityId,`list_secrets`],queryFn:()=>qg(e)})}async function Yg(e,t,n){let{publicKey:r,fingerprint:i}=await e.ensureQueryData(Kg(t)),a=await zg(t.value,r,i);try{let{data:e}=await t.instanceClient.post(`/`,{operation:`set_secret`,name:t.name,envelope:a,...t.processEnv===void 0?{}:{processEnv:t.processEnv},...t.grants===void 0?{}:{grants:t.grants}});return e}catch(r){let i=Bg(r);if(!n&&Hg(i))return e.removeQueries({queryKey:Kg(t).queryKey}),Yg(e,t,!0);throw Error(i)}}function Xg(){let e=ie();return I({mutationFn:t=>Yg(e,t,!1)})}async function Zg({instanceClient:e,name:t}){try{let{data:n}=await e.post(`/`,{operation:`delete_secret`,name:t});return n}catch(e){throw Error(Bg(e))}}function Qg(){return I({mutationFn:Zg})}async function $g(e,{instanceClient:t,name:n,component:r}){try{let{data:i}=await t.post(`/`,{operation:e,name:n,component:r});return i}catch(e){throw Error(Bg(e))}}function e_(){return I({mutationFn:e=>$g(`grant_secret`,e)})}function t_(){return I({mutationFn:e=>$g(`revoke_secret`,e)})}function n_({name:e,initialGrants:t,components:n,onChanged:r}){let i=K(),{mutateAsync:a,isPending:o}=e_(),{mutateAsync:s,isPending:c}=t_(),l=o||c,[u,d]=(0,G.useState)(t),f=(0,G.useCallback)(async t=>{try{let n=await a({...i,name:e,component:t});d(n.grants),r?.()}catch(e){throw H.error(String(e)),e}},[a,i,e,r]),p=(0,G.useCallback)(async t=>{try{let n=await s({...i,name:e,component:t});d(n.grants),r?.()}catch(e){H.error(String(e))}},[s,i,e,r]);return(0,W.jsxs)(`div`,{className:`grid gap-2`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:`Granted applications`}),(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Only granted applications can read this secret through the `,(0,W.jsx)(`code`,{className:`font-mono`,children:`secrets`}),` `,`accessor. Changes apply immediately.`]}),u.length>0&&(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:u.map(e=>(0,W.jsxs)(ao,{variant:`secondary`,children:[e,(0,W.jsxs)(`button`,{type:`button`,onClick:()=>void p(e),disabled:l,title:`Revoke ${e}`,className:`cursor-pointer disabled:cursor-default`,children:[(0,W.jsx)(pn,{}),(0,W.jsxs)(`span`,{className:`sr-only`,children:[`Revoke `,e]})]})]},e))}),(0,W.jsx)(Mg,{components:n,granted:u,onAdd:f,disabled:l,actionLabel:`Grant`})]})}var r_=`********`,i_=/^[\w.-]+$/,a_=/^(\s*(?:export\s+)?)([\w.-]+)\s*=(.*)$/;function o_(e){return e.split(`/`).pop()??``}function s_(e){if(!e)return!1;let t=o_(e).toLowerCase();return t===`.env`||t.startsWith(`.env.`)}var c_=[`.example`,`.sample`,`.template`];function l_(e){if(!s_(e))return!1;let t=o_(e).toLowerCase();return c_.some(e=>t.endsWith(e))}function u_(e){return s_(e)&&!l_(e)}function d_(e){let t={};if(!e)return t;let n=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm,r=e.replace(/\r\n?/g,`
|
|
670
|
+
`),sg=`inmemory://harper/config-root.json`,cg=`harper://schemas/config-root.json`;function lg(){let e=ag.jsonDefaults,{schemas:t=[],...n}=e.diagnosticsOptions;t.some(e=>e.uri===cg)||e.setDiagnosticsOptions({...n,validate:!0,enableSchemaRequest:!1,schemas:[...t,{uri:cg,fileMatch:[sg],schema:og}]})}var ug=({children:e})=>(0,W.jsx)(W.Fragment,{children:e});function dg(){let{clusterId:e,instanceId:t}=L({strict:!1}),{data:n,isLoading:r}=R(Th({clusterId:e,instanceId:t})),i=K(),{version:a}=De({strict:!1}),{data:o}=R(Nh(i,!1));n?.cluster;let s=n?.instance,{data:c,isLoading:l}=R(ln(i)),{data:u,isLoading:d}=R(Mh(i)),f=ps(),{data:p,isLoading:m}=R(jh({...i,enabled:f})),h=(0,G.useMemo)(()=>{if(!p)return null;let e=0,t=n=>{n.mtime&&(e=Math.max(e,new Date(n.mtime).getTime())),`entries`in n&&n.entries&&n.entries.forEach(t)};return t(p),e||null},[p]),g=(0,G.useMemo)(()=>u?Ih(u):null,[u]),_=ud(),[v,y]=(0,G.useState)(!1),[b,x]=(0,G.useState)(``),[S,C]=(0,G.useState)(null),[w,T]=(0,G.useState)([]),{onConfigUpdate:E,isPending:D}=kh();(0,G.useEffect)(()=>{g&&!v&&(x(JSON.stringify(g,null,4)),C(null),T([]))},[g,v]);let O=(0,G.useCallback)(e=>{if(x(e||``),e)try{let t=JSON.parse(e);C(null);let n=[],r=(e,t,i=``)=>{for(let a in e){let o=i?`${i}.${a}`:a,s=e[a],c=t?.[a];Fh(o,s,c)?n.push(o):typeof s==`object`&&s&&!Array.isArray(s)&&r(s,c,o)}for(let r in t){let a=i?`${i}.${r}`:r;r in e||Fh(a,void 0,t[r])&&n.push(a)}};g&&r(t,g),T(n)}catch(e){C(e.message),T([])}},[u]),k=(0,G.useCallback)(()=>{lg()},[]),A=(0,G.useCallback)(()=>{if(!(S||w.length>0))try{let e=JSON.parse(b),t=Rh(Lh(g,e));E(t),y(!1)}catch(e){C(e.message)}},[b,S,E,g,w.length]);return(0,G.useMemo)(()=>[],[o,s]),(0,W.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,W.jsx)(ug,{children:(0,W.jsxs)(`dl`,{className:`grid grid-cols-1 sm:grid-cols-3`,children:[(0,W.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,W.jsx)(Eh,{loadingRegistration:l,registrationInfo:c})}),(0,W.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,W.jsx)(Dh,{loading:m,timestamp:h})}),(0,W.jsx)(`div`,{className:`px-4 pb-4 text-right sm:col-span-1 sm:px-0`,children:(0,W.jsx)(yh,{targetNoun:`Instance`,instanceClient:i.instanceClient,operation:`restart`})})]})}),(0,W.jsxs)(`div`,{className:`flex-none flex items-center justify-between mb-2`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`h3`,{className:`font-bold text-sm/6`,children:[`Instance Config `,v?`(editing)`:`(read only)`]}),!t&&!1]}),(0,W.jsx)(`div`,{className:`flex items-center gap-2 pr-4`,children:v?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(F,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>y(!1),children:[(0,W.jsx)(pn,{className:`w-4 h-4 mr-1`}),` Cancel`]}),(0,W.jsxs)(F,{size:`sm`,disabled:!!S||w.length>0||D,onClick:A,children:[(0,W.jsx)(Lr,{className:`w-4 h-4 mr-1`}),` `,D?`Saving...`:`Save & Restart`]})]}):(0,W.jsxs)(F,{size:`sm`,onClick:()=>y(!0),children:[(0,W.jsx)(Gr,{className:`w-4 h-4 mr-1`}),` Edit`]})})]}),S&&(0,W.jsxs)(xh,{variant:`destructive`,className:`mb-4`,children:[(0,W.jsx)(zn,{className:`h-4 w-4`}),(0,W.jsx)(Sh,{children:`Invalid JSON`}),(0,W.jsx)(Ch,{children:S})]}),w.length>0&&(0,W.jsxs)(xh,{variant:`destructive`,className:`mb-4`,children:[(0,W.jsx)(zn,{className:`h-4 w-4`}),(0,W.jsx)(Sh,{children:`Restricted Configuration`}),(0,W.jsxs)(Ch,{children:[`The following fields cannot be modified via Studio:`,(0,W.jsx)(`ul`,{className:`list-disc ml-4 mt-2`,children:w.map(e=>(0,W.jsx)(`li`,{children:(0,W.jsx)(`code`,{children:e})},e))})]})]}),(0,W.jsx)(`div`,{className:`grow`,children:d?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Kl,{className:`w-full`}),(0,W.jsx)(Kl,{className:`w-full`}),(0,W.jsx)(Kl,{className:`w-1/2`})]}):(0,W.jsx)(fd,{className:`w-full min-h-full h-96`,path:sg,language:`json`,theme:_,onMount:k,options:{readOnly:!v,scrollBeyondLastLine:!1},value:v?b:JSON.stringify(g,null,4),onChange:O})})]})}var fg=ue(),pg=[{header:`Role`,accessorKey:`role`,enableSorting:!1},fg.display({header:`ID`,id:`id`,enableSorting:!1,cell:e=>(0,W.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,title:e.row.original.id,children:e.row.original.id})}),fg.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>Xu((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),fg.display({header:`Updated`,id:`__updatedtime__`,enableSorting:!1,cell:e=>Xu((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}),fg.display({header:`Super User`,id:`super_user`,enableSorting:!1,cell:e=>e.row.original.permission.super_user?`Yes`:`No`}),fg.display({header:`Structure User`,id:`structure_user`,enableSorting:!1,cell:e=>e.row.original.permission.structure_user?`Yes`:`No`})];async function mg(e){let{role:t,super_user:n,structure_user:r,instanceClient:i}=e,{data:a}=await i.post(`/`,{operation:`add_role`,role:t,permission:{super_user:n,structure_user:r}});return a}function hg(){return I({mutationFn:mg})}var gg=b({role:S().nonempty({error:`Please enter a role.`}).regex(/^[a-zA-Z_]*$/,{error:`Role must contain only letters and underscores.`}).max(30,{error:`Role cannot be longer than 30 characters.`}),super_user:D(),structure_user:D()});function _g({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=bt({resolver:_t(gg),defaultValues:{role:``,super_user:!1,structure_user:!1}}),i=K(),{mutate:a,isPending:o}=hg(),s=(0,G.useCallback)(async e=>{e&&a({role:e.role,super_user:e.super_user,structure_user:e.structure_user,...i},{onSuccess:e=>{r.reset(),t(e.id),H.success(`Role added successfully!`),n(!1)}})},[a,r,i,t,n]),c=(0,G.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,W.jsx)(qt,{onOpenChange:n,open:e,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...r,children:(0,W.jsxs)(`form`,{id:`instance-add-role-form`,name:`instance-add-role-form`,onSubmit:r.handleSubmit(s),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,W.jsxs)(Zt,{className:`md:col-span-2`,children:[(0,W.jsx)(Jt,{children:`Add New Role`}),(0,W.jsx)(Ht,{children:`After adding the role, you will be able to edit the per-table permissions.`})]}),(0,W.jsx)(Y,{control:r.control,name:`role`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`super_user`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex`,children:[(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-6`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,W.jsx)(Z,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Super User`}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`structure_user`,render:({field:e})=>(0,W.jsxs)(X,{className:`flex`,children:[(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`checkbox`,className:`w-6`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,W.jsx)(Z,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Structure User`}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Ut,{className:`md:col-span-2`,children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,W.jsx)(F,{variant:`destructiveOutline`,type:`button`,onClick:c,disabled:o,children:`Cancel`}),(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:o,children:[(0,W.jsx)(Lr,{}),` Add Role`]})]})})]})})})})}function vg({entityId:e,instanceClient:t}){return B({queryKey:[e,`list_roles`],queryFn:()=>yg({instanceClient:t}),refetchInterval:1e4})}async function yg({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_roles`});return t}function bg({instanceDatabaseMap:e,currentRolePermissions:t,version:n,showAttributes:r}){let i={...t};if(t.super_user||t.structure_user||t.cluster_user)return t;let[a,o,s]=n.split(`.`).map(e=>parseInt(e,10)),c=n!==`2.0.000`&&a<=2&&o<=1&&s<=2;for(let n in e){i[n]={tables:{}};for(let a in e[n]){let o=e[n][a].attributes.map(e=>e.attribute).sort();if(c){let e=t&&t[n]&&t[n].tables[a];i[n].tables[a]=xg(e,o,r)}else{let e=t&&t[n]&&t[n].tables[a];i[n].tables[a]=Sg(e,o,r)}}}return i}function xg(e,t,n){let r=e&&Zs(e.attribute_restrictions,`attribute_name`);return{read:!e||e.read,insert:!e||e.insert,update:!e||e.update,delete:!e||e.delete,attribute_restrictions:t.filter(()=>n).map(t=>{let n=r?.[t];return{attribute_name:t,read:n?n.read:!e||e.read,insert:n?n.insert:!e||e.insert,update:n?n.update:!e||e.update,delete:n?n.delete:!e||e.delete}})}}function Sg(e,t,n){let r=e&&Zs(e.attribute_permissions||[],`attribute_name`);return{read:e?e.read:!1,insert:e?e.insert:!1,update:e?e.update:!1,delete:e?e.delete:!1,attribute_permissions:n?t.map(t=>{let n=r?.[t];return{attribute_name:t,read:n?n.read:e?.attribute_permissions?.length?!1:e?.read||!1,insert:n?n.insert:e?.attribute_permissions?.length?!1:e?.insert||!1,update:n?n.update:e?.attribute_permissions?.length?!1:e?.update||!1}}):null}}async function Cg({id:e,permission:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`alter_role`,id:e,permission:t});return r}function wg(){return I({mutationFn:Cg})}async function Tg({id:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_role`,id:e});return n}function Eg(){return I({mutationFn:Tg})}async function Dg({instanceClient:e,skipRecordCount:t}){let{data:n}=await e.post(`/`,{operation:`describe_all`,skip_record_count:t||void 0,exact_count:!t&&void 0});return n}function Og(e){return B({queryKey:[e.entityId,`describe_all`,!!e.skipRecordCount],queryFn:()=>Dg(e),staleTime:6e4,gcTime:5e3,retry:!1})}function kg({data:e,instanceId:t,clusterId:n,isModalOpen:r,closeModal:i,onSelectRole:a,onChangesSaved:o}){let s=ud(),{role:c,permission:l}=e,[u,d]=(0,G.useState)(JSON.stringify(l,null,2)),f=K(),[p,m]=(0,G.useState)(!0),{data:h}=R(Og({...f,skipRecordCount:!0})),{data:g}=R(ln(f)),_=Fe(t??n).user?.role?.id===e.id,[v,y]=Wd(u?.includes(`attribute_name`)),{mutate:b,isPending:x}=wg(),{mutate:S,isPending:C}=Eg(),[w,T]=(0,G.useState)(!1),E=(0,G.useCallback)(e=>{m(e.length===0)},[m]),D=(0,G.useMemo)(()=>JSON.stringify(h&&g&&bg({instanceDatabaseMap:h,currentRolePermissions:u&&_n(u)||l,version:g.version,showAttributes:v}),null,2),[l,h,g,v]);(0,G.useEffect)(()=>{d(D)},[D]);let O=(0,G.useCallback)(t=>{if(t){let n=JSON.parse(t);if(n.super_user||n.structure_user||n.cluster_user)for(let e in n)(e!==`super_user`&&e!==`structure_user`&&e!==`cluster_user`||n[e]===!1)&&delete n[e];b({id:e.id,permission:n,...f},{onSuccess:()=>{H.success(`Role updated successfully!`),a(void 0),o()}})}},[b,e.id,f,o,a]),k=(0,G.useCallback)(()=>{S({id:e.id,...f},{onSuccess:()=>{H.success(`Role deleted successfully!`),a(void 0),o()}})},[e.id,S,f,o,a]),A=(0,G.useCallback)(()=>{u&&p&&O(u)},[u,O,p]),j=(0,G.useCallback)(()=>{T(!0)},[]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(qt,{onOpenChange:i,open:r,children:(0,W.jsxs)(tn,{resizable:!0,children:[(0,W.jsxs)(Jt,{children:[_?`View`:`Edit`,` Role "`,c,`"`]}),(0,W.jsx)(Ht,{children:_?`You can view your own role, but you cannot edit it. Please assign yourself a different role to edit this role.`:`Edit the role's permissions in JSON format or remove the role entirely.`}),(0,W.jsx)(`div`,{className:`flex-1 min-h-0`,children:D?(0,W.jsx)(fd,{className:`w-full h-full`,theme:s,defaultLanguage:`json`,value:u,options:{readOnly:_,automaticLayout:!0},onValidate:E,onChange:d,defaultValue:D}):(0,W.jsx)(Kl,{})}),(0,W.jsx)(Ut,{children:!_&&(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,W.jsx)(F,{type:`button`,variant:`destructiveOutline`,onClick:j,disabled:x,children:`Delete Role`}),(0,W.jsx)(`div`,{className:`grow`}),(0,W.jsxs)(Na,{className:`flex`,children:[(0,W.jsx)($,{type:`checkbox`,className:`w-6`,checked:v,onChange:y}),(0,W.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Pick Attributes`})]}),(0,W.jsx)(F,{variant:`submit`,onClick:A,disabled:x||!p,children:`Save Changes`})]})})]})}),(0,W.jsx)(Yo,{isModalOpen:w,setIsModalOpen:T,deletionConfirmed:k,deletionPending:C,typeOfThingBeingDeleted:`role`,nameOfThingBeingDeleted:c,hideDataLossWarning:!0})]})}function Ag(){let e=Oe(),{clusterId:t,instanceId:n,roleId:r}=L({strict:!1}),{data:i,refetch:a,isFetching:o,isRefetching:s}=ae(vg(K())),c=(0,G.useMemo)(()=>i?.find(e=>e.id===r),[i,r]),l=(0,G.useCallback)(t=>{let n=[r?`..`:``,t].filter(Boolean);e({to:n.join(`/`)})},[r,e]),u=!!r&&!!c,[d,f]=(0,G.useState)(!1),p=(0,G.useCallback)(()=>{f(!0)},[f]),m=(0,G.useCallback)(e=>{a(),f(!1),l(e)},[l,a]),h=(0,G.useCallback)(e=>{l(e.original.id)},[l]),g=(0,G.useCallback)(()=>{l(void 0)},[l]),_=Qu(a);return(0,W.jsxs)(G.Suspense,{fallback:(0,W.jsx)(Di,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,W.jsxs)(qu,{columns:pg,data:i,isFetching:o,onRowClick:h,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:_,accessKey:`r`,disabled:o||s,children:[(0,W.jsx)(fn,{}),(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:p,accessKey:`a`,disabled:d,children:[(0,W.jsx)(Nr,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]})]}),(0,W.jsx)(_g,{isModalOpen:d,onChangesSaved:m,setIsModalOpen:f}),u&&(0,W.jsx)(kg,{instanceId:n,clusterId:t,isModalOpen:u,closeModal:g,data:c,onSelectRole:l,onChangesSaved:()=>a()})]})}function jg(e){return!!e?.entries}function Mg(e){if(!e?.entries)return[];let t=new Set;for(let n of e.entries)jg(n)&&t.add(n.name);return[...t].sort((e,t)=>e.localeCompare(t))}function Ng({components:e,granted:t,onAdd:n,disabled:r,actionLabel:i=`Add`,commitOnBlur:a=!1}){let[o,s]=(0,G.useState)(``),[c,l]=(0,G.useState)(!1),[u,d]=(0,G.useState)(0),[f,p]=(0,G.useState)(!1),m=(0,G.useId)(),h=(0,G.useId)(),g=(0,G.useRef)(!1),_=(0,G.useRef)(!1),v=r||f,y=(0,G.useMemo)(()=>{if(e.length===0)return[];let n=o.trim(),r=n.toLowerCase(),i=new Set(t),a=e.filter(e=>!i.has(e)),s=(n?a.filter(e=>e.toLowerCase().includes(r)):a).map(e=>({value:e,custom:!1})),c=a.some(e=>e.toLowerCase()===r);return n&&!c&&s.push({value:n,custom:!0}),s},[e,t,o]),b=y.length===0?0:Math.min(u,y.length-1),x=(0,G.useCallback)(async e=>{if(_.current)return;let r=e.trim();if(!r||t.includes(r)){s(``);return}_.current=!0,p(!0);try{await n(r),s(``),l(!1)}catch{}finally{_.current=!1,p(!1)}},[t,n]),S=(0,G.useCallback)(()=>{x(y[b]?.value??o)},[x,y,b,o]),C=(0,G.useCallback)(e=>{if(e.key===`ArrowDown`){e.preventDefault(),l(!0),d(Math.min(b+1,Math.max(0,y.length-1)));return}if(e.key===`ArrowUp`){e.preventDefault(),d(Math.max(0,b-1));return}if(e.key===`Escape`){c&&(e.preventDefault(),e.stopPropagation(),l(!1));return}e.key===`Enter`&&(e.preventDefault(),S())},[c,y,b,S]),w=(0,G.useCallback)(()=>{g.current||(l(!1),a&&o.trim()&&S())},[a,o,S]),T=c&&y.length>0;return(0,W.jsxs)(`div`,{className:`relative grid gap-2`,children:[(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)($,{type:`text`,role:`combobox`,"aria-expanded":T,"aria-controls":T?m:void 0,"aria-autocomplete":`list`,"aria-activedescendant":T&&y[b]?`${h}-${b}`:void 0,autoComplete:`off`,autoCapitalize:`off`,placeholder:e.length>0?`Search applications…`:`application name`,value:o,onChange:e=>{s(e.target.value),d(0),l(!0)},onFocus:()=>l(!0),onKeyDown:C,onBlur:w,disabled:v}),(0,W.jsxs)(F,{type:`button`,variant:`positiveOutline`,onMouseDown:e=>e.preventDefault(),onClick:S,disabled:v||!o.trim(),children:[(0,W.jsx)(Nr,{}),` `,i]})]}),T&&(0,W.jsx)(`ul`,{id:m,role:`listbox`,className:`bg-popover text-popover-foreground absolute top-11 z-10 max-h-56 w-full overflow-auto rounded-md border p-1 shadow-md`,children:y.map((e,t)=>{let n=t===b;return(0,W.jsx)(`li`,{id:`${h}-${t}`,role:`option`,"aria-selected":n,onMouseEnter:()=>d(t),onMouseDown:t=>{t.preventDefault(),g.current=!0,x(e.value).finally(()=>{g.current=!1})},className:P(`flex cursor-pointer items-center gap-2 rounded px-2 py-1.5 text-sm`,n&&`bg-accent text-accent-foreground`),children:e.custom?(0,W.jsxs)(`span`,{className:`truncate`,children:[`Use “`,(0,W.jsx)(`span`,{className:`font-mono`,children:e.value}),`” — not a deployed application`]}):(0,W.jsx)(`span`,{className:`truncate font-mono`,children:e.value})},e.custom?`__custom__${e.value}`:e.value)})})]})}var Pg=`enc:v1:`;function Fg(e){let t=e.replace(/-----BEGIN [^-]+-----/,``).replace(/-----END [^-]+-----/,``).replace(/\s+/g,``),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}function Ig(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function Lg(e){return Ig(e).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function Rg(e){return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function zg(){if(typeof crypto>`u`||!crypto.subtle)throw Error(`Secret encryption requires a secure context (HTTPS or localhost).`);return crypto.subtle}async function Bg(e,t,n){let r=zg(),i=Fg(t),a=await r.importKey(`spki`,Rg(i),{name:`RSA-OAEP`,hash:`SHA-256`},!1,[`encrypt`]),o=crypto.getRandomValues(new Uint8Array(32)),s=crypto.getRandomValues(new Uint8Array(12)),c=await r.importKey(`raw`,Rg(o),{name:`AES-GCM`},!1,[`encrypt`]),l=new Uint8Array(await r.encrypt({name:`AES-GCM`,iv:Rg(s),tagLength:128},c,Rg(new TextEncoder().encode(e)))),u=l.slice(0,l.length-16),d=l.slice(l.length-16),f={kid:n,k:Ig(new Uint8Array(await r.encrypt({name:`RSA-OAEP`},a,Rg(o)))),iv:Ig(s),ct:Ig(u),tag:Ig(d)};return Pg+Lg(new TextEncoder().encode(JSON.stringify(f)))}function Vg(e){let t=e?.response?.data;return t?.error??t?.message??String(e)}var Hg=`does not match`;function Ug(e){return e.includes(Hg)}async function Wg({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_secrets_public_key`});return{publicKey:t.public_key,fingerprint:t.fingerprint}}var Gg=N;async function Kg(e){let{data:t}=await Gg.post(`/ClusterSecrets`,{operation:`get_secrets_public_key`,clusterId:e});return{publicKey:t.publicKey,fingerprint:t.fingerprint}}function qg(e){return B({queryKey:[e.entityId,`get_secrets_public_key`,e.managedClusterId??`node`],queryFn:()=>e.managedClusterId?Kg(e.managedClusterId):Wg(e),staleTime:5*6e4,retry:!1})}async function Jg({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_secrets`});return t}function Yg(e){return B({queryKey:[e.entityId,`list_secrets`],queryFn:()=>Jg(e)})}async function Xg(e,t,n){let{publicKey:r,fingerprint:i}=await e.ensureQueryData(qg(t)),a=await Bg(t.value,r,i);try{let{data:e}=await t.instanceClient.post(`/`,{operation:`set_secret`,name:t.name,envelope:a,...t.processEnv===void 0?{}:{processEnv:t.processEnv},...t.grants===void 0?{}:{grants:t.grants}});return e}catch(r){let i=Vg(r);if(!n&&Ug(i))return e.removeQueries({queryKey:qg(t).queryKey}),Xg(e,t,!0);throw Error(i)}}function Zg(){let e=ie();return I({mutationFn:t=>Xg(e,t,!1)})}async function Qg({instanceClient:e,name:t}){try{let{data:n}=await e.post(`/`,{operation:`delete_secret`,name:t});return n}catch(e){throw Error(Vg(e))}}function $g(){return I({mutationFn:Qg})}async function e_(e,{instanceClient:t,name:n,component:r}){try{let{data:i}=await t.post(`/`,{operation:e,name:n,component:r});return i}catch(e){throw Error(Vg(e))}}function t_(){return I({mutationFn:e=>e_(`grant_secret`,e)})}function n_(){return I({mutationFn:e=>e_(`revoke_secret`,e)})}function r_({name:e,initialGrants:t,components:n,onChanged:r}){let i=K(),{mutateAsync:a,isPending:o}=t_(),{mutateAsync:s,isPending:c}=n_(),l=o||c,[u,d]=(0,G.useState)(t),f=(0,G.useCallback)(async t=>{try{let n=await a({...i,name:e,component:t});d(n.grants),r?.()}catch(e){throw H.error(String(e)),e}},[a,i,e,r]),p=(0,G.useCallback)(async t=>{try{let n=await s({...i,name:e,component:t});d(n.grants),r?.()}catch(e){H.error(String(e))}},[s,i,e,r]);return(0,W.jsxs)(`div`,{className:`grid gap-2`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:`Granted applications`}),(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Only granted applications can read this secret through the `,(0,W.jsx)(`code`,{className:`font-mono`,children:`secrets`}),` `,`accessor. Changes apply immediately.`]}),u.length>0&&(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:u.map(e=>(0,W.jsxs)(oo,{variant:`secondary`,children:[e,(0,W.jsxs)(`button`,{type:`button`,onClick:()=>void p(e),disabled:l,title:`Revoke ${e}`,className:`cursor-pointer disabled:cursor-default`,children:[(0,W.jsx)(pn,{}),(0,W.jsxs)(`span`,{className:`sr-only`,children:[`Revoke `,e]})]})]},e))}),(0,W.jsx)(Ng,{components:n,granted:u,onAdd:f,disabled:l,actionLabel:`Grant`})]})}var i_=`********`,a_=/^[\w.-]+$/,o_=/^(\s*(?:export\s+)?)([\w.-]+)\s*=(.*)$/;function s_(e){return e.split(`/`).pop()??``}function c_(e){if(!e)return!1;let t=s_(e).toLowerCase();return t===`.env`||t.startsWith(`.env.`)}var l_=[`.example`,`.sample`,`.template`];function u_(e){if(!c_(e))return!1;let t=s_(e).toLowerCase();return l_.some(e=>t.endsWith(e))}function d_(e){return c_(e)&&!u_(e)}function f_(e){let t={};if(!e)return t;let n=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm,r=e.replace(/\r\n?/g,`
|
|
671
671
|
`),i;for(;(i=n.exec(r))!==null;){let e=i[1],n=(i[2]??``).trim(),r=n[0];n=n.replace(/^(['"`])([\s\S]*)\1$/gm,`$2`),r===`"`&&(n=n.replace(/\\n/g,`
|
|
672
|
-
`).replace(/\\r/g,`\r`)),t[e]=n}return t}function
|
|
672
|
+
`).replace(/\\r/g,`\r`)),t[e]=n}return t}function p_(e){return!e||e.length===0?``:e.map(e=>`${e}=${i_}`).join(`
|
|
673
673
|
`)+`
|
|
674
|
-
`}function
|
|
674
|
+
`}function m_(e){if(e===``)return``;if(!/[\s#'"`]/.test(e))return e;if(!e.includes(`'`))return`'${e}'`;if(!e.includes(`"`)&&!e.includes(`\\`)&&!e.includes(`\r`))return`"${e.replace(/\n/g,`\\n`)}"`;throw Error(`Environment value contains an unsupported combination of quote characters`)}function h_(e,t){let n=t!==`'`&&t!=="`";for(let r=0;r<e.length;r++){if(n&&e[r]===`\\`){r++;continue}if(e[r]===t)return!0}return!1}function g_(e,t,n){let r=n.replace(/^\s+/,``),i=r[0];if(i!==`"`&&i!==`'`&&i!=="`"||h_(r.slice(1),i))return t;for(let n=t+1;n<e.length;n++)if(h_(e[n],i))return n;return e.length-1}function __(e){let t=e.includes(`\r
|
|
675
675
|
`)?`\r
|
|
676
676
|
`:`
|
|
677
|
-
`,n=/\r?\n$/.test(e),r=e.length?e.split(/\r?\n/):[];return n&&r.pop(),{eol:t,endedWithNewline:n,lines:r}}function
|
|
678
|
-
`):[`import { secrets } from 'harper';`,``,`// Use the current value right away — read at your module's top level.`,`let value = ${r?`secrets.${n}`:`secrets[${
|
|
679
|
-
`)}function T_({name:e,tier:t}){let n=w_(e,t),[r,i]=(0,G.useState)(!1),a=(0,G.useRef)(void 0);(0,G.useEffect)(()=>()=>clearTimeout(a.current),[]);let o=(0,G.useCallback)(()=>{Os(n).then(e=>{e&&(i(!0),clearTimeout(a.current),a.current=setTimeout(()=>i(!1),1200))})},[n]);return(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(`pre`,{className:`overflow-x-auto rounded-md border border-border bg-muted/50 p-3 pr-10 text-xs leading-relaxed`,children:(0,W.jsx)(`code`,{className:`font-mono text-foreground`,children:n})}),(0,W.jsxs)(F,{type:`button`,variant:`ghost`,size:`sm`,className:`absolute top-1.5 right-1.5 px-1`,onClick:o,title:`Copy example`,children:[r?(0,W.jsx)(un,{className:`text-green-500`}):(0,W.jsx)(Yn,{}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Copy example`})]})]})}var E_=`https://docs.harperdb.io/reference/v5/security/secrets`;function D_({name:e,tier:t,onTierChange:n,disabled:r,grantsSlot:i}){return(0,W.jsxs)(`div`,{className:`grid gap-3`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:`How should applications read this secret?`}),(0,W.jsxs)(b_,{value:t,onValueChange:e=>n(e),disabled:r,children:[(0,W.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer`,children:[(0,W.jsx)(x_,{value:`scoped`,className:`mt-0.5`}),(0,W.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:`Scoped to specific apps`}),(0,W.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Exposed only to the applications you grant, through the `,(0,W.jsx)(`code`,{className:`font-mono`,children:`secrets`}),` `,`accessor. Never placed on `,(0,W.jsx)(`code`,{className:`font-mono`,children:`process.env`}),`.`]})]})]}),(0,W.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer`,children:[(0,W.jsx)(x_,{value:`processEnv`,className:`mt-0.5`}),(0,W.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:`Environment variable`}),(0,W.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Materialized onto `,(0,W.jsx)(`code`,{className:`font-mono`,children:`process.env`}),` `,`for every component (and child processes). Global — it can't be scoped to specific apps.`]})]})]})]}),t===`scoped`&&i,(0,W.jsxs)(`div`,{className:`grid gap-1`,children:[(0,W.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wide`,children:`How to read it in your component`}),(0,W.jsx)(T_,{name:e,tier:t}),(0,W.jsx)(`a`,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,href:E_,target:`_blank`,rel:`noreferrer`,children:`Learn more about secrets in the Harper docs`})]})]})}var O_=S().trim().min(1).regex(i_,{error:`Letters, numbers, underscore, dash and dot only.`});function k_({description:e,valueDescription:t,existingKeys:n,onSubmit:r,isModalOpen:i,setIsModalOpen:a,delivery:o=!1,defaultTier:s=`scoped`,grantableComponents:c=[]}){let l=bt({resolver:_t((0,G.useMemo)(()=>b({key:O_.refine(e=>!n?.includes(e),{error:`This key already exists — edit it instead.`}),value:S().min(1)}),[n])),defaultValues:{key:``,value:``}}),{isDirty:u,isValid:d,isSubmitting:f}=l.formState,[p,m]=(0,G.useState)(s),[h,g]=(0,G.useState)([]),_=l.watch(`key`),v=(0,G.useCallback)(()=>{m(s),g([])},[s]),y=(0,G.useCallback)(async e=>{let t=o?{processEnv:p===`processEnv`,grants:p===`scoped`?h:void 0}:{};try{await r({...e,...t}),l.reset(),v(),H.success(`Secret "${e.key}" saved.`),a(!1)}catch(e){H.error(String(e))}},[r,l,a,o,p,h,v]),x=(0,G.useCallback)(()=>{l.reset(),v(),a(!1)},[l,a,v]);return(0,W.jsx)(qt,{onOpenChange:a,open:i,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...l,children:(0,W.jsxs)(`form`,{id:`add-secret-form`,name:`add-secret-form`,onSubmit:l.handleSubmit(y),className:`grid gap-4 my-4`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsx)(Jt,{children:`Add Secret`}),(0,W.jsx)(Ht,{children:e})]}),(0,W.jsx)(Y,{control:l.control,name:`key`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Key`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:l.control,name:`value`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Value`}),t&&(0,W.jsx)(Zl,{children:t}),(0,W.jsx)(J,{children:(0,W.jsx)(om,{autoComplete:`off`,autoCapitalize:`off`,rows:3,...e})}),(0,W.jsx)(Q,{})]})}),o&&(0,W.jsx)(D_,{name:_,tier:p,onTierChange:m,disabled:f,grantsSlot:(0,W.jsx)(y_,{grants:h,onChange:g,components:c,disabled:f})}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,W.jsx)(F,{variant:`destructiveOutline`,type:`button`,onClick:x,disabled:f,children:`Cancel`}),(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:f||!u||!d,children:[(0,W.jsx)(Ir,{}),` Add Secret`]})]})})]})})})})}var A_=b({value:S().min(1)});function j_({name:e,description:t,valueDescription:n,currentValue:r,onSave:i,onDelete:a,closeModal:o,children:s,delivery:c=!1,currentTier:l=`scoped`}){let u=bt({resolver:_t(A_),defaultValues:{value:``}}),{isDirty:d,isValid:f,isSubmitting:p}=u.formState,[m,h]=(0,G.useState)(!1),g=p||m,[_,v]=(0,G.useState)(l),y=c&&_!==l,[b,x]=(0,G.useState)(!1),S=(0,G.useCallback)(()=>{u.setValue(`value`,r??``,{shouldDirty:!1}),x(!0)},[u,r]),C=(0,G.useCallback)(async t=>{try{await i(t.value,c?{processEnv:_===`processEnv`}:void 0),H.success(`Secret "${e}" updated.`),o()}catch(e){H.error(String(e))}},[i,e,o,c,_]),[w,T]=(0,G.useState)(!1),E=(0,G.useCallback)(async()=>{if(!w){T(!0);return}h(!0);try{await a?.(),H.success(`Secret "${e}" deleted.`),o()}catch(e){H.error(String(e))}finally{h(!1)}},[w,a,e,o]);return(0,W.jsx)(qt,{onOpenChange:o,open:!0,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...u,children:(0,W.jsxs)(`form`,{onSubmit:u.handleSubmit(C),className:`grid gap-4 my-4`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsx)(Jt,{children:e}),(0,W.jsx)(Ht,{children:t})]}),(0,W.jsx)(Y,{control:u.control,name:`value`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:r===void 0?`New value`:`Value`}),n&&(0,W.jsx)(Zl,{children:n}),(0,W.jsx)(J,{children:(0,W.jsx)(om,{autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,rows:3,placeholder:r!==void 0&&!b?r_:void 0,...e})}),r!==void 0&&!b&&(0,W.jsxs)(F,{type:`button`,variant:`defaultOutline`,size:`sm`,onClick:S,children:[(0,W.jsx)(tr,{}),` Reveal current value`]}),(0,W.jsx)(Q,{})]})}),c?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(D_,{name:e,tier:_,onTierChange:v,disabled:g,grantsSlot:y?(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Save this as a scoped secret first, then you can grant applications.`}):s}),y&&!d&&(0,W.jsx)(`p`,{className:`text-sm text-amber-600 dark:text-amber-500`,children:`Re-enter the value above to save this change — a stored secret can’t be read back to re-encrypt automatically.`})]}):s,(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[a?(0,W.jsxs)(F,{variant:`destructiveOutline`,type:`button`,onClick:E,disabled:g,children:[(0,W.jsx)(Qr,{}),` `,w?`Confirm delete`:`Delete`]}):(0,W.jsx)(F,{variant:`destructiveOutline`,type:`button`,onClick:o,disabled:g,children:`Cancel`}),(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:g||!d||!f,children:[(0,W.jsx)(Ir,{}),` Save`]})]})})]})})})})}function M_({rows:e,isFetching:t,onRefresh:n,canManage:r=!0,selectedName:i,onSelectName:a,nameHeader:o=`Key`,addDescription:s,editDescription:c,valueDescription:l,onSet:u,onDelete:d,renderEditExtras:f,docsLink:p,children:m,delivery:h=!1,deliveryDefaultTier:g=`scoped`,grantableComponents:_}){let v=(0,G.useMemo)(()=>[{header:o,accessorKey:`name`,enableSorting:!1},{id:`value`,header:`Value`,enableSorting:!1,cell:({row:e})=>(0,W.jsx)(N_,{value:e.original.value,warning:e.original.warning})}],[o]),y=(0,G.useCallback)(e=>a(e?.original?.name),[a]),[b,x]=(0,G.useState)(!1),S=(0,G.useMemo)(()=>e.map(e=>e.name),[e]),C=(0,G.useMemo)(()=>e.find(e=>e.name===i),[e,i]),w=Zu(n??(()=>Promise.resolve()));return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Ku,{columns:v,data:e,isFetching:t,onRowClick:r?y:void 0,children:[p,n&&(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:w,accessKey:`r`,disabled:t,children:[(0,W.jsx)(fn,{}),(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),r&&(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:()=>x(!0),accessKey:`a`,disabled:b,children:[(0,W.jsx)(Mr,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]}),m]}),b&&(0,W.jsx)(k_,{isModalOpen:b,setIsModalOpen:x,description:s,valueDescription:l,existingKeys:S,delivery:h,defaultTier:g,grantableComponents:_,onSubmit:({key:e,value:t,...n})=>u(e,t,n)}),i&&C&&(0,W.jsx)(j_,{name:C.name,description:c,valueDescription:l,currentValue:C.value,delivery:h,currentTier:C.processEnv?`processEnv`:`scoped`,onSave:(e,t)=>u(C.name,e,t),onDelete:d&&(()=>d(C.name)),closeModal:()=>a(void 0),children:f?.(C.name)},C.name)]})}function N_({value:e,warning:t}){let[n,r]=(0,G.useState)(!1),i=t&&(0,W.jsx)(ei,{className:`inline-block size-4 text-amber-500 shrink-0`,"aria-label":t,children:(0,W.jsx)(`title`,{children:t})});return e===void 0?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 max-w-full`,title:t,children:[r_,i]}):(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 max-w-full`,children:[(0,W.jsxs)(F,{type:`button`,variant:`ghost`,size:`sm`,className:`px-1`,onClick:e=>{e.stopPropagation(),r(e=>!e)},title:n?`Hide value`:`Reveal value`,children:[n?(0,W.jsx)(er,{}):(0,W.jsx)(tr,{}),(0,W.jsx)(`span`,{className:`sr-only`,children:n?`Hide value`:`Reveal value`})]}),(0,W.jsx)(`span`,{className:n?`font-mono`:void 0,children:n?e:r_}),i]})}function P_(){let e=Oe(),{secretName:t,clusterId:n}=L({strict:!1}),r=K(),{data:i,refetch:a,isFetching:o}=R(Jg(r)),s=fs(),{data:c}=R(Ah({...r,enabled:s})),l=(0,G.useMemo)(()=>jg(c),[c]),u=R(Ba(n,!1)),d=u.data,f=d===void 0||hs(d)?void 0:n,p=(0,G.useMemo)(()=>({...r,managedClusterId:f}),[r,f]),m=!n||u.isSuccess,h=R({...Kg(p),enabled:m}),g=!!n&&u.isError,_=i?.secrets,v=(0,G.useMemo)(()=>(_??[]).map(e=>({name:e.name,processEnv:e.processEnv,warning:F_(e,i)})),[_,i]),y=(0,G.useMemo)(()=>_?.find(e=>e.name===t)?.name,[_,t]),b=(0,G.useCallback)(n=>{let r=[t?`..`:``,n].filter(Boolean);e({to:r.join(`/`)})},[e,t]),{mutateAsync:x,reset:S}=Xg(),{mutateAsync:C}=Qg(),w=(0,G.useCallback)(async(e,t,n)=>{try{await x({...p,name:e,value:t,processEnv:n?.processEnv,grants:n?.grants})}finally{S()}await a()},[x,S,p,a]),T=(0,G.useCallback)(async e=>{await C({...r,name:e}),await a()},[C,r,a]);return(0,W.jsxs)(W.Fragment,{children:[g?(0,W.jsxs)(`p`,{className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3 mb-4`,children:[(0,W.jsx)(ei,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,W.jsx)(`span`,{children:`Secrets are read-only right now: this cluster's info couldn't be loaded, so its secret custody is unknown. Refresh once cluster info is available.`})]}):h.isError&&(0,W.jsxs)(`p`,{className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3 mb-4`,children:[(0,W.jsx)(ei,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,W.jsx)(`span`,{children:`Secrets are read-only right now: this cluster has no secrets key, so values can't be encrypted. Key custody is provided by the Harper secret-custody component — once it's active, refresh this page.`})]}),(0,W.jsx)(M_,{rows:v,isFetching:o,onRefresh:a,canManage:h.isSuccess,selectedName:y,onSelectName:b,nameHeader:`Secret`,delivery:!0,docsLink:(0,W.jsx)(`a`,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,href:`https://docs.harperdb.io/reference/v5/security/secrets`,target:`_blank`,rel:`noreferrer`,children:`Secrets Docs`}),grantableComponents:l,addDescription:`The value is encrypted in your browser against the cluster's secrets key — plaintext never reaches the API, the operation log, or disk. It can be replaced or deleted, but never read back.`,editDescription:`The current value can't be shown — it's stored encrypted. Enter a new value to replace it, adjust how applications read it, or delete the secret.`,valueDescription:`Encrypted client-side before it leaves this page.`,onSet:w,onDelete:T,renderEditExtras:e=>{let t=_?.find(t=>t.name===e);return t&&(0,W.jsx)(n_,{name:t.name,initialGrants:t.grants,components:l,onChanged:()=>void a()},t.name)}})]})}function F_(e,t){if(t?.custody_fingerprint){if(!e.kid_matches_custody)return`Encrypted under a different key than the cluster's current secrets key — it may fail to decrypt at load time. Set a new value to re-encrypt.`;if(e.unverified)return`Stored without key-identity verification.`}}async function I_({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_ssh_keys`});return t}function L_(e){return B({queryKey:[e.entityId,`list_ssh_keys`],queryFn:()=>I_(e)})}var R_=[{header:`SSH Key Name`,accessorKey:`name`,enableSorting:!1},{header:`Host`,accessorKey:`host`,enableSorting:!1,cell:({getValue:e})=>e()||`—`},{header:`Hostname`,accessorKey:`hostname`,enableSorting:!1,cell:({getValue:e})=>e()||`—`}];async function z_({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_ssh_known_hosts`});return t}function B_(e){return B({queryKey:[e.entityId,`get_ssh_known_hosts`],queryFn:()=>z_(e)})}var V_=b({known_hosts:S().trim()});async function H_(e){let{instanceClient:t,entityType:n,...r}=e,{data:i}=await t.post(`/`,{operation:`set_ssh_known_hosts`,replicated:n===`cluster`,...r});return i}function U_(){return I({mutationFn:H_})}function W_(){let e=K(),{data:t}=ae(B_(e)),n=bt({resolver:_t(V_),defaultValues:{known_hosts:t?.known_hosts||``}}),{mutate:r,isPending:i}=U_(),a=(0,G.useCallback)(async t=>{let{known_hosts:i}=t;i&&r({known_hosts:i.trim()+`
|
|
680
|
-
`,...e},{onSuccess:()=>{n.reset(t),H.success(`Known hosts saved!`)}})},[r,n,e]);return(0,W.jsx)(q,{...n,children:(0,W.jsx)(`form`,{id:`instance-edit-known-hosts-form`,name:`instance-edit-known-hosts-form`,onSubmit:n.handleSubmit(a),className:`grid my-4 md:grid-cols-2 overflow-x-auto rounded-md`,children:(0,W.jsx)(Y,{control:n.control,name:`known_hosts`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2 gap-0`,children:[(0,W.jsx)(Z,{className:`bg-muted dark:bg-black-dark py-3 px-2 m-0 text-left font-medium whitespace-nowrap`,children:`Known Hosts`}),(0,W.jsxs)(`div`,{className:`border border-grey-700 p-2 pb-3`,children:[(0,W.jsx)(
|
|
681
|
-
`,host:c,hostname:l,known_hosts:u||void 0,...i},{onSuccess:()=>{r.reset(),t(),H.success(`SSH Key added successfully!`),n(!1)}})}},[a,r,i,t,n]),c=(0,G.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,W.jsx)(qt,{onOpenChange:n,open:e,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...r,children:(0,W.jsxs)(`form`,{id:`instance-add-ssh-key-form`,name:`instance-add-ssh-key-form`,onSubmit:r.handleSubmit(s),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,W.jsxs)(Zt,{className:`md:col-span-2`,children:[(0,W.jsx)(Jt,{children:`Add New SSH Key`}),(0,W.jsx)(Ht,{children:`Enter the details of your SSH Key below.`})]}),(0,W.jsx)(Y,{control:r.control,name:`name`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`key`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Key`}),(0,W.jsx)(
|
|
682
|
-
`,...s},{onSuccess:()=>{H.success(`SSH Key updated successfully!`),r(void 0),i()}})},[l,a,s,r,i]),g=(0,G.useCallback)(()=>{m(!0)},[]),_=(0,G.useCallback)(()=>{d({name:a,...s},{onSuccess:()=>{H.success(`SSH Key deleted successfully!`),r(void 0),i()}})},[a,d,s,i,r]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(qt,{onOpenChange:n,open:t,children:(0,W.jsx)(tn,{className:`sm:max-w-[750px]`,"aria-describedby":void 0,children:(0,W.jsx)(q,{...o,children:(0,W.jsxs)(`form`,{id:`instance-edit-ssh-key-form`,name:`instance-edit-ssh-key-form`,onSubmit:o.handleSubmit(h),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,W.jsx)(Jt,{children:`Edit SSH Key`}),(0,W.jsx)(Y,{control:o.control,name:`name`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,readOnly:!0,disabled:!0,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:o.control,name:`key`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Key`}),(0,W.jsx)(Zl,{children:`Replace your existing private key. Lost it? Try out "ssh-keygen"! You'll want to add your public key to your registry, i.e. GitHub.`}),(0,W.jsx)(J,{children:(0,W.jsx)(om,{autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,rows:3,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Host`}),(0,W.jsx)(Zl,{children:`A unique identifying name for the combination of this key and your hostname, i.e. "your-repo.github.com". You will use this instead of the direct hostname to pick your key when importing applications.`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,value:c?.host||``,disabled:!0,readOnly:!0})}),(0,W.jsx)(Q,{})]}),(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Hostname`}),(0,W.jsx)(Zl,{children:`When making the request, the actual hostname to use, i.e. "github.com".`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,value:c?.hostname||``,disabled:!0,readOnly:!0})}),(0,W.jsx)(Q,{})]}),(0,W.jsxs)(Ut,{className:`md:col-span-2`,children:[(0,W.jsx)(F,{type:`button`,variant:`destructiveOutline`,onClick:g,disabled:u,children:`Delete SSH Key`}),(0,W.jsx)(F,{type:`submit`,variant:`submit`,disabled:u||!o.formState.isValid,children:`Update SSH Key`})]})]})})})}),(0,W.jsx)(Jo,{isModalOpen:p,setIsModalOpen:m,deletionConfirmed:_,deletionPending:f,typeOfThingBeingDeleted:`SSH key`,nameOfThingBeingDeleted:a,hideDataLossWarning:!0})]})}function av(){let e=Oe(),{keyName:t}=L({strict:!1}),{data:n,refetch:r,isFetching:i,isRefetching:a}=R(L_(K())),o=(0,G.useMemo)(()=>n?.find(e=>e.name===t),[n,t]),s=(0,G.useCallback)(n=>{let r=n?.original?.name,i=[t?`..`:``,r].filter(Boolean);e({to:i.join(`/`)})},[t,e]),c=!!t&&!!o,[l,u]=(0,G.useState)(!1),d=(0,G.useCallback)(()=>{u(!0)},[u]),f=Zu(r);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Ku,{columns:R_,data:n||[],isFetching:i,onRowClick:s,children:[(0,W.jsx)(V,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,to:`https://docs.harperdb.io/docs/developers/security/certificate-management`,target:`_blank`,children:`Certificate Management Docs`}),(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:f,accessKey:`r`,disabled:i||a,children:[(0,W.jsx)(fn,{}),(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:d,accessKey:`a`,disabled:l,children:[(0,W.jsx)(Mr,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]})]}),l&&(0,W.jsx)(X_,{isModalOpen:l,onChangesSaved:r,setIsModalOpen:u}),c&&(0,W.jsx)(iv,{isModalOpen:c,closeModal:s,data:o,onSelectSSHKey:s,onChangesSaved:r}),(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Ei,{text:`Loading...`}),children:(0,W.jsx)(W_,{})})]})}var ov=ue(),sv=[{header:`Username`,accessorKey:`username`,enableSorting:!1},ov.display({header:`Role`,enableSorting:!1,id:`role`,cell:e=>e.row.original.role.role}),{header:`Active`,accessorKey:`active`,enableSorting:!1},ov.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>Yu((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),{header:`Updated`,accessorKey:`__updatedtime__`,enableSorting:!1,cell:e=>Yu((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}];function cv({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=K(),{data:i,isLoading:a}=R({..._g(r),throwOnError:!0}),o=bt({resolver:_t(xp),defaultValues:{username:``,role:``,password:``,confirmPassword:``}}),{mutate:s,isPending:c}=wp(),l=(0,G.useCallback)(async e=>{e&&s({active:!0,password:e.password,role:e.role,username:e.username,...r},{onSuccess:()=>{let r=e.role;o.reset(),o.setValue(`role`,r),t(),H.success(`User added successfully!`),n(!1)}})},[s,o,r,t,n]);return(0,W.jsx)(qt,{onOpenChange:n,open:e,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...o,children:(0,W.jsxs)(`form`,{id:`instance-add-user-form`,name:`instance-add-user-form`,onSubmit:o.handleSubmit(l),className:`grid gap-4 my-4`,children:[(0,W.jsx)(Zt,{children:(0,W.jsx)(Jt,{children:`Add New User`})}),(0,W.jsx)(Y,{control:o.control,name:`username`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Username`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:o.control,name:`password`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:o.control,name:`confirmPassword`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Confirm Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:o.control,name:`role`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Role`}),a?(0,W.jsx)(Gl,{}):(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...e,onValueChange:t=>e.onChange(t),children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`Choose Role`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(Xt,{children:`Role`}),i?.map(e=>(0,W.jsx)(zt,{value:e.id,children:(0,W.jsx)(Id,{name:e.role,id:e.id})},e.id))]})})]})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Ut,{children:(0,W.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:c,children:[(0,W.jsx)(Ir,{}),` Add User`]})})})]})})})})}var lv=b({username:xp.shape.username,role:xp.shape.role,newPassword:xp.shape.password.or(O(``)).optional(),confirmPassword:xp.shape.confirmPassword}).refine(e=>!e.newPassword||e.newPassword.length>=8,{error:`Password must be at least 8 characters long.`,path:[`password`]}).refine(e=>!e.newPassword||e.newPassword===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function uv({data:e,onUserUpdated:t}){let n=K(),{data:r,isLoading:i}=R({..._g(n),throwOnError:!0}),{mutate:a,isPending:o}=Ep(),s=bt({resolver:_t(lv),defaultValues:{username:e.username,role:e.role?.id??``,newPassword:``,confirmPassword:``}}),c=(0,G.useCallback)(r=>{let i={username:e.username,role:r.role,...n};r.newPassword&&(i.password=r.newPassword),a(i,{onSuccess:()=>{s.reset(),H.success(`User edited successfully!`),t()}})},[s,a,e.username,n,t]);return(0,W.jsx)(q,{...s,children:(0,W.jsxs)(`form`,{id:`instance-edit-user-form`,name:`instance-edit-user-form`,onSubmit:s.handleSubmit(c),className:`grid gap-4 my-4`,children:[(0,W.jsx)(Zt,{children:(0,W.jsx)(Jt,{children:`Edit User`})}),(0,W.jsx)(Y,{control:s.control,name:`username`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Username`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,disabled:!0,readOnly:!0,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:s.control,name:`newPassword`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Change Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:s.control,name:`confirmPassword`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Confirm Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:s.control,name:`role`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Role`}),i?(0,W.jsx)(Gl,{}):(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...e,onValueChange:t=>e.onChange(t),children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`Choose Role`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(Xt,{children:`Role`}),r?.map(e=>(0,W.jsx)(zt,{value:e.id,children:(0,W.jsx)(Id,{name:e.role,id:e.id})},e.id))]})})]})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Ut,{children:(0,W.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,W.jsxs)(F,{variant:`submit`,disabled:o,children:[(0,W.jsx)(Ir,{}),` Save Changes`]})})})]})})}var dv=b({username:Ua,confirmUsernameForDeletion:S().nonempty({error:`Please type the username again to confirm deletion.`}).toLowerCase()}).refine(e=>e.username===e.confirmUsernameForDeletion,{error:`Username does not match.`,path:[`confirmUsernameForDeletion`]});function fv({data:e,onUserDeleted:t}){let{mutate:n,isPending:r}=Op(),i=bt({resolver:_t(dv),defaultValues:{username:e.username,confirmUsernameForDeletion:``}}),a=Ui(),o=(0,G.useCallback)(()=>{n({username:e.username,...a},{onSuccess:()=>{i.reset(),H.success(`User deleted successfully!`),t()}})},[e.username,i,n,a,t]);return(0,W.jsx)(q,{...i,children:(0,W.jsxs)(`form`,{id:`instance-delete-user-form`,name:`instance-delete-user-form`,onSubmit:i.handleSubmit(o),className:`grid gap-4 my-4`,children:[(0,W.jsx)(Y,{control:i.control,name:`confirmUsernameForDeletion`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Confirm Username`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Ut,{children:(0,W.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,W.jsxs)(F,{variant:`destructive`,disabled:r||!i.formState.isValid,children:[(0,W.jsx)($r,{}),` Delete User`]})})})]})})}function pv({closeModal:e,clusterId:t,instanceId:n,data:r,isModalOpen:i,onUserDeleted:a,onUserUpdated:o}){let s=u.checkForFabricConnect(n??t),c=Fe(n??t),l=!(!s&&c.user?.username===r.username);return(0,W.jsx)(qt,{onOpenChange:e,open:i,children:(0,W.jsxs)(tn,{resizable:!0,children:[(0,W.jsx)(uv,{data:r,onUserUpdated:o}),l&&(0,W.jsx)(fv,{data:r,onUserDeleted:a})]})})}function mv({entityId:e,instanceClient:t}){return B({queryKey:[e,`list_users`],queryFn:()=>hv({instanceClient:t}),refetchInterval:1e4})}async function hv({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_users`});return t}function gv(){let e=Oe(),{instanceId:t,clusterId:n,username:r}=L({strict:!1}),{data:i,refetch:a,isFetching:o,isRefetching:s}=ae(mv(K())),c=(0,G.useMemo)(()=>i?.find(e=>e.username===r),[i,r]),l=(0,G.useCallback)(t=>{let n=[r?`..`:``,t].filter(Boolean);e({to:n.join(`/`)})},[r,e]),u=!!r&&!!c,[d,f]=(0,G.useState)(!1),[p]=(0,G.useState)({attribute:`username`,descending:!1}),m=(0,G.useMemo)(()=>[{desc:p.descending,id:p.attribute}],[p]),h=(0,G.useCallback)(()=>{f(!0)},[f]),g=(0,G.useCallback)(()=>{a(),f(!1)},[a,f]),_=(0,G.useCallback)(e=>{l(e.original.username)},[l]),v=(0,G.useCallback)(()=>{l(void 0)},[l]),y=(0,G.useCallback)(()=>{a(),l(void 0)},[l,a]),b=(0,G.useCallback)(()=>{a(),l(void 0)},[l,a]),x=Zu(a);return(0,W.jsxs)(G.Suspense,{fallback:(0,W.jsx)(Ei,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,W.jsxs)(Ku,{data:i,isFetching:o||s,columns:sv,onRowClick:_,sortingState:m,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:x,accessKey:`r`,disabled:o||s,children:[(0,W.jsx)(fn,{}),` `,(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:h,accessKey:`a`,disabled:d,children:[(0,W.jsx)(Mr,{}),` `,(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]})]}),(0,W.jsx)(cv,{isModalOpen:d,onChangesSaved:g,setIsModalOpen:f}),u&&(0,W.jsx)(pv,{instanceId:t,clusterId:n,closeModal:v,data:c,isModalOpen:u,onUserDeleted:b,onUserUpdated:y})]})}function _v({context:e,params:t}){let n=Wi(t);return e.queryClient.ensureQueryData(ln(n))}function vv(e){let t=z({getParentRoute:()=>e,path:`config`,head:()=>({meta:[{title:`Config — Harper Fabric`}]}),component:uh,loader:_v}),n=z({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Overview — Harper Fabric`}]}),component:ug,loader:_v}),r=z({getParentRoute:()=>t,path:`roles`,head:()=>({meta:[{title:`Instance Roles — Harper Fabric`}]}),component:kg}),i=z({getParentRoute:()=>t,path:`roles/$roleId`,head:()=>({meta:[{title:`Instance Roles — Harper Fabric`}]}),component:kg}),a=z({getParentRoute:()=>t,path:`users`,head:()=>({meta:[{title:`Instance Users — Harper Fabric`}]}),component:gv}),o=z({getParentRoute:()=>t,path:`users/$username`,head:()=>({meta:[{title:`Instance Users — Harper Fabric`}]}),component:gv}),s=z({getParentRoute:()=>t,path:`domains`,head:()=>({meta:[{title:`Instance Domains — Harper Fabric`}]}),component:ah}),c=z({getParentRoute:()=>t,path:`ssh-keys`,head:()=>({meta:[{title:`SSH Keys — Harper Fabric`}]}),component:av}),l=z({getParentRoute:()=>t,path:`ssh-keys/$keyName`,head:()=>({meta:[{title:`SSH Keys — Harper Fabric`}]}),component:av}),u=z({getParentRoute:()=>t,path:`deployments`,head:()=>({meta:[{title:`Deployments — Harper Fabric`}]}),component:ih}),d=z({getParentRoute:()=>t,path:`deployments/$deploymentId`,head:()=>({meta:[{title:`Deployments — Harper Fabric`}]}),component:ih}),f=z({getParentRoute:()=>t,path:`secrets`,head:()=>({meta:[{title:`Secrets — Harper Fabric`}]}),component:P_}),p=z({getParentRoute:()=>t,path:`secrets/$secretName`,head:()=>({meta:[{title:`Secrets — Harper Fabric`}]}),component:P_}),m=z({getParentRoute:()=>t,path:`certificates`,head:()=>({meta:[{title:`Certificates — Harper Fabric`}]}),component:mm}),h=z({getParentRoute:()=>t,path:`certificates/$certName`,head:()=>({meta:[{title:`Certificates — Harper Fabric`}]}),component:mm});return t.addChildren([n,r,i,a,o,s,u,d,c,l,f,p,m,h])}function yv({clusterId:e,databaseName:t,instanceId:n,organizationId:r,tableName:i}){let a=[`databases`,t,i].filter(Xi).join(`/`);return oh({organizationId:r,instanceId:n,clusterId:e},a)}function bv(e,t){return e.type===`array`?e.elements?t[e.elements]?e.elements:void 0:xv(t,e.attribute):e.type&&t[e.type]?e.type:void 0}function xv(e,t){let n=t.toLowerCase(),r=new Set([n,`${n}s`,n.replace(/s$/,``)]);return Object.keys(e).find(e=>r.has(e.toLowerCase()))}function Sv(e,t,n){if(!t||e.is_primary_key||e.computed)return;let r=bv(e,t),i=r?t[r]:void 0;if(!r||!i)return;let a=i.primary_key??i.hash_attribute;if(!a)return;let o=e.type===`array`;return{relatedTableName:r,relatedPrimaryKey:a,relatedAttributes:Cv(i,t),isToMany:o,resolvable:!o||!!e.elements,reverseForeignKey:o&&n?wv(n,i,t):void 0}}function Cv(e,t){return(e.attributes??[]).filter(e=>!e.computed&&!bv(e,t))}function wv(e,t,n){let r=t.attributes??[];for(let t of r){let i=Sv(t,n);if(i&&!i.isToMany&&i.relatedTableName===e.name){let e=Ov(t.attribute,i,r,n);if(e)return e}}let i=e.name.toLowerCase(),a=new Set([i,i.replace(/s$/,``)].flatMap(e=>[`${e}id`,`${e}_id`]));return r.find(e=>!e.is_primary_key&&!e.computed&&a.has(e.attribute.toLowerCase()))?.attribute}function Tv(e,t,n){let r={};for(let n of e?.attributes??[]){let i=Sv(n,t,e);i&&(r[n.attribute]=i)}for(let e of n??[]){let n=t?.[e.relatedTableName],i=n?.primary_key??n?.hash_attribute;if(!n||!i||!t)continue;let a=r[e.attribute];r[e.attribute]={relatedTableName:e.relatedTableName,relatedPrimaryKey:i,relatedAttributes:Cv(n,t),isToMany:e.isToMany,resolvable:a?.resolvable??!1,reverseForeignKey:(e.isToMany?e.to:void 0)??a?.reverseForeignKey,foreignKeyAttribute:e.from}}return r}function Ev(e,t){return!!e.computed||Sv(e,t)!==void 0}function Dv(e,t){return(e??[]).filter(e=>Ev(e,t)).map(e=>e.attribute)}function Ov(e,t,n,r){let i=[e];t.isToMany&&e.endsWith(`s`)&&i.push(e.slice(0,-1));let a=t.isToMany?[`ids`,`_ids`]:[`id`,`_id`],o=new Set(i.flatMap(e=>a.map(t=>(e+t).toLowerCase())));return n.find(e=>!e.is_primary_key&&!e.computed&&!Sv(e,r)&&o.has(e.attribute.toLowerCase()))?.attribute}function kv(e){let t=new Set;for(let n of Object.values(e))n.foreignKeyAttribute&&t.add(n.foreignKeyAttribute);return[...t]}function Av(e,t){let n=[];for(let r of e?.attributes??[]){let e=Sv(r,t);e?.resolvable&&n.push({name:r.attribute,select:[e.relatedPrimaryKey]})}return n.length?[...n,`*`]:void 0}async function jv({databaseName:e,tableName:t,records:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`insert`,database:e,table:t,records:n});return i}function Mv(){return I({mutationFn:jv})}function Nv({isModalOpen:e,instanceTable:t,databaseTables:n,setIsModalOpen:r,refreshTable:i}){let a=ld(),{mutate:s,isPending:c}=Mv(),l=K(),[u,d]=(0,G.useState)(!0),[f,p]=(0,G.useState)(),[m,h]=(0,G.useState)(!1),[g,_]=(0,G.useState)([]),v=(0,G.useMemo)(()=>{let e={};for(let r of t.attributes)r.is_primary_key||r.attribute===`__createdtime__`||r.attribute===`__updatedtime__`||Ev(r,n)||(e[r.attribute]=Pv(r.type));return JSON.stringify(e,null,4)},[t,n]),y=(0,G.useCallback)(e=>{h(!0),d(e.length===0)},[d]),b=(0,G.useCallback)(()=>{if(f&&u){let e=JSON.parse(f),n=Array.isArray(e)?e:[e],a=H.loading(`Adding ${n.length} records...`);s({...l,databaseName:t.schema,tableName:t.name,records:n},{onSuccess:e=>{i(),e.skipped_hashes?.length||r(!1),_(e.skipped_hashes),(e.skipped_hashes?.length>0?H.warning:H.success)(e.skipped_hashes?.length>0?`Warning!`:`Success!`,{id:a,description:(0,W.jsxs)(W.Fragment,{children:[e.inserted_hashes.length>0&&(0,W.jsxs)(`p`,{children:[`Added `,o(e.inserted_hashes.length,`record`,`records`)]}),e.skipped_hashes.length>0&&(0,W.jsxs)(`p`,{children:[`Skipped `,o(e.skipped_hashes.length,`record`,`records`)]})]})})}})}},[f,s,l,t.name,t.schema,u,i,r]),x=(0,G.useCallback)(e=>{e?.focus()},[]);return(0,W.jsx)(qt,{onOpenChange:r,open:e,children:(0,W.jsxs)(tn,{"aria-describedby":void 0,resizable:!0,onEscapeKeyDown:e=>{m&&e.preventDefault()},children:[(0,W.jsx)(Zt,{children:(0,W.jsxs)(Jt,{children:[`Add New `,t.name]})}),(t?.primary_key??t?.hash_attribute)&&(0,W.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[`The primary key for this table is`,` `,(0,W.jsxs)(`strong`,{children:[`“`,t.primary_key??t.hash_attribute,`”`]}),`, and will auto-generate. You may manually add it if you want to specify its value.`]}),(0,W.jsx)(`div`,{className:`flex-1 min-h-0 w-full`,children:(0,W.jsx)(dd,{className:`w-full h-full`,language:`json`,theme:a,value:v,onValidate:y,onChange:p,options:{minimap:{enabled:!1},automaticLayout:!0},onMount:x})}),(0,W.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[(0,W.jsx)(`strong`,{children:`Provide an [array]`}),` if you want to add more than one record at a time.`]}),g.length>0&&(0,W.jsxs)(bh,{className:`mt-2`,children:[(0,W.jsx)(Xr,{className:`w-4 h-4`}),(0,W.jsxs)(xh,{children:[`Skipped `,g.length===1?`Hash`:`Hashes`,` Detected`]}),(0,W.jsx)(Sh,{className:`max-h-36 overflow-auto`,children:(0,W.jsx)(`ol`,{children:g.map(e=>(0,W.jsx)(`li`,{children:e},e))})})]}),(0,W.jsx)(Ut,{children:(0,W.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,W.jsxs)(F,{variant:`submit`,onClick:b,accessKey:`s`,disabled:!f||!u||c,children:[(0,W.jsx)(Ir,{}),` `,(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`S`}),`ave Changes`]})]})})})]})})}function Pv(e){switch(e){case`Date`:return new Date().toISOString();case`Id`:case`ID`:case`String`:return``;case`Boolean`:return!1;case`Int`:case`Long`:case`Float`:case`BigInt`:return 0;default:return null}}async function Fv({databaseName:e,tableName:t,primaryKey:n,replicated:r,instanceClient:i}){let{data:a}=await i.post(`/`,{operation:`create_table`,database:e,table:t,primary_key:n,replicated:r});return a}function Iv(){return I({mutationFn:Fv})}var Lv=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,Rv=S().regex(Lv,{error:`Database name cannot include backticks or forward slashes.`}).max(75,{error:`Database name cannot be longer than 75 characters.`}),zv=S().nonempty({error:`Table name is required.`}).regex(Lv,{error:`Table name cannot include backticks or forward slashes.`}).max(250,{error:`Table name cannot be longer than 250 characters.`}),Bv=b({databaseName:Rv,tableName:zv,primaryKey:S().regex(Lv,{error:`Primary key cannot include backticks or forward slashes.`}).max(250,{error:`Primary key cannot be longer than 250 characters.`})});function Vv({isModalOpen:e,setIsModalOpen:t,databaseName:n,onCreated:r}){let i=ie(),a=K(),o=ne(),s=bt({resolver:_t(Bv),defaultValues:{databaseName:n||``,tableName:``,primaryKey:``}}),{mutate:c}=Iv(),l=async e=>{let n=e.databaseName||`data`,l=e.tableName;c({databaseName:n,tableName:l,primaryKey:e.primaryKey||`id`,...a,replicated:a.entityType===`cluster`},{onSuccess:async()=>{await i.invalidateQueries({queryKey:[a.entityId,`describe_all`],refetchType:`all`}),H.success(`Table ${l} created successfully`),t(!1),s.reset(),r(n,l),await o.invalidate()}})};return(0,W.jsx)(qt,{open:e,onOpenChange:t,children:(0,W.jsxs)(tn,{className:`sm:max-w-[425px]`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsx)(Jt,{children:`Create a New Table`}),(0,W.jsx)(Ht,{children:`What would you like to create?`})]}),(0,W.jsx)(q,{...s,children:(0,W.jsxs)(`form`,{id:`instance-new-table-form`,name:`instance-new-table-form`,onSubmit:s.handleSubmit(l),className:`grid gap-6 text-popover-foreground`,children:[(0,W.jsx)(Y,{control:s.control,name:`tableName`,render:({field:e})=>(0,W.jsxs)(X,{className:``,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Table Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,maxLength:Bv.shape.tableName.maxLength,autoFocus:!0,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:s.control,name:`primaryKey`,render:({field:e})=>(0,W.jsxs)(X,{className:``,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Primary Key`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,placeholder:`id`,type:`text`,maxLength:Bv.shape.primaryKey.maxLength,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:s.control,name:`databaseName`,render:({field:e})=>(0,W.jsxs)(X,{className:``,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Database Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,placeholder:`data`,maxLength:Bv.shape.databaseName.maxLength,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(F,{type:`submit`,variant:`submit`,children:[(0,W.jsx)(Jr,{}),`Create New Table`]})})]})})]})})}async function Hv({databaseName:e,replicated:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`drop_database`,database:e,replicated:t});return r}function Uv(){return I({mutationFn:Hv})}function Wv(e,t){let[n,r]=(0,G.useState)({value:t});return Of(e,(e,t)=>r({value:e,trigger:t}),[r]),n}function Gv(e,t,n){kf(e,t,n)}function Kv(e,t,n){return r=>Gv(e,t,n??r)}function qv(e,t,n){return(0,G.useCallback)(r=>{Gv(e,t,n??r)},[e,t,n])}function Jv({onDeleted:e}){let{value:t}=Wv(`ShowDeleteDatabase`,!1),n=!!t,r=t?t.databaseName:``,i=(0,G.useCallback)(()=>{Gv(`ShowDeleteDatabase`,!1)},[]),a=ps(),o=ie(),s=K(),c=ne(),{mutate:l,isPending:u}=Uv(),d=(0,G.useCallback)(()=>{l({databaseName:r,...s,replicated:s.entityType===`cluster`},{onSuccess:async()=>{i(),await o.invalidateQueries({queryKey:[s.entityId,`describe_all`],refetchType:`all`}),await c.invalidate(),H.success(`Database ${r} dropped successfully`),e({databaseName:r})}})},[i,r,l,s,e,o,c]);return!a||!r?(0,W.jsx)(W.Fragment,{}):(0,W.jsx)(Jo,{typeOfThingBeingDeleted:`database`,nameOfThingBeingDeleted:r,transitiveVerb:`Drop`,presentParticiple:`Dropping`,isModalOpen:n,setIsModalOpen:i,deletionConfirmed:d,deletionPending:u})}async function Yv({databaseName:e,tableName:t,replicated:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`drop_table`,database:e,table:t,replicated:n});return i}function Xv(){return I({mutationFn:Yv})}function Zv({onDeleted:e}){let{value:t}=Wv(`ShowDeleteTable`,!1),n=!!t,r=t?t.databaseName:``,i=t?t.tableName:``,a=(0,G.useCallback)(()=>{Gv(`ShowDeleteTable`,!1)},[]),o=ps(),s=ie(),c=K(),l=ne(),{mutate:u,isPending:d}=Xv(),f=(0,G.useCallback)(()=>{u({databaseName:r,tableName:i,...c,replicated:c.entityType===`cluster`},{onSuccess:async()=>{a(),await s.invalidateQueries({queryKey:[c.entityId,`describe_all`],refetchType:`all`}),await l.invalidate(),H.success(`Table ${i} dropped successfully`),e({databaseName:r,tableName:i})}})},[a,r,u,c,e,s,l,i]);return!o||!r?(0,W.jsx)(W.Fragment,{}):(0,W.jsx)(Jo,{typeOfThingBeingDeleted:`table`,nameOfThingBeingDeleted:`${r} > ${i}`,transitiveVerb:`Drop`,presentParticiple:`Dropping`,isModalOpen:n,setIsModalOpen:a,deletionConfirmed:f,deletionPending:d})}var Qv=[`Ada`,`Alan`,`Grace`,`Linus`,`Margaret`,`Dennis`,`Barbara`,`Ken`,`Radia`,`Donald`,`Katherine`,`Edsger`,`Frances`,`John`,`Hedy`],$v=[`Lovelace`,`Turing`,`Hopper`,`Hamilton`,`Ritchie`,`Liskov`,`Thompson`,`Perlman`,`Knuth`,`Johnson`,`Dijkstra`,`Allen`,`Backus`,`Lamarr`,`Shannon`],ey=[`amber`,`birch`,`cedar`,`delta`,`ember`,`fjord`,`grove`,`harbor`,`indigo`,`juniper`,`krypton`,`lagoon`,`meadow`,`nimbus`,`onyx`,`prairie`,`quartz`,`ridge`,`summit`,`tundra`],ty=[`Denver`,`Austin`,`Seattle`,`Boston`,`Chicago`,`Portland`,`Nashville`,`Phoenix`,`Atlanta`],ny=[`USA`,`Canada`,`Germany`,`Japan`,`Brazil`,`Australia`,`France`,`India`,`Spain`],ry=e=>e[Math.floor(Math.random()*e.length)],iy=(e,t)=>e+Math.floor(Math.random()*(t-e+1)),ay=e=>e[0].toUpperCase()+e.slice(1),oy=()=>new Date(Date.now()-iy(0,365)*24*60*60*1e3).toISOString();function sy(e){let t=e.toLowerCase();return/email/.test(t)?`${ry(Qv).toLowerCase()}.${ry($v).toLowerCase()}@example.com`:/phone/.test(t)?`555-${iy(100,999)}-${iy(1e3,9999)}`:/(^|_)(url|link|website)($|_)/.test(t)?`https://example.com/${ry(ey)}`:/name/.test(t)?/(first|given)/.test(t)?ry(Qv):/(last|family|sur)/.test(t)?ry($v):`${ry(Qv)} ${ry($v)}`:/age/.test(t)?iy(1,90):/year/.test(t)?iy(1970,2026):/(price|cost|amount|total|salary)/.test(t)?Number((Math.random()*500).toFixed(2)):/(count|qty|quantity|weight|height|size|pages|score|rating|number|num_)/.test(t)?iy(0,500):/(^is_|^has_|enabled|active|flag|adorable|verified)/.test(t)?Math.random()<.5:/(date|time|_at$|created|updated)/.test(t)?oy():/city/.test(t)?ry(ty):/country/.test(t)?ry(ny):/(description|notes|comment|bio|summary)/.test(t)?`A ${ry(ey)} ${ry(ey)} with a hint of ${ry(ey)}.`:`${ay(ry(ey))} ${ay(ry(ey))}`}function cy(e){switch(e.type){case`ID`:return crypto.randomUUID();case`Int`:case`Long`:case`BigInt`:{let t=sy(e.attribute);return typeof t==`number`?Math.round(t):iy(0,1e3)}case`Float`:{let t=sy(e.attribute);return typeof t==`number`?t:Number((Math.random()*1e3).toFixed(2))}case`Boolean`:return Math.random()<.5;case`Date`:return oy();case`String`:{let t=sy(e.attribute);return typeof t==`string`?t:String(t)}default:return sy(e.attribute)}}function ly(e,t){return(e??[]).filter(e=>!e.is_primary_key&&e.attribute!==`__createdtime__`&&e.attribute!==`__updatedtime__`&&e.type!==`Bytes`&&e.type!==`Blob`&&!Ev(e,t))}function uy(e,t){let n=ly(e);return Array.from({length:t},()=>{let e={};for(let t of n)e[t.attribute]=cy(t);return e})}function dy(e){let t;try{t=JSON.parse(e)}catch{throw Error(`The file is not valid JSON.`)}let n=Array.isArray(t)?t:[t];if(n.length===0)throw Error(`The JSON file contains no records.`);if(n.some(e=>typeof e!=`object`||!e||Array.isArray(e)))throw Error(`The JSON file must contain an object or an array of objects.`);return n}var fy=[{id:`dogs`,name:`Dogs`,description:`The classic Harper demo — dogs and their humans`,table:`dog`,csv:`id,dog_name,owner_name,breed,age,weight_lbs,adorable
|
|
677
|
+
`,n=/\r?\n$/.test(e),r=e.length?e.split(/\r?\n/):[];return n&&r.pop(),{eol:t,endedWithNewline:n,lines:r}}function v_(e,t){let n=new Map(Object.entries(t)),r=new Set,{eol:i,endedWithNewline:a,lines:o}=__(e),s=[];for(let e=0;e<o.length;e++){let t=o_.exec(o[e]);if(t){let[,i,a]=t,c=g_(o,e,t[3]);if(n.has(a))r.has(a)||(s.push(`${i}${a}=${m_(n.get(a))}`),r.add(a));else for(let t=e;t<=c;t++)s.push(o[t]);e=c;continue}s.push(o[e])}let c=!1;for(let[e,t]of n)r.has(e)||(s.push(`${e}=${m_(t)}`),c=!0);let l=s.join(i);return l.length>0&&(a||c)&&(l+=i),l}function y_(e,t){let n=new Set(Array.isArray(t)?t:[t]);if(n.size===0||!e)return e;let{eol:r,endedWithNewline:i,lines:a}=__(e),o=[];for(let e=0;e<a.length;e++){let t=o_.exec(a[e]);if(t){let r=g_(a,e,t[3]);if(!n.has(t[2]))for(let t=e;t<=r;t++)o.push(a[t]);e=r;continue}o.push(a[e])}let s=o.join(r);return s.length>0&&i&&(s+=r),s}function b_({grants:e,onChange:t,components:n,disabled:r}){let i=(0,G.useCallback)(n=>{e.includes(n)||t([...e,n])},[e,t]),a=(0,G.useCallback)(n=>{t(e.filter(e=>e!==n))},[e,t]);return(0,W.jsxs)(`div`,{className:`grid gap-2`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:`Granted applications`}),(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Only these applications will be able to read the secret. You can grant more later — leave it empty to add grants after creating the secret.`}),e.length>0&&(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.map(e=>(0,W.jsxs)(oo,{variant:`secondary`,children:[e,(0,W.jsxs)(`button`,{type:`button`,onClick:()=>a(e),disabled:r,title:`Remove ${e}`,className:`cursor-pointer disabled:cursor-default`,children:[(0,W.jsx)(pn,{}),(0,W.jsxs)(`span`,{className:`sr-only`,children:[`Remove `,e]})]})]},e))}),(0,W.jsx)(Ng,{components:n,granted:e,onAdd:i,disabled:r,actionLabel:`Add`,commitOnBlur:!0})]})}function x_({className:e,...t}){return(0,W.jsx)(Tt,{"data-slot":`radio-group`,className:P(`grid gap-3`,e),...t})}function S_({className:e,...t}){return(0,W.jsx)(pt,{"data-slot":`radio-group-item`,className:P(`border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50`,e),...t,children:(0,W.jsx)(jt,{"data-slot":`radio-group-indicator`,className:`relative flex items-center justify-center`,children:(0,W.jsx)(Un,{className:`fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2`})})})}function C_(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function w_(e){return`'${e.replace(/\\/g,`\\\\`).replace(/'/g,`\\'`)}'`}function T_(e,t){let n=e.trim()||`MY_SECRET`,r=C_(n);return t===`processEnv`?[`// Exposed on process.env for every component (and child processes).`,`const value = ${r?`process.env.${n}`:`process.env[${w_(n)}]`};`].join(`
|
|
678
|
+
`):[`import { secrets } from 'harper';`,``,`// Use the current value right away — read at your module's top level.`,`let value = ${r?`secrets.${n}`:`secrets[${w_(n)}]`};`,``,`// Then react to rotations without blocking startup. Subscribing in a background`,`// task lets module load finish, so the rest of your app keeps initializing.`,`(async () => {`,` try {`,` for await (const next of secrets.subscribe(${w_(n)})) {`,` if (next === value) continue; // the first yield is the current value you already have`,` value = next; // rotated — rebuild anything bound to the secret (e.g. an API client) here`,` }`,` } catch (error) {`,` // Log and keep serving the last value; it stays valid until the next reload.`,` console.error('secret subscription ended for', ${w_(n)}, error);`,` }`,`})();`].join(`
|
|
679
|
+
`)}function E_({name:e,tier:t}){let n=T_(e,t),[r,i]=(0,G.useState)(!1),a=(0,G.useRef)(void 0);(0,G.useEffect)(()=>()=>clearTimeout(a.current),[]);let o=(0,G.useCallback)(()=>{ks(n).then(e=>{e&&(i(!0),clearTimeout(a.current),a.current=setTimeout(()=>i(!1),1200))})},[n]);return(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(`pre`,{className:`overflow-x-auto rounded-md border border-border bg-muted/50 p-3 pr-10 text-xs leading-relaxed`,children:(0,W.jsx)(`code`,{className:`font-mono text-foreground`,children:n})}),(0,W.jsxs)(F,{type:`button`,variant:`ghost`,size:`sm`,className:`absolute top-1.5 right-1.5 px-1`,onClick:o,title:`Copy example`,children:[r?(0,W.jsx)(un,{className:`text-green-500`}):(0,W.jsx)(Xn,{}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Copy example`})]})]})}var D_=`https://docs.harperdb.io/reference/v5/security/secrets`;function O_({name:e,tier:t,onTierChange:n,disabled:r,grantsSlot:i}){return(0,W.jsxs)(`div`,{className:`grid gap-3`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:`How should applications read this secret?`}),(0,W.jsxs)(x_,{value:t,onValueChange:e=>n(e),disabled:r,children:[(0,W.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer`,children:[(0,W.jsx)(S_,{value:`scoped`,className:`mt-0.5`}),(0,W.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:`Scoped to specific apps`}),(0,W.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Exposed only to the applications you grant, through the `,(0,W.jsx)(`code`,{className:`font-mono`,children:`secrets`}),` `,`accessor. Never placed on `,(0,W.jsx)(`code`,{className:`font-mono`,children:`process.env`}),`.`]})]})]}),(0,W.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer`,children:[(0,W.jsx)(S_,{value:`processEnv`,className:`mt-0.5`}),(0,W.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:`Environment variable`}),(0,W.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Materialized onto `,(0,W.jsx)(`code`,{className:`font-mono`,children:`process.env`}),` `,`for every component (and child processes). Global — it can't be scoped to specific apps.`]})]})]})]}),t===`scoped`&&i,(0,W.jsxs)(`div`,{className:`grid gap-1`,children:[(0,W.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wide`,children:`How to read it in your component`}),(0,W.jsx)(E_,{name:e,tier:t}),(0,W.jsx)(`a`,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,href:D_,target:`_blank`,rel:`noreferrer`,children:`Learn more about secrets in the Harper docs`})]})]})}var k_=S().trim().min(1).regex(a_,{error:`Letters, numbers, underscore, dash and dot only.`});function A_({description:e,valueDescription:t,existingKeys:n,onSubmit:r,isModalOpen:i,setIsModalOpen:a,delivery:o=!1,defaultTier:s=`scoped`,grantableComponents:c=[]}){let l=bt({resolver:_t((0,G.useMemo)(()=>b({key:k_.refine(e=>!n?.includes(e),{error:`This key already exists — edit it instead.`}),value:S().min(1)}),[n])),defaultValues:{key:``,value:``}}),{isDirty:u,isValid:d,isSubmitting:f}=l.formState,[p,m]=(0,G.useState)(s),[h,g]=(0,G.useState)([]),_=l.watch(`key`),v=(0,G.useCallback)(()=>{m(s),g([])},[s]),y=(0,G.useCallback)(async e=>{let t=o?{processEnv:p===`processEnv`,grants:p===`scoped`?h:void 0}:{};try{await r({...e,...t}),l.reset(),v(),H.success(`Secret "${e.key}" saved.`),a(!1)}catch(e){H.error(String(e))}},[r,l,a,o,p,h,v]),x=(0,G.useCallback)(()=>{l.reset(),v(),a(!1)},[l,a,v]);return(0,W.jsx)(qt,{onOpenChange:a,open:i,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...l,children:(0,W.jsxs)(`form`,{id:`add-secret-form`,name:`add-secret-form`,onSubmit:l.handleSubmit(y),className:`grid gap-4 my-4`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsx)(Jt,{children:`Add Secret`}),(0,W.jsx)(Ht,{children:e})]}),(0,W.jsx)(Y,{control:l.control,name:`key`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Key`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:l.control,name:`value`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Value`}),t&&(0,W.jsx)(Ql,{children:t}),(0,W.jsx)(J,{children:(0,W.jsx)(sm,{autoComplete:`off`,autoCapitalize:`off`,rows:3,...e})}),(0,W.jsx)(Q,{})]})}),o&&(0,W.jsx)(O_,{name:_,tier:p,onTierChange:m,disabled:f,grantsSlot:(0,W.jsx)(b_,{grants:h,onChange:g,components:c,disabled:f})}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,W.jsx)(F,{variant:`destructiveOutline`,type:`button`,onClick:x,disabled:f,children:`Cancel`}),(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:f||!u||!d,children:[(0,W.jsx)(Lr,{}),` Add Secret`]})]})})]})})})})}var j_=b({value:S().min(1)});function M_({name:e,description:t,valueDescription:n,currentValue:r,onSave:i,onDelete:a,closeModal:o,children:s,delivery:c=!1,currentTier:l=`scoped`}){let u=bt({resolver:_t(j_),defaultValues:{value:``}}),{isDirty:d,isValid:f,isSubmitting:p}=u.formState,[m,h]=(0,G.useState)(!1),g=p||m,[_,v]=(0,G.useState)(l),y=c&&_!==l,[b,x]=(0,G.useState)(!1),S=(0,G.useCallback)(()=>{u.setValue(`value`,r??``,{shouldDirty:!1}),x(!0)},[u,r]),C=(0,G.useCallback)(async t=>{try{await i(t.value,c?{processEnv:_===`processEnv`}:void 0),H.success(`Secret "${e}" updated.`),o()}catch(e){H.error(String(e))}},[i,e,o,c,_]),[w,T]=(0,G.useState)(!1),E=(0,G.useCallback)(async()=>{if(!w){T(!0);return}h(!0);try{await a?.(),H.success(`Secret "${e}" deleted.`),o()}catch(e){H.error(String(e))}finally{h(!1)}},[w,a,e,o]);return(0,W.jsx)(qt,{onOpenChange:o,open:!0,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...u,children:(0,W.jsxs)(`form`,{onSubmit:u.handleSubmit(C),className:`grid gap-4 my-4`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsx)(Jt,{children:e}),(0,W.jsx)(Ht,{children:t})]}),(0,W.jsx)(Y,{control:u.control,name:`value`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:r===void 0?`New value`:`Value`}),n&&(0,W.jsx)(Ql,{children:n}),(0,W.jsx)(J,{children:(0,W.jsx)(sm,{autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,rows:3,placeholder:r!==void 0&&!b?i_:void 0,...e})}),r!==void 0&&!b&&(0,W.jsxs)(F,{type:`button`,variant:`defaultOutline`,size:`sm`,onClick:S,children:[(0,W.jsx)(nr,{}),` Reveal current value`]}),(0,W.jsx)(Q,{})]})}),c?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(O_,{name:e,tier:_,onTierChange:v,disabled:g,grantsSlot:y?(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Save this as a scoped secret first, then you can grant applications.`}):s}),y&&!d&&(0,W.jsx)(`p`,{className:`text-sm text-amber-600 dark:text-amber-500`,children:`Re-enter the value above to save this change — a stored secret can’t be read back to re-encrypt automatically.`})]}):s,(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[a?(0,W.jsxs)(F,{variant:`destructiveOutline`,type:`button`,onClick:E,disabled:g,children:[(0,W.jsx)($r,{}),` `,w?`Confirm delete`:`Delete`]}):(0,W.jsx)(F,{variant:`destructiveOutline`,type:`button`,onClick:o,disabled:g,children:`Cancel`}),(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:g||!d||!f,children:[(0,W.jsx)(Lr,{}),` Save`]})]})})]})})})})}function N_({rows:e,isFetching:t,onRefresh:n,canManage:r=!0,selectedName:i,onSelectName:a,nameHeader:o=`Key`,addDescription:s,editDescription:c,valueDescription:l,onSet:u,onDelete:d,renderEditExtras:f,docsLink:p,children:m,delivery:h=!1,deliveryDefaultTier:g=`scoped`,grantableComponents:_}){let v=(0,G.useMemo)(()=>[{header:o,accessorKey:`name`,enableSorting:!1},{id:`value`,header:`Value`,enableSorting:!1,cell:({row:e})=>(0,W.jsx)(P_,{value:e.original.value,warning:e.original.warning})}],[o]),y=(0,G.useCallback)(e=>a(e?.original?.name),[a]),[b,x]=(0,G.useState)(!1),S=(0,G.useMemo)(()=>e.map(e=>e.name),[e]),C=(0,G.useMemo)(()=>e.find(e=>e.name===i),[e,i]),w=Qu(n??(()=>Promise.resolve()));return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(qu,{columns:v,data:e,isFetching:t,onRowClick:r?y:void 0,children:[p,n&&(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:w,accessKey:`r`,disabled:t,children:[(0,W.jsx)(fn,{}),(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),r&&(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:()=>x(!0),accessKey:`a`,disabled:b,children:[(0,W.jsx)(Nr,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]}),m]}),b&&(0,W.jsx)(A_,{isModalOpen:b,setIsModalOpen:x,description:s,valueDescription:l,existingKeys:S,delivery:h,defaultTier:g,grantableComponents:_,onSubmit:({key:e,value:t,...n})=>u(e,t,n)}),i&&C&&(0,W.jsx)(M_,{name:C.name,description:c,valueDescription:l,currentValue:C.value,delivery:h,currentTier:C.processEnv?`processEnv`:`scoped`,onSave:(e,t)=>u(C.name,e,t),onDelete:d&&(()=>d(C.name)),closeModal:()=>a(void 0),children:f?.(C.name)},C.name)]})}function P_({value:e,warning:t}){let[n,r]=(0,G.useState)(!1),i=t&&(0,W.jsx)(ti,{className:`inline-block size-4 text-amber-500 shrink-0`,"aria-label":t,children:(0,W.jsx)(`title`,{children:t})});return e===void 0?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 max-w-full`,title:t,children:[i_,i]}):(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 max-w-full`,children:[(0,W.jsxs)(F,{type:`button`,variant:`ghost`,size:`sm`,className:`px-1`,onClick:e=>{e.stopPropagation(),r(e=>!e)},title:n?`Hide value`:`Reveal value`,children:[n?(0,W.jsx)(tr,{}):(0,W.jsx)(nr,{}),(0,W.jsx)(`span`,{className:`sr-only`,children:n?`Hide value`:`Reveal value`})]}),(0,W.jsx)(`span`,{className:n?`font-mono`:void 0,children:n?e:i_}),i]})}function F_(){let e=Oe(),{secretName:t,clusterId:n}=L({strict:!1}),r=K(),{data:i,refetch:a,isFetching:o}=R(Yg(r)),s=ps(),{data:c}=R(jh({...r,enabled:s})),l=(0,G.useMemo)(()=>Mg(c),[c]),u=R(Va(n,!1)),d=u.data,f=d===void 0||gs(d)?void 0:n,p=(0,G.useMemo)(()=>({...r,managedClusterId:f}),[r,f]),m=!n||u.isSuccess,h=R({...qg(p),enabled:m}),g=!!n&&u.isError,_=i?.secrets,v=(0,G.useMemo)(()=>(_??[]).map(e=>({name:e.name,processEnv:e.processEnv,warning:I_(e,i)})),[_,i]),y=(0,G.useMemo)(()=>_?.find(e=>e.name===t)?.name,[_,t]),b=(0,G.useCallback)(n=>{let r=[t?`..`:``,n].filter(Boolean);e({to:r.join(`/`)})},[e,t]),{mutateAsync:x,reset:S}=Zg(),{mutateAsync:C}=$g(),w=(0,G.useCallback)(async(e,t,n)=>{try{await x({...p,name:e,value:t,processEnv:n?.processEnv,grants:n?.grants})}finally{S()}await a()},[x,S,p,a]),T=(0,G.useCallback)(async e=>{await C({...r,name:e}),await a()},[C,r,a]);return(0,W.jsxs)(W.Fragment,{children:[g?(0,W.jsxs)(`p`,{className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3 mb-4`,children:[(0,W.jsx)(ti,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,W.jsx)(`span`,{children:`Secrets are read-only right now: this cluster's info couldn't be loaded, so its secret custody is unknown. Refresh once cluster info is available.`})]}):h.isError&&(0,W.jsxs)(`p`,{className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3 mb-4`,children:[(0,W.jsx)(ti,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,W.jsx)(`span`,{children:`Secrets are read-only right now: this cluster has no secrets key, so values can't be encrypted. Key custody is provided by the Harper secret-custody component — once it's active, refresh this page.`})]}),(0,W.jsx)(N_,{rows:v,isFetching:o,onRefresh:a,canManage:h.isSuccess,selectedName:y,onSelectName:b,nameHeader:`Secret`,delivery:!0,docsLink:(0,W.jsx)(`a`,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,href:`https://docs.harperdb.io/reference/v5/security/secrets`,target:`_blank`,rel:`noreferrer`,children:`Secrets Docs`}),grantableComponents:l,addDescription:`The value is encrypted in your browser against the cluster's secrets key — plaintext never reaches the API, the operation log, or disk. It can be replaced or deleted, but never read back.`,editDescription:`The current value can't be shown — it's stored encrypted. Enter a new value to replace it, adjust how applications read it, or delete the secret.`,valueDescription:`Encrypted client-side before it leaves this page.`,onSet:w,onDelete:T,renderEditExtras:e=>{let t=_?.find(t=>t.name===e);return t&&(0,W.jsx)(r_,{name:t.name,initialGrants:t.grants,components:l,onChanged:()=>void a()},t.name)}})]})}function I_(e,t){if(t?.custody_fingerprint){if(!e.kid_matches_custody)return`Encrypted under a different key than the cluster's current secrets key — it may fail to decrypt at load time. Set a new value to re-encrypt.`;if(e.unverified)return`Stored without key-identity verification.`}}async function L_({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_ssh_keys`});return t}function R_(e){return B({queryKey:[e.entityId,`list_ssh_keys`],queryFn:()=>L_(e)})}var z_=[{header:`SSH Key Name`,accessorKey:`name`,enableSorting:!1},{header:`Host`,accessorKey:`host`,enableSorting:!1,cell:({getValue:e})=>e()||`—`},{header:`Hostname`,accessorKey:`hostname`,enableSorting:!1,cell:({getValue:e})=>e()||`—`}];async function B_({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_ssh_known_hosts`});return t}function V_(e){return B({queryKey:[e.entityId,`get_ssh_known_hosts`],queryFn:()=>B_(e)})}var H_=b({known_hosts:S().trim()});async function U_(e){let{instanceClient:t,entityType:n,...r}=e,{data:i}=await t.post(`/`,{operation:`set_ssh_known_hosts`,replicated:n===`cluster`,...r});return i}function W_(){return I({mutationFn:U_})}function G_(){let e=K(),{data:t}=ae(V_(e)),n=bt({resolver:_t(H_),defaultValues:{known_hosts:t?.known_hosts||``}}),{mutate:r,isPending:i}=W_(),a=(0,G.useCallback)(async t=>{let{known_hosts:i}=t;i&&r({known_hosts:i.trim()+`
|
|
680
|
+
`,...e},{onSuccess:()=>{n.reset(t),H.success(`Known hosts saved!`)}})},[r,n,e]);return(0,W.jsx)(q,{...n,children:(0,W.jsx)(`form`,{id:`instance-edit-known-hosts-form`,name:`instance-edit-known-hosts-form`,onSubmit:n.handleSubmit(a),className:`grid my-4 md:grid-cols-2 overflow-x-auto rounded-md`,children:(0,W.jsx)(Y,{control:n.control,name:`known_hosts`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2 gap-0`,children:[(0,W.jsx)(Z,{className:`bg-muted dark:bg-black-dark py-3 px-2 m-0 text-left font-medium whitespace-nowrap`,children:`Known Hosts`}),(0,W.jsxs)(`div`,{className:`border border-grey-700 p-2 pb-3`,children:[(0,W.jsx)(Ql,{className:`pb-2`,children:`Manage your known hosts here. When you add a SSH Key with a hostname of "github.com", we'll automatically attempt to resolve GitHub's known hosts for you.`}),(0,W.jsx)(J,{children:(0,W.jsx)(sm,{autoComplete:`off`,autoCapitalize:`off`,className:`whitespace-nowrap`,rows:10,...e})}),(0,W.jsx)(Q,{}),(0,W.jsxs)(F,{type:`submit`,variant:`submit`,className:`mt-2`,disabled:i||!n.formState.isDirty||!n.formState.isValid,children:[(0,W.jsx)(Lr,{}),` `,i?`Saving`:`Save`,` Known Hosts`,i?`...`:``]})]})]})})})})}var K_=new Set([`github.com`,`ssh.github.com`,`gitlab.com`,`altssh.gitlab.com`,`bitbucket.org`]),q_=`Use a unique alias like "my-repo.github.com" instead of a bare registry hostname.`,J_=b({name:S().trim().min(1).regex(/^[a-zA-Z0-9-_]*$/,{error:`Can only contain letters, numbers, dashes and underscores.`}),key:S().min(1).trim(),host:S().min(1).trim(),hostname:S().min(1).trim(),known_hosts:S().trim().optional()}).refine(e=>!K_.has(e.host.trim().toLowerCase()),{path:[`host`],error:q_}).refine(e=>e.host.trim().toLowerCase()!==e.hostname.trim().toLowerCase(),{path:[`host`],error:`Host alias must differ from the hostname. ${q_}`});async function Y_(e){let{instanceClient:t,entityType:n,entityId:r,...i}=e,{data:a}=await t.post(`/`,{operation:`add_ssh_key`,replicated:n===`cluster`,...i});return a}function X_(){return I({mutationFn:Y_})}function Z_({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=bt({resolver:_t(J_),mode:`onChange`,defaultValues:{name:``,key:``,host:``,hostname:``,known_hosts:``}}),i=K(),{mutate:a,isPending:o}=X_(),s=(0,G.useCallback)(async e=>{if(e){let{name:o,key:s,host:c,hostname:l,known_hosts:u}=e;a({name:o,key:s.trim()+`
|
|
681
|
+
`,host:c,hostname:l,known_hosts:u||void 0,...i},{onSuccess:()=>{r.reset(),t(),H.success(`SSH Key added successfully!`),n(!1)}})}},[a,r,i,t,n]),c=(0,G.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,W.jsx)(qt,{onOpenChange:n,open:e,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...r,children:(0,W.jsxs)(`form`,{id:`instance-add-ssh-key-form`,name:`instance-add-ssh-key-form`,onSubmit:r.handleSubmit(s),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,W.jsxs)(Zt,{className:`md:col-span-2`,children:[(0,W.jsx)(Jt,{children:`Add New SSH Key`}),(0,W.jsx)(Ht,{children:`Enter the details of your SSH Key below.`})]}),(0,W.jsx)(Y,{control:r.control,name:`name`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`key`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Key`}),(0,W.jsx)(Ql,{children:`Your private key. Don't have one? Try out "ssh-keygen"! You'll want to add your public key to your registry, i.e. GitHub.`}),(0,W.jsx)(J,{children:(0,W.jsx)(sm,{autoComplete:`off`,autoCapitalize:`off`,rows:3,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`host`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Host`}),(0,W.jsx)(Ql,{children:`A unique identifying name for the combination of this key and your hostname, i.e. "your-repo.github.com". You will use this instead of the direct hostname to pick your key when importing applications.`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`hostname`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Hostname`}),(0,W.jsx)(Ql,{children:`When making the request, the actual hostname to use, i.e. "github.com".`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:r.control,name:`known_hosts`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Known Hosts`}),(0,W.jsx)(Ql,{children:`Optionally, append known hosts, one per line. GitHub known hosts should resolve automatically.`}),(0,W.jsx)(J,{children:(0,W.jsx)(sm,{autoComplete:`off`,autoCapitalize:`off`,className:`whitespace-nowrap`,rows:3,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Ut,{className:`md:col-span-2`,children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,W.jsx)(F,{variant:`destructiveOutline`,type:`button`,onClick:c,disabled:o,children:`Cancel`}),(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:o||!r.formState.isDirty||!r.formState.isValid,children:[(0,W.jsx)(Lr,{}),` Add SSH Key`]})]})})]})})})})}async function Q_(e){let{instanceClient:t,entityType:n,name:r}=e,{data:i}=await t.post(`/`,{operation:`delete_ssh_key`,replicated:n===`cluster`,name:r});return i}function $_(){return I({mutationFn:Q_})}async function ev({name:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`get_ssh_key`,name:e});return n}function tv(e){return B({queryKey:[e.entityId,`get_ssh_key`,e.name],queryFn:()=>ev(e),refetchInterval:1e4})}var nv=b({name:S().trim(),key:S().min(1).trim()});async function rv(e){let{instanceClient:t,entityType:n,name:r,key:i}=e,{data:a}=await t.post(`/`,{operation:`update_ssh_key`,replicated:n===`cluster`,name:r,key:i});return a}function iv(){return I({mutationFn:rv})}function av({data:e,isModalOpen:t,closeModal:n,onSelectSSHKey:r,onChangesSaved:i}){let{name:a}=e,o=bt({resolver:_t(nv),defaultValues:{name:a,key:``}}),s=K(),{data:c}=R(tv({...s,name:a})),{mutate:l,isPending:u}=iv(),{mutate:d,isPending:f}=$_(),[p,m]=(0,G.useState)(!1),h=(0,G.useCallback)(async({key:e})=>{e&&l({name:a,key:e.trim()+`
|
|
682
|
+
`,...s},{onSuccess:()=>{H.success(`SSH Key updated successfully!`),r(void 0),i()}})},[l,a,s,r,i]),g=(0,G.useCallback)(()=>{m(!0)},[]),_=(0,G.useCallback)(()=>{d({name:a,...s},{onSuccess:()=>{H.success(`SSH Key deleted successfully!`),r(void 0),i()}})},[a,d,s,i,r]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(qt,{onOpenChange:n,open:t,children:(0,W.jsx)(tn,{className:`sm:max-w-[750px]`,"aria-describedby":void 0,children:(0,W.jsx)(q,{...o,children:(0,W.jsxs)(`form`,{id:`instance-edit-ssh-key-form`,name:`instance-edit-ssh-key-form`,onSubmit:o.handleSubmit(h),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,W.jsx)(Jt,{children:`Edit SSH Key`}),(0,W.jsx)(Y,{control:o.control,name:`name`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,readOnly:!0,disabled:!0,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:o.control,name:`key`,render:({field:e})=>(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Key`}),(0,W.jsx)(Ql,{children:`Replace your existing private key. Lost it? Try out "ssh-keygen"! You'll want to add your public key to your registry, i.e. GitHub.`}),(0,W.jsx)(J,{children:(0,W.jsx)(sm,{autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,rows:3,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Host`}),(0,W.jsx)(Ql,{children:`A unique identifying name for the combination of this key and your hostname, i.e. "your-repo.github.com". You will use this instead of the direct hostname to pick your key when importing applications.`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,value:c?.host||``,disabled:!0,readOnly:!0})}),(0,W.jsx)(Q,{})]}),(0,W.jsxs)(X,{className:`md:col-span-2`,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Hostname`}),(0,W.jsx)(Ql,{children:`When making the request, the actual hostname to use, i.e. "github.com".`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,value:c?.hostname||``,disabled:!0,readOnly:!0})}),(0,W.jsx)(Q,{})]}),(0,W.jsxs)(Ut,{className:`md:col-span-2`,children:[(0,W.jsx)(F,{type:`button`,variant:`destructiveOutline`,onClick:g,disabled:u,children:`Delete SSH Key`}),(0,W.jsx)(F,{type:`submit`,variant:`submit`,disabled:u||!o.formState.isValid,children:`Update SSH Key`})]})]})})})}),(0,W.jsx)(Yo,{isModalOpen:p,setIsModalOpen:m,deletionConfirmed:_,deletionPending:f,typeOfThingBeingDeleted:`SSH key`,nameOfThingBeingDeleted:a,hideDataLossWarning:!0})]})}function ov(){let e=Oe(),{keyName:t}=L({strict:!1}),{data:n,refetch:r,isFetching:i,isRefetching:a}=R(R_(K())),o=(0,G.useMemo)(()=>n?.find(e=>e.name===t),[n,t]),s=(0,G.useCallback)(n=>{let r=n?.original?.name,i=[t?`..`:``,r].filter(Boolean);e({to:i.join(`/`)})},[t,e]),c=!!t&&!!o,[l,u]=(0,G.useState)(!1),d=(0,G.useCallback)(()=>{u(!0)},[u]),f=Qu(r);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(qu,{columns:z_,data:n||[],isFetching:i,onRowClick:s,children:[(0,W.jsx)(V,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,to:`https://docs.harperdb.io/docs/developers/security/certificate-management`,target:`_blank`,children:`Certificate Management Docs`}),(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:f,accessKey:`r`,disabled:i||a,children:[(0,W.jsx)(fn,{}),(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:d,accessKey:`a`,disabled:l,children:[(0,W.jsx)(Nr,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]})]}),l&&(0,W.jsx)(Z_,{isModalOpen:l,onChangesSaved:r,setIsModalOpen:u}),c&&(0,W.jsx)(av,{isModalOpen:c,closeModal:s,data:o,onSelectSSHKey:s,onChangesSaved:r}),(0,W.jsx)(G.Suspense,{fallback:(0,W.jsx)(Di,{text:`Loading...`}),children:(0,W.jsx)(G_,{})})]})}var sv=ue(),cv=[{header:`Username`,accessorKey:`username`,enableSorting:!1},sv.display({header:`Role`,enableSorting:!1,id:`role`,cell:e=>e.row.original.role.role}),{header:`Active`,accessorKey:`active`,enableSorting:!1},sv.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>Xu((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),{header:`Updated`,accessorKey:`__updatedtime__`,enableSorting:!1,cell:e=>Xu((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}];function lv({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=K(),{data:i,isLoading:a}=R({...vg(r),throwOnError:!0}),o=bt({resolver:_t(Sp),defaultValues:{username:``,role:``,password:``,confirmPassword:``}}),{mutate:s,isPending:c}=Tp(),l=(0,G.useCallback)(async e=>{e&&s({active:!0,password:e.password,role:e.role,username:e.username,...r},{onSuccess:()=>{let r=e.role;o.reset(),o.setValue(`role`,r),t(),H.success(`User added successfully!`),n(!1)}})},[s,o,r,t,n]);return(0,W.jsx)(qt,{onOpenChange:n,open:e,children:(0,W.jsx)(tn,{"aria-describedby":void 0,children:(0,W.jsx)(q,{...o,children:(0,W.jsxs)(`form`,{id:`instance-add-user-form`,name:`instance-add-user-form`,onSubmit:o.handleSubmit(l),className:`grid gap-4 my-4`,children:[(0,W.jsx)(Zt,{children:(0,W.jsx)(Jt,{children:`Add New User`})}),(0,W.jsx)(Y,{control:o.control,name:`username`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Username`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:o.control,name:`password`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:o.control,name:`confirmPassword`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Confirm Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:o.control,name:`role`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Role`}),a?(0,W.jsx)(Kl,{}):(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...e,onValueChange:t=>e.onChange(t),children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`Choose Role`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(Xt,{children:`Role`}),i?.map(e=>(0,W.jsx)(zt,{value:e.id,children:(0,W.jsx)(Ld,{name:e.role,id:e.id})},e.id))]})})]})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Ut,{children:(0,W.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:c,children:[(0,W.jsx)(Lr,{}),` Add User`]})})})]})})})})}var uv=b({username:Sp.shape.username,role:Sp.shape.role,newPassword:Sp.shape.password.or(O(``)).optional(),confirmPassword:Sp.shape.confirmPassword}).refine(e=>!e.newPassword||e.newPassword.length>=8,{error:`Password must be at least 8 characters long.`,path:[`password`]}).refine(e=>!e.newPassword||e.newPassword===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function dv({data:e,onUserUpdated:t}){let n=K(),{data:r,isLoading:i}=R({...vg(n),throwOnError:!0}),{mutate:a,isPending:o}=Dp(),s=bt({resolver:_t(uv),defaultValues:{username:e.username,role:e.role?.id??``,newPassword:``,confirmPassword:``}}),c=(0,G.useCallback)(r=>{let i={username:e.username,role:r.role,...n};r.newPassword&&(i.password=r.newPassword),a(i,{onSuccess:()=>{s.reset(),H.success(`User edited successfully!`),t()}})},[s,a,e.username,n,t]);return(0,W.jsx)(q,{...s,children:(0,W.jsxs)(`form`,{id:`instance-edit-user-form`,name:`instance-edit-user-form`,onSubmit:s.handleSubmit(c),className:`grid gap-4 my-4`,children:[(0,W.jsx)(Zt,{children:(0,W.jsx)(Jt,{children:`Edit User`})}),(0,W.jsx)(Y,{control:s.control,name:`username`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Username`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,disabled:!0,readOnly:!0,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:s.control,name:`newPassword`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Change Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:s.control,name:`confirmPassword`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Confirm Password`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:s.control,name:`role`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Role`}),i?(0,W.jsx)(Kl,{}):(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{...e,onValueChange:t=>e.onChange(t),children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`Choose Role`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(Xt,{children:`Role`}),r?.map(e=>(0,W.jsx)(zt,{value:e.id,children:(0,W.jsx)(Ld,{name:e.role,id:e.id})},e.id))]})})]})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Ut,{children:(0,W.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,W.jsxs)(F,{variant:`submit`,disabled:o,children:[(0,W.jsx)(Lr,{}),` Save Changes`]})})})]})})}var fv=b({username:Wa,confirmUsernameForDeletion:S().nonempty({error:`Please type the username again to confirm deletion.`}).toLowerCase()}).refine(e=>e.username===e.confirmUsernameForDeletion,{error:`Username does not match.`,path:[`confirmUsernameForDeletion`]});function pv({data:e,onUserDeleted:t}){let{mutate:n,isPending:r}=kp(),i=bt({resolver:_t(fv),defaultValues:{username:e.username,confirmUsernameForDeletion:``}}),a=Wi(),o=(0,G.useCallback)(()=>{n({username:e.username,...a},{onSuccess:()=>{i.reset(),H.success(`User deleted successfully!`),t()}})},[e.username,i,n,a,t]);return(0,W.jsx)(q,{...i,children:(0,W.jsxs)(`form`,{id:`instance-delete-user-form`,name:`instance-delete-user-form`,onSubmit:i.handleSubmit(o),className:`grid gap-4 my-4`,children:[(0,W.jsx)(Y,{control:i.control,name:`confirmUsernameForDeletion`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Confirm Username`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,...e})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Ut,{children:(0,W.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,W.jsxs)(F,{variant:`destructive`,disabled:r||!i.formState.isValid,children:[(0,W.jsx)(ei,{}),` Delete User`]})})})]})})}function mv({closeModal:e,clusterId:t,instanceId:n,data:r,isModalOpen:i,onUserDeleted:a,onUserUpdated:o}){let s=u.checkForFabricConnect(n??t),c=Fe(n??t),l=!(!s&&c.user?.username===r.username);return(0,W.jsx)(qt,{onOpenChange:e,open:i,children:(0,W.jsxs)(tn,{resizable:!0,children:[(0,W.jsx)(dv,{data:r,onUserUpdated:o}),l&&(0,W.jsx)(pv,{data:r,onUserDeleted:a})]})})}function hv({entityId:e,instanceClient:t}){return B({queryKey:[e,`list_users`],queryFn:()=>gv({instanceClient:t}),refetchInterval:1e4})}async function gv({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_users`});return t}function _v(){let e=Oe(),{instanceId:t,clusterId:n,username:r}=L({strict:!1}),{data:i,refetch:a,isFetching:o,isRefetching:s}=ae(hv(K())),c=(0,G.useMemo)(()=>i?.find(e=>e.username===r),[i,r]),l=(0,G.useCallback)(t=>{let n=[r?`..`:``,t].filter(Boolean);e({to:n.join(`/`)})},[r,e]),u=!!r&&!!c,[d,f]=(0,G.useState)(!1),[p]=(0,G.useState)({attribute:`username`,descending:!1}),m=(0,G.useMemo)(()=>[{desc:p.descending,id:p.attribute}],[p]),h=(0,G.useCallback)(()=>{f(!0)},[f]),g=(0,G.useCallback)(()=>{a(),f(!1)},[a,f]),_=(0,G.useCallback)(e=>{l(e.original.username)},[l]),v=(0,G.useCallback)(()=>{l(void 0)},[l]),y=(0,G.useCallback)(()=>{a(),l(void 0)},[l,a]),b=(0,G.useCallback)(()=>{a(),l(void 0)},[l,a]),x=Qu(a);return(0,W.jsxs)(G.Suspense,{fallback:(0,W.jsx)(Di,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,W.jsxs)(qu,{data:i,isFetching:o||s,columns:cv,onRowClick:_,sortingState:m,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:x,accessKey:`r`,disabled:o||s,children:[(0,W.jsx)(fn,{}),` `,(0,W.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,W.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:h,accessKey:`a`,disabled:d,children:[(0,W.jsx)(Nr,{}),` `,(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`A`}),`dd`]})]})]}),(0,W.jsx)(lv,{isModalOpen:d,onChangesSaved:g,setIsModalOpen:f}),u&&(0,W.jsx)(mv,{instanceId:t,clusterId:n,closeModal:v,data:c,isModalOpen:u,onUserDeleted:b,onUserUpdated:y})]})}function vv({context:e,params:t}){let n=Gi(t);return e.queryClient.ensureQueryData(ln(n))}function yv(e){let t=z({getParentRoute:()=>e,path:`config`,head:()=>({meta:[{title:`Config — Harper Fabric`}]}),component:dh,loader:vv}),n=z({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Overview — Harper Fabric`}]}),component:dg,loader:vv}),r=z({getParentRoute:()=>t,path:`roles`,head:()=>({meta:[{title:`Instance Roles — Harper Fabric`}]}),component:Ag}),i=z({getParentRoute:()=>t,path:`roles/$roleId`,head:()=>({meta:[{title:`Instance Roles — Harper Fabric`}]}),component:Ag}),a=z({getParentRoute:()=>t,path:`users`,head:()=>({meta:[{title:`Instance Users — Harper Fabric`}]}),component:_v}),o=z({getParentRoute:()=>t,path:`users/$username`,head:()=>({meta:[{title:`Instance Users — Harper Fabric`}]}),component:_v}),s=z({getParentRoute:()=>t,path:`domains`,head:()=>({meta:[{title:`Instance Domains — Harper Fabric`}]}),component:oh}),c=z({getParentRoute:()=>t,path:`ssh-keys`,head:()=>({meta:[{title:`SSH Keys — Harper Fabric`}]}),component:ov}),l=z({getParentRoute:()=>t,path:`ssh-keys/$keyName`,head:()=>({meta:[{title:`SSH Keys — Harper Fabric`}]}),component:ov}),u=z({getParentRoute:()=>t,path:`deployments`,head:()=>({meta:[{title:`Deployments — Harper Fabric`}]}),component:ah}),d=z({getParentRoute:()=>t,path:`deployments/$deploymentId`,head:()=>({meta:[{title:`Deployments — Harper Fabric`}]}),component:ah}),f=z({getParentRoute:()=>t,path:`secrets`,head:()=>({meta:[{title:`Secrets — Harper Fabric`}]}),component:F_}),p=z({getParentRoute:()=>t,path:`secrets/$secretName`,head:()=>({meta:[{title:`Secrets — Harper Fabric`}]}),component:F_}),m=z({getParentRoute:()=>t,path:`certificates`,head:()=>({meta:[{title:`Certificates — Harper Fabric`}]}),component:hm}),h=z({getParentRoute:()=>t,path:`certificates/$certName`,head:()=>({meta:[{title:`Certificates — Harper Fabric`}]}),component:hm});return t.addChildren([n,r,i,a,o,s,u,d,c,l,f,p,m,h])}function bv({clusterId:e,databaseName:t,instanceId:n,organizationId:r,tableName:i}){let a=[`databases`,t,i].filter(Zi).join(`/`);return sh({organizationId:r,instanceId:n,clusterId:e},a)}function xv(e,t){return e.type===`array`?e.elements?t[e.elements]?e.elements:void 0:Sv(t,e.attribute):e.type&&t[e.type]?e.type:void 0}function Sv(e,t){let n=t.toLowerCase(),r=new Set([n,`${n}s`,n.replace(/s$/,``)]);return Object.keys(e).find(e=>r.has(e.toLowerCase()))}function Cv(e,t,n){if(!t||e.is_primary_key||e.computed)return;let r=xv(e,t),i=r?t[r]:void 0;if(!r||!i)return;let a=i.primary_key??i.hash_attribute;if(!a)return;let o=e.type===`array`;return{relatedTableName:r,relatedPrimaryKey:a,relatedAttributes:wv(i,t),isToMany:o,resolvable:!o||!!e.elements,reverseForeignKey:o&&n?Tv(n,i,t):void 0}}function wv(e,t){return(e.attributes??[]).filter(e=>!e.computed&&!xv(e,t))}function Tv(e,t,n){let r=t.attributes??[];for(let t of r){let i=Cv(t,n);if(i&&!i.isToMany&&i.relatedTableName===e.name){let e=kv(t.attribute,i,r,n);if(e)return e}}let i=e.name.toLowerCase(),a=new Set([i,i.replace(/s$/,``)].flatMap(e=>[`${e}id`,`${e}_id`]));return r.find(e=>!e.is_primary_key&&!e.computed&&a.has(e.attribute.toLowerCase()))?.attribute}function Ev(e,t,n){let r={};for(let n of e?.attributes??[]){let i=Cv(n,t,e);i&&(r[n.attribute]=i)}for(let e of n??[]){let n=t?.[e.relatedTableName],i=n?.primary_key??n?.hash_attribute;if(!n||!i||!t)continue;let a=r[e.attribute];r[e.attribute]={relatedTableName:e.relatedTableName,relatedPrimaryKey:i,relatedAttributes:wv(n,t),isToMany:e.isToMany,resolvable:a?.resolvable??!1,reverseForeignKey:(e.isToMany?e.to:void 0)??a?.reverseForeignKey,foreignKeyAttribute:e.from}}return r}function Dv(e,t){return!!e.computed||Cv(e,t)!==void 0}function Ov(e,t){return(e??[]).filter(e=>Dv(e,t)).map(e=>e.attribute)}function kv(e,t,n,r){let i=[e];t.isToMany&&e.endsWith(`s`)&&i.push(e.slice(0,-1));let a=t.isToMany?[`ids`,`_ids`]:[`id`,`_id`],o=new Set(i.flatMap(e=>a.map(t=>(e+t).toLowerCase())));return n.find(e=>!e.is_primary_key&&!e.computed&&!Cv(e,r)&&o.has(e.attribute.toLowerCase()))?.attribute}function Av(e){let t=new Set;for(let n of Object.values(e))n.foreignKeyAttribute&&t.add(n.foreignKeyAttribute);return[...t]}function jv(e,t){let n=[];for(let r of e?.attributes??[]){let e=Cv(r,t);e?.resolvable&&n.push({name:r.attribute,select:[e.relatedPrimaryKey]})}return n.length?[...n,`*`]:void 0}async function Mv({databaseName:e,tableName:t,records:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`insert`,database:e,table:t,records:n});return i}function Nv(){return I({mutationFn:Mv})}var Pv=`json-worker-free`,Fv={wordPattern:/(-?\d*\.\d\w*)|([^[{\]}:"\s,]+)/g,comments:{lineComment:`//`,blockComment:[`/*`,`*/`]},brackets:[[`{`,`}`],[`[`,`]`]],autoClosingPairs:[{open:`{`,close:`}`,notIn:[`string`]},{open:`[`,close:`]`,notIn:[`string`]},{open:`"`,close:`"`,notIn:[`string`]}]},Iv=!1;function Lv(e){Iv||(Iv=!0,e.register({id:Pv}),e.setLanguageConfiguration(Pv,Fv),e.setTokensProvider(Pv,Cn(!0)))}var Rv=512*1024,zv=class{totalChars=0;spent=!1;get isSpent(){return this.spent}admit(e){return this.spent?{admitted:!1,justExhausted:!1,oversize:!1}:e>524288?{admitted:!1,justExhausted:!1,oversize:!0}:this.totalChars+e>8388608?(this.spent=!0,{admitted:!1,justExhausted:!0,oversize:!1}):(this.totalChars+=e,{admitted:!0,justExhausted:!1,oversize:!1})}};function Bv(e){return e?e.length>524288||Vv(e).ok:!1}function Vv(e){try{return{ok:!0,value:JSON.parse(e)}}catch{return{ok:!1}}}function Hv({isModalOpen:e,instanceTable:t,databaseTables:n,setIsModalOpen:r,refreshTable:i}){let a=ud(),{mutate:s,isPending:c}=Nv(),l=K(),[u,d]=(0,G.useState)(!0),[f,p]=(0,G.useState)(),[m,h]=(0,G.useState)(!1),[g,_]=(0,G.useState)([]),v=(0,G.useMemo)(()=>{let e={};for(let r of t.attributes)r.is_primary_key||r.attribute===`__createdtime__`||r.attribute===`__updatedtime__`||Dv(r,n)||(e[r.attribute]=Uv(r.type));return JSON.stringify(e,null,4)},[t,n]),y=(0,G.useCallback)(()=>{if(!f)return;let e=Vv(f);if(!e.ok){H.error(`This record isn't valid JSON — fix the syntax and try again.`);return}let n=Array.isArray(e.value)?e.value:[e.value],a=H.loading(`Adding ${n.length} records...`);s({...l,databaseName:t.schema,tableName:t.name,records:n},{onSuccess:e=>{i(),e.skipped_hashes?.length||r(!1),_(e.skipped_hashes),(e.skipped_hashes?.length>0?H.warning:H.success)(e.skipped_hashes?.length>0?`Warning!`:`Success!`,{id:a,description:(0,W.jsxs)(W.Fragment,{children:[e.inserted_hashes.length>0&&(0,W.jsxs)(`p`,{children:[`Added `,o(e.inserted_hashes.length,`record`,`records`)]}),e.skipped_hashes.length>0&&(0,W.jsxs)(`p`,{children:[`Skipped `,o(e.skipped_hashes.length,`record`,`records`)]})]})})}})},[f,s,l,t.name,t.schema,i,r]),b=(0,G.useCallback)(e=>{e?.focus()},[]);return(0,W.jsx)(qt,{onOpenChange:r,open:e,children:(0,W.jsxs)(tn,{"aria-describedby":void 0,resizable:!0,onEscapeKeyDown:e=>{m&&e.preventDefault()},children:[(0,W.jsx)(Zt,{children:(0,W.jsxs)(Jt,{children:[`Add New `,t.name]})}),(t?.primary_key??t?.hash_attribute)&&(0,W.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[`The primary key for this table is`,` `,(0,W.jsxs)(`strong`,{children:[`“`,t.primary_key??t.hash_attribute,`”`]}),`, and will auto-generate. You may manually add it if you want to specify its value.`]}),(0,W.jsx)(`div`,{className:`flex-1 min-h-0 w-full`,children:(0,W.jsx)(fd,{className:`w-full h-full`,language:Pv,theme:a,value:v,onChange:e=>{p(e),h(!0),d(Bv(e))},options:{minimap:{enabled:!1},automaticLayout:!0},onMount:b})}),(0,W.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[(0,W.jsx)(`strong`,{children:`Provide an [array]`}),` if you want to add more than one record at a time.`]}),g.length>0&&(0,W.jsxs)(xh,{className:`mt-2`,children:[(0,W.jsx)(Zr,{className:`w-4 h-4`}),(0,W.jsxs)(Sh,{children:[`Skipped `,g.length===1?`Hash`:`Hashes`,` Detected`]}),(0,W.jsx)(Ch,{className:`max-h-36 overflow-auto`,children:(0,W.jsx)(`ol`,{children:g.map(e=>(0,W.jsx)(`li`,{children:e},e))})})]}),(0,W.jsx)(Ut,{children:(0,W.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,W.jsxs)(F,{variant:`submit`,onClick:y,accessKey:`s`,disabled:!f||!u||c,children:[(0,W.jsx)(Lr,{}),` `,(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`S`}),`ave Changes`]})]})})})]})})}function Uv(e){switch(e){case`Date`:return new Date().toISOString();case`Id`:case`ID`:case`String`:return``;case`Boolean`:return!1;case`Int`:case`Long`:case`Float`:case`BigInt`:return 0;default:return null}}async function Wv({databaseName:e,tableName:t,primaryKey:n,replicated:r,instanceClient:i}){let{data:a}=await i.post(`/`,{operation:`create_table`,database:e,table:t,primary_key:n,replicated:r});return a}function Gv(){return I({mutationFn:Wv})}var Kv=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,qv=S().regex(Kv,{error:`Database name cannot include backticks or forward slashes.`}).max(75,{error:`Database name cannot be longer than 75 characters.`}),Jv=S().nonempty({error:`Table name is required.`}).regex(Kv,{error:`Table name cannot include backticks or forward slashes.`}).max(250,{error:`Table name cannot be longer than 250 characters.`}),Yv=b({databaseName:qv,tableName:Jv,primaryKey:S().regex(Kv,{error:`Primary key cannot include backticks or forward slashes.`}).max(250,{error:`Primary key cannot be longer than 250 characters.`})});function Xv({isModalOpen:e,setIsModalOpen:t,databaseName:n,onCreated:r}){let i=ie(),a=K(),o=ne(),s=bt({resolver:_t(Yv),defaultValues:{databaseName:n||``,tableName:``,primaryKey:``}}),{mutate:c}=Gv(),l=async e=>{let n=e.databaseName||`data`,l=e.tableName;c({databaseName:n,tableName:l,primaryKey:e.primaryKey||`id`,...a,replicated:a.entityType===`cluster`},{onSuccess:async()=>{await i.invalidateQueries({queryKey:[a.entityId,`describe_all`],refetchType:`all`}),H.success(`Table ${l} created successfully`),t(!1),s.reset(),r(n,l),await o.invalidate()}})};return(0,W.jsx)(qt,{open:e,onOpenChange:t,children:(0,W.jsxs)(tn,{className:`sm:max-w-[425px]`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsx)(Jt,{children:`Create a New Table`}),(0,W.jsx)(Ht,{children:`What would you like to create?`})]}),(0,W.jsx)(q,{...s,children:(0,W.jsxs)(`form`,{id:`instance-new-table-form`,name:`instance-new-table-form`,onSubmit:s.handleSubmit(l),className:`grid gap-6 text-popover-foreground`,children:[(0,W.jsx)(Y,{control:s.control,name:`tableName`,render:({field:e})=>(0,W.jsxs)(X,{className:``,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Table Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,maxLength:Yv.shape.tableName.maxLength,autoFocus:!0,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:s.control,name:`primaryKey`,render:({field:e})=>(0,W.jsxs)(X,{className:``,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Primary Key`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,placeholder:`id`,type:`text`,maxLength:Yv.shape.primaryKey.maxLength,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:s.control,name:`databaseName`,render:({field:e})=>(0,W.jsxs)(X,{className:``,children:[(0,W.jsx)(Z,{className:`pb-1`,children:`Database Name`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,placeholder:`data`,maxLength:Yv.shape.databaseName.maxLength,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(F,{type:`submit`,variant:`submit`,children:[(0,W.jsx)(Yr,{}),`Create New Table`]})})]})})]})})}async function Zv({databaseName:e,replicated:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`drop_database`,database:e,replicated:t});return r}function Qv(){return I({mutationFn:Zv})}function $v(e,t){let[n,r]=(0,G.useState)({value:t});return kf(e,(e,t)=>r({value:e,trigger:t}),[r]),n}function ey(e,t,n){Af(e,t,n)}function ty(e,t,n){return r=>ey(e,t,n??r)}function ny(e,t,n){return(0,G.useCallback)(r=>{ey(e,t,n??r)},[e,t,n])}function ry({onDeleted:e}){let{value:t}=$v(`ShowDeleteDatabase`,!1),n=!!t,r=t?t.databaseName:``,i=(0,G.useCallback)(()=>{ey(`ShowDeleteDatabase`,!1)},[]),a=ms(),o=ie(),s=K(),c=ne(),{mutate:l,isPending:u}=Qv(),d=(0,G.useCallback)(()=>{l({databaseName:r,...s,replicated:s.entityType===`cluster`},{onSuccess:async()=>{i(),await o.invalidateQueries({queryKey:[s.entityId,`describe_all`],refetchType:`all`}),await c.invalidate(),H.success(`Database ${r} dropped successfully`),e({databaseName:r})}})},[i,r,l,s,e,o,c]);return!a||!r?(0,W.jsx)(W.Fragment,{}):(0,W.jsx)(Yo,{typeOfThingBeingDeleted:`database`,nameOfThingBeingDeleted:r,transitiveVerb:`Drop`,presentParticiple:`Dropping`,isModalOpen:n,setIsModalOpen:i,deletionConfirmed:d,deletionPending:u})}async function iy({databaseName:e,tableName:t,replicated:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`drop_table`,database:e,table:t,replicated:n});return i}function ay(){return I({mutationFn:iy})}function oy({onDeleted:e}){let{value:t}=$v(`ShowDeleteTable`,!1),n=!!t,r=t?t.databaseName:``,i=t?t.tableName:``,a=(0,G.useCallback)(()=>{ey(`ShowDeleteTable`,!1)},[]),o=ms(),s=ie(),c=K(),l=ne(),{mutate:u,isPending:d}=ay(),f=(0,G.useCallback)(()=>{u({databaseName:r,tableName:i,...c,replicated:c.entityType===`cluster`},{onSuccess:async()=>{a(),await s.invalidateQueries({queryKey:[c.entityId,`describe_all`],refetchType:`all`}),await l.invalidate(),H.success(`Table ${i} dropped successfully`),e({databaseName:r,tableName:i})}})},[a,r,u,c,e,s,l,i]);return!o||!r?(0,W.jsx)(W.Fragment,{}):(0,W.jsx)(Yo,{typeOfThingBeingDeleted:`table`,nameOfThingBeingDeleted:`${r} > ${i}`,transitiveVerb:`Drop`,presentParticiple:`Dropping`,isModalOpen:n,setIsModalOpen:a,deletionConfirmed:f,deletionPending:d})}var sy=[`Ada`,`Alan`,`Grace`,`Linus`,`Margaret`,`Dennis`,`Barbara`,`Ken`,`Radia`,`Donald`,`Katherine`,`Edsger`,`Frances`,`John`,`Hedy`],cy=[`Lovelace`,`Turing`,`Hopper`,`Hamilton`,`Ritchie`,`Liskov`,`Thompson`,`Perlman`,`Knuth`,`Johnson`,`Dijkstra`,`Allen`,`Backus`,`Lamarr`,`Shannon`],ly=[`amber`,`birch`,`cedar`,`delta`,`ember`,`fjord`,`grove`,`harbor`,`indigo`,`juniper`,`krypton`,`lagoon`,`meadow`,`nimbus`,`onyx`,`prairie`,`quartz`,`ridge`,`summit`,`tundra`],uy=[`Denver`,`Austin`,`Seattle`,`Boston`,`Chicago`,`Portland`,`Nashville`,`Phoenix`,`Atlanta`],dy=[`USA`,`Canada`,`Germany`,`Japan`,`Brazil`,`Australia`,`France`,`India`,`Spain`],fy=e=>e[Math.floor(Math.random()*e.length)],py=(e,t)=>e+Math.floor(Math.random()*(t-e+1)),my=e=>e[0].toUpperCase()+e.slice(1),hy=()=>new Date(Date.now()-py(0,365)*24*60*60*1e3).toISOString();function gy(e){let t=e.toLowerCase();return/email/.test(t)?`${fy(sy).toLowerCase()}.${fy(cy).toLowerCase()}@example.com`:/phone/.test(t)?`555-${py(100,999)}-${py(1e3,9999)}`:/(^|_)(url|link|website)($|_)/.test(t)?`https://example.com/${fy(ly)}`:/name/.test(t)?/(first|given)/.test(t)?fy(sy):/(last|family|sur)/.test(t)?fy(cy):`${fy(sy)} ${fy(cy)}`:/age/.test(t)?py(1,90):/year/.test(t)?py(1970,2026):/(price|cost|amount|total|salary)/.test(t)?Number((Math.random()*500).toFixed(2)):/(count|qty|quantity|weight|height|size|pages|score|rating|number|num_)/.test(t)?py(0,500):/(^is_|^has_|enabled|active|flag|adorable|verified)/.test(t)?Math.random()<.5:/(date|time|_at$|created|updated)/.test(t)?hy():/city/.test(t)?fy(uy):/country/.test(t)?fy(dy):/(description|notes|comment|bio|summary)/.test(t)?`A ${fy(ly)} ${fy(ly)} with a hint of ${fy(ly)}.`:`${my(fy(ly))} ${my(fy(ly))}`}function _y(e){switch(e.type){case`ID`:return crypto.randomUUID();case`Int`:case`Long`:case`BigInt`:{let t=gy(e.attribute);return typeof t==`number`?Math.round(t):py(0,1e3)}case`Float`:{let t=gy(e.attribute);return typeof t==`number`?t:Number((Math.random()*1e3).toFixed(2))}case`Boolean`:return Math.random()<.5;case`Date`:return hy();case`String`:{let t=gy(e.attribute);return typeof t==`string`?t:String(t)}default:return gy(e.attribute)}}function vy(e,t){return(e??[]).filter(e=>!e.is_primary_key&&e.attribute!==`__createdtime__`&&e.attribute!==`__updatedtime__`&&e.type!==`Bytes`&&e.type!==`Blob`&&!Dv(e,t))}function yy(e,t){let n=vy(e);return Array.from({length:t},()=>{let e={};for(let t of n)e[t.attribute]=_y(t);return e})}function by(e){let t;try{t=JSON.parse(e)}catch{throw Error(`The file is not valid JSON.`)}let n=Array.isArray(t)?t:[t];if(n.length===0)throw Error(`The JSON file contains no records.`);if(n.some(e=>typeof e!=`object`||!e||Array.isArray(e)))throw Error(`The JSON file must contain an object or an array of objects.`);return n}var xy=[{id:`dogs`,name:`Dogs`,description:`The classic Harper demo — dogs and their humans`,table:`dog`,csv:`id,dog_name,owner_name,breed,age,weight_lbs,adorable
|
|
683
683
|
1,Penny,Kyle,Dachshund,7,12,true
|
|
684
684
|
2,Harper,Stephen,Great Dane,5,127,true
|
|
685
685
|
3,Alby,Kaylan,Pit Bull Mix,8,58,true
|
|
@@ -777,7 +777,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
777
777
|
38,Giant Pacific Octopus,Invertebrate,Carnivore,Ocean,4,false
|
|
778
778
|
39,Christmas Island Red Crab,Invertebrate,Omnivore,Island forest,30,false
|
|
779
779
|
40,Chambered Nautilus,Invertebrate,Carnivore,Deep ocean,20,true
|
|
780
|
-
`}];async function py(e){let{database:t,table:n,fileData:r,instanceClient:i}=e,{data:a}=await i.post(`/`,{operation:`csv_data_load`,database:t,action:`insert`,table:n,data:r});return a}async function my({jobId:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`get_job`,id:e});return n?.[0]}var hy=e=>new Promise(t=>setTimeout(t,e));async function gy({jobId:e,instanceClient:t,pollIntervalMs:n=1500,timeoutMs:r=600*1e3}){let i=Date.now()+r,a=0;for(;;){let r;try{r=await my({jobId:e,instanceClient:t}),a=0}catch(e){if(a+=1,a>=5)throw e}let o=r?.status?.toUpperCase();if(o===`ERROR`)throw Error(r?.message||`The import job failed.`);if(o===`COMPLETE`&&r)return r;if(Date.now()>=i)throw Error(`Timed out waiting for the import job to finish. Check the table in a few minutes.`);await hy(n)}}function _y(e){let t=e?.response?.data;return typeof t==`string`?t:t?.error||t?.message||e?.message||String(e)}async function vy({database:e,table:t,tableExists:n,replicated:r,source:i,instanceClient:a}){if(!n)try{await a.post(`/`,{operation:`create_table`,database:e,table:t,primary_key:`id`,replicated:r})}catch(e){if(!/already exists/i.test(_y(e)))throw e}switch(i.kind){case`csv-data`:{let{job_id:n}=await py({database:e,table:t,fileData:i.data,instanceClient:a});return{message:(await gy({jobId:n,instanceClient:a})).message||`CSV data imported successfully`}}case`csv-url`:{let{data:n}=await a.post(`/`,{operation:`csv_url_load`,csv_url:i.url,database:e,table:t,action:`insert`});return{message:(await gy({jobId:n.job_id,instanceClient:a})).message||`CSV data imported successfully`}}case`json-records`:{let n=await jv({databaseName:e,tableName:t,records:i.records,instanceClient:a}),r=n.inserted_hashes?.length??0,o=n.skipped_hashes?.length??0;return{message:o?`Inserted ${r} records (${o} skipped)`:`Inserted ${r} records`}}}}function yy(){return I({mutationFn:vy})}var by=`__random__`,xy=10*1024*1024,Sy=b({method:j([`sample`,`file`,`url`]),database:Rv,table:zv,datasetId:S(),rowCount:S(),fileData:S(),fileName:S(),url:S()}).superRefine((e,t)=>{if(e.method===`sample`&&!e.datasetId&&t.addIssue({code:`custom`,path:[`datasetId`],message:`Please choose a sample dataset.`}),e.method===`sample`&&e.datasetId===`__random__`){let n=Number(e.rowCount);(!Number.isInteger(n)||n<1||n>1e3)&&t.addIssue({code:`custom`,path:[`rowCount`],message:`Enter a row count between 1 and 1000.`})}if(e.method===`file`&&!e.fileData&&t.addIssue({code:`custom`,path:[`fileData`],message:`Please choose a CSV or JSON file.`}),e.method===`url`){let n=!1;try{n=/^https?:$/.test(new URL(e.url).protocol)}catch{}n||t.addIssue({code:`custom`,path:[`url`],message:`Please enter a valid http(s) URL to a CSV file.`})}}),Cy=[{value:`sample`,title:`Sample Datasets`,description:`Choose from pre-loaded sample datasets to get started quickly`,Icon:kr},{value:`file`,title:`Import from File`,description:`Upload a CSV or JSON file`,Icon:nr},{value:`url`,title:`Load from URL`,description:`Import a CSV file from a URL the instance can reach`,Icon:cr}];function wy({isModalOpen:e,setIsModalOpen:t,instanceDatabaseMap:n,databaseName:r,tableName:i,onImported:a}){let o=K(),{mutate:s,isPending:c}=yy(),[l,u]=(0,G.useState)(null),d=bt({resolver:_t(Sy),defaultValues:{method:i?`file`:`sample`,database:r||``,table:i||``,datasetId:``,rowCount:`25`,fileData:``,fileName:``,url:``}}),{reset:f}=d;(0,G.useEffect)(()=>{e&&(f({method:i?`file`:`sample`,database:r||``,table:i||``,datasetId:``,rowCount:`25`,fileData:``,fileName:``,url:``}),u(null))},[e,r,i,f]);let p=d.watch(`method`),m=d.watch(`datasetId`),h=d.watch(`database`),g=d.watch(`table`),_=fy.find(e=>e.id===m),v=n?.[h||`data`]?.[g],y=!!v,b=!!n&&!!g&&!y,x=ly(v?.attributes,n?.[h||`data`]),S=x.length>0,C=m===by,w=e=>{let t=e.target.files?.[0];if(!t)return;if(t.size>10485760){let n=(t.size/(1024*1024)).toFixed(1),r=xy/(1024*1024);d.setError(`fileData`,{message:`That file is ${n} MB — uploads are limited to ${r} MB. For larger files, host the CSV and use Load from URL.`}),e.target.value=``;return}let n=new FileReader;n.onload=e=>{let n=e.target?.result;typeof n==`string`&&(u(t.name),d.setValue(`fileData`,n,{shouldValidate:!0}),d.setValue(`fileName`,t.name))},n.onerror=()=>{H.error(`Failed to read the selected file.`)},n.readAsText(t)},T=e=>{d.setValue(`datasetId`,e,{shouldValidate:!0});let t=fy.find(t=>t.id===e);t&&d.setValue(`table`,t.table,{shouldValidate:!0})},E=()=>{t(!1)},D=e=>{let t=e.database||`data`,r=e.table,i;if(e.method===`sample`&&e.datasetId===`__random__`){let a=ly(n?.[t]?.[r]?.attributes,n?.[t]);if(a.length===0){d.setError(`datasetId`,{message:`Random data needs an existing table with columns — pick a table that has some.`});return}i={kind:`json-records`,records:uy(a,Number(e.rowCount))}}else if(e.method===`sample`){let t=fy.find(t=>t.id===e.datasetId);if(!t)return;i={kind:`csv-data`,data:t.csv}}else if(e.method===`file`)if(e.fileName.toLowerCase().endsWith(`.json`))try{i={kind:`json-records`,records:dy(e.fileData)}}catch(e){d.setError(`fileData`,{message:e.message});return}else i={kind:`csv-data`,data:e.fileData};else i={kind:`csv-url`,url:e.url};s({database:t,table:r,tableExists:y,replicated:o.entityType===`cluster`,source:i,...o},{onSuccess:({message:e})=>{H.success(e),E(),a(t,r)}})};return(0,W.jsx)(qt,{open:e,onOpenChange:e=>{!e&&!c&&E()},children:(0,W.jsxs)(tn,{className:`sm:max-w-[550px]`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsx)(Jt,{children:`Import Data`}),(0,W.jsx)(Ht,{children:`Choose how you want to import data into your database.`})]}),(0,W.jsx)(q,{...d,children:(0,W.jsxs)(`form`,{id:`instance-import-data-form`,name:`instance-import-data-form`,onSubmit:d.handleSubmit(D),className:`grid gap-4`,children:[(0,W.jsx)(Y,{control:d.control,name:`method`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Select Import Method`}),(0,W.jsx)(J,{children:(0,W.jsx)(b_,{value:e.value,onValueChange:e.onChange,className:`gap-3`,children:Cy.map(({value:e,title:t,description:n,Icon:r})=>(0,W.jsxs)(Z,{htmlFor:`import-method-${e}`,className:`flex items-start gap-3 rounded-lg border border-border p-4 cursor-pointer font-normal hover:bg-accent/50 has-[[data-state=checked]]:border-primary`,children:[(0,W.jsx)(x_,{value:e,id:`import-method-${e}`,className:`mt-1`}),(0,W.jsxs)(`div`,{className:`grid gap-1`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2 font-medium`,children:[(0,W.jsx)(r,{className:`size-4`}),t]}),(0,W.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:n})]})]},e))})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Dm,{}),p===`sample`&&(0,W.jsx)(Y,{control:d.control,name:`datasetId`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Choose a Sample Dataset`}),(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{name:e.name,value:e.value,onValueChange:T,children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`Select a dataset...`})}),(0,W.jsxs)(Qt,{children:[(0,W.jsx)(Kt,{children:fy.map(e=>(0,W.jsx)(zt,{value:e.id,children:e.name},e.id))}),S&&(0,W.jsxs)(Kt,{children:[(0,W.jsx)(Xt,{children:`This table`}),(0,W.jsx)(zt,{value:`__random__`,children:`Random Data`})]})]})]})}),_&&(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:_.description}),C&&(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Generates rows for "`,g,`" based on its `,x.length,` `,`column`,x.length===1?``:`s`,` and their data types.`]}),(0,W.jsx)(Q,{})]})}),p===`sample`&&C&&(0,W.jsx)(Y,{control:d.control,name:`rowCount`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Number of Rows`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`number`,min:1,max:1e3,inputMode:`numeric`,autoComplete:`off`})}),(0,W.jsx)(Q,{})]})}),p===`file`&&(0,W.jsx)(Y,{control:d.control,name:`fileData`,render:({field:e})=>(0,W.jsxs)(X,{className:`relative`,children:[(0,W.jsx)(Z,{htmlFor:`import-data-file`,className:`flex flex-col items-center justify-center w-full h-40 border-2 border-border border-dashed rounded-lg cursor-pointer bg-muted dark:bg-grey-700 hover:bg-muted/80 dark:hover:bg-grey-700/80`,children:(0,W.jsx)(J,{children:(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex flex-col items-center justify-center pt-5 pb-6`,children:[(0,W.jsx)(qn,{className:`text-muted-foreground`,size:40}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:l??(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`font-semibold`,children:`Click to upload`}),` `,`or drag and drop a CSV or JSON file`]})})]}),(0,W.jsx)($,{id:`import-data-file`,type:`file`,className:`opacity-0 w-full h-full absolute left-0 top-0 cursor-pointer`,accept:`.csv,.json,text/csv,application/json`,name:e.name,ref:e.ref,onBlur:e.onBlur,disabled:e.disabled,onChange:w})]})})}),(0,W.jsx)(Q,{})]})}),p===`url`&&(0,W.jsx)(Y,{control:d.control,name:`url`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`CSV URL`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,inputMode:`url`,placeholder:`https://example.com/data.csv`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`The URL is fetched by the Harper instance, so it must be reachable from there.`}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,W.jsx)(Y,{control:d.control,name:`database`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Database`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,placeholder:`data`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:d.control,name:`table`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Table`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,W.jsx)(Q,{})]})})]}),b&&(0,W.jsxs)(bh,{children:[(0,W.jsx)(fr,{}),(0,W.jsx)(xh,{children:`New table`}),(0,W.jsxs)(Sh,{children:[`The table "`,g,`" doesn't exist yet — it will be created with primary key "id" before the data is imported.`]})]}),(0,W.jsxs)(Ut,{children:[(0,W.jsx)(F,{type:`button`,variant:`ghost`,onClick:E,disabled:c,children:`Cancel`}),(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:c,children:[c?(0,W.jsx)(vr,{className:`animate-spin`}):(0,W.jsx)(qn,{}),c?`Importing...`:`Import Data`]})]})]})})]})})}function Ty({instanceDatabaseMap:e}){let t=L({strict:!1}),n=Oe(),r=ne(),i=ie(),a=K(),o=(0,G.useCallback)((e,r)=>{n({to:yv({...t,databaseName:e,tableName:r})})},[n,t]),{value:s}=Wv(`ShowCreateTable`,!1),{value:c}=Wv(`ShowAddTableRecords`,!1),{value:l}=Wv(`ShowImportData`,!1),u=c?e?.[c.databaseName]?.[c.tableName]:void 0;(0,G.useEffect)(()=>{c&&!u&&(H.error(`Couldn't open "${c.tableName}" — it may have just been removed. Try refreshing.`),Gv(`ShowAddTableRecords`,!1))},[c,u]);let d=(0,G.useCallback)(async(e,t)=>{await i.invalidateQueries({queryKey:[a.entityId,`describe_all`],refetchType:`all`}),o(e,t),await r.invalidate()},[i,a.entityId,o,r]),f=(0,G.useCallback)(({databaseName:e,tableName:n})=>{t.databaseName===e&&t.tableName===n&&o(e,void 0)},[t.databaseName,t.tableName,o]),p=(0,G.useCallback)(({databaseName:e})=>{t.databaseName===e&&o(void 0,void 0)},[t.databaseName,o]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vv,{isModalOpen:!!s,setIsModalOpen:e=>Gv(`ShowCreateTable`,e?s||{}:!1),databaseName:s?s.databaseName:void 0,onCreated:o},s?`create-${s.databaseName??``}`:`create-closed`),c&&u&&(0,W.jsx)(Nv,{instanceTable:u,databaseTables:e?.[c.databaseName],isModalOpen:!0,setIsModalOpen:e=>{e||Gv(`ShowAddTableRecords`,!1)},refreshTable:()=>void i.invalidateQueries({queryKey:[a.entityId,c.databaseName,c.tableName]})},`add-${c.databaseName}/${c.tableName}`),(0,W.jsx)(wy,{isModalOpen:!!l,setIsModalOpen:e=>Gv(`ShowImportData`,e?l||{}:!1),instanceDatabaseMap:e,databaseName:l?l.databaseName:void 0,tableName:l?l.tableName:void 0,onImported:d},l?`import-${l.databaseName??``}/${l.tableName??``}`:`import-closed`),(0,W.jsx)(Zv,{onDeleted:f}),(0,W.jsx)(Jv,{onDeleted:p})]})}function Ey(e){e.stopPropagation()}var Dy=3,Oy=`text-blue dark:text-blue-300 border-blue/40 dark:border-blue-300/40 [a&]:hover:bg-blue/10 [a&]:hover:underline`;function ky(e,t){return(Array.isArray(e)?e:e==null?[]:[e]).map(e=>typeof e==`object`&&e?e[t.relatedPrimaryKey]:e).filter(e=>e!=null)}function Ay({value:e,record:t,primaryKey:n,info:r}){let i=L({strict:!1}),a=n?t?.[n]:void 0,o=ky(e,r);!o.length&&r.foreignKeyAttribute&&t&&(o=ky(t[r.foreignKeyAttribute],r));let s=yv({...i,tableName:r.relatedTableName}),c=r.reverseForeignKey&&a!=null?{filters:{[r.reverseForeignKey]:String(a)}}:void 0;if(!o.length)return c?(0,W.jsx)(ao,{variant:`outline`,className:Oy,asChild:!0,children:(0,W.jsxs)(V,{to:s,search:c,onClick:Ey,title:`${r.relatedTableName} where ${r.reverseForeignKey} = ${String(a)}`,children:[r.relatedTableName,` →`]})}):(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`—`});let l=o.length-Dy;return(0,W.jsxs)(`span`,{className:`inline-flex gap-1 items-center`,children:[o.slice(0,Dy).map((e,t)=>(0,W.jsx)(ao,{variant:`outline`,className:Oy,asChild:!0,children:(0,W.jsx)(V,{to:s,search:{filters:{[r.relatedPrimaryKey]:String(e)}},onClick:Ey,title:`${r.relatedTableName} where ${r.relatedPrimaryKey} = ${String(e)}`,children:String(e)})},t)),l>0&&(c?(0,W.jsxs)(V,{to:s,search:c,onClick:Ey,className:`text-blue dark:text-blue-300 hover:underline text-xs whitespace-nowrap`,title:`${r.relatedTableName} where ${r.reverseForeignKey} = ${String(a)}`,children:[`+`,l,` more`]}):(0,W.jsxs)(`span`,{className:`text-muted-foreground text-xs whitespace-nowrap`,children:[`+`,l,` more`]}))]})}function jy(e,t={}){if(!e)return{dataTableColumns:[],primaryKey:``};let n=e.primary_key??e.hash_attribute??``,{attributes:r}=e,i=[],a=[],o=[],s=[],c=e=>t=>(0,G.createElement)(Ay,{value:t.getValue(),record:t.row.original,primaryKey:n,info:e});for(let e=r.length-1;e>=0;e--){let{attribute:n,type:l,is_primary_key:u,indexed:d}=r[e],f=t[n],p={header:n,accessorKey:n,enableSorting:!!(u||d),enableColumnFilter:!!(u||d||f),size:Ny(l),cell:f?c(f):My,meta:f?{relationshipInfo:f}:void 0};u?i.push(p):n===`__createdtime__`||n===`__updatedtime__`?s.push(p):p.enableSorting?a.push(p):o.push(p)}let l=new Set(r.map(e=>e.attribute));for(let[e,n]of Object.entries(t))l.has(e)||o.push({header:e,accessorKey:e,enableSorting:!1,enableColumnFilter:!0,size:Ny(`String`),cell:c(n),meta:{relationshipInfo:n}});return{dataTableColumns:[...i,...a,...o,...s],primaryKey:n}}function My(e){let t=e.getValue();return t==null?null:typeof t==`object`?JSON.stringify(t):String(t)}function Ny(e){switch(e){case`Id`:case`ID`:return 220;case`Boolean`:return 90;case`Int`:case`Long`:case`Float`:case`BigInt`:return 120;case`Date`:return 190;default:return 200}}var Py=[`1`,`bet`,`k`,`ok`,`si`,`tru`,`true`,`yes`,`yup`];function Fy(e){let t=e.toLowerCase().trim();return Py.includes(t)}function Iy(e){return!isNaN(e)&&!isNaN(parseFloat(e))}function Ly(e){if(e.startsWith(`0.`)&&Iy(e))return!0;let t=e.toUpperCase().includes(`E`);return!(e!==`0`&&e.startsWith(`0`))&&!t&&Iy(e)}var Ry={true:!0,TRUE:!0,false:!1,FALSE:!1,undefined:null,null:null,NULL:null,NaN:NaN},zy=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/;function By(e){return e==null||e===``||typeof e!=`string`?e:Ry[e]===void 0?Ly(e)?Number(e):zy.test(e)?new Date(e):e:Ry[e]}function Vy(e){let{enabled:t,entityId:n,databaseName:r,tableName:i,conditions:a,sort:o,pageIndex:s,pageSize:c,onlyIfCached:l,getAttributes:u}=e;return B({enabled:t&&!!a,queryKey:[n,r,i,`search_by_conditions`,a,o.attribute||`default`,o.descending||!1,s||0,c||0,l,u??null],staleTime:6e4,gcTime:5e3,retry:!1,queryFn:()=>Hy(e)})}function Hy({instanceClient:e,databaseName:t,tableName:n,conditions:r,sort:i,pageIndex:a,pageSize:o,onlyIfCached:s,getAttributes:c,headers:l}){return e.post(`/`,{operation:`search_by_conditions`,get_attributes:c??[`*`],database:t,table:n,conditions:r,sort:i.attribute.length?i:void 0,offset:a*o,limit:o,onlyIfCached:s,noCacheStore:s},{timeout:0,headers:l})}function Uy(e,t,n,r){return t.split(/ & /).map(t=>Wy(e,t,n,r))}function Wy(e,t,n,r){if(t.startsWith(e)&&(t=t.substring(e.length)),r)return Gy(e,t,r);let{comparator:i,value:a}=Jy(t);switch(n?.type){case`ID`:case`String`:return{search_attribute:e,search_type:i,search_value:a};case`Int`:case`BigInt`:case`Long`:case`Float`:{let t=n.type.includes(`Int`)?parseInt(a,10):parseFloat(a);if(isNaN(t))throw Error(`${a} does not appear to be a valid number.`);return{search_attribute:e,search_type:i,search_value:t}}case`Date`:return{search_attribute:e,search_type:i,search_value:new Date(a).toISOString()};case`Boolean`:return{search_attribute:e,search_type:i,search_value:Fy(a)};case`Blob`:case`Bytes`:return{search_attribute:e,search_type:i,search_value:a};default:return{search_attribute:e,search_type:i,search_value:By(a)}}}function Gy(e,t,n){let r=t.match(/^\s*\.([^.\s]+)\s*(.*)$/);if(!r)throw Error(`Filter ${e} on a property of ${n.relatedTableName}, e.g. ".${n.relatedPrimaryKey} value".`);let[,i,a]=r,o=Wy(i,a,n.relatedAttributes.find(e=>e.attribute===i));return i===n.relatedPrimaryKey&&n.foreignKeyAttribute?{...o,search_attribute:n.foreignKeyAttribute}:{...o,search_attribute:[e,i]}}var Ky={"=== ":`equals`,"== ":`eq`,"equals ":`equals`,"equal ":`equals`,"eq ":`eq`,"!== ":`not_equal`,"!= ":`ne`,"notequals ":`not_equal`,"notequal ":`not_equal`,"ne ":`ne`},qy={">":`greater_than`,g:`greater_than`,gt:`greater_than`,"=gt":`greater_than`,greater:`greater_than`,greaterthan:`greater_than`,">=":`greater_than_equal`,ge:`greater_than_equal`,"=ge":`greater_than_equal`,gte:`greater_than_equal`,greaterorequal:`greater_than_equal`,greaterthanequal:`greater_than_equal`,greaterthanorequal:`greater_than_equal`,"<":`less_than`,l:`less_than`,lt:`less_than`,"=lt":`less_than`,less:`less_than`,lessthan:`less_than`,"<=":`less_than_equal`,lte:`less_than_equal`,le:`less_than_equal`,"=le":`less_than_equal`,lessorequal:`less_than_equal`,lessthanequal:`less_than_equal`,lessthanorequal:`less_than_equal`};function Jy(e){let t=e.toLowerCase(),n=t.match(/^ *([>=<]+[a-z]*[_ ]*|[a-z]+[>=<]+[_ ]*|[a-z]+[_ ]+)([\d._:tz-]+) *$/);if(n){let e=n[1].replace(/[_ ]+/g,``).replace(/^([a-z]+)=$/g,`$1`),t=n[2],r=qy[e];if(r)return{comparator:r,value:t}}for(let n in Ky)if(t.startsWith(n))return{comparator:Ky[n],value:e.slice(n.length)};return t.endsWith(`*`)?{comparator:`starts_with`,value:e.slice(0,-1)}:{comparator:`equals`,value:e}}function Yy(){let e=K(),[t,n]=(0,G.useState)(!1);return{exportCsv:(0,G.useCallback)(async({databaseName:t,tableName:r,primaryKey:i,sort:a,conditions:o})=>{if(!i){H.error(`Cannot export "${r}": no primary key found.`);return}let s=H.loading(`Loading CSV...`);n(!0);try{let n={...e,databaseName:t,tableName:r,sort:a??{attribute:i,descending:!1},pageIndex:0,pageSize:1e6,onlyIfCached:!1,headers:{Accept:`text/csv`}},c=await(o?.length?Hy({...n,conditions:o}):np({...n,searchAttribute:i}));H.loading(`Preparing CSV...`,{id:s});let l=c.data,u=new Blob([l],{type:`text/csv`}),d=URL.createObjectURL(u),f=document.createElement(`a`);f.href=d,f.setAttribute(`download`,`${t}.${r}.${new Date().toISOString()}.csv`),f.click(),setTimeout(()=>URL.revokeObjectURL(d),1e3),H.success(`CSV Exported!`,{id:s})}catch(e){H.error(e instanceof Error?e.message:`Failed to export CSV`,{id:s})}finally{n(!1)}},[e]),isExporting:t}}function Xy({databaseName:e,tableName:t,instanceDatabaseMap:n}){let{clusterId:r,instanceId:i}=L({strict:!1}),a=ps(),o=ms(i??r,e,t,`insert`),{exportCsv:s}=Yy(),c=Object.keys(n?.[e]||{}).length<=1;return(0,W.jsxs)(W.Fragment,{children:[o&&(0,W.jsxs)(Qo,{onSelect:()=>Gv(`ShowAddTableRecords`,{databaseName:e,tableName:t}),children:[(0,W.jsx)(Mr,{}),`Add New Record(s)`]}),o&&(0,W.jsxs)(Qo,{onSelect:()=>Gv(`ShowImportData`,{databaseName:e,tableName:t}),children:[(0,W.jsx)(qn,{}),`Import Data`]}),(0,W.jsxs)(Qo,{onSelect:()=>{let{primaryKey:r}=jy(n?.[e]?.[t]);s({databaseName:e,tableName:t,primaryKey:r,conditions:null})},children:[(0,W.jsx)(Kn,{}),`Export CSV`]}),a&&!c&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(es,{}),(0,W.jsxs)(Qo,{variant:`destructive`,onSelect:()=>Gv(`ShowDeleteTable`,{databaseName:e,tableName:t}),children:[(0,W.jsx)($r,{}),`Drop Table`]})]})]})}function Zy({databaseName:e,instanceDatabaseMap:t,children:n}){let[r,i]=(0,G.useState)(void 0),[a,o]=(0,G.useState)(``);return(0,W.jsxs)(Yo,{modal:!1,children:[(0,W.jsx)(Xo,{asChild:!0,children:(0,W.jsx)(`div`,{onContextMenu:(0,G.useCallback)(e=>{let t=e.target.closest(`[data-table-name]`)?.getAttribute(`data-table-name`);if(!t){i(void 0),e.preventDefault();return}i(t),o(`${e.clientX},${e.clientY}`)},[]),children:n})}),r&&(0,W.jsx)(Zo,{className:`min-w-44`,onCloseAutoFocus:e=>e.preventDefault(),children:(0,W.jsx)(Xy,{databaseName:e,tableName:r,instanceDatabaseMap:t})},a)]})}async function Qy({databaseName:e,tableName:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`describe_table`,database:e,table:t,exact_count:!1});return r}function $y(e){return B({queryKey:[e.entityId,e.databaseName,e.tableName,`describe_table`],queryFn:()=>Qy(e),staleTime:6e4,gcTime:5e3,enabled:!!e.databaseName&&!!e.tableName,retry:!1})}function eb(e,t,n){if(e==null||!Number.isFinite(e))return`—`;let r=tb(e,t);return n?`${r}${n}`:r}function tb(e,t){switch(t){case`percent`:return`${(e*100).toFixed(1)}%`;case`ms`:return`${e.toFixed(1)} ms`;case`count`:return`${e.toFixed(0)}`;case`count-si`:{let t=Math.abs(e);if(t<1e3)return`${e}`;let n=e<0?`-`:``,r=e=>{if(e>=10)return`${Math.round(e)}`;let t=e.toFixed(1);return t.endsWith(`.0`)?t.slice(0,-2):t};return t<1e6?`${n}${r(t/1e3)}k`:t<1e9?`${n}${r(t/1e6)}M`:`${n}${r(t/1e9)}B`}case`cores`:return`${e.toFixed(2)} cores`;case`bytes-si`:case`bytes-iec`:{let n=t===`bytes-iec`?1024:1e3,r=t===`bytes-iec`?[`B`,`KiB`,`MiB`,`GiB`,`TiB`]:[`B`,`KB`,`MB`,`GB`,`TB`],i=e,a=0;for(;Math.abs(i)>=n&&a<r.length-1;)i/=n,a++;let o=+(i!==0&&Math.abs(i)<10);return`${i.toFixed(o)} ${r[a]}`}default:return`${e}`}}var nb=e=>eb(e,`bytes-si`);function rb({label:e,value:t}){return(0,W.jsxs)(`div`,{className:`rounded-md border border-border dark:border-grey-700 p-4`,children:[(0,W.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:e}),(0,W.jsx)(`div`,{className:`text-2xl font-medium`,children:t})]})}function ib({instanceDatabaseMap:e,databaseName:t}){let n=L({strict:!1}),r=Oe(),i=K(),a=ps(),o=e?.[t]??{},s=Object.keys(o).sort(),c=se({queries:s.map(e=>$y({...i,databaseName:t,tableName:e}))}),l={};s.forEach((e,t)=>{let n=c[t]?.data;n&&(l[e]={recordCount:n.record_count,estimated:!!n.estimated_record_range})});let u=c.every(e=>!e.isPending),d=s.some(e=>l[e]?.estimated),f=s.length?o[s[0]]:void 0,p=f?.db_size??0,m=f?.db_audit_size??0,h=u?s.reduce((e,t)=>e+(l[t]?.recordCount??0),0):void 0,g=(0,G.useCallback)(e=>{r({to:yv({...n,databaseName:t,tableName:e})})},[r,n,t]);return(0,W.jsxs)(`div`,{className:`pt-15 pb-4 pr-4`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col md:flex-row items-start md:items-center justify-between gap-3 pb-6`,children:[(0,W.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:(0,W.jsx)(`h1`,{className:`text-3xl truncate`,children:t})}),a&&(0,W.jsxs)(`div`,{className:`flex space-x-2 shrink-0`,children:[(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:()=>Gv(`ShowCreateTable`,{databaseName:t}),children:[(0,W.jsx)(Mr,{}),(0,W.jsx)(`span`,{children:`Create a Table`})]}),(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:()=>Gv(`ShowImportData`,{databaseName:t}),children:[(0,W.jsx)(qn,{}),(0,W.jsx)(`span`,{children:`Import Data`})]}),(0,W.jsxs)(ci,{children:[(0,W.jsx)(li,{asChild:!0,children:(0,W.jsx)(F,{variant:`ghost`,size:`icon`,children:(0,W.jsx)(Qn,{"aria-label":`Database options`})})}),(0,W.jsx)(ui,{side:`bottom`,align:`end`,children:(0,W.jsxs)(di,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>Gv(`ShowDeleteDatabase`,{databaseName:t}),children:[(0,W.jsx)(Qr,{}),`Drop Database`]})})]})]})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3 pb-6`,children:[(0,W.jsx)(rb,{label:`Tables`,value:s.length.toLocaleString()}),(0,W.jsx)(rb,{label:`Records`,value:h===void 0?`…`:`${d?`~`:``}${h.toLocaleString()}`}),(0,W.jsx)(rb,{label:`Size`,value:nb(p)}),(0,W.jsx)(rb,{label:`Audit Size`,value:nb(m)})]}),s.length===0?(0,W.jsxs)(`div`,{className:`rounded-md border border-border dark:border-grey-700 p-8 text-center text-muted-foreground`,children:[(0,W.jsx)(`p`,{className:`pb-2`,children:`This database has no tables yet.`}),a&&(0,W.jsx)(`p`,{children:`Use “Create a Table” above, or right-click the database in the sidebar.`})]}):(0,W.jsx)(Zy,{databaseName:t,instanceDatabaseMap:e,children:(0,W.jsx)(`div`,{className:`rounded-md border border-border dark:border-grey-700 overflow-x-auto`,children:(0,W.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{className:`text-left text-muted-foreground border-b border-border dark:border-grey-700`,children:[(0,W.jsx)(`th`,{className:`p-3 font-medium`,children:`Table`}),(0,W.jsx)(`th`,{className:`p-3 font-medium text-right`,children:`Records`}),(0,W.jsx)(`th`,{className:`p-3 font-medium text-right`,children:`Size`}),(0,W.jsx)(`th`,{className:`p-3 font-medium text-right`,children:`Columns`}),(0,W.jsx)(`th`,{className:`p-3 font-medium`,children:`Primary Key`}),(0,W.jsx)(`th`,{className:`p-3 font-medium`,children:`Last Updated`})]})}),(0,W.jsx)(`tbody`,{children:s.map(e=>{let t=o[e],n=l[e],r=t.primary_key??t.hash_attribute??`—`,i=n?.recordCount===void 0?`…`:`${n.estimated?`~`:``}${n.recordCount.toLocaleString()}`;return(0,W.jsxs)(`tr`,{"data-table-name":e,onClick:()=>g(e),className:`border-b border-border dark:border-grey-700 last:border-0 cursor-pointer hover:bg-accent dark:hover:bg-grey-700/80`,children:[(0,W.jsx)(`td`,{className:`p-3 font-medium`,children:e}),(0,W.jsx)(`td`,{className:`p-3 text-right tabular-nums`,children:i}),(0,W.jsx)(`td`,{className:`p-3 text-right tabular-nums`,children:nb(t.table_size??0)}),(0,W.jsx)(`td`,{className:`p-3 text-right tabular-nums`,children:t.attributes.length.toLocaleString()}),(0,W.jsx)(`td`,{className:`p-3`,children:r}),(0,W.jsx)(`td`,{className:`p-3 text-muted-foreground`,children:t.last_updated_record?new Date(t.last_updated_record).toLocaleString():`—`})]},e)})})]})})})]})}function ab({item:e,context:t}){return e.isFolder?(0,W.jsx)(`div`,{className:P(`rct-tree-item-arrow`,`rct-tree-item-arrow-isFolder`,t.isExpanded&&`rct-tree-item-arrow-expanded`),"aria-hidden":!0,tabIndex:-1,onMouseDown:e=>e.preventDefault(),onClick:e=>{e.stopPropagation(),t.toggleExpandedState()},children:t.isExpanded?(0,W.jsx)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:(0,W.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`})}):(0,W.jsx)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:(0,W.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`})})}):(0,W.jsx)(`div`,{className:`rct-tree-item-arrow`,"aria-hidden":!0})}var ob;(function(e){e.DoubleClickItemToExpand=`double-click-item-to-expand`,e.ClickItemToExpand=`click-item-to-expand`,e.ClickArrowToExpand=`click-arrow-to-expand`})(ob||={});var sb=function(){return sb=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},sb.apply(this,arguments)},cb=function(e,t){return{mode:e.mode,createInteractiveElementProps:function(n,r,i,a){return sb(sb({},t.createInteractiveElementProps(n,r,i,a)),e.createInteractiveElementProps(n,r,i,a))}}},lb=function(e){return e.ctrlKey||navigator.platform.toUpperCase().indexOf(`MAC`)>=0&&e.metaKey},ub=function(){function e(e){this.mode=ob.DoubleClickItemToExpand,this.environment=e}return e.prototype.createInteractiveElementProps=function(e,t,n,r){var i=this;return{onClick:function(e){var t=e.detail===0;n.focusItem(),e.shiftKey&&!t?n.selectUpTo(!lb(e)):lb(e)&&!t?r.isSelected?n.unselectItem():n.addToSelectedItems():n.selectItem()},onDoubleClick:function(){n.focusItem(),n.selectItem(),e.isFolder&&n.toggleExpandedState(),(!e.isFolder||i.environment.canInvokePrimaryActionOnItemContainer)&&n.primaryAction()},onFocus:function(){n.focusItem()},onDragStart:function(e){e.dataTransfer.dropEffect=`move`,n.startDragging()},onDragOver:function(e){e.preventDefault()},draggable:r.canDrag&&!r.isRenaming,tabIndex:r.isRenaming?void 0:r.isFocused?0:-1}},e}(),db=function(){function e(e){this.mode=ob.ClickItemToExpand,this.environment=e}return e.prototype.createInteractiveElementProps=function(e,t,n,r){var i=this;return{onClick:function(t){var a=t.detail===0;n.focusItem(),t.shiftKey&&!a?n.selectUpTo(!lb(t)):lb(t)&&!a?r.isSelected?n.unselectItem():n.addToSelectedItems():(e.isFolder&&n.toggleExpandedState(),n.selectItem(),(!e.isFolder||i.environment.canInvokePrimaryActionOnItemContainer)&&n.primaryAction())},onFocus:function(){n.focusItem()},onDragStart:function(e){e.dataTransfer.dropEffect=`move`,n.startDragging()},onDragOver:function(e){e.preventDefault()},draggable:r.canDrag&&!r.isRenaming,tabIndex:r.isRenaming?void 0:r.isFocused?0:-1}},e}(),fb=function(){function e(e){this.mode=ob.ClickItemToExpand,this.environment=e}return e.prototype.createInteractiveElementProps=function(e,t,n,r){var i=this;return{onClick:function(t){var a=t.detail===0;n.focusItem(),t.shiftKey&&!a?n.selectUpTo(!lb(t)):lb(t)&&!a?r.isSelected?n.unselectItem():n.addToSelectedItems():(n.selectItem(),(!e.isFolder||i.environment.canInvokePrimaryActionOnItemContainer)&&n.primaryAction())},onFocus:function(){n.focusItem()},onDragStart:function(e){e.dataTransfer.dropEffect=`move`,n.startDragging()},onDragOver:function(e){e.preventDefault()},draggable:r.canDrag&&!r.isRenaming,tabIndex:r.isRenaming?void 0:r.isFocused?0:-1}},e}(),pb=function(e,t){switch(e){case ob.DoubleClickItemToExpand:return new ub(t);case ob.ClickItemToExpand:return new db(t);case ob.ClickArrowToExpand:return new fb(t);default:throw Error(`Unknown interaction mode ${e}`)}},mb=G.createContext(null),hb=function(){return G.useContext(mb)},gb=function(e){var t=e.children,n=nx(),r=n.defaultInteractionMode,i=(0,G.useMemo)(function(){return r&&typeof r!=`string`?r.extends?cb(r,pb(r.extends,n)):r:pb(r??ob.ClickItemToExpand,n)},[]);return G.createElement(mb.Provider,{value:i},t)},_b=function(){var e=nx();return(0,G.useCallback)(function(t,n){if(t.targetType===`between-items`){if(!e.canReorderItems)return!1}else if(t.targetType===`root`){if(!e.canDropOnFolder)return!1}else{var r=e.items[t.targetItem];if(!r||!e.canDropOnFolder&&r.isFolder||!e.canDropOnNonFolder&&!r.isFolder||n.some(function(e){return e.index===t.targetItem}))return!1}return!(e.canDropAt&&(!n||!e.canDropAt(n,t)))},[e])},vb=function(){var e=nx();return(0,G.useCallback)(function(t,n){for(var r=e.linearItems[n],i=r[t].depth,a=t;r[a]&&r[a].depth!==i-1;--a);var o=r[a];return o||(o={item:e.trees[n].rootItem,depth:0},a=0),{parent:o,parentLinearIndex:a}},[e.linearItems,e.trees])},yb=function(){var e=nx(),t=vb(),n=_b(),r=(0,G.useCallback)(function(e,n,i){var a=t(n,e),o=a.parent,s=a.parentLinearIndex;return i.some(function(e){return e.index===o.item})?!0:o.depth!==0&&r(e,s,i)},[t]);return(0,G.useCallback)(function(i,a){for(var o=e.linearItems[i],s=[],c=-1,l=0;l<o.length;l++){var u=o[l],d=u.item,f=u.depth;if(!(c!==-1&&f>c)){c=-1;var p=t(l,i).parent,m=e.items[p.item].children.indexOf(d);if(r(i,l,a)){c=f+1;continue}var h={targetType:`item`,parentItem:p.item,targetItem:d,linearIndex:l,depth:f,treeId:i},g={targetType:`between-items`,parentItem:p.item,linePosition:`top`,childIndex:m,depth:f,treeId:i,linearIndex:l},_={targetType:`between-items`,parentItem:p.item,linePosition:`bottom`,linearIndex:l+1,childIndex:m+1,depth:f,treeId:i},v=o[l-1]?.depth??-1,y=o[l+1]?.depth??-1,b=f===v,x=f===y-1;!b&&n(g,a)&&s.push(g),n(h,a)&&s.push(h),!x&&n(_,a)&&s.push(_)}}return s},[n,e.items,e.linearItems,t,r])},bb=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},xb=function(e,t,n){var r=(0,G.useRef)();(0,G.useEffect)(function(){r.current?r.current.some(function(e,t){return e!==n[t]})&&(r.current=bb([],n,!0),e()):(r.current=bb([],n,!0),e())},bb(bb([],t,!0),n,!0))},Sb=function(){return Sb=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Sb.apply(this,arguments)},Cb=function(e,t){return e.map(function(e){return[e,t(e)]}).reduce(function(e,t){var n,r=t[0],i=t[1];return Sb(Sb({},e),(n={},n[r]=i,n))},{})},wb=function(){return typeof document<`u`?document:void 0};function Tb(e){e===void 0&&(e=!1);var t=(0,G.useRef)([]);return(0,G.useEffect)(function(){if(e)return function(){};var n=t.current;return function(){return n.forEach(function(e){return cancelAnimationFrame(e)})}},[e,t]),(0,G.useCallback)(function(e){var n=requestAnimationFrame(function(){t.current.splice(t.current.indexOf(n),1),e()});t.current.push(n)},[t])}var Eb=function(e){var t=(0,G.useRef)(e);return t.current=e,t},Db=function(e){var t=Eb(e);return(0,G.useCallback)((function(){var e=[...arguments];return t.current.apply(t,e)}),[t])},Ob=function(){var e=nx();return Db(function(t,n){return n.map(function(n){return[n,e.linearItems[t].findIndex(function(e){return e.item===n.index})]}).sort(function(e,t){e[0];var n=e[1];return t[0],n-t[1]}).map(function(e){return e[0]})})},kb=function(e){var t=wb()?.querySelector(`[data-rct-tree="${e}"] [data-rct-item-container="true"]`);if(t){var n=getComputedStyle(t);return t.offsetHeight+Math.max(parseFloat(n.marginTop),parseFloat(n.marginBottom))}return 5},Ab=function(e,t){return e.clientX<=t.left||e.clientX>=t.right||e.clientY<=t.top||e.clientY>=t.bottom},jb=function(){function e(e,t,n,r,i,a){this.env=e,this.e=t,this.treeId=n,this.linearIndex=r.linearIndex,this.offset=r.offset,this.indentation=r.indentation,this.targetItem=this.env.linearItems[this.treeId][this.linearIndex],this.getParentOfLinearItem=a,this.draggingItems=i}return e.prototype.getEmptyTreeDragPosition=function(){return{targetType:`root`,treeId:this.treeId,depth:0,linearIndex:0,targetItem:this.env.trees[this.treeId].rootItem}},e.prototype.maybeRedirectToParent=function(){if(!this.env.canReorderItems&&!this.env.canDropOnNonFolder&&!this.env.items[this.targetItem.item].isFolder){var e=this.getParentOfLinearItem(this.linearIndex,this.treeId),t=e.parentLinearIndex,n=e.parent;this.targetItem=n,this.linearIndex=t}},e.prototype.maybeReparentUpwards=function(){if(this.indentation!==void 0){var e=this.env.linearItems[this.treeId],t=e[this.linearIndex].depth,n=t-(e[this.linearIndex+1]?.depth??0);if(this.offset===`bottom`&&n>0){for(var r=Math.max(t-n,this.indentation),i={parentLinearIndex:this.linearIndex,parent:this.targetItem},a,o=t;o>=r;--o)a=i,i=this.getParentOfLinearItem(i.parentLinearIndex,this.treeId);if(this.indentation!==e[this.linearIndex].depth&&a){var s=this.env.items[i.parent.item].children.indexOf(a.parent.item)+1;if(!(this.draggingItems&&this.isDescendant(this.treeId,i.parentLinearIndex+1,this.draggingItems)))return{targetType:`between-items`,treeId:this.treeId,parentItem:i.parent.item,depth:r,linearIndex:this.linearIndex+1,childIndex:s,linePosition:`bottom`}}}}},e.prototype.maybeRedirectInsideOpenFolder=function(){var e=this.env.linearItems[this.treeId][this.linearIndex+1];!this.env.canDropBelowOpenFolders&&e&&this.targetItem.depth===e.depth-1&&this.offset===`bottom`&&(this.targetItem=e,this.linearIndex+=1,this.offset=`top`)},e.prototype.maybeMapToBottomOffset=function(){var e=this.env.linearItems[this.treeId][this.linearIndex-1];if(!(!e||e?.depth===void 0)){var t=e.depth-this.targetItem.depth;this.offset===`top`&&(t===0||t>0&&this.indentation!==void 0)&&(this.offset=`bottom`,--this.linearIndex,this.targetItem=this.env.linearItems[this.treeId][this.linearIndex])}},e.prototype.canDropAtCurrentTarget=function(){var e=this,t=this.env.items[this.targetItem.item];return!(!this.offset&&!this.env.canDropOnNonFolder&&!t.isFolder||!this.offset&&!this.env.canDropOnFolder&&t.isFolder||this.offset&&!this.env.canReorderItems||this.draggingItems?.some(function(t){return t.index===e.targetItem.item}))},e.prototype.getDraggingPosition=function(){if(this.env.linearItems[this.treeId].length===0)return this.getEmptyTreeDragPosition();if(!(!this.draggingItems||this.linearIndex<0||this.linearIndex>=this.env.linearItems[this.treeId].length)){this.maybeRedirectToParent(),this.maybeRedirectInsideOpenFolder(),this.maybeMapToBottomOffset();var e=this.maybeReparentUpwards();if(e)return e;if(this.areDraggingItemsDescendantOfTarget()||!this.canDropAtCurrentTarget())return`invalid`;var t=this.getParentOfLinearItem(this.linearIndex,this.treeId).parent,n=this.env.items[t.item].children.indexOf(this.targetItem.item)+(this.offset===`top`?0:1);return this.offset?{targetType:`between-items`,treeId:this.treeId,parentItem:t.item,depth:this.targetItem.depth,linearIndex:this.linearIndex+(this.offset===`top`?0:1),childIndex:n,linePosition:this.offset}:{targetType:`item`,treeId:this.treeId,parentItem:t.item,targetItem:this.targetItem.item,depth:this.targetItem.depth,linearIndex:this.linearIndex}}},e.prototype.isDescendant=function(e,t,n){var r=this.getParentOfLinearItem(t,e),i=r.parentLinearIndex,a=r.parent;return n.some(function(e){return e.index===a.item})?!0:a.depth!==0&&this.isDescendant(e,i,n)},e.prototype.areDraggingItemsDescendantOfTarget=function(){return this.draggingItems&&this.isDescendant(this.treeId,this.linearIndex,this.draggingItems)},e}(),Mb=function(){var e=(0,G.useRef)(`initial`),t=(0,G.useState)(void 0),n=t[0],r=t[1],i=(0,G.useRef)(0),a=nx(),o=vb(),s=Db(function(t,n,r){if(!r)return!1;var i=r.offset,a=`${n}__${r.linearIndex}__${i??``}__${r.indentation}`;return a===e.current?!1:(e.current=a,!0)}),c=Db(function(e,t,n){if(n.current){var r=n.current.getBoundingClientRect();if(!Ab(e,r)){var o=(e.clientY-r.top)/i.current,s=a.linearItems[t],c=Math.min(Math.max(0,Math.floor(o)),s.length-1);if(s.length===0)return{linearIndex:0,offset:`bottom`,indentation:0};var l=s[c],u=a.items[l.item],d=a.renderDepthOffset?Math.max(Math.floor((e.clientX-r.left)/a.renderDepthOffset),0):void 0,f,p=a.canReorderItems?u?.isFolder&&a.canDropOnFolder||a.canDropOnNonFolder?.2:.5:0;return o-.5>=s.length-1?f=`bottom`:o%1<p?f=`top`:o%1>1-p&&(f=`bottom`),{linearIndex:c,offset:f,indentation:d}}}}),l=Db(function(e,t,r){var i=c(e,t,r);if(s(e,t,i))return!n||!a.canDragAndDrop||!i||e.clientX<0||e.clientY<0?`invalid`:new jb(a,e,t,i,n,o).getDraggingPosition()});return{initiateDraggingPosition:Db(function(t,n){r(n),e.current=`initial`,i.current=kb(t)}),resetDraggingPosition:Db(function(){r(void 0),e.current=`initial`,i.current=0}),draggingItems:n,getDraggingPosition:l,itemHeight:i}},Nb=G.createContext(null),Pb=function(){return G.useContext(Nb)},Fb=function(e){var t=e.children,n=nx(),r=(0,G.useState)(!1),i=r[0],a=r[1],o=(0,G.useState)({}),s=o[0],c=o[1],l=(0,G.useState)(0),u=l[0],d=l[1],f=(0,G.useState)(),p=f[0],m=f[1],h=yb(),g=Tb(),_=Ob(),v=Mb(),y=v.initiateDraggingPosition,b=v.resetDraggingPosition,x=v.draggingItems,S=v.getDraggingPosition,C=v.itemHeight,w=(0,G.useCallback)(function(e,t){if(n.activeTreeId&&n.viewState[n.activeTreeId]?.focusedItem&&n.linearItems&&t){var r=n.viewState[n.activeTreeId].focusedItem,i=h(n.activeTreeId,t),a=i.findIndex(function(e){return e.targetType===`item`?e.targetItem===r:e.targetType===`between-items`&&n.items[e.parentItem].children[e.childIndex]===r});d(a?Math.min(a+1,i.length-1):0)}else d(0)},[n.activeTreeId,n.items,n.linearItems,n.viewState,h]),T=Db(function(){a(!1),c({}),d(0),m(void 0),b()});xb(function(){n.activeTreeId&&n.linearItems[n.activeTreeId]&&s[n.activeTreeId]&&w(s[n.activeTreeId],x)},[x,n.activeTreeId,n.linearItems,w,s],[n.activeTreeId]),xb(function(){i&&n.activeTreeId&&m(s[n.activeTreeId][u])},[u,n.activeTreeId,i,s],[u,n.activeTreeId]);var E=_b(),D=function(e){var t;x&&!E(e,x)||(m(e),n.setActiveTree(e.treeId),x&&n.activeTreeId!==e.treeId&&((t=n.onSelectItems)==null||t.call(n,x.map(function(e){return e.index}),e.treeId)))},O=Db(function(e,t,n){if(x){var r=S(e,t,n);if(r){if(r===`invalid`){m(void 0);return}D(r)}}}),k=Db(function(e,t){t.current&&Ab(e,t.current.getBoundingClientRect())&&m(void 0)}),A=Db(function(){!x||!p||!n.onDrop||(n.onDrop(x,p),g(function(){var e;(e=n.onFocusItem)==null||e.call(n,x[0],p.treeId),T()}))}),j=(0,G.useCallback)(function(e,t){var r=Cb(n.treeIds,function(t){return h(t,e)});y(t,e),c(r),n.activeTreeId&&w(r[n.activeTreeId],e)},[n.activeTreeId,n.treeIds,h,y,w]),ee=(0,G.useCallback)(function(){if(n.canDragAndDrop&&n.activeTreeId){var e=n.viewState[n.activeTreeId]?.selectedItems??[n.viewState[n.activeTreeId]?.focusedItem];if(e.length===0||e[0]===void 0)return;var t=_(n.activeTreeId,e.map(function(e){return n.items[e]}));if(n.canDrag&&!n.canDrag(t))return;j(t,n.activeTreeId),setTimeout(function(){a(!0)})}},[n,_,j]),M=(0,G.useCallback)(function(){T()},[T]),N=(0,G.useCallback)(function(){A(),T()},[A,T]),P=(0,G.useCallback)(function(){d(function(e){return Math.max(0,e-1)})},[]),F=(0,G.useCallback)(function(){n.activeTreeId&&d(function(e){return Math.min(s[n.activeTreeId].length-1,e+1)})},[n.activeTreeId,s]),I=(0,G.useMemo)(function(){return{onStartDraggingItems:j,startProgrammaticDrag:ee,abortProgrammaticDrag:M,completeProgrammaticDrag:N,programmaticDragUp:P,programmaticDragDown:F,draggingItems:x,draggingPosition:p,itemHeight:C.current,isProgrammaticallyDragging:i,onDragOverTreeHandler:O,onDragLeaveContainerHandler:k,viableDragPositions:s}},[M,N,x,p,i,C,O,k,j,F,P,ee,s]);return(0,G.useEffect)(function(){return window.addEventListener(`dragend`,T),window.addEventListener(`drop`,A),function(){window.removeEventListener(`dragend`,T),window.removeEventListener(`drop`,A)}},[A,T]),G.createElement(Nb.Provider,{value:I},t)},Ib=function(){return Ib=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Ib.apply(this,arguments)},Lb=function(e,t){var n=nx(),r=Pb();(0,G.useImperativeHandle)(e,function(){return Ib(Ib(Ib({},t),n),{treeEnvironmentContext:n,dragAndDropContext:r})})},Rb=function(e,t,n){return t===void 0&&(t=50),n===void 0&&(n=1e4),new Promise(function(r){e()&&r();var i,a=setInterval(function(){e()&&i()},t),o=setTimeout(function(){i()},n);i=function(){clearInterval(a),clearTimeout(o),r()}})},zb=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},Bb=function(e,t){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,o;return o={next:s(0),throw:s(1),return:s(2)},typeof Symbol==`function`&&(o[Symbol.iterator]=function(){return this}),o;function s(e){return function(t){return c([e,t])}}function c(s){if(r)throw TypeError(`Generator is already executing.`);for(;o&&(o=0,s[0]&&(n=0)),n;)try{if(r=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return n.label++,{value:s[1],done:!1};case 5:n.label++,i=s[1],s=[0];continue;case 7:s=n.ops.pop(),n.trys.pop();continue;default:if((a=n.trys,!(a=a.length>0&&a[a.length-1]))&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]<a[3])){n.label=s[1];break}if(s[0]===6&&n.label<a[1]){n.label=a[1],a=s;break}if(a&&n.label<a[2]){n.label=a[2],n.ops.push(s);break}a[2]&&n.ops.pop(),n.trys.pop();continue}s=t.call(e,n)}catch(e){s=[6,e],i=0}finally{r=a=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}},Vb=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},Hb=G.createContext(null),Ub=function(){return G.useContext(Hb)},Wb=function(e,t,n){return zb(void 0,void 0,void 0,function(){var r,i,a,o;return Bb(this,function(s){for(r=function(e){Rb(function(){return!!t.current?.[e]}).then(function(){var r=t.current?.[e];r?.isFolder&&(n(r),Wb(e,t,n))})},i=0,a=t.current?.[e]?.children??[];i<a.length;i++)o=a[i],r(o);return[2]})})},Gb=G.forwardRef(function(e,t){var n=nx(),r=n.onCollapseItem,i=n.items,a=n.trees,o=n.viewState,s=n.onExpandItem,c=n.onFocusItem,l=n.setActiveTree,u=n.onRenameItem,d=n.onSelectItems,f=n.onPrimaryAction,p=n.linearItems,m=Pb(),h=m.abortProgrammaticDrag,g=m.completeProgrammaticDrag,_=m.programmaticDragDown,v=m.programmaticDragUp,y=m.startProgrammaticDrag,b=Eb(i),x=(0,G.useCallback)(function(e,t){r?.(i[e],t)},[i,r]),S=(0,G.useCallback)(function(e,t){s?.(i[e],t)},[i,s]),C=(0,G.useCallback)(function(e,t,n){n===void 0&&(n=!0),c?.(i[e],t,n)},[i,c]),w=(0,G.useCallback)(function(e,t){t===void 0&&(t=!0),l(e,t)},[l]),T=(0,G.useCallback)(function(e){var t=p[e],n=t.findIndex(function(t){return t.item===o[e]?.focusedItem}),r=i[t[n===void 0?0:Math.min(t.length-1,n+1)].item];c?.(r,e)},[i,p,c,o]),E=(0,G.useCallback)(function(e){var t=p[e],n=t.findIndex(function(t){return t.item===o[e]?.focusedItem}),r=i[t[n===void 0?0:Math.max(0,n-1)].item];c?.(r,e)},[i,p,c,o]),D=(0,G.useCallback)(function(e,t,n){u?.(i[e],t,n)},[i,u]),O=(0,G.useCallback)(function(e,t){d?.(e,t)},[d]),k=(0,G.useCallback)(function(e,t){(o[t]?.expandedItems)?.includes(e)?r?.(i[e],t):s?.(i[e],t)},[i,r,s,o]),A=(0,G.useCallback)(function(e,t){(o[t]?.selectedItems)?.includes(e)?d?.(o[t].selectedItems?.filter(function(t){return t!==e})??[],t):d?.(Vb(Vb([],o[t].selectedItems??[],!0),[e],!1),t)},[d,o]),j=(0,G.useCallback)(function(e,t){f?.(i[e],t)},[i,f]),ee=(0,G.useCallback)(function(e,t){return zb(void 0,void 0,void 0,function(){var n,r;return Bb(this,function(i){switch(i.label){case 0:return n=t[0],r=t.slice(1),[4,Rb(function(){return!!b.current?.[n]}).then(function(){var t=b.current[n];return t?(s?.(t,e),r.length>0?ee(e,r):Promise.resolve()):Promise.resolve()})];case 1:return i.sent(),[2]}})})},[b,s]),M=(0,G.useCallback)(function(e){return zb(void 0,void 0,void 0,function(){return Bb(this,function(t){switch(t.label){case 0:return[4,Wb(a[e].rootItem,b,function(t){return s?.(t,e)})];case 1:return t.sent(),[2]}})})},[b,s,a]),N=(0,G.useCallback)(function(e){for(var t=0,n=o[e]?.expandedItems??[];t<n.length;t++){var a=n[t];r?.(i[a],e)}},[i,r,o]),P=(0,G.useMemo)(function(){return{collapseItem:x,expandItem:S,focusItem:C,focusTree:w,moveFocusDown:T,moveFocusUp:E,renameItem:D,selectItems:O,toggleItemExpandedState:k,toggleItemSelectStatus:A,invokePrimaryAction:j,expandAll:M,expandSubsequently:ee,collapseAll:N,abortProgrammaticDrag:h,completeProgrammaticDrag:g,moveProgrammaticDragPositionDown:_,moveProgrammaticDragPositionUp:v,startProgrammaticDrag:y}},[x,S,C,w,T,E,D,O,k,A,j,M,ee,N,h,g,_,v,y]);return Lb(t,P),G.createElement(Hb.Provider,{value:P},e.children)}),Kb=function(e){if(e)if(e.scrollIntoViewIfNeeded)e.scrollIntoViewIfNeeded();else{var t=e.getBoundingClientRect();t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||!!wb()?.documentElement?.clientHeight)&&t.right<=(window.innerWidth||!!wb()?.documentElement?.clientWidth)||e.scrollIntoView()}},qb=function(){return qb=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},qb.apply(this,arguments)},Jb=function(){return[...arguments].filter(function(e){return!!e}).join(` `)},Yb=function(e,t){return{renderItemTitle:function(e){var t=e.title,n=e.context,r=e.info;if(!r.isSearching||!n.isSearchMatching)return t;var i=t.toLowerCase().indexOf(r.search.toLowerCase());return G.createElement(G.Fragment,null,i>0&&G.createElement(`span`,null,t.slice(0,i)),G.createElement(`span`,{className:`rct-tree-item-search-highlight`},t.slice(i,i+r.search.length)),i+r.search.length<t.length&&G.createElement(`span`,null,t.slice(i+r.search.length,t.length)))},renderItemArrow:function(e){var t=e.item,n=e.context;return G.createElement(`div`,qb({className:Jb(t.isFolder&&`rct-tree-item-arrow-isFolder`,n.isExpanded&&`rct-tree-item-arrow-expanded`,`rct-tree-item-arrow`)},n.arrowProps),t.isFolder&&(n.isExpanded?G.createElement(`svg`,{version:`1.1`,xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,x:`0px`,y:`0px`,viewBox:`0 0 16 16`,enableBackground:`new 0 0 16 16`,xmlSpace:`preserve`},G.createElement(`g`,null,G.createElement(`g`,null,G.createElement(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`})))):G.createElement(`svg`,{version:`1.1`,xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,x:`0px`,y:`0px`,viewBox:`0 0 16 16`,enableBackground:`new 0 0 16 16`,xmlSpace:`preserve`},G.createElement(`g`,null,G.createElement(`g`,null,G.createElement(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`}))))))},renderItem:function(t){var n=t.item,r=t.depth,i=t.children,a=t.title,o=t.context,s=t.arrow,c=o.isRenaming?`div`:`button`,l=o.isRenaming?void 0:`button`;return G.createElement(`li`,qb({},o.itemContainerWithChildrenProps,{className:Jb(`rct-tree-item-li`,n.isFolder&&`rct-tree-item-li-isFolder`,o.isSelected&&`rct-tree-item-li-selected`,o.isExpanded&&`rct-tree-item-li-expanded`,o.isFocused&&`rct-tree-item-li-focused`,o.isDraggingOver&&`rct-tree-item-li-dragging-over`,o.isSearchMatching&&`rct-tree-item-li-search-match`)}),G.createElement(`div`,qb({},o.itemContainerWithoutChildrenProps,{style:{"--depthOffset":`${(r+1)*e}px`},className:Jb(`rct-tree-item-title-container`,n.isFolder&&`rct-tree-item-title-container-isFolder`,o.isSelected&&`rct-tree-item-title-container-selected`,o.isExpanded&&`rct-tree-item-title-container-expanded`,o.isFocused&&`rct-tree-item-title-container-focused`,o.isDraggingOver&&`rct-tree-item-title-container-dragging-over`,o.isSearchMatching&&`rct-tree-item-title-container-search-match`)}),s,G.createElement(c,qb({type:l},o.interactiveElementProps,{className:Jb(`rct-tree-item-button`,n.isFolder&&`rct-tree-item-button-isFolder`,o.isSelected&&`rct-tree-item-button-selected`,o.isExpanded&&`rct-tree-item-button-expanded`,o.isFocused&&`rct-tree-item-button-focused`,o.isDraggingOver&&`rct-tree-item-button-dragging-over`,o.isSearchMatching&&`rct-tree-item-button-search-match`)}),a)),i)},renderRenameInput:function(e){var t=e.inputProps,n=e.inputRef,r=e.submitButtonProps,i=e.submitButtonRef,a=e.formProps;return G.createElement(`form`,qb({},a,{className:`rct-tree-item-renaming-form`}),G.createElement(`input`,qb({},t,{ref:n,className:`rct-tree-item-renaming-input`})),G.createElement(`input`,qb({},r,{ref:i,type:`submit`,className:`rct-tree-item-renaming-submit-button`,value:`🗸`})))},renderTreeContainer:function(e){var n=e.children,r=e.containerProps,i=e.info;return G.createElement(`div`,{className:Jb(`rct-tree-root`,i.isFocused&&`rct-tree-root-focus`,i.isRenaming&&`rct-tree-root-renaming`,i.areItemsSelected&&`rct-tree-root-itemsselected`,t&&`rct-rtl`)},G.createElement(`div`,qb({},r,{style:qb({minHeight:`30px`},r.style)}),n))},renderItemsContainer:function(e){var t=e.children,n=e.containerProps;return G.createElement(`ul`,qb({},n,{className:`rct-tree-items-container`}),t)},renderDragBetweenLine:function(t){var n=t.draggingPosition,r=t.lineProps;return G.createElement(`div`,qb({},r,{style:{left:`${n.depth*e}px`},className:Jb(`rct-tree-drag-between-line`,n.targetType===`between-items`&&n.linePosition===`top`&&`rct-tree-drag-between-line-top`,n.targetType===`between-items`&&n.linePosition===`bottom`&&`rct-tree-drag-between-line-bottom`)}))},renderSearchInput:function(e){var t=e.inputProps;return G.createElement(`div`,{className:Jb(`rct-tree-search-input-container`)},G.createElement(`span`,{className:`rct-tree-input-icon`}),G.createElement(`input`,qb({},t,{className:Jb(`rct-tree-search-input`)})))},renderLiveDescriptorContainer:function(e){var t=e.tree,n=e.children;return G.createElement(`div`,{id:`rct-livedescription-${t.treeId}`,style:{clip:`rect(0 0 0 0)`,clipPath:`inset(50%)`,height:`1px`,overflow:`hidden`,position:`absolute`,whiteSpace:`nowrap`,width:`1px`}},n)},renderDepthOffset:e}},Xb=function(e){var t=e.renderItem,n=e.renderItemTitle,r=e.renderItemArrow,i=e.renderRenameInput,a=e.renderItemsContainer,o=e.renderTreeContainer,s=e.renderDragBetweenLine,c=e.renderSearchInput,l=e.renderLiveDescriptorContainer,u=e.renderDepthOffset,d=(0,G.useMemo)(function(){return Yb(u??10)},[u]),f={renderItem:t,renderItemTitle:n,renderItemArrow:r,renderRenameInput:i,renderItemsContainer:a,renderTreeContainer:o,renderDragBetweenLine:s,renderSearchInput:c,renderLiveDescriptorContainer:l,renderDepthOffset:u},p=Object.entries(d).reduce(function(e,t){var n=t[0],r=t[1],i=n;return f[i]?e[i]=f[i]:e[i]=r,e},{});return p.renderItem.displayName=`RenderItem`,p.renderItemTitle.displayName=`RenderItemTitle`,p.renderItemArrow.displayName=`RenderItemArrow`,p.renderRenameInput.displayName=`RenderRenameInput`,p.renderItemsContainer.displayName=`RenderItemsContainer`,p.renderTreeContainer.displayName=`RenderTreeContainer`,p.renderDragBetweenLine.displayName=`RenderDragBetweenLine`,p.renderSearchInput.displayName=`RenderSearchInput`,p},Zb=function(e,t,n,r){r===void 0&&(r=0);for(var i=[],a=0,o=n[e]?.children??[];a<o.length;a++){var s=o[a],c=n[s];i.push({item:s,depth:r}),c&&c.isFolder&&c.children&&t.expandedItems?.includes(s)&&i.push.apply(i,Zb(s,t,n,r+1))}return i},Qb=function(){return Qb=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Qb.apply(this,arguments)},$b=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},ex=function(e){var t=e.onExpandItem,n=e.onCollapseItem,r=e.onDrop,i=$b(e,[`onExpandItem`,`onCollapseItem`,`onDrop`]),a=(0,G.useState)({}),o=a[0],s=a[1],c=(0,G.useState)(),l=c[0],u=c[1],d=(0,G.useMemo)(function(){return Object.keys(o)},[o]),f=i.onFocusItem,p=i.autoFocus,m=i.onRegisterTree,h=i.onUnregisterTree,g=i.items,_=i.viewState,v=Eb(f),y=Eb(_),b=(0,G.useMemo)(function(){return Cb(d,function(e){return Zb(o[e].rootItem,_[e]??{},g)})},[o,g,d,_]),x=(0,G.useCallback)(function(e,t,n){var r,i;if(n===void 0&&(n=!0),(p??!0)&&n){var a=wb()?.querySelector(`[data-rct-tree="${t}"] [data-rct-item-id="${e.index}"]`)??wb()?.querySelector(`[data-rct-tree="${t}"] [data-rct-item-id]`);(wb()?.activeElement)?.attributes.getNamedItem(`data-rct-search-input`)?.value===`true`?Kb(a):(r=a?.focus)==null||r.call(a)}y.current[t]?.focusedItem!==e.index&&((i=v.current)==null||i.call(v,e,t))},[p,v,y]),S=(0,G.useCallback)(function(e){s(function(t){var n;return Qb(Qb({},t),(n={},n[e.treeId]=e,n))}),m?.(e)},[m]),C=(0,G.useCallback)(function(e){h?.(o[e]),s(function(t){var n=Qb({},t);return delete n[e],n})},[h,o]),w=(0,G.useCallback)(function(e,t){n?.(e,t),s(function(e){return e})},[n]),T=(0,G.useCallback)(function(e,n){t?.(e,n),s(function(e){return e})},[t]),E=(0,G.useCallback)(function(e,t){r?.(e,t),s(function(e){return e})},[r]),D=(0,G.useCallback)(function(e){var t,n=wb()?.querySelector(`[data-rct-tree="${e}"] [data-rct-item-focus="true"]`);(t=n?.focus)==null||t.call(n)},[]),O=(0,G.useCallback)(function(e,t){t===void 0&&(t=!0);var n=function(e){t&&(p??!0)&&e&&!(wb()?.querySelector(`[data-rct-tree="${e}"]`))?.contains(document.activeElement)&&D(e)};if(typeof e==`function`)u(function(t){var r=e(t);return r!==t&&n(r),r});else{var r=e;u(r),n(r)}},[p,D]),k=Xb(i);return Qb(Qb(Qb({},k),i),{onFocusItem:x,registerTree:S,unregisterTree:C,onExpandItem:T,onCollapseItem:w,onDrop:E,setActiveTree:O,treeIds:d,trees:o,activeTreeId:l,linearItems:b})},tx=G.createContext(null),nx=function(){return(0,G.useContext)(tx)},rx=G.forwardRef(function(e,t){var n=ex(e),r=e.viewState,i=e.onFocusItem;return(0,G.useEffect)(function(){for(var t=0,a=Object.keys(n.trees);t<a.length;t++){var o=a[t],s=e.items[n.trees[o].rootItem]?.children?.[0],c=s&&e.items[s];!r[o]?.focusedItem&&n.trees[o]&&c&&i?.(c,o,!1)}},[n.trees,i,e.items,r]),G.createElement(tx.Provider,{value:n},G.createElement(gb,null,G.createElement(Fb,null,G.createElement(Gb,{ref:t},e.children))))}),ix=function(e){var t=e.treeId,n=Pb(),r=n.draggingPosition,i=n.itemHeight,a=zx().renderers;return r&&r.targetType===`between-items`&&r.treeId===t?G.createElement(`div`,{style:{position:`absolute`,left:`0`,right:`0`,top:`${(r?.linearIndex??0)*i}px`}},a.renderDragBetweenLine({draggingPosition:r,lineProps:{onDragOver:function(e){return e.preventDefault()}}})):null},ax=function(e,t,n){var r=Db(n);(0,G.useEffect)(function(){return e?(e.addEventListener(t,r),function(){return e.removeEventListener(t,r)}):function(){}},[e,r,t])},ox=function(e,t,n){var r=(0,G.useState)(!1),i=r[0],a=r[1],o=(0,G.useRef)(!1),s=Tb();return ax(e,`focusin`,function(){i||(a(!0),t?.()),o.current&&=!1}),ax(e,`focusout`,function(){o.current=!0,s(function(){o.current&&!e?.contains(document.activeElement)&&(n?.(),o.current=!1,a(!1))})}),i},sx=function(e,t,n){ax(wb(),`keydown`,function(r){n&&n&&e.toLowerCase()===r.key.toLowerCase()&&t(r)})},cx={expandSiblings:[`control+*`],moveFocusToFirstItem:[`home`],moveFocusToLastItem:[`end`],primaryAction:[`enter`],renameItem:[`f2`],abortRenameItem:[`escape`],toggleSelectItem:[`control+ `],abortSearch:[`escape`,`enter`],startSearch:[],selectAll:[`control+a`],startProgrammaticDnd:[`control+shift+d`],completeProgrammaticDnd:[`enter`],abortProgrammaticDnd:[`escape`]},lx=function(){return lx=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},lx.apply(this,arguments)},ux=function(){var e=nx();return(0,G.useMemo)(function(){return e.keyboardBindings?lx(lx({},cx),e.keyboardBindings):cx},[e.keyboardBindings])},dx=[`input`,`textarea`],fx=function(e,t,n,r){r===void 0&&(r=!1);var i=(0,G.useRef)([]),a=ux(),o=Tb(),s=(0,G.useMemo)(function(){return a[e].map(function(e){return e.split(`+`)})},[e,a]);ax(wb(),`keydown`,function(e){if(n!==!1&&!((dx.includes(e.target.tagName?.toLowerCase())||e.target.isContentEditable)&&!r)&&!i.current.includes(e.key)){i.current.push(e.key);var t=i.current.map(function(e){return e.toLowerCase()});s.map(function(e){return t.map(function(t){return e.includes(t.toLowerCase())}).reduce(function(e,t){return e&&t},!0)}).reduce(function(e,t){return e||t},!1)&&(i.current.length>1||!/^[a-zA-Z\s]$/.test(e.key))&&e.preventDefault()}}),ax(wb(),`keyup`,function(e){if(n!==!1){var r=i.current.map(function(e){return e.toLowerCase()});s.map(function(e){return e.map(function(e){return r.includes(e.toLowerCase())}).reduce(function(e,t){return e&&t},!0)}).reduce(function(e,t){return e||t},!1)&&o(function(){return t(e)}),i.current=i.current.filter(function(t){return t!==e.key})}})},px=function(){var e=zx().treeId;return nx().viewState[e]??{}},mx=function(e){return nx().linearItems[e]},hx=function(){var e=zx().treeId,t=nx(),n=t.onFocusItem,r=t.items,i=mx(e),a=px();return Db(function(t){var o=t(i.findIndex(function(e){return e.item===a.focusedItem})??0,i),s=r[i[Math.max(0,Math.min(i.length-1,o))].item];return n?.(s,e),s})},gx=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},_x=function(e){var t=(0,G.useRef)({target:e,previous:void 0});return t.current.target!==e&&(t.current.previous=t.current.target,t.current.target=e),t.current.previous},vx=function(e){var t=px(),n=zx().treeId,r=mx(n),i=nx().onSelectItems,a=_x(t.focusedItem);return(0,G.useCallback)(function(o,s){s===void 0&&(s=!1);var c=o.index,l=function(e,t){var r=gx(gx([],s?[]:e,!0),t.filter(function(t){return s||!e.includes(t)}),!0);i?.(r,n)};if(t&&t.selectedItems&&t.selectedItems.length>0){var u=t.focusedItem===c?a:t.focusedItem,d=e===`last-focus`?r.findIndex(function(e){return u===e.item}):r.findIndex(function(e){return t.selectedItems?.includes(e.item)}),f=r.findIndex(function(e){return e.item===c});if(d<f){var p=r.slice(d,f+1).map(function(e){return e.item});l(t.selectedItems??[],p)}else{var p=r.slice(f,d+1).map(function(e){return e.item});l(t.selectedItems??[],p)}}else i?.([c],n)},[t,i,n,e,r,a])},yx=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},bx=function(){var e=nx(),t=zx(),n=t.treeId,r=t.setRenamingItem,i=t.setSearch,a=t.renamingItem,o=mx(n),s=Pb(),c=px(),l=hx(),u=vx(`first-selected`),d=e.activeTreeId===n,f=!!a,p=!e.disableArrowKeys&&d&&!f;sx(`arrowdown`,function(e){if(e.preventDefault(),s.isProgrammaticallyDragging)s.programmaticDragDown();else{var t=l(function(e){return e+1});e.shiftKey&&u(t)}},p),sx(`arrowup`,function(e){if(e.preventDefault(),s.isProgrammaticallyDragging)s.programmaticDragUp();else{var t=l(function(e){return e-1});e.shiftKey&&u(t)}},p),fx(`moveFocusToFirstItem`,function(e){e.preventDefault(),l(function(){return 0})},d&&!s.isProgrammaticallyDragging&&!f),fx(`moveFocusToLastItem`,function(e){e.preventDefault(),l(function(e,t){return t.length-1})},d&&!s.isProgrammaticallyDragging&&!f),sx(`arrowright`,function(t){t.preventDefault(),l(function(t,r){var i,a=e.items[r[t].item];if(a.isFolder){if(c.expandedItems?.includes(a.index))return t+1;(i=e.onExpandItem)==null||i.call(e,a,n)}return t})},p&&!s.isProgrammaticallyDragging),sx(`arrowleft`,function(t){t.preventDefault(),l(function(t,r){var i,a=e.items[r[t].item],o=r[t].depth;if(a.isFolder&&c.expandedItems?.includes(a.index))(i=e.onCollapseItem)==null||i.call(e,a,n);else if(o>0){for(var s=t;r[s].depth!==o-1;--s);return s}return t})},p&&!s.isProgrammaticallyDragging),fx(`primaryAction`,function(t){var r,i;t.preventDefault(),c.focusedItem!==void 0&&((r=e.onSelectItems)==null||r.call(e,[c.focusedItem],n),(i=e.onPrimaryAction)==null||i.call(e,e.items[c.focusedItem],n))},d&&!s.isProgrammaticallyDragging&&!f),fx(`toggleSelectItem`,function(t){var r,i;t.preventDefault(),t.stopPropagation(),c.focusedItem!==void 0&&(c.selectedItems&&c.selectedItems.includes(c.focusedItem)?(r=e.onSelectItems)==null||r.call(e,c.selectedItems.filter(function(e){return e!==c.focusedItem}),n):(i=e.onSelectItems)==null||i.call(e,yx(yx([],c.selectedItems??[],!0),[c.focusedItem],!1),n))},d&&!s.isProgrammaticallyDragging&&!f),fx(`selectAll`,function(t){var r;t.preventDefault(),(r=e.onSelectItems)==null||r.call(e,o.map(function(e){return e.item}),n)},d&&!s.isProgrammaticallyDragging&&!f),fx(`renameItem`,function(t){var i;if(c.focusedItem!==void 0){t.preventDefault();var a=e.items[c.focusedItem];a.canRename!==!1&&((i=e.onStartRenamingItem)==null||i.call(e,a,n),r(a.index))}},d&&(e.canRename??!0)&&!f),fx(`startSearch`,function(e){var t,n;e.preventDefault(),i(``),(n=(t=document.querySelector(`[data-rct-search-input="true"]`))?.focus)==null||n.call(t)},d&&!s.isProgrammaticallyDragging&&!f),fx(`startProgrammaticDnd`,function(e){e.preventDefault(),s.startProgrammaticDrag()},d&&!f),fx(`completeProgrammaticDnd`,function(e){e.preventDefault(),s.completeProgrammaticDrag()},d&&s.isProgrammaticallyDragging&&!f),fx(`abortProgrammaticDnd`,function(e){e.preventDefault(),s.abortProgrammaticDrag()},d&&s.isProgrammaticallyDragging&&!f)},xx=function(e,t,n){return n.toLowerCase().includes(e.toLowerCase())},Sx=function(){var e=nx(),t=e.doesSearchMatchItem,n=e.items,r=e.getItemTitle,i=e.onFocusItem,a=zx(),o=a.search,s=a.treeId,c=mx(s),l=Tb();xb(function(){o&&o.length>0&&l(function(){var e=c.find(function(e){var i=e.item;return(t??xx)(o,n[i],r(n[i]))});e&&i?.(n[e.item],s)})},[t,r,c,n,i,o,s,l],[o])},Cx=function(){return Cx=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Cx.apply(this,arguments)},wx=function(e){var t=e.containerRef,n=zx(),r=n.search,i=n.setSearch,a=n.treeId,o=n.renderers,s=n.renamingItem,c=nx();px();var l=c.activeTreeId===a,u=Tb();Sx();var d=function(){var e;if(i(null),c.autoFocus??!0){var t=wb()?.querySelector(`[data-rct-tree="${a}"] [data-rct-item-focus="true"]`);(e=t?.focus)==null||e.call(t)}};return fx(`abortSearch`,function(){u(function(){d()})},l&&r!==null,!0),ax(t,`keydown`,function(e){var t=e.key.charCodeAt(0);(c.canSearch??!0)&&(c.canSearchByStartingTyping??!0)&&l&&r===null&&!s&&!e.ctrlKey&&!e.shiftKey&&!e.altKey&&!e.metaKey&&(t>=48&&t<=57||t>=97&&t<=122)&&i(``)}),!(c.canSearch??!0)||r===null?null:o.renderSearchInput({inputProps:Cx({value:r,onChange:function(e){return i(e.target.value)},onBlur:function(){d()},ref:function(e){var t;(t=e?.focus)==null||t.call(e)},"aria-label":`Search for items`},{"data-rct-search-input":`true`})})},Tx={introduction:`
|
|
780
|
+
`}];async function Sy(e){let{database:t,table:n,fileData:r,instanceClient:i}=e,{data:a}=await i.post(`/`,{operation:`csv_data_load`,database:t,action:`insert`,table:n,data:r});return a}async function Cy({jobId:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`get_job`,id:e});return n?.[0]}var wy=e=>new Promise(t=>setTimeout(t,e));async function Ty({jobId:e,instanceClient:t,pollIntervalMs:n=1500,timeoutMs:r=600*1e3}){let i=Date.now()+r,a=0;for(;;){let r;try{r=await Cy({jobId:e,instanceClient:t}),a=0}catch(e){if(a+=1,a>=5)throw e}let o=r?.status?.toUpperCase();if(o===`ERROR`)throw Error(r?.message||`The import job failed.`);if(o===`COMPLETE`&&r)return r;if(Date.now()>=i)throw Error(`Timed out waiting for the import job to finish. Check the table in a few minutes.`);await wy(n)}}function Ey(e){let t=e?.response?.data;return typeof t==`string`?t:t?.error||t?.message||e?.message||String(e)}async function Dy({database:e,table:t,tableExists:n,replicated:r,source:i,instanceClient:a}){if(!n)try{await a.post(`/`,{operation:`create_table`,database:e,table:t,primary_key:`id`,replicated:r})}catch(e){if(!/already exists/i.test(Ey(e)))throw e}switch(i.kind){case`csv-data`:{let{job_id:n}=await Sy({database:e,table:t,fileData:i.data,instanceClient:a});return{message:(await Ty({jobId:n,instanceClient:a})).message||`CSV data imported successfully`}}case`csv-url`:{let{data:n}=await a.post(`/`,{operation:`csv_url_load`,csv_url:i.url,database:e,table:t,action:`insert`});return{message:(await Ty({jobId:n.job_id,instanceClient:a})).message||`CSV data imported successfully`}}case`json-records`:{let n=await Mv({databaseName:e,tableName:t,records:i.records,instanceClient:a}),r=n.inserted_hashes?.length??0,o=n.skipped_hashes?.length??0;return{message:o?`Inserted ${r} records (${o} skipped)`:`Inserted ${r} records`}}}}function Oy(){return I({mutationFn:Dy})}var ky=`__random__`,Ay=10*1024*1024,jy=b({method:j([`sample`,`file`,`url`]),database:qv,table:Jv,datasetId:S(),rowCount:S(),fileData:S(),fileName:S(),url:S()}).superRefine((e,t)=>{if(e.method===`sample`&&!e.datasetId&&t.addIssue({code:`custom`,path:[`datasetId`],message:`Please choose a sample dataset.`}),e.method===`sample`&&e.datasetId===`__random__`){let n=Number(e.rowCount);(!Number.isInteger(n)||n<1||n>1e3)&&t.addIssue({code:`custom`,path:[`rowCount`],message:`Enter a row count between 1 and 1000.`})}if(e.method===`file`&&!e.fileData&&t.addIssue({code:`custom`,path:[`fileData`],message:`Please choose a CSV or JSON file.`}),e.method===`url`){let n=!1;try{n=/^https?:$/.test(new URL(e.url).protocol)}catch{}n||t.addIssue({code:`custom`,path:[`url`],message:`Please enter a valid http(s) URL to a CSV file.`})}}),My=[{value:`sample`,title:`Sample Datasets`,description:`Choose from pre-loaded sample datasets to get started quickly`,Icon:Ar},{value:`file`,title:`Import from File`,description:`Upload a CSV or JSON file`,Icon:rr},{value:`url`,title:`Load from URL`,description:`Import a CSV file from a URL the instance can reach`,Icon:lr}];function Ny({isModalOpen:e,setIsModalOpen:t,instanceDatabaseMap:n,databaseName:r,tableName:i,onImported:a}){let o=K(),{mutate:s,isPending:c}=Oy(),[l,u]=(0,G.useState)(null),d=bt({resolver:_t(jy),defaultValues:{method:i?`file`:`sample`,database:r||``,table:i||``,datasetId:``,rowCount:`25`,fileData:``,fileName:``,url:``}}),{reset:f}=d;(0,G.useEffect)(()=>{e&&(f({method:i?`file`:`sample`,database:r||``,table:i||``,datasetId:``,rowCount:`25`,fileData:``,fileName:``,url:``}),u(null))},[e,r,i,f]);let p=d.watch(`method`),m=d.watch(`datasetId`),h=d.watch(`database`),g=d.watch(`table`),_=xy.find(e=>e.id===m),v=n?.[h||`data`]?.[g],y=!!v,b=!!n&&!!g&&!y,x=vy(v?.attributes,n?.[h||`data`]),S=x.length>0,C=m===ky,w=e=>{let t=e.target.files?.[0];if(!t)return;if(t.size>10485760){let n=(t.size/(1024*1024)).toFixed(1),r=Ay/(1024*1024);d.setError(`fileData`,{message:`That file is ${n} MB — uploads are limited to ${r} MB. For larger files, host the CSV and use Load from URL.`}),e.target.value=``;return}let n=new FileReader;n.onload=e=>{let n=e.target?.result;typeof n==`string`&&(u(t.name),d.setValue(`fileData`,n,{shouldValidate:!0}),d.setValue(`fileName`,t.name))},n.onerror=()=>{H.error(`Failed to read the selected file.`)},n.readAsText(t)},T=e=>{d.setValue(`datasetId`,e,{shouldValidate:!0});let t=xy.find(t=>t.id===e);t&&d.setValue(`table`,t.table,{shouldValidate:!0})},E=()=>{t(!1)},D=e=>{let t=e.database||`data`,r=e.table,i;if(e.method===`sample`&&e.datasetId===`__random__`){let a=vy(n?.[t]?.[r]?.attributes,n?.[t]);if(a.length===0){d.setError(`datasetId`,{message:`Random data needs an existing table with columns — pick a table that has some.`});return}i={kind:`json-records`,records:yy(a,Number(e.rowCount))}}else if(e.method===`sample`){let t=xy.find(t=>t.id===e.datasetId);if(!t)return;i={kind:`csv-data`,data:t.csv}}else if(e.method===`file`)if(e.fileName.toLowerCase().endsWith(`.json`))try{i={kind:`json-records`,records:by(e.fileData)}}catch(e){d.setError(`fileData`,{message:e.message});return}else i={kind:`csv-data`,data:e.fileData};else i={kind:`csv-url`,url:e.url};s({database:t,table:r,tableExists:y,replicated:o.entityType===`cluster`,source:i,...o},{onSuccess:({message:e})=>{H.success(e),E(),a(t,r)}})};return(0,W.jsx)(qt,{open:e,onOpenChange:e=>{!e&&!c&&E()},children:(0,W.jsxs)(tn,{className:`sm:max-w-[550px]`,children:[(0,W.jsxs)(Zt,{children:[(0,W.jsx)(Jt,{children:`Import Data`}),(0,W.jsx)(Ht,{children:`Choose how you want to import data into your database.`})]}),(0,W.jsx)(q,{...d,children:(0,W.jsxs)(`form`,{id:`instance-import-data-form`,name:`instance-import-data-form`,onSubmit:d.handleSubmit(D),className:`grid gap-4`,children:[(0,W.jsx)(Y,{control:d.control,name:`method`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Select Import Method`}),(0,W.jsx)(J,{children:(0,W.jsx)(x_,{value:e.value,onValueChange:e.onChange,className:`gap-3`,children:My.map(({value:e,title:t,description:n,Icon:r})=>(0,W.jsxs)(Z,{htmlFor:`import-method-${e}`,className:`flex items-start gap-3 rounded-lg border border-border p-4 cursor-pointer font-normal hover:bg-accent/50 has-[[data-state=checked]]:border-primary`,children:[(0,W.jsx)(S_,{value:e,id:`import-method-${e}`,className:`mt-1`}),(0,W.jsxs)(`div`,{className:`grid gap-1`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2 font-medium`,children:[(0,W.jsx)(r,{className:`size-4`}),t]}),(0,W.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:n})]})]},e))})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Om,{}),p===`sample`&&(0,W.jsx)(Y,{control:d.control,name:`datasetId`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Choose a Sample Dataset`}),(0,W.jsx)(J,{children:(0,W.jsxs)(Yt,{name:e.name,value:e.value,onValueChange:T,children:[(0,W.jsx)($t,{className:`w-full`,children:(0,W.jsx)(Vt,{placeholder:`Select a dataset...`})}),(0,W.jsxs)(Qt,{children:[(0,W.jsx)(Kt,{children:xy.map(e=>(0,W.jsx)(zt,{value:e.id,children:e.name},e.id))}),S&&(0,W.jsxs)(Kt,{children:[(0,W.jsx)(Xt,{children:`This table`}),(0,W.jsx)(zt,{value:`__random__`,children:`Random Data`})]})]})]})}),_&&(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:_.description}),C&&(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Generates rows for "`,g,`" based on its `,x.length,` `,`column`,x.length===1?``:`s`,` and their data types.`]}),(0,W.jsx)(Q,{})]})}),p===`sample`&&C&&(0,W.jsx)(Y,{control:d.control,name:`rowCount`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Number of Rows`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`number`,min:1,max:1e3,inputMode:`numeric`,autoComplete:`off`})}),(0,W.jsx)(Q,{})]})}),p===`file`&&(0,W.jsx)(Y,{control:d.control,name:`fileData`,render:({field:e})=>(0,W.jsxs)(X,{className:`relative`,children:[(0,W.jsx)(Z,{htmlFor:`import-data-file`,className:`flex flex-col items-center justify-center w-full h-40 border-2 border-border border-dashed rounded-lg cursor-pointer bg-muted dark:bg-grey-700 hover:bg-muted/80 dark:hover:bg-grey-700/80`,children:(0,W.jsx)(J,{children:(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex flex-col items-center justify-center pt-5 pb-6`,children:[(0,W.jsx)(Jn,{className:`text-muted-foreground`,size:40}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:l??(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`font-semibold`,children:`Click to upload`}),` `,`or drag and drop a CSV or JSON file`]})})]}),(0,W.jsx)($,{id:`import-data-file`,type:`file`,className:`opacity-0 w-full h-full absolute left-0 top-0 cursor-pointer`,accept:`.csv,.json,text/csv,application/json`,name:e.name,ref:e.ref,onBlur:e.onBlur,disabled:e.disabled,onChange:w})]})})}),(0,W.jsx)(Q,{})]})}),p===`url`&&(0,W.jsx)(Y,{control:d.control,name:`url`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`CSV URL`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,inputMode:`url`,placeholder:`https://example.com/data.csv`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`The URL is fetched by the Harper instance, so it must be reachable from there.`}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,W.jsx)(Y,{control:d.control,name:`database`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Database`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,placeholder:`data`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:d.control,name:`table`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Table`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,W.jsx)(Q,{})]})})]}),b&&(0,W.jsxs)(xh,{children:[(0,W.jsx)(pr,{}),(0,W.jsx)(Sh,{children:`New table`}),(0,W.jsxs)(Ch,{children:[`The table "`,g,`" doesn't exist yet — it will be created with primary key "id" before the data is imported.`]})]}),(0,W.jsxs)(Ut,{children:[(0,W.jsx)(F,{type:`button`,variant:`ghost`,onClick:E,disabled:c,children:`Cancel`}),(0,W.jsxs)(F,{type:`submit`,variant:`submit`,disabled:c,children:[c?(0,W.jsx)(yr,{className:`animate-spin`}):(0,W.jsx)(Jn,{}),c?`Importing...`:`Import Data`]})]})]})})]})})}function Py({instanceDatabaseMap:e}){let t=L({strict:!1}),n=Oe(),r=ne(),i=ie(),a=K(),o=(0,G.useCallback)((e,r)=>{n({to:bv({...t,databaseName:e,tableName:r})})},[n,t]),{value:s}=$v(`ShowCreateTable`,!1),{value:c}=$v(`ShowAddTableRecords`,!1),{value:l}=$v(`ShowImportData`,!1),u=c?e?.[c.databaseName]?.[c.tableName]:void 0;(0,G.useEffect)(()=>{c&&!u&&(H.error(`Couldn't open "${c.tableName}" — it may have just been removed. Try refreshing.`),ey(`ShowAddTableRecords`,!1))},[c,u]);let d=(0,G.useCallback)(async(e,t)=>{await i.invalidateQueries({queryKey:[a.entityId,`describe_all`],refetchType:`all`}),o(e,t),await r.invalidate()},[i,a.entityId,o,r]),f=(0,G.useCallback)(({databaseName:e,tableName:n})=>{t.databaseName===e&&t.tableName===n&&o(e,void 0)},[t.databaseName,t.tableName,o]),p=(0,G.useCallback)(({databaseName:e})=>{t.databaseName===e&&o(void 0,void 0)},[t.databaseName,o]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Xv,{isModalOpen:!!s,setIsModalOpen:e=>ey(`ShowCreateTable`,e?s||{}:!1),databaseName:s?s.databaseName:void 0,onCreated:o},s?`create-${s.databaseName??``}`:`create-closed`),c&&u&&(0,W.jsx)(Hv,{instanceTable:u,databaseTables:e?.[c.databaseName],isModalOpen:!0,setIsModalOpen:e=>{e||ey(`ShowAddTableRecords`,!1)},refreshTable:()=>void i.invalidateQueries({queryKey:[a.entityId,c.databaseName,c.tableName]})},`add-${c.databaseName}/${c.tableName}`),(0,W.jsx)(Ny,{isModalOpen:!!l,setIsModalOpen:e=>ey(`ShowImportData`,e?l||{}:!1),instanceDatabaseMap:e,databaseName:l?l.databaseName:void 0,tableName:l?l.tableName:void 0,onImported:d},l?`import-${l.databaseName??``}/${l.tableName??``}`:`import-closed`),(0,W.jsx)(oy,{onDeleted:f}),(0,W.jsx)(ry,{onDeleted:p})]})}function Fy(e){e.stopPropagation()}var Iy=3,Ly=`text-blue dark:text-blue-300 border-blue/40 dark:border-blue-300/40 [a&]:hover:bg-blue/10 [a&]:hover:underline`;function Ry(e,t){return(Array.isArray(e)?e:e==null?[]:[e]).map(e=>typeof e==`object`&&e?e[t.relatedPrimaryKey]:e).filter(e=>e!=null)}function zy({value:e,record:t,primaryKey:n,info:r}){let i=L({strict:!1}),a=n?t?.[n]:void 0,o=Ry(e,r);!o.length&&r.foreignKeyAttribute&&t&&(o=Ry(t[r.foreignKeyAttribute],r));let s=bv({...i,tableName:r.relatedTableName}),c=r.reverseForeignKey&&a!=null?{filters:{[r.reverseForeignKey]:String(a)}}:void 0;if(!o.length)return c?(0,W.jsx)(oo,{variant:`outline`,className:Ly,asChild:!0,children:(0,W.jsxs)(V,{to:s,search:c,onClick:Fy,title:`${r.relatedTableName} where ${r.reverseForeignKey} = ${String(a)}`,children:[r.relatedTableName,` →`]})}):(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`—`});let l=o.length-Iy;return(0,W.jsxs)(`span`,{className:`inline-flex gap-1 items-center`,children:[o.slice(0,Iy).map((e,t)=>(0,W.jsx)(oo,{variant:`outline`,className:Ly,asChild:!0,children:(0,W.jsx)(V,{to:s,search:{filters:{[r.relatedPrimaryKey]:String(e)}},onClick:Fy,title:`${r.relatedTableName} where ${r.relatedPrimaryKey} = ${String(e)}`,children:String(e)})},t)),l>0&&(c?(0,W.jsxs)(V,{to:s,search:c,onClick:Fy,className:`text-blue dark:text-blue-300 hover:underline text-xs whitespace-nowrap`,title:`${r.relatedTableName} where ${r.reverseForeignKey} = ${String(a)}`,children:[`+`,l,` more`]}):(0,W.jsxs)(`span`,{className:`text-muted-foreground text-xs whitespace-nowrap`,children:[`+`,l,` more`]}))]})}function By(e,t={}){if(!e)return{dataTableColumns:[],primaryKey:``};let n=e.primary_key??e.hash_attribute??``,{attributes:r}=e,i=[],a=[],o=[],s=[],c=e=>t=>(0,G.createElement)(zy,{value:t.getValue(),record:t.row.original,primaryKey:n,info:e});for(let e=r.length-1;e>=0;e--){let{attribute:n,type:l,is_primary_key:u,indexed:d}=r[e],f=t[n],p={header:n,accessorKey:n,enableSorting:!!(u||d),enableColumnFilter:!!(u||d||f),size:Hy(l),cell:f?c(f):Vy,meta:f?{relationshipInfo:f}:void 0};u?i.push(p):n===`__createdtime__`||n===`__updatedtime__`?s.push(p):p.enableSorting?a.push(p):o.push(p)}let l=new Set(r.map(e=>e.attribute));for(let[e,n]of Object.entries(t))l.has(e)||o.push({header:e,accessorKey:e,enableSorting:!1,enableColumnFilter:!0,size:Hy(`String`),cell:c(n),meta:{relationshipInfo:n}});return{dataTableColumns:[...i,...a,...o,...s],primaryKey:n}}function Vy(e){let t=e.getValue();return t==null?null:typeof t==`object`?JSON.stringify(t):String(t)}function Hy(e){switch(e){case`Id`:case`ID`:return 220;case`Boolean`:return 90;case`Int`:case`Long`:case`Float`:case`BigInt`:return 120;case`Date`:return 190;default:return 200}}var Uy=[`1`,`bet`,`k`,`ok`,`si`,`tru`,`true`,`yes`,`yup`];function Wy(e){let t=e.toLowerCase().trim();return Uy.includes(t)}function Gy(e){return!isNaN(e)&&!isNaN(parseFloat(e))}function Ky(e){if(e.startsWith(`0.`)&&Gy(e))return!0;let t=e.toUpperCase().includes(`E`);return!(e!==`0`&&e.startsWith(`0`))&&!t&&Gy(e)}var qy={true:!0,TRUE:!0,false:!1,FALSE:!1,undefined:null,null:null,NULL:null,NaN:NaN},Jy=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/;function Yy(e){return e==null||e===``||typeof e!=`string`?e:qy[e]===void 0?Ky(e)?Number(e):Jy.test(e)?new Date(e):e:qy[e]}function Xy(e){let{enabled:t,entityId:n,databaseName:r,tableName:i,conditions:a,sort:o,pageIndex:s,pageSize:c,onlyIfCached:l,getAttributes:u}=e;return B({enabled:t&&!!a,queryKey:[n,r,i,`search_by_conditions`,a,o.attribute||`default`,o.descending||!1,s||0,c||0,l,u??null],staleTime:6e4,gcTime:5e3,retry:!1,queryFn:()=>Zy(e)})}function Zy({instanceClient:e,databaseName:t,tableName:n,conditions:r,sort:i,pageIndex:a,pageSize:o,onlyIfCached:s,getAttributes:c,headers:l}){return e.post(`/`,{operation:`search_by_conditions`,get_attributes:c??[`*`],database:t,table:n,conditions:r,sort:i.attribute.length?i:void 0,offset:a*o,limit:o,onlyIfCached:s,noCacheStore:s},{timeout:0,headers:l})}function Qy(e,t,n,r){return t.split(/ & /).map(t=>$y(e,t,n,r))}function $y(e,t,n,r){if(t.startsWith(e)&&(t=t.substring(e.length)),r)return eb(e,t,r);let{comparator:i,value:a}=rb(t);switch(n?.type){case`ID`:case`String`:return{search_attribute:e,search_type:i,search_value:a};case`Int`:case`BigInt`:case`Long`:case`Float`:{let t=n.type.includes(`Int`)?parseInt(a,10):parseFloat(a);if(isNaN(t))throw Error(`${a} does not appear to be a valid number.`);return{search_attribute:e,search_type:i,search_value:t}}case`Date`:return{search_attribute:e,search_type:i,search_value:new Date(a).toISOString()};case`Boolean`:return{search_attribute:e,search_type:i,search_value:Wy(a)};case`Blob`:case`Bytes`:return{search_attribute:e,search_type:i,search_value:a};default:return{search_attribute:e,search_type:i,search_value:Yy(a)}}}function eb(e,t,n){let r=t.match(/^\s*\.([^.\s]+)\s*(.*)$/);if(!r)throw Error(`Filter ${e} on a property of ${n.relatedTableName}, e.g. ".${n.relatedPrimaryKey} value".`);let[,i,a]=r,o=$y(i,a,n.relatedAttributes.find(e=>e.attribute===i));return i===n.relatedPrimaryKey&&n.foreignKeyAttribute?{...o,search_attribute:n.foreignKeyAttribute}:{...o,search_attribute:[e,i]}}var tb={"=== ":`equals`,"== ":`eq`,"equals ":`equals`,"equal ":`equals`,"eq ":`eq`,"!== ":`not_equal`,"!= ":`ne`,"notequals ":`not_equal`,"notequal ":`not_equal`,"ne ":`ne`},nb={">":`greater_than`,g:`greater_than`,gt:`greater_than`,"=gt":`greater_than`,greater:`greater_than`,greaterthan:`greater_than`,">=":`greater_than_equal`,ge:`greater_than_equal`,"=ge":`greater_than_equal`,gte:`greater_than_equal`,greaterorequal:`greater_than_equal`,greaterthanequal:`greater_than_equal`,greaterthanorequal:`greater_than_equal`,"<":`less_than`,l:`less_than`,lt:`less_than`,"=lt":`less_than`,less:`less_than`,lessthan:`less_than`,"<=":`less_than_equal`,lte:`less_than_equal`,le:`less_than_equal`,"=le":`less_than_equal`,lessorequal:`less_than_equal`,lessthanequal:`less_than_equal`,lessthanorequal:`less_than_equal`};function rb(e){let t=e.toLowerCase(),n=t.match(/^ *([>=<]+[a-z]*[_ ]*|[a-z]+[>=<]+[_ ]*|[a-z]+[_ ]+)([\d._:tz-]+) *$/);if(n){let e=n[1].replace(/[_ ]+/g,``).replace(/^([a-z]+)=$/g,`$1`),t=n[2],r=nb[e];if(r)return{comparator:r,value:t}}for(let n in tb)if(t.startsWith(n))return{comparator:tb[n],value:e.slice(n.length)};return t.endsWith(`*`)?{comparator:`starts_with`,value:e.slice(0,-1)}:{comparator:`equals`,value:e}}function ib(){let e=K(),[t,n]=(0,G.useState)(!1);return{exportCsv:(0,G.useCallback)(async({databaseName:t,tableName:r,primaryKey:i,sort:a,conditions:o})=>{if(!i){H.error(`Cannot export "${r}": no primary key found.`);return}let s=H.loading(`Loading CSV...`);n(!0);try{let n={...e,databaseName:t,tableName:r,sort:a??{attribute:i,descending:!1},pageIndex:0,pageSize:1e6,onlyIfCached:!1,headers:{Accept:`text/csv`}},c=await(o?.length?Zy({...n,conditions:o}):rp({...n,searchAttribute:i}));H.loading(`Preparing CSV...`,{id:s});let l=c.data,u=new Blob([l],{type:`text/csv`}),d=URL.createObjectURL(u),f=document.createElement(`a`);f.href=d,f.setAttribute(`download`,`${t}.${r}.${new Date().toISOString()}.csv`),f.click(),setTimeout(()=>URL.revokeObjectURL(d),1e3),H.success(`CSV Exported!`,{id:s})}catch(e){H.error(e instanceof Error?e.message:`Failed to export CSV`,{id:s})}finally{n(!1)}},[e]),isExporting:t}}function ab({databaseName:e,tableName:t,instanceDatabaseMap:n}){let{clusterId:r,instanceId:i}=L({strict:!1}),a=ms(),o=hs(i??r,e,t,`insert`),{exportCsv:s}=ib(),c=Object.keys(n?.[e]||{}).length<=1;return(0,W.jsxs)(W.Fragment,{children:[o&&(0,W.jsxs)($o,{onSelect:()=>ey(`ShowAddTableRecords`,{databaseName:e,tableName:t}),children:[(0,W.jsx)(Nr,{}),`Add New Record(s)`]}),o&&(0,W.jsxs)($o,{onSelect:()=>ey(`ShowImportData`,{databaseName:e,tableName:t}),children:[(0,W.jsx)(Jn,{}),`Import Data`]}),(0,W.jsxs)($o,{onSelect:()=>{let{primaryKey:r}=By(n?.[e]?.[t]);s({databaseName:e,tableName:t,primaryKey:r,conditions:null})},children:[(0,W.jsx)(qn,{}),`Export CSV`]}),a&&!c&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ts,{}),(0,W.jsxs)($o,{variant:`destructive`,onSelect:()=>ey(`ShowDeleteTable`,{databaseName:e,tableName:t}),children:[(0,W.jsx)(ei,{}),`Drop Table`]})]})]})}function ob({databaseName:e,instanceDatabaseMap:t,children:n}){let[r,i]=(0,G.useState)(void 0),[a,o]=(0,G.useState)(``);return(0,W.jsxs)(Xo,{modal:!1,children:[(0,W.jsx)(Zo,{asChild:!0,children:(0,W.jsx)(`div`,{onContextMenu:(0,G.useCallback)(e=>{let t=e.target.closest(`[data-table-name]`)?.getAttribute(`data-table-name`);if(!t){i(void 0),e.preventDefault();return}i(t),o(`${e.clientX},${e.clientY}`)},[]),children:n})}),r&&(0,W.jsx)(Qo,{className:`min-w-44`,onCloseAutoFocus:e=>e.preventDefault(),children:(0,W.jsx)(ab,{databaseName:e,tableName:r,instanceDatabaseMap:t})},a)]})}async function sb({databaseName:e,tableName:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`describe_table`,database:e,table:t,exact_count:!1});return r}function cb(e){return B({queryKey:[e.entityId,e.databaseName,e.tableName,`describe_table`],queryFn:()=>sb(e),staleTime:6e4,gcTime:5e3,enabled:!!e.databaseName&&!!e.tableName,retry:!1})}function lb(e,t,n){if(e==null||!Number.isFinite(e))return`—`;let r=ub(e,t);return n?`${r}${n}`:r}function ub(e,t){switch(t){case`percent`:return`${(e*100).toFixed(1)}%`;case`ms`:return`${e.toFixed(1)} ms`;case`count`:return`${e.toFixed(0)}`;case`count-si`:{let t=Math.abs(e);if(t<1e3)return`${e}`;let n=e<0?`-`:``,r=e=>{if(e>=10)return`${Math.round(e)}`;let t=e.toFixed(1);return t.endsWith(`.0`)?t.slice(0,-2):t};return t<1e6?`${n}${r(t/1e3)}k`:t<1e9?`${n}${r(t/1e6)}M`:`${n}${r(t/1e9)}B`}case`cores`:return`${e.toFixed(2)} cores`;case`bytes-si`:case`bytes-iec`:{let n=t===`bytes-iec`?1024:1e3,r=t===`bytes-iec`?[`B`,`KiB`,`MiB`,`GiB`,`TiB`]:[`B`,`KB`,`MB`,`GB`,`TB`],i=e,a=0;for(;Math.abs(i)>=n&&a<r.length-1;)i/=n,a++;let o=+(i!==0&&Math.abs(i)<10);return`${i.toFixed(o)} ${r[a]}`}default:return`${e}`}}var db=e=>lb(e,`bytes-si`);function fb({label:e,value:t}){return(0,W.jsxs)(`div`,{className:`rounded-md border border-border dark:border-grey-700 p-4`,children:[(0,W.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:e}),(0,W.jsx)(`div`,{className:`text-2xl font-medium`,children:t})]})}function pb({instanceDatabaseMap:e,databaseName:t}){let n=L({strict:!1}),r=Oe(),i=K(),a=ms(),o=e?.[t]??{},s=Object.keys(o).sort(),c=se({queries:s.map(e=>cb({...i,databaseName:t,tableName:e}))}),l={};s.forEach((e,t)=>{let n=c[t]?.data;n&&(l[e]={recordCount:n.record_count,estimated:!!n.estimated_record_range})});let u=c.every(e=>!e.isPending),d=s.some(e=>l[e]?.estimated),f=s.length?o[s[0]]:void 0,p=f?.db_size??0,m=f?.db_audit_size??0,h=u?s.reduce((e,t)=>e+(l[t]?.recordCount??0),0):void 0,g=(0,G.useCallback)(e=>{r({to:bv({...n,databaseName:t,tableName:e})})},[r,n,t]);return(0,W.jsxs)(`div`,{className:`pt-15 pb-4 pr-4`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col md:flex-row items-start md:items-center justify-between gap-3 pb-6`,children:[(0,W.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:(0,W.jsx)(`h1`,{className:`text-3xl truncate`,children:t})}),a&&(0,W.jsxs)(`div`,{className:`flex space-x-2 shrink-0`,children:[(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:()=>ey(`ShowCreateTable`,{databaseName:t}),children:[(0,W.jsx)(Nr,{}),(0,W.jsx)(`span`,{children:`Create a Table`})]}),(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:()=>ey(`ShowImportData`,{databaseName:t}),children:[(0,W.jsx)(Jn,{}),(0,W.jsx)(`span`,{children:`Import Data`})]}),(0,W.jsxs)(li,{children:[(0,W.jsx)(ui,{asChild:!0,children:(0,W.jsx)(F,{variant:`ghost`,size:`icon`,children:(0,W.jsx)($n,{"aria-label":`Database options`})})}),(0,W.jsx)(di,{side:`bottom`,align:`end`,children:(0,W.jsxs)(fi,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>ey(`ShowDeleteDatabase`,{databaseName:t}),children:[(0,W.jsx)($r,{}),`Drop Database`]})})]})]})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3 pb-6`,children:[(0,W.jsx)(fb,{label:`Tables`,value:s.length.toLocaleString()}),(0,W.jsx)(fb,{label:`Records`,value:h===void 0?`…`:`${d?`~`:``}${h.toLocaleString()}`}),(0,W.jsx)(fb,{label:`Size`,value:db(p)}),(0,W.jsx)(fb,{label:`Audit Size`,value:db(m)})]}),s.length===0?(0,W.jsxs)(`div`,{className:`rounded-md border border-border dark:border-grey-700 p-8 text-center text-muted-foreground`,children:[(0,W.jsx)(`p`,{className:`pb-2`,children:`This database has no tables yet.`}),a&&(0,W.jsx)(`p`,{children:`Use “Create a Table” above, or right-click the database in the sidebar.`})]}):(0,W.jsx)(ob,{databaseName:t,instanceDatabaseMap:e,children:(0,W.jsx)(`div`,{className:`rounded-md border border-border dark:border-grey-700 overflow-x-auto`,children:(0,W.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{className:`text-left text-muted-foreground border-b border-border dark:border-grey-700`,children:[(0,W.jsx)(`th`,{className:`p-3 font-medium`,children:`Table`}),(0,W.jsx)(`th`,{className:`p-3 font-medium text-right`,children:`Records`}),(0,W.jsx)(`th`,{className:`p-3 font-medium text-right`,children:`Size`}),(0,W.jsx)(`th`,{className:`p-3 font-medium text-right`,children:`Columns`}),(0,W.jsx)(`th`,{className:`p-3 font-medium`,children:`Primary Key`}),(0,W.jsx)(`th`,{className:`p-3 font-medium`,children:`Last Updated`})]})}),(0,W.jsx)(`tbody`,{children:s.map(e=>{let t=o[e],n=l[e],r=t.primary_key??t.hash_attribute??`—`,i=n?.recordCount===void 0?`…`:`${n.estimated?`~`:``}${n.recordCount.toLocaleString()}`;return(0,W.jsxs)(`tr`,{"data-table-name":e,onClick:()=>g(e),className:`border-b border-border dark:border-grey-700 last:border-0 cursor-pointer hover:bg-accent dark:hover:bg-grey-700/80`,children:[(0,W.jsx)(`td`,{className:`p-3 font-medium`,children:e}),(0,W.jsx)(`td`,{className:`p-3 text-right tabular-nums`,children:i}),(0,W.jsx)(`td`,{className:`p-3 text-right tabular-nums`,children:db(t.table_size??0)}),(0,W.jsx)(`td`,{className:`p-3 text-right tabular-nums`,children:t.attributes.length.toLocaleString()}),(0,W.jsx)(`td`,{className:`p-3`,children:r}),(0,W.jsx)(`td`,{className:`p-3 text-muted-foreground`,children:t.last_updated_record?new Date(t.last_updated_record).toLocaleString():`—`})]},e)})})]})})})]})}function mb({item:e,context:t}){return e.isFolder?(0,W.jsx)(`div`,{className:P(`rct-tree-item-arrow`,`rct-tree-item-arrow-isFolder`,t.isExpanded&&`rct-tree-item-arrow-expanded`),"aria-hidden":!0,tabIndex:-1,onMouseDown:e=>e.preventDefault(),onClick:e=>{e.stopPropagation(),t.toggleExpandedState()},children:t.isExpanded?(0,W.jsx)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:(0,W.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`})}):(0,W.jsx)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:(0,W.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`})})}):(0,W.jsx)(`div`,{className:`rct-tree-item-arrow`,"aria-hidden":!0})}var hb;(function(e){e.DoubleClickItemToExpand=`double-click-item-to-expand`,e.ClickItemToExpand=`click-item-to-expand`,e.ClickArrowToExpand=`click-arrow-to-expand`})(hb||={});var gb=function(){return gb=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},gb.apply(this,arguments)},_b=function(e,t){return{mode:e.mode,createInteractiveElementProps:function(n,r,i,a){return gb(gb({},t.createInteractiveElementProps(n,r,i,a)),e.createInteractiveElementProps(n,r,i,a))}}},vb=function(e){return e.ctrlKey||navigator.platform.toUpperCase().indexOf(`MAC`)>=0&&e.metaKey},yb=function(){function e(e){this.mode=hb.DoubleClickItemToExpand,this.environment=e}return e.prototype.createInteractiveElementProps=function(e,t,n,r){var i=this;return{onClick:function(e){var t=e.detail===0;n.focusItem(),e.shiftKey&&!t?n.selectUpTo(!vb(e)):vb(e)&&!t?r.isSelected?n.unselectItem():n.addToSelectedItems():n.selectItem()},onDoubleClick:function(){n.focusItem(),n.selectItem(),e.isFolder&&n.toggleExpandedState(),(!e.isFolder||i.environment.canInvokePrimaryActionOnItemContainer)&&n.primaryAction()},onFocus:function(){n.focusItem()},onDragStart:function(e){e.dataTransfer.dropEffect=`move`,n.startDragging()},onDragOver:function(e){e.preventDefault()},draggable:r.canDrag&&!r.isRenaming,tabIndex:r.isRenaming?void 0:r.isFocused?0:-1}},e}(),bb=function(){function e(e){this.mode=hb.ClickItemToExpand,this.environment=e}return e.prototype.createInteractiveElementProps=function(e,t,n,r){var i=this;return{onClick:function(t){var a=t.detail===0;n.focusItem(),t.shiftKey&&!a?n.selectUpTo(!vb(t)):vb(t)&&!a?r.isSelected?n.unselectItem():n.addToSelectedItems():(e.isFolder&&n.toggleExpandedState(),n.selectItem(),(!e.isFolder||i.environment.canInvokePrimaryActionOnItemContainer)&&n.primaryAction())},onFocus:function(){n.focusItem()},onDragStart:function(e){e.dataTransfer.dropEffect=`move`,n.startDragging()},onDragOver:function(e){e.preventDefault()},draggable:r.canDrag&&!r.isRenaming,tabIndex:r.isRenaming?void 0:r.isFocused?0:-1}},e}(),xb=function(){function e(e){this.mode=hb.ClickItemToExpand,this.environment=e}return e.prototype.createInteractiveElementProps=function(e,t,n,r){var i=this;return{onClick:function(t){var a=t.detail===0;n.focusItem(),t.shiftKey&&!a?n.selectUpTo(!vb(t)):vb(t)&&!a?r.isSelected?n.unselectItem():n.addToSelectedItems():(n.selectItem(),(!e.isFolder||i.environment.canInvokePrimaryActionOnItemContainer)&&n.primaryAction())},onFocus:function(){n.focusItem()},onDragStart:function(e){e.dataTransfer.dropEffect=`move`,n.startDragging()},onDragOver:function(e){e.preventDefault()},draggable:r.canDrag&&!r.isRenaming,tabIndex:r.isRenaming?void 0:r.isFocused?0:-1}},e}(),Sb=function(e,t){switch(e){case hb.DoubleClickItemToExpand:return new yb(t);case hb.ClickItemToExpand:return new bb(t);case hb.ClickArrowToExpand:return new xb(t);default:throw Error(`Unknown interaction mode ${e}`)}},Cb=G.createContext(null),wb=function(){return G.useContext(Cb)},Tb=function(e){var t=e.children,n=dx(),r=n.defaultInteractionMode,i=(0,G.useMemo)(function(){return r&&typeof r!=`string`?r.extends?_b(r,Sb(r.extends,n)):r:Sb(r??hb.ClickItemToExpand,n)},[]);return G.createElement(Cb.Provider,{value:i},t)},Eb=function(){var e=dx();return(0,G.useCallback)(function(t,n){if(t.targetType===`between-items`){if(!e.canReorderItems)return!1}else if(t.targetType===`root`){if(!e.canDropOnFolder)return!1}else{var r=e.items[t.targetItem];if(!r||!e.canDropOnFolder&&r.isFolder||!e.canDropOnNonFolder&&!r.isFolder||n.some(function(e){return e.index===t.targetItem}))return!1}return!(e.canDropAt&&(!n||!e.canDropAt(n,t)))},[e])},Db=function(){var e=dx();return(0,G.useCallback)(function(t,n){for(var r=e.linearItems[n],i=r[t].depth,a=t;r[a]&&r[a].depth!==i-1;--a);var o=r[a];return o||(o={item:e.trees[n].rootItem,depth:0},a=0),{parent:o,parentLinearIndex:a}},[e.linearItems,e.trees])},Ob=function(){var e=dx(),t=Db(),n=Eb(),r=(0,G.useCallback)(function(e,n,i){var a=t(n,e),o=a.parent,s=a.parentLinearIndex;return i.some(function(e){return e.index===o.item})?!0:o.depth!==0&&r(e,s,i)},[t]);return(0,G.useCallback)(function(i,a){for(var o=e.linearItems[i],s=[],c=-1,l=0;l<o.length;l++){var u=o[l],d=u.item,f=u.depth;if(!(c!==-1&&f>c)){c=-1;var p=t(l,i).parent,m=e.items[p.item].children.indexOf(d);if(r(i,l,a)){c=f+1;continue}var h={targetType:`item`,parentItem:p.item,targetItem:d,linearIndex:l,depth:f,treeId:i},g={targetType:`between-items`,parentItem:p.item,linePosition:`top`,childIndex:m,depth:f,treeId:i,linearIndex:l},_={targetType:`between-items`,parentItem:p.item,linePosition:`bottom`,linearIndex:l+1,childIndex:m+1,depth:f,treeId:i},v=o[l-1]?.depth??-1,y=o[l+1]?.depth??-1,b=f===v,x=f===y-1;!b&&n(g,a)&&s.push(g),n(h,a)&&s.push(h),!x&&n(_,a)&&s.push(_)}}return s},[n,e.items,e.linearItems,t,r])},kb=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},Ab=function(e,t,n){var r=(0,G.useRef)();(0,G.useEffect)(function(){r.current?r.current.some(function(e,t){return e!==n[t]})&&(r.current=kb([],n,!0),e()):(r.current=kb([],n,!0),e())},kb(kb([],t,!0),n,!0))},jb=function(){return jb=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},jb.apply(this,arguments)},Mb=function(e,t){return e.map(function(e){return[e,t(e)]}).reduce(function(e,t){var n,r=t[0],i=t[1];return jb(jb({},e),(n={},n[r]=i,n))},{})},Nb=function(){return typeof document<`u`?document:void 0};function Pb(e){e===void 0&&(e=!1);var t=(0,G.useRef)([]);return(0,G.useEffect)(function(){if(e)return function(){};var n=t.current;return function(){return n.forEach(function(e){return cancelAnimationFrame(e)})}},[e,t]),(0,G.useCallback)(function(e){var n=requestAnimationFrame(function(){t.current.splice(t.current.indexOf(n),1),e()});t.current.push(n)},[t])}var Fb=function(e){var t=(0,G.useRef)(e);return t.current=e,t},Ib=function(e){var t=Fb(e);return(0,G.useCallback)((function(){var e=[...arguments];return t.current.apply(t,e)}),[t])},Lb=function(){var e=dx();return Ib(function(t,n){return n.map(function(n){return[n,e.linearItems[t].findIndex(function(e){return e.item===n.index})]}).sort(function(e,t){e[0];var n=e[1];return t[0],n-t[1]}).map(function(e){return e[0]})})},Rb=function(e){var t=Nb()?.querySelector(`[data-rct-tree="${e}"] [data-rct-item-container="true"]`);if(t){var n=getComputedStyle(t);return t.offsetHeight+Math.max(parseFloat(n.marginTop),parseFloat(n.marginBottom))}return 5},zb=function(e,t){return e.clientX<=t.left||e.clientX>=t.right||e.clientY<=t.top||e.clientY>=t.bottom},Bb=function(){function e(e,t,n,r,i,a){this.env=e,this.e=t,this.treeId=n,this.linearIndex=r.linearIndex,this.offset=r.offset,this.indentation=r.indentation,this.targetItem=this.env.linearItems[this.treeId][this.linearIndex],this.getParentOfLinearItem=a,this.draggingItems=i}return e.prototype.getEmptyTreeDragPosition=function(){return{targetType:`root`,treeId:this.treeId,depth:0,linearIndex:0,targetItem:this.env.trees[this.treeId].rootItem}},e.prototype.maybeRedirectToParent=function(){if(!this.env.canReorderItems&&!this.env.canDropOnNonFolder&&!this.env.items[this.targetItem.item].isFolder){var e=this.getParentOfLinearItem(this.linearIndex,this.treeId),t=e.parentLinearIndex,n=e.parent;this.targetItem=n,this.linearIndex=t}},e.prototype.maybeReparentUpwards=function(){if(this.indentation!==void 0){var e=this.env.linearItems[this.treeId],t=e[this.linearIndex].depth,n=t-(e[this.linearIndex+1]?.depth??0);if(this.offset===`bottom`&&n>0){for(var r=Math.max(t-n,this.indentation),i={parentLinearIndex:this.linearIndex,parent:this.targetItem},a,o=t;o>=r;--o)a=i,i=this.getParentOfLinearItem(i.parentLinearIndex,this.treeId);if(this.indentation!==e[this.linearIndex].depth&&a){var s=this.env.items[i.parent.item].children.indexOf(a.parent.item)+1;if(!(this.draggingItems&&this.isDescendant(this.treeId,i.parentLinearIndex+1,this.draggingItems)))return{targetType:`between-items`,treeId:this.treeId,parentItem:i.parent.item,depth:r,linearIndex:this.linearIndex+1,childIndex:s,linePosition:`bottom`}}}}},e.prototype.maybeRedirectInsideOpenFolder=function(){var e=this.env.linearItems[this.treeId][this.linearIndex+1];!this.env.canDropBelowOpenFolders&&e&&this.targetItem.depth===e.depth-1&&this.offset===`bottom`&&(this.targetItem=e,this.linearIndex+=1,this.offset=`top`)},e.prototype.maybeMapToBottomOffset=function(){var e=this.env.linearItems[this.treeId][this.linearIndex-1];if(!(!e||e?.depth===void 0)){var t=e.depth-this.targetItem.depth;this.offset===`top`&&(t===0||t>0&&this.indentation!==void 0)&&(this.offset=`bottom`,--this.linearIndex,this.targetItem=this.env.linearItems[this.treeId][this.linearIndex])}},e.prototype.canDropAtCurrentTarget=function(){var e=this,t=this.env.items[this.targetItem.item];return!(!this.offset&&!this.env.canDropOnNonFolder&&!t.isFolder||!this.offset&&!this.env.canDropOnFolder&&t.isFolder||this.offset&&!this.env.canReorderItems||this.draggingItems?.some(function(t){return t.index===e.targetItem.item}))},e.prototype.getDraggingPosition=function(){if(this.env.linearItems[this.treeId].length===0)return this.getEmptyTreeDragPosition();if(!(!this.draggingItems||this.linearIndex<0||this.linearIndex>=this.env.linearItems[this.treeId].length)){this.maybeRedirectToParent(),this.maybeRedirectInsideOpenFolder(),this.maybeMapToBottomOffset();var e=this.maybeReparentUpwards();if(e)return e;if(this.areDraggingItemsDescendantOfTarget()||!this.canDropAtCurrentTarget())return`invalid`;var t=this.getParentOfLinearItem(this.linearIndex,this.treeId).parent,n=this.env.items[t.item].children.indexOf(this.targetItem.item)+(this.offset===`top`?0:1);return this.offset?{targetType:`between-items`,treeId:this.treeId,parentItem:t.item,depth:this.targetItem.depth,linearIndex:this.linearIndex+(this.offset===`top`?0:1),childIndex:n,linePosition:this.offset}:{targetType:`item`,treeId:this.treeId,parentItem:t.item,targetItem:this.targetItem.item,depth:this.targetItem.depth,linearIndex:this.linearIndex}}},e.prototype.isDescendant=function(e,t,n){var r=this.getParentOfLinearItem(t,e),i=r.parentLinearIndex,a=r.parent;return n.some(function(e){return e.index===a.item})?!0:a.depth!==0&&this.isDescendant(e,i,n)},e.prototype.areDraggingItemsDescendantOfTarget=function(){return this.draggingItems&&this.isDescendant(this.treeId,this.linearIndex,this.draggingItems)},e}(),Vb=function(){var e=(0,G.useRef)(`initial`),t=(0,G.useState)(void 0),n=t[0],r=t[1],i=(0,G.useRef)(0),a=dx(),o=Db(),s=Ib(function(t,n,r){if(!r)return!1;var i=r.offset,a=`${n}__${r.linearIndex}__${i??``}__${r.indentation}`;return a===e.current?!1:(e.current=a,!0)}),c=Ib(function(e,t,n){if(n.current){var r=n.current.getBoundingClientRect();if(!zb(e,r)){var o=(e.clientY-r.top)/i.current,s=a.linearItems[t],c=Math.min(Math.max(0,Math.floor(o)),s.length-1);if(s.length===0)return{linearIndex:0,offset:`bottom`,indentation:0};var l=s[c],u=a.items[l.item],d=a.renderDepthOffset?Math.max(Math.floor((e.clientX-r.left)/a.renderDepthOffset),0):void 0,f,p=a.canReorderItems?u?.isFolder&&a.canDropOnFolder||a.canDropOnNonFolder?.2:.5:0;return o-.5>=s.length-1?f=`bottom`:o%1<p?f=`top`:o%1>1-p&&(f=`bottom`),{linearIndex:c,offset:f,indentation:d}}}}),l=Ib(function(e,t,r){var i=c(e,t,r);if(s(e,t,i))return!n||!a.canDragAndDrop||!i||e.clientX<0||e.clientY<0?`invalid`:new Bb(a,e,t,i,n,o).getDraggingPosition()});return{initiateDraggingPosition:Ib(function(t,n){r(n),e.current=`initial`,i.current=Rb(t)}),resetDraggingPosition:Ib(function(){r(void 0),e.current=`initial`,i.current=0}),draggingItems:n,getDraggingPosition:l,itemHeight:i}},Hb=G.createContext(null),Ub=function(){return G.useContext(Hb)},Wb=function(e){var t=e.children,n=dx(),r=(0,G.useState)(!1),i=r[0],a=r[1],o=(0,G.useState)({}),s=o[0],c=o[1],l=(0,G.useState)(0),u=l[0],d=l[1],f=(0,G.useState)(),p=f[0],m=f[1],h=Ob(),g=Pb(),_=Lb(),v=Vb(),y=v.initiateDraggingPosition,b=v.resetDraggingPosition,x=v.draggingItems,S=v.getDraggingPosition,C=v.itemHeight,w=(0,G.useCallback)(function(e,t){if(n.activeTreeId&&n.viewState[n.activeTreeId]?.focusedItem&&n.linearItems&&t){var r=n.viewState[n.activeTreeId].focusedItem,i=h(n.activeTreeId,t),a=i.findIndex(function(e){return e.targetType===`item`?e.targetItem===r:e.targetType===`between-items`&&n.items[e.parentItem].children[e.childIndex]===r});d(a?Math.min(a+1,i.length-1):0)}else d(0)},[n.activeTreeId,n.items,n.linearItems,n.viewState,h]),T=Ib(function(){a(!1),c({}),d(0),m(void 0),b()});Ab(function(){n.activeTreeId&&n.linearItems[n.activeTreeId]&&s[n.activeTreeId]&&w(s[n.activeTreeId],x)},[x,n.activeTreeId,n.linearItems,w,s],[n.activeTreeId]),Ab(function(){i&&n.activeTreeId&&m(s[n.activeTreeId][u])},[u,n.activeTreeId,i,s],[u,n.activeTreeId]);var E=Eb(),D=function(e){var t;x&&!E(e,x)||(m(e),n.setActiveTree(e.treeId),x&&n.activeTreeId!==e.treeId&&((t=n.onSelectItems)==null||t.call(n,x.map(function(e){return e.index}),e.treeId)))},O=Ib(function(e,t,n){if(x){var r=S(e,t,n);if(r){if(r===`invalid`){m(void 0);return}D(r)}}}),k=Ib(function(e,t){t.current&&zb(e,t.current.getBoundingClientRect())&&m(void 0)}),A=Ib(function(){!x||!p||!n.onDrop||(n.onDrop(x,p),g(function(){var e;(e=n.onFocusItem)==null||e.call(n,x[0],p.treeId),T()}))}),j=(0,G.useCallback)(function(e,t){var r=Mb(n.treeIds,function(t){return h(t,e)});y(t,e),c(r),n.activeTreeId&&w(r[n.activeTreeId],e)},[n.activeTreeId,n.treeIds,h,y,w]),ee=(0,G.useCallback)(function(){if(n.canDragAndDrop&&n.activeTreeId){var e=n.viewState[n.activeTreeId]?.selectedItems??[n.viewState[n.activeTreeId]?.focusedItem];if(e.length===0||e[0]===void 0)return;var t=_(n.activeTreeId,e.map(function(e){return n.items[e]}));if(n.canDrag&&!n.canDrag(t))return;j(t,n.activeTreeId),setTimeout(function(){a(!0)})}},[n,_,j]),M=(0,G.useCallback)(function(){T()},[T]),N=(0,G.useCallback)(function(){A(),T()},[A,T]),P=(0,G.useCallback)(function(){d(function(e){return Math.max(0,e-1)})},[]),F=(0,G.useCallback)(function(){n.activeTreeId&&d(function(e){return Math.min(s[n.activeTreeId].length-1,e+1)})},[n.activeTreeId,s]),I=(0,G.useMemo)(function(){return{onStartDraggingItems:j,startProgrammaticDrag:ee,abortProgrammaticDrag:M,completeProgrammaticDrag:N,programmaticDragUp:P,programmaticDragDown:F,draggingItems:x,draggingPosition:p,itemHeight:C.current,isProgrammaticallyDragging:i,onDragOverTreeHandler:O,onDragLeaveContainerHandler:k,viableDragPositions:s}},[M,N,x,p,i,C,O,k,j,F,P,ee,s]);return(0,G.useEffect)(function(){return window.addEventListener(`dragend`,T),window.addEventListener(`drop`,A),function(){window.removeEventListener(`dragend`,T),window.removeEventListener(`drop`,A)}},[A,T]),G.createElement(Hb.Provider,{value:I},t)},Gb=function(){return Gb=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Gb.apply(this,arguments)},Kb=function(e,t){var n=dx(),r=Ub();(0,G.useImperativeHandle)(e,function(){return Gb(Gb(Gb({},t),n),{treeEnvironmentContext:n,dragAndDropContext:r})})},qb=function(e,t,n){return t===void 0&&(t=50),n===void 0&&(n=1e4),new Promise(function(r){e()&&r();var i,a=setInterval(function(){e()&&i()},t),o=setTimeout(function(){i()},n);i=function(){clearInterval(a),clearTimeout(o),r()}})},Jb=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},Yb=function(e,t){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,o;return o={next:s(0),throw:s(1),return:s(2)},typeof Symbol==`function`&&(o[Symbol.iterator]=function(){return this}),o;function s(e){return function(t){return c([e,t])}}function c(s){if(r)throw TypeError(`Generator is already executing.`);for(;o&&(o=0,s[0]&&(n=0)),n;)try{if(r=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return n.label++,{value:s[1],done:!1};case 5:n.label++,i=s[1],s=[0];continue;case 7:s=n.ops.pop(),n.trys.pop();continue;default:if((a=n.trys,!(a=a.length>0&&a[a.length-1]))&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]<a[3])){n.label=s[1];break}if(s[0]===6&&n.label<a[1]){n.label=a[1],a=s;break}if(a&&n.label<a[2]){n.label=a[2],n.ops.push(s);break}a[2]&&n.ops.pop(),n.trys.pop();continue}s=t.call(e,n)}catch(e){s=[6,e],i=0}finally{r=a=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}},Xb=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},Zb=G.createContext(null),Qb=function(){return G.useContext(Zb)},$b=function(e,t,n){return Jb(void 0,void 0,void 0,function(){var r,i,a,o;return Yb(this,function(s){for(r=function(e){qb(function(){return!!t.current?.[e]}).then(function(){var r=t.current?.[e];r?.isFolder&&(n(r),$b(e,t,n))})},i=0,a=t.current?.[e]?.children??[];i<a.length;i++)o=a[i],r(o);return[2]})})},ex=G.forwardRef(function(e,t){var n=dx(),r=n.onCollapseItem,i=n.items,a=n.trees,o=n.viewState,s=n.onExpandItem,c=n.onFocusItem,l=n.setActiveTree,u=n.onRenameItem,d=n.onSelectItems,f=n.onPrimaryAction,p=n.linearItems,m=Ub(),h=m.abortProgrammaticDrag,g=m.completeProgrammaticDrag,_=m.programmaticDragDown,v=m.programmaticDragUp,y=m.startProgrammaticDrag,b=Fb(i),x=(0,G.useCallback)(function(e,t){r?.(i[e],t)},[i,r]),S=(0,G.useCallback)(function(e,t){s?.(i[e],t)},[i,s]),C=(0,G.useCallback)(function(e,t,n){n===void 0&&(n=!0),c?.(i[e],t,n)},[i,c]),w=(0,G.useCallback)(function(e,t){t===void 0&&(t=!0),l(e,t)},[l]),T=(0,G.useCallback)(function(e){var t=p[e],n=t.findIndex(function(t){return t.item===o[e]?.focusedItem}),r=i[t[n===void 0?0:Math.min(t.length-1,n+1)].item];c?.(r,e)},[i,p,c,o]),E=(0,G.useCallback)(function(e){var t=p[e],n=t.findIndex(function(t){return t.item===o[e]?.focusedItem}),r=i[t[n===void 0?0:Math.max(0,n-1)].item];c?.(r,e)},[i,p,c,o]),D=(0,G.useCallback)(function(e,t,n){u?.(i[e],t,n)},[i,u]),O=(0,G.useCallback)(function(e,t){d?.(e,t)},[d]),k=(0,G.useCallback)(function(e,t){(o[t]?.expandedItems)?.includes(e)?r?.(i[e],t):s?.(i[e],t)},[i,r,s,o]),A=(0,G.useCallback)(function(e,t){(o[t]?.selectedItems)?.includes(e)?d?.(o[t].selectedItems?.filter(function(t){return t!==e})??[],t):d?.(Xb(Xb([],o[t].selectedItems??[],!0),[e],!1),t)},[d,o]),j=(0,G.useCallback)(function(e,t){f?.(i[e],t)},[i,f]),ee=(0,G.useCallback)(function(e,t){return Jb(void 0,void 0,void 0,function(){var n,r;return Yb(this,function(i){switch(i.label){case 0:return n=t[0],r=t.slice(1),[4,qb(function(){return!!b.current?.[n]}).then(function(){var t=b.current[n];return t?(s?.(t,e),r.length>0?ee(e,r):Promise.resolve()):Promise.resolve()})];case 1:return i.sent(),[2]}})})},[b,s]),M=(0,G.useCallback)(function(e){return Jb(void 0,void 0,void 0,function(){return Yb(this,function(t){switch(t.label){case 0:return[4,$b(a[e].rootItem,b,function(t){return s?.(t,e)})];case 1:return t.sent(),[2]}})})},[b,s,a]),N=(0,G.useCallback)(function(e){for(var t=0,n=o[e]?.expandedItems??[];t<n.length;t++){var a=n[t];r?.(i[a],e)}},[i,r,o]),P=(0,G.useMemo)(function(){return{collapseItem:x,expandItem:S,focusItem:C,focusTree:w,moveFocusDown:T,moveFocusUp:E,renameItem:D,selectItems:O,toggleItemExpandedState:k,toggleItemSelectStatus:A,invokePrimaryAction:j,expandAll:M,expandSubsequently:ee,collapseAll:N,abortProgrammaticDrag:h,completeProgrammaticDrag:g,moveProgrammaticDragPositionDown:_,moveProgrammaticDragPositionUp:v,startProgrammaticDrag:y}},[x,S,C,w,T,E,D,O,k,A,j,M,ee,N,h,g,_,v,y]);return Kb(t,P),G.createElement(Zb.Provider,{value:P},e.children)}),tx=function(e){if(e)if(e.scrollIntoViewIfNeeded)e.scrollIntoViewIfNeeded();else{var t=e.getBoundingClientRect();t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||!!Nb()?.documentElement?.clientHeight)&&t.right<=(window.innerWidth||!!Nb()?.documentElement?.clientWidth)||e.scrollIntoView()}},nx=function(){return nx=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},nx.apply(this,arguments)},rx=function(){return[...arguments].filter(function(e){return!!e}).join(` `)},ix=function(e,t){return{renderItemTitle:function(e){var t=e.title,n=e.context,r=e.info;if(!r.isSearching||!n.isSearchMatching)return t;var i=t.toLowerCase().indexOf(r.search.toLowerCase());return G.createElement(G.Fragment,null,i>0&&G.createElement(`span`,null,t.slice(0,i)),G.createElement(`span`,{className:`rct-tree-item-search-highlight`},t.slice(i,i+r.search.length)),i+r.search.length<t.length&&G.createElement(`span`,null,t.slice(i+r.search.length,t.length)))},renderItemArrow:function(e){var t=e.item,n=e.context;return G.createElement(`div`,nx({className:rx(t.isFolder&&`rct-tree-item-arrow-isFolder`,n.isExpanded&&`rct-tree-item-arrow-expanded`,`rct-tree-item-arrow`)},n.arrowProps),t.isFolder&&(n.isExpanded?G.createElement(`svg`,{version:`1.1`,xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,x:`0px`,y:`0px`,viewBox:`0 0 16 16`,enableBackground:`new 0 0 16 16`,xmlSpace:`preserve`},G.createElement(`g`,null,G.createElement(`g`,null,G.createElement(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`})))):G.createElement(`svg`,{version:`1.1`,xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,x:`0px`,y:`0px`,viewBox:`0 0 16 16`,enableBackground:`new 0 0 16 16`,xmlSpace:`preserve`},G.createElement(`g`,null,G.createElement(`g`,null,G.createElement(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`}))))))},renderItem:function(t){var n=t.item,r=t.depth,i=t.children,a=t.title,o=t.context,s=t.arrow,c=o.isRenaming?`div`:`button`,l=o.isRenaming?void 0:`button`;return G.createElement(`li`,nx({},o.itemContainerWithChildrenProps,{className:rx(`rct-tree-item-li`,n.isFolder&&`rct-tree-item-li-isFolder`,o.isSelected&&`rct-tree-item-li-selected`,o.isExpanded&&`rct-tree-item-li-expanded`,o.isFocused&&`rct-tree-item-li-focused`,o.isDraggingOver&&`rct-tree-item-li-dragging-over`,o.isSearchMatching&&`rct-tree-item-li-search-match`)}),G.createElement(`div`,nx({},o.itemContainerWithoutChildrenProps,{style:{"--depthOffset":`${(r+1)*e}px`},className:rx(`rct-tree-item-title-container`,n.isFolder&&`rct-tree-item-title-container-isFolder`,o.isSelected&&`rct-tree-item-title-container-selected`,o.isExpanded&&`rct-tree-item-title-container-expanded`,o.isFocused&&`rct-tree-item-title-container-focused`,o.isDraggingOver&&`rct-tree-item-title-container-dragging-over`,o.isSearchMatching&&`rct-tree-item-title-container-search-match`)}),s,G.createElement(c,nx({type:l},o.interactiveElementProps,{className:rx(`rct-tree-item-button`,n.isFolder&&`rct-tree-item-button-isFolder`,o.isSelected&&`rct-tree-item-button-selected`,o.isExpanded&&`rct-tree-item-button-expanded`,o.isFocused&&`rct-tree-item-button-focused`,o.isDraggingOver&&`rct-tree-item-button-dragging-over`,o.isSearchMatching&&`rct-tree-item-button-search-match`)}),a)),i)},renderRenameInput:function(e){var t=e.inputProps,n=e.inputRef,r=e.submitButtonProps,i=e.submitButtonRef,a=e.formProps;return G.createElement(`form`,nx({},a,{className:`rct-tree-item-renaming-form`}),G.createElement(`input`,nx({},t,{ref:n,className:`rct-tree-item-renaming-input`})),G.createElement(`input`,nx({},r,{ref:i,type:`submit`,className:`rct-tree-item-renaming-submit-button`,value:`🗸`})))},renderTreeContainer:function(e){var n=e.children,r=e.containerProps,i=e.info;return G.createElement(`div`,{className:rx(`rct-tree-root`,i.isFocused&&`rct-tree-root-focus`,i.isRenaming&&`rct-tree-root-renaming`,i.areItemsSelected&&`rct-tree-root-itemsselected`,t&&`rct-rtl`)},G.createElement(`div`,nx({},r,{style:nx({minHeight:`30px`},r.style)}),n))},renderItemsContainer:function(e){var t=e.children,n=e.containerProps;return G.createElement(`ul`,nx({},n,{className:`rct-tree-items-container`}),t)},renderDragBetweenLine:function(t){var n=t.draggingPosition,r=t.lineProps;return G.createElement(`div`,nx({},r,{style:{left:`${n.depth*e}px`},className:rx(`rct-tree-drag-between-line`,n.targetType===`between-items`&&n.linePosition===`top`&&`rct-tree-drag-between-line-top`,n.targetType===`between-items`&&n.linePosition===`bottom`&&`rct-tree-drag-between-line-bottom`)}))},renderSearchInput:function(e){var t=e.inputProps;return G.createElement(`div`,{className:rx(`rct-tree-search-input-container`)},G.createElement(`span`,{className:`rct-tree-input-icon`}),G.createElement(`input`,nx({},t,{className:rx(`rct-tree-search-input`)})))},renderLiveDescriptorContainer:function(e){var t=e.tree,n=e.children;return G.createElement(`div`,{id:`rct-livedescription-${t.treeId}`,style:{clip:`rect(0 0 0 0)`,clipPath:`inset(50%)`,height:`1px`,overflow:`hidden`,position:`absolute`,whiteSpace:`nowrap`,width:`1px`}},n)},renderDepthOffset:e}},ax=function(e){var t=e.renderItem,n=e.renderItemTitle,r=e.renderItemArrow,i=e.renderRenameInput,a=e.renderItemsContainer,o=e.renderTreeContainer,s=e.renderDragBetweenLine,c=e.renderSearchInput,l=e.renderLiveDescriptorContainer,u=e.renderDepthOffset,d=(0,G.useMemo)(function(){return ix(u??10)},[u]),f={renderItem:t,renderItemTitle:n,renderItemArrow:r,renderRenameInput:i,renderItemsContainer:a,renderTreeContainer:o,renderDragBetweenLine:s,renderSearchInput:c,renderLiveDescriptorContainer:l,renderDepthOffset:u},p=Object.entries(d).reduce(function(e,t){var n=t[0],r=t[1],i=n;return f[i]?e[i]=f[i]:e[i]=r,e},{});return p.renderItem.displayName=`RenderItem`,p.renderItemTitle.displayName=`RenderItemTitle`,p.renderItemArrow.displayName=`RenderItemArrow`,p.renderRenameInput.displayName=`RenderRenameInput`,p.renderItemsContainer.displayName=`RenderItemsContainer`,p.renderTreeContainer.displayName=`RenderTreeContainer`,p.renderDragBetweenLine.displayName=`RenderDragBetweenLine`,p.renderSearchInput.displayName=`RenderSearchInput`,p},ox=function(e,t,n,r){r===void 0&&(r=0);for(var i=[],a=0,o=n[e]?.children??[];a<o.length;a++){var s=o[a],c=n[s];i.push({item:s,depth:r}),c&&c.isFolder&&c.children&&t.expandedItems?.includes(s)&&i.push.apply(i,ox(s,t,n,r+1))}return i},sx=function(){return sx=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},sx.apply(this,arguments)},cx=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},lx=function(e){var t=e.onExpandItem,n=e.onCollapseItem,r=e.onDrop,i=cx(e,[`onExpandItem`,`onCollapseItem`,`onDrop`]),a=(0,G.useState)({}),o=a[0],s=a[1],c=(0,G.useState)(),l=c[0],u=c[1],d=(0,G.useMemo)(function(){return Object.keys(o)},[o]),f=i.onFocusItem,p=i.autoFocus,m=i.onRegisterTree,h=i.onUnregisterTree,g=i.items,_=i.viewState,v=Fb(f),y=Fb(_),b=(0,G.useMemo)(function(){return Mb(d,function(e){return ox(o[e].rootItem,_[e]??{},g)})},[o,g,d,_]),x=(0,G.useCallback)(function(e,t,n){var r,i;if(n===void 0&&(n=!0),(p??!0)&&n){var a=Nb()?.querySelector(`[data-rct-tree="${t}"] [data-rct-item-id="${e.index}"]`)??Nb()?.querySelector(`[data-rct-tree="${t}"] [data-rct-item-id]`);(Nb()?.activeElement)?.attributes.getNamedItem(`data-rct-search-input`)?.value===`true`?tx(a):(r=a?.focus)==null||r.call(a)}y.current[t]?.focusedItem!==e.index&&((i=v.current)==null||i.call(v,e,t))},[p,v,y]),S=(0,G.useCallback)(function(e){s(function(t){var n;return sx(sx({},t),(n={},n[e.treeId]=e,n))}),m?.(e)},[m]),C=(0,G.useCallback)(function(e){h?.(o[e]),s(function(t){var n=sx({},t);return delete n[e],n})},[h,o]),w=(0,G.useCallback)(function(e,t){n?.(e,t),s(function(e){return e})},[n]),T=(0,G.useCallback)(function(e,n){t?.(e,n),s(function(e){return e})},[t]),E=(0,G.useCallback)(function(e,t){r?.(e,t),s(function(e){return e})},[r]),D=(0,G.useCallback)(function(e){var t,n=Nb()?.querySelector(`[data-rct-tree="${e}"] [data-rct-item-focus="true"]`);(t=n?.focus)==null||t.call(n)},[]),O=(0,G.useCallback)(function(e,t){t===void 0&&(t=!0);var n=function(e){t&&(p??!0)&&e&&!(Nb()?.querySelector(`[data-rct-tree="${e}"]`))?.contains(document.activeElement)&&D(e)};if(typeof e==`function`)u(function(t){var r=e(t);return r!==t&&n(r),r});else{var r=e;u(r),n(r)}},[p,D]),k=ax(i);return sx(sx(sx({},k),i),{onFocusItem:x,registerTree:S,unregisterTree:C,onExpandItem:T,onCollapseItem:w,onDrop:E,setActiveTree:O,treeIds:d,trees:o,activeTreeId:l,linearItems:b})},ux=G.createContext(null),dx=function(){return(0,G.useContext)(ux)},fx=G.forwardRef(function(e,t){var n=lx(e),r=e.viewState,i=e.onFocusItem;return(0,G.useEffect)(function(){for(var t=0,a=Object.keys(n.trees);t<a.length;t++){var o=a[t],s=e.items[n.trees[o].rootItem]?.children?.[0],c=s&&e.items[s];!r[o]?.focusedItem&&n.trees[o]&&c&&i?.(c,o,!1)}},[n.trees,i,e.items,r]),G.createElement(ux.Provider,{value:n},G.createElement(Tb,null,G.createElement(Wb,null,G.createElement(ex,{ref:t},e.children))))}),px=function(e){var t=e.treeId,n=Ub(),r=n.draggingPosition,i=n.itemHeight,a=Jx().renderers;return r&&r.targetType===`between-items`&&r.treeId===t?G.createElement(`div`,{style:{position:`absolute`,left:`0`,right:`0`,top:`${(r?.linearIndex??0)*i}px`}},a.renderDragBetweenLine({draggingPosition:r,lineProps:{onDragOver:function(e){return e.preventDefault()}}})):null},mx=function(e,t,n){var r=Ib(n);(0,G.useEffect)(function(){return e?(e.addEventListener(t,r),function(){return e.removeEventListener(t,r)}):function(){}},[e,r,t])},hx=function(e,t,n){var r=(0,G.useState)(!1),i=r[0],a=r[1],o=(0,G.useRef)(!1),s=Pb();return mx(e,`focusin`,function(){i||(a(!0),t?.()),o.current&&=!1}),mx(e,`focusout`,function(){o.current=!0,s(function(){o.current&&!e?.contains(document.activeElement)&&(n?.(),o.current=!1,a(!1))})}),i},gx=function(e,t,n){mx(Nb(),`keydown`,function(r){n&&n&&e.toLowerCase()===r.key.toLowerCase()&&t(r)})},_x={expandSiblings:[`control+*`],moveFocusToFirstItem:[`home`],moveFocusToLastItem:[`end`],primaryAction:[`enter`],renameItem:[`f2`],abortRenameItem:[`escape`],toggleSelectItem:[`control+ `],abortSearch:[`escape`,`enter`],startSearch:[],selectAll:[`control+a`],startProgrammaticDnd:[`control+shift+d`],completeProgrammaticDnd:[`enter`],abortProgrammaticDnd:[`escape`]},vx=function(){return vx=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},vx.apply(this,arguments)},yx=function(){var e=dx();return(0,G.useMemo)(function(){return e.keyboardBindings?vx(vx({},_x),e.keyboardBindings):_x},[e.keyboardBindings])},bx=[`input`,`textarea`],xx=function(e,t,n,r){r===void 0&&(r=!1);var i=(0,G.useRef)([]),a=yx(),o=Pb(),s=(0,G.useMemo)(function(){return a[e].map(function(e){return e.split(`+`)})},[e,a]);mx(Nb(),`keydown`,function(e){if(n!==!1&&!((bx.includes(e.target.tagName?.toLowerCase())||e.target.isContentEditable)&&!r)&&!i.current.includes(e.key)){i.current.push(e.key);var t=i.current.map(function(e){return e.toLowerCase()});s.map(function(e){return t.map(function(t){return e.includes(t.toLowerCase())}).reduce(function(e,t){return e&&t},!0)}).reduce(function(e,t){return e||t},!1)&&(i.current.length>1||!/^[a-zA-Z\s]$/.test(e.key))&&e.preventDefault()}}),mx(Nb(),`keyup`,function(e){if(n!==!1){var r=i.current.map(function(e){return e.toLowerCase()});s.map(function(e){return e.map(function(e){return r.includes(e.toLowerCase())}).reduce(function(e,t){return e&&t},!0)}).reduce(function(e,t){return e||t},!1)&&o(function(){return t(e)}),i.current=i.current.filter(function(t){return t!==e.key})}})},Sx=function(){var e=Jx().treeId;return dx().viewState[e]??{}},Cx=function(e){return dx().linearItems[e]},wx=function(){var e=Jx().treeId,t=dx(),n=t.onFocusItem,r=t.items,i=Cx(e),a=Sx();return Ib(function(t){var o=t(i.findIndex(function(e){return e.item===a.focusedItem})??0,i),s=r[i[Math.max(0,Math.min(i.length-1,o))].item];return n?.(s,e),s})},Tx=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},Ex=function(e){var t=(0,G.useRef)({target:e,previous:void 0});return t.current.target!==e&&(t.current.previous=t.current.target,t.current.target=e),t.current.previous},Dx=function(e){var t=Sx(),n=Jx().treeId,r=Cx(n),i=dx().onSelectItems,a=Ex(t.focusedItem);return(0,G.useCallback)(function(o,s){s===void 0&&(s=!1);var c=o.index,l=function(e,t){var r=Tx(Tx([],s?[]:e,!0),t.filter(function(t){return s||!e.includes(t)}),!0);i?.(r,n)};if(t&&t.selectedItems&&t.selectedItems.length>0){var u=t.focusedItem===c?a:t.focusedItem,d=e===`last-focus`?r.findIndex(function(e){return u===e.item}):r.findIndex(function(e){return t.selectedItems?.includes(e.item)}),f=r.findIndex(function(e){return e.item===c});if(d<f){var p=r.slice(d,f+1).map(function(e){return e.item});l(t.selectedItems??[],p)}else{var p=r.slice(f,d+1).map(function(e){return e.item});l(t.selectedItems??[],p)}}else i?.([c],n)},[t,i,n,e,r,a])},Ox=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},kx=function(){var e=dx(),t=Jx(),n=t.treeId,r=t.setRenamingItem,i=t.setSearch,a=t.renamingItem,o=Cx(n),s=Ub(),c=Sx(),l=wx(),u=Dx(`first-selected`),d=e.activeTreeId===n,f=!!a,p=!e.disableArrowKeys&&d&&!f;gx(`arrowdown`,function(e){if(e.preventDefault(),s.isProgrammaticallyDragging)s.programmaticDragDown();else{var t=l(function(e){return e+1});e.shiftKey&&u(t)}},p),gx(`arrowup`,function(e){if(e.preventDefault(),s.isProgrammaticallyDragging)s.programmaticDragUp();else{var t=l(function(e){return e-1});e.shiftKey&&u(t)}},p),xx(`moveFocusToFirstItem`,function(e){e.preventDefault(),l(function(){return 0})},d&&!s.isProgrammaticallyDragging&&!f),xx(`moveFocusToLastItem`,function(e){e.preventDefault(),l(function(e,t){return t.length-1})},d&&!s.isProgrammaticallyDragging&&!f),gx(`arrowright`,function(t){t.preventDefault(),l(function(t,r){var i,a=e.items[r[t].item];if(a.isFolder){if(c.expandedItems?.includes(a.index))return t+1;(i=e.onExpandItem)==null||i.call(e,a,n)}return t})},p&&!s.isProgrammaticallyDragging),gx(`arrowleft`,function(t){t.preventDefault(),l(function(t,r){var i,a=e.items[r[t].item],o=r[t].depth;if(a.isFolder&&c.expandedItems?.includes(a.index))(i=e.onCollapseItem)==null||i.call(e,a,n);else if(o>0){for(var s=t;r[s].depth!==o-1;--s);return s}return t})},p&&!s.isProgrammaticallyDragging),xx(`primaryAction`,function(t){var r,i;t.preventDefault(),c.focusedItem!==void 0&&((r=e.onSelectItems)==null||r.call(e,[c.focusedItem],n),(i=e.onPrimaryAction)==null||i.call(e,e.items[c.focusedItem],n))},d&&!s.isProgrammaticallyDragging&&!f),xx(`toggleSelectItem`,function(t){var r,i;t.preventDefault(),t.stopPropagation(),c.focusedItem!==void 0&&(c.selectedItems&&c.selectedItems.includes(c.focusedItem)?(r=e.onSelectItems)==null||r.call(e,c.selectedItems.filter(function(e){return e!==c.focusedItem}),n):(i=e.onSelectItems)==null||i.call(e,Ox(Ox([],c.selectedItems??[],!0),[c.focusedItem],!1),n))},d&&!s.isProgrammaticallyDragging&&!f),xx(`selectAll`,function(t){var r;t.preventDefault(),(r=e.onSelectItems)==null||r.call(e,o.map(function(e){return e.item}),n)},d&&!s.isProgrammaticallyDragging&&!f),xx(`renameItem`,function(t){var i;if(c.focusedItem!==void 0){t.preventDefault();var a=e.items[c.focusedItem];a.canRename!==!1&&((i=e.onStartRenamingItem)==null||i.call(e,a,n),r(a.index))}},d&&(e.canRename??!0)&&!f),xx(`startSearch`,function(e){var t,n;e.preventDefault(),i(``),(n=(t=document.querySelector(`[data-rct-search-input="true"]`))?.focus)==null||n.call(t)},d&&!s.isProgrammaticallyDragging&&!f),xx(`startProgrammaticDnd`,function(e){e.preventDefault(),s.startProgrammaticDrag()},d&&!f),xx(`completeProgrammaticDnd`,function(e){e.preventDefault(),s.completeProgrammaticDrag()},d&&s.isProgrammaticallyDragging&&!f),xx(`abortProgrammaticDnd`,function(e){e.preventDefault(),s.abortProgrammaticDrag()},d&&s.isProgrammaticallyDragging&&!f)},Ax=function(e,t,n){return n.toLowerCase().includes(e.toLowerCase())},jx=function(){var e=dx(),t=e.doesSearchMatchItem,n=e.items,r=e.getItemTitle,i=e.onFocusItem,a=Jx(),o=a.search,s=a.treeId,c=Cx(s),l=Pb();Ab(function(){o&&o.length>0&&l(function(){var e=c.find(function(e){var i=e.item;return(t??Ax)(o,n[i],r(n[i]))});e&&i?.(n[e.item],s)})},[t,r,c,n,i,o,s,l],[o])},Mx=function(){return Mx=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Mx.apply(this,arguments)},Nx=function(e){var t=e.containerRef,n=Jx(),r=n.search,i=n.setSearch,a=n.treeId,o=n.renderers,s=n.renamingItem,c=dx();Sx();var l=c.activeTreeId===a,u=Pb();jx();var d=function(){var e;if(i(null),c.autoFocus??!0){var t=Nb()?.querySelector(`[data-rct-tree="${a}"] [data-rct-item-focus="true"]`);(e=t?.focus)==null||e.call(t)}};return xx(`abortSearch`,function(){u(function(){d()})},l&&r!==null,!0),mx(t,`keydown`,function(e){var t=e.key.charCodeAt(0);(c.canSearch??!0)&&(c.canSearchByStartingTyping??!0)&&l&&r===null&&!s&&!e.ctrlKey&&!e.shiftKey&&!e.altKey&&!e.metaKey&&(t>=48&&t<=57||t>=97&&t<=122)&&i(``)}),!(c.canSearch??!0)||r===null?null:o.renderSearchInput({inputProps:Mx({value:r,onChange:function(e){return i(e.target.value)},onBlur:function(){d()},ref:function(e){var t;(t=e?.focus)==null||t.call(e)},"aria-label":`Search for items`},{"data-rct-search-input":`true`})})},Px={introduction:`
|
|
781
781
|
<p>Accessibility guide for tree {treeLabel}.</p>
|
|
782
782
|
<p>
|
|
783
783
|
Navigate the tree with the arrow keys. Common tree hotkeys apply. Further keybindings are available:
|
|
@@ -799,19 +799,19 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
799
799
|
<p>Press {keybinding:completeProgrammaticDnd} to drop or {keybinding:abortProgrammaticDnd} to abort.</p>
|
|
800
800
|
`,programmaticallyDraggingTarget:`
|
|
801
801
|
<p>Drop target is {dropTarget}.</p>
|
|
802
|
-
`},Ex=function(e,t,n,r,i){var a=function(e){return t.getItemTitle(t.items[e])};return e.replace(/({[^\s}]+)}/g,function(e){var o=e.slice(1,-1);switch(o){case`treeLabel`:return r.treeLabel??``;case`renamingItem`:return r.renamingItem?a(r.renamingItem):`None`;case`dragItems`:return n.draggingItems?.map(function(e){return t.getItemTitle(e)}).join(`, `)??`None`;case`dropTarget`:if(!n.draggingPosition)return`None`;if(n.draggingPosition.targetType===`item`||n.draggingPosition.targetType===`root`)return`within ${a(n.draggingPosition.targetItem)}`;var s=t.items[n.draggingPosition.parentItem],c=t.getItemTitle(s);return n.draggingPosition.childIndex===0?`within ${c} at the start`:`within ${c} after ${a(s.children[n.draggingPosition.childIndex-1])}`;default:if(o.startsWith(`keybinding:`))return i[o.slice(11)][0];throw Error(`Unknown live descriptor variable {${o}}`)}})},Dx=function(e){var t=e.children,n=e.live;return G.createElement(`div`,{"aria-live":n,dangerouslySetInnerHTML:{__html:t}})},Ox=function(){var e=nx(),t=zx(),n=Pb(),r=ux(),i=(0,G.useMemo)(function(){return e.liveDescriptors??Tx},[e.liveDescriptors]),a=t.renderers.renderLiveDescriptorContainer;return t.treeInformation.isRenaming?G.createElement(a,{tree:t},G.createElement(Dx,{live:`polite`},Ex(i.renamingItem,e,n,t,r))):t.treeInformation.isSearching?G.createElement(a,{tree:t},G.createElement(Dx,{live:`polite`},Ex(i.searching,e,n,t,r))):t.treeInformation.isProgrammaticallyDragging?G.createElement(a,{tree:t},G.createElement(Dx,{live:`polite`},Ex(i.programmaticallyDragging,e,n,t,r)),G.createElement(Dx,{live:`assertive`},Ex(i.programmaticallyDraggingTarget,e,n,t,r))):G.createElement(a,{tree:t},G.createElement(Dx,{live:`off`},Ex(i.introduction,e,n,t,r)))},kx=function(){return nx().showLiveDescription??!0?G.createElement(Ox,null):null},Ax=function(){return Ax=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Ax.apply(this,arguments)},jx=function(){var e=zx(),t=e.treeId,n=e.rootItem,r=e.renderers,i=e.treeInformation,a=nx(),o=(0,G.useRef)(),s=Pb();bx(),ox(o.current,function(){a.setActiveTree(t)},function(){a.setActiveTree(function(e){return e===t?void 0:e})});var c=a.items[n].children,l=G.createElement(G.Fragment,null,G.createElement(kx,null),G.createElement(Vx,{depth:0,parentId:n},c??[]),G.createElement(ix,{treeId:t}),G.createElement(wx,{containerRef:o.current})),u=Ax({onDragOver:function(e){e.preventDefault(),s.onDragOverTreeHandler(e,t,o)},onDragLeave:function(e){s.onDragLeaveContainerHandler(e,o)},onMouseDown:function(){return s.abortProgrammaticDrag()},ref:o,style:{position:`relative`},role:`tree`,"aria-label":i.treeLabelledBy?void 0:i.treeLabel,"aria-labelledby":i.treeLabelledBy},{"data-rct-tree":t});return r.renderTreeContainer({children:l,info:i,containerProps:u})},Mx=function(e,t,n){var r=nx(),i=Pb(),a=r.viewState[e.treeId]?.selectedItems;return(0,G.useMemo)(function(){return{isFocused:r.activeTreeId===e.treeId,isRenaming:!!t,areItemsSelected:(a?.length??0)>0,isSearching:n!==null,search:n,isProgrammaticallyDragging:i.isProgrammaticallyDragging??!1,treeId:e.treeId,rootItem:e.rootItem,treeLabel:e.treeLabel,treeLabelledBy:e.treeLabelledBy}},[r.activeTreeId,e.treeId,e.rootItem,e.treeLabel,e.treeLabelledBy,t,a?.length,n,i.isProgrammaticallyDragging])},Nx=function(){return Nx=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Nx.apply(this,arguments)},Px=function(e,t){var n=nx(),r=zx(),i=Pb();(0,G.useImperativeHandle)(e,function(){return Nx(Nx(Nx({},t),{treeEnvironmentContext:n,dragAndDropContext:i,treeContext:r}),r.treeInformation)})},Fx=G.createContext(null),Ix=G.forwardRef(function(e,t){nx();var n=zx();Pb();var r=Ub(),i=(0,G.useMemo)(function(){return{abortRenamingItem:function(){n.setRenamingItem(null)},abortSearch:function(){n.setSearch(null)},collapseItem:function(e){r.collapseItem(e,n.treeId)},completeRenamingItem:function(){},expandItem:function(e){r.expandItem(e,n.treeId)},focusItem:function(e,t){t===void 0&&(t=!0),r.focusItem(e,n.treeId,t)},focusTree:function(e){e===void 0&&(e=!0),r.focusTree(n.treeId,e)},invokePrimaryAction:function(e){r.invokePrimaryAction(e,n.treeId)},moveFocusDown:function(){r.moveFocusDown(n.treeId)},moveFocusUp:function(){r.moveFocusUp(n.treeId)},renameItem:function(e,t){r.renameItem(e,t,n.treeId)},selectItems:function(e){r.selectItems(e,n.treeId)},setSearch:function(e){n.setSearch(e)},startRenamingItem:function(e){n.setRenamingItem(e)},stopRenamingItem:function(){n.setRenamingItem(null)},toggleItemExpandedState:function(e){r.toggleItemExpandedState(e,n.treeId)},toggleItemSelectStatus:function(e){r.toggleItemSelectStatus(e,n.treeId)},expandAll:function(){r.expandAll(n.treeId)},collapseAll:function(){r.collapseAll(n.treeId)},expandSubsequently:function(e){return r.expandSubsequently(n.treeId,e)}}},[r,n]);return Px(t,i),G.createElement(Fx.Provider,{value:i},e.children)}),Lx=function(){return Lx=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Lx.apply(this,arguments)},Rx=G.createContext(null),zx=function(){return(0,G.useContext)(Rx)},Bx=G.forwardRef(function(e,t){var n,r=nx(),i=(0,G.useMemo)(function(){return Lx(Lx({},r),e)},[e,r]),a=(0,G.useState)(null),o=a[0],s=a[1],c=(0,G.useState)(null),l=c[0],u=c[1],d=r.items[e.rootItem],f=r.viewState[e.treeId];(0,G.useEffect)(function(){return r.registerTree({treeId:e.treeId,rootItem:e.rootItem}),function(){return r.unregisterTree(e.treeId)}},[e.treeId,e.rootItem]);var p=Mx(e,l,o),m=(0,G.useMemo)(function(){return{treeId:e.treeId,rootItem:e.rootItem,treeLabel:e.treeLabel,treeLabelledBy:e.treeLabelledBy,getItemsLinearly:function(){return Zb(e.rootItem,f??{},r.items)},treeInformation:p,search:o,setSearch:s,renamingItem:l,setRenamingItem:u,renderers:i}},[r.items,e.rootItem,e.treeId,e.treeLabel,e.treeLabelledBy,l,i,o,p,f]);return d===void 0?((n=r.onMissingItems)==null||n.call(r,[e.rootItem]),null):G.createElement(Rx.Provider,{value:m},G.createElement(Ix,{ref:t},G.createElement(jx,null)))}),Vx=function(e){for(var t=zx(),n=t.renderers,r=t.treeInformation,i=[],a=0,o=e.children;a<o.length;a++){var s=o[a];i.push(G.createElement(Kx,{key:s,itemIndex:s,depth:e.depth}))}if(i.length===0)return null;var c={role:e.depth===0?void 0:`group`};return n.renderItemsContainer({children:i,info:r,containerProps:c,depth:e.depth,parentId:e.parentId})},Hx=function(){return Hx=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Hx.apply(this,arguments)},Ux=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},Wx=function(e){var t=zx(),n=t.treeId,r=t.search,i=t.renamingItem,a=t.setRenamingItem,o=nx(),s=hb(),c=Pb(),l=vx(`last-focus`),u=e&&o.getItemTitle(e),d=Ob(),f=(0,G.useMemo)(function(){return r===null||r.length===0||!e||!u?!1:(o.doesSearchMatchItem??xx)(r,e,u)},[r,e,u,o.doesSearchMatchItem]),p=e&&(o.viewState[n]?.selectedItems)?.includes(e.index),m=e&&(o.viewState[n]?.expandedItems)?.includes(e.index),h=e&&i===e.index;return(0,G.useMemo)(function(){if(e){var t=o.viewState[n],r=((t?.selectedItems)?.map(function(e){return o.items[e]})??(t?.focusedItem?[o.items[t?.focusedItem]]:[])).filter(function(e){return!!e}),i=!!r.find(function(t){return t.index===e.index}),u=r&&(o.canDrag?.call(o,r)??!0)&&r.map(function(e){return e.canMove??!0}).reduce(function(e,t){return e&&t},!0),g=(o.canDrag?.call(o,[e])??!0)&&(e.canMove??!0),_=o.canDragAndDrop&&(i&&u||!i&&g),v=o.canDragAndDrop&&!!(c.viableDragPositions?.[n])?.find(function(t){return t.targetType===`item`&&t.targetItem===e.index}),y={primaryAction:function(){var t;(t=o.onPrimaryAction)==null||t.call(o,o.items[e.index],n)},collapseItem:function(){var t;(t=o.onCollapseItem)==null||t.call(o,e,n)},expandItem:function(){var t;(t=o.onExpandItem)==null||t.call(o,e,n)},toggleExpandedState:function(){var t,r;m?(t=o.onCollapseItem)==null||t.call(o,e,n):(r=o.onExpandItem)==null||r.call(o,e,n)},selectItem:function(){var t;(t=o.onSelectItems)==null||t.call(o,[e.index],n)},addToSelectedItems:function(){var r;(r=o.onSelectItems)==null||r.call(o,Ux(Ux([],t?.selectedItems??[],!0),[e.index],!1),n)},unselectItem:function(){var r;(r=o.onSelectItems)==null||r.call(o,(t?.selectedItems)?.filter(function(t){return t!==e.index})??[],n)},selectUpTo:function(t){l(e,t)},startRenamingItem:function(){a(e.index)},stopRenamingItem:function(){a(null)},focusItem:function(t){var r;t===void 0&&(t=!0),(r=o.onFocusItem)==null||r.call(o,e,n,t)},startDragging:function(){var r,i=t?.selectedItems??[];if(i.includes(e.index)||(i=[e.index],(r=o.onSelectItems)==null||r.call(o,i,n)),_){var a=d(n,i.map(function(e){return o.items[e]}));c.onStartDraggingItems(a,n)}}},b={isSelected:p,isExpanded:m,isFocused:t?.focusedItem===e.index,isRenaming:h,isDraggingOver:c.draggingPosition&&c.draggingPosition.targetType===`item`&&c.draggingPosition.targetItem===e.index&&c.draggingPosition.treeId===n,isDraggingOverParent:!1,isSearchMatching:f,canDrag:_,canDropOn:v},x=Hx(Hx({},s.createInteractiveElementProps(e,n,y,b,t)),{"data-rct-item-interactive":!0,"data-rct-item-focus":b.isFocused?`true`:`false`,"data-rct-item-id":e.index}),S=Hx({},{"data-rct-item-container":`true`}),C={role:`treeitem`,"aria-selected":b.isSelected,"aria-expanded":e.isFolder?b.isExpanded?`true`:`false`:void 0},w={onClick:function(){e.isFolder&&y.toggleExpandedState(),y.selectItem()},onFocus:function(){y.focusItem()},onDragOver:function(e){e.preventDefault()},"aria-hidden":!0,tabIndex:-1},T=t?Object.entries(t).reduce(function(t,n){var r=n[0],i=n[1];return t[r]=Array.isArray(i)?i.includes(e.index):i===e.index,t},{}):{};return Hx(Hx(Hx({},y),b),{interactiveElementProps:x,itemContainerWithChildrenProps:C,itemContainerWithoutChildrenProps:S,arrowProps:w,viewStateFlags:T})}},[e,o,n,c,p,m,h,f,s,l,a,d])},Gx=function(e){var t=zx(),n=t.renderers,r=t.treeInformation,i=t.setRenamingItem,a=t.treeId,o=nx(),s=(0,G.useRef)(null),c=(0,G.useRef)(null),l=o.items[e.itemIndex],u=(0,G.useState)(o.getItemTitle(l)),d=u[0],f=u[1],p=Tb(!0),m=function(){var e;(e=o.onAbortRenamingItem)==null||e.call(o,l,r.treeId),i(null),p(function(){o.setActiveTree(a)})},h=function(){var e;(e=o.onRenameItem)==null||e.call(o,l,d,r.treeId),i(null),p(function(){o.setActiveTree(a)})};xb(function(){var e,t,n;o.setActiveTree(a),(o.autoFocus??!0)&&((e=s.current)==null||e.select(),(n=(t=s.current)?.focus)==null||n.call(t))},[o,a],[]),fx(`abortRenameItem`,function(){m()},!0,!0);var g={value:d,onChange:function(e){f(e.target.value)},onBlur:function(e){(!e.relatedTarget||e.relatedTarget!==c.current)&&m()},"aria-label":`New item name`,tabIndex:0};return n.renderRenameInput({item:l,inputRef:s,submitButtonProps:{onClick:function(e){e.stopPropagation(),h()}},submitButtonRef:c,formProps:{onSubmit:function(e){e.preventDefault(),h()}},inputProps:g})},Kx=function(e){var t,n=(0,G.useState)(!1),r=n[0],i=n[1],a=zx(),o=a.renderers,s=a.treeInformation,c=a.renamingItem,l=nx(),u=px(),d=l.items[e.itemIndex],f=(0,G.useMemo)(function(){return u.expandedItems?.includes(e.itemIndex)},[e.itemIndex,u.expandedItems]),p=Wx(d);if(d===void 0||p===void 0)return r||(i(!0),(t=l.onMissingItems)==null||t.call(l,[e.itemIndex])),null;var m=l.shouldRenderChildren?.call(l,d,p)??(d.isFolder&&f),h=d.children&&m&&G.createElement(Vx,{depth:e.depth+1,parentId:e.itemIndex},d.children),g=l.getItemTitle(d),_=c===e.itemIndex?G.createElement(Gx,{itemIndex:e.itemIndex}):o.renderItemTitle({info:s,context:p,title:g,item:d}),v=o.renderItemArrow({info:s,context:p,item:l.items[e.itemIndex]});return o.renderItem({item:l.items[e.itemIndex],depth:e.depth,title:_,arrow:v,context:p,info:s,children:h})??null},qx=`__db_root__`,Jx=`__create_table__`;function Yx(e,t){return`${e}/${t}`}function Xx(e,{canManage:t}){let n={},r=Object.keys(e||{}).sort();for(let t of r){let r=Object.keys(e?.[t]||{}).sort();n[t]={index:t,isFolder:!0,children:r.map(e=>Yx(t,e)),data:{kind:`database`,databaseName:t},canMove:!1,canRename:!1};for(let e of r){let r=Yx(t,e);n[r]={index:r,isFolder:!1,data:{kind:`table`,databaseName:t,tableName:e},canMove:!1,canRename:!1}}}return n[Jx]={index:Jx,isFolder:!1,data:{kind:`createTable`},canMove:!1,canRename:!1},n[qx]={index:qx,isFolder:!0,children:[...t?[Jx]:[],...r],data:{kind:`root`},canMove:!1,canRename:!1},{items:n,rootId:qx}}function Zx({items:e,instanceDatabaseMap:t,children:n}){let r=ps(),[i,a]=(0,G.useState)(void 0),[o,s]=(0,G.useState)(``);return(0,W.jsxs)(Yo,{modal:!1,children:[(0,W.jsx)(Xo,{asChild:!0,children:(0,W.jsx)(`div`,{onContextMenu:(0,G.useCallback)(t=>{let n=t.target.closest(`[data-rct-item-id]`)?.getAttribute(`data-rct-item-id`),r=n?e[n]?.data:void 0;if(!r||r.kind===`root`||r.kind===`createTable`){a(void 0),t.preventDefault();return}a(r),s(`${t.clientX},${t.clientY}`)},[e]),className:`min-h-full`,children:n})}),i&&(0,W.jsxs)(Zo,{className:`min-w-44`,onCloseAutoFocus:e=>e.preventDefault(),children:[i.kind===`database`&&r&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Qo,{onSelect:()=>Gv(`ShowCreateTable`,{databaseName:i.databaseName}),children:[(0,W.jsx)(Mr,{}),`Create a Table`]}),(0,W.jsx)(es,{}),(0,W.jsxs)(Qo,{variant:`destructive`,onSelect:()=>Gv(`ShowDeleteDatabase`,{databaseName:i.databaseName}),children:[(0,W.jsx)(Qr,{}),`Drop Database`]})]}),i.kind===`table`&&(0,W.jsx)(Xy,{databaseName:i.databaseName,tableName:i.tableName,instanceDatabaseMap:t})]},o)]})}function Qx(e){switch(e.data.kind){case`createTable`:return`Create a Table`;case`database`:return e.data.databaseName;case`table`:return e.data.tableName;default:return``}}var $x=`mr-1.5 h-4 w-4 shrink-0 pointer-events-none`;function eS({title:e,item:t}){let n=t.data.kind;return(0,W.jsxs)(W.Fragment,{children:[n===`createTable`?(0,W.jsx)(Mr,{className:P($x,`text-green-500`)}):n===`database`?(0,W.jsx)(Zn,{className:P($x,`text-orange-400`)}):(0,W.jsx)(qr,{className:$x}),(0,W.jsx)(`span`,{className:`text-nowrap pointer-events-none`,children:e})]})}function tS({databaseName:e,tableName:t}){let{entityId:n}=K(),r=(0,G.useMemo)(()=>e&&t?[Yx(e,t)]:e?[e]:[],[e,t]),[i,a]=(0,G.useState)(r[0]);(0,G.useEffect)(()=>{r[0]!==void 0&&a(r[0])},[r]);let[o,s]=Pf(`DatabaseTreeExpanded/${n}`,e?[e]:[]);return(0,G.useEffect)(()=>{e&&s(t=>t.includes(e)?t:[...t,e])},[e,s]),{focusedItem:i,setFocusedItem:a,expandedItems:o,setExpandedItems:s,selectedItems:r}}var nS={"--rct-drop-target-height":`0px`};function rS({instanceDatabaseMap:e}){let t=L({strict:!1}),n=Oe(),r=ps(),{items:i,rootId:a}=(0,G.useMemo)(()=>Xx(e,{canManage:r}),[e,r]),{focusedItem:o,setFocusedItem:s,expandedItems:c,setExpandedItems:l,selectedItems:u}=tS(t),d=(0,G.useCallback)((e,r)=>{n({to:yv({...t,databaseName:e,tableName:r})})},[n,t]),f=(0,G.useCallback)(e=>{switch(e.kind){case`createTable`:Gv(`ShowCreateTable`,{databaseName:t.databaseName});break;case`database`:(t.databaseName!==e.databaseName||t.tableName)&&d(e.databaseName,void 0);break;case`table`:(t.databaseName!==e.databaseName||t.tableName!==e.tableName)&&d(e.databaseName,e.tableName);break}},[t.databaseName,t.tableName,d]),p=(0,G.useCallback)(e=>{let t=e[e.length-1],n=t===void 0?void 0:i[t]?.data;n&&f(n)},[i,f]);return(0,W.jsx)(`div`,{className:`app-tree-scroll h-full overflow-auto pr-1.5`,style:nS,children:(0,W.jsx)(Zx,{items:i,instanceDatabaseMap:e,children:(0,W.jsx)(rx,{canDragAndDrop:!1,canReorderItems:!1,canSearch:!0,canRename:!1,defaultInteractionMode:ob.DoubleClickItemToExpand,getItemTitle:Qx,items:i,renderItemArrow:ab,renderItemTitle:eS,viewState:{databasesTree:{focusedItem:o,expandedItems:c,selectedItems:u}},onFocusItem:e=>s(e.index),onExpandItem:e=>l(t=>t.includes(e.index)?t:[...t,e.index]),onCollapseItem:e=>l(t=>t.filter(t=>t!==e.index)),onSelectItems:p,children:(0,W.jsx)(Bx,{treeId:`databasesTree`,rootItem:a,treeLabel:`Databases tree`})})})})}function iS({instanceDatabaseMap:e}){return(0,W.jsxs)(`div`,{className:`pl-3 flex flex-col h-full min-h-0`,children:[(0,W.jsx)(`h1`,{className:`pt-3 pb-3 text-3xl shrink-0`,children:`Databases`}),e?(0,W.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,W.jsx)(rS,{instanceDatabaseMap:e})}):(0,W.jsx)(Gl,{className:`w-full flex-1 min-h-0 rounded-md`})]})}function aS(e){for(let t of e.split(`
|
|
803
|
-
`)){let e=t.match(/^(\t+| +)\S/);if(!e)continue;let n=e[1];return n[0]===` `?` `:n}return` `}function
|
|
802
|
+
`},Fx=function(e,t,n,r,i){var a=function(e){return t.getItemTitle(t.items[e])};return e.replace(/({[^\s}]+)}/g,function(e){var o=e.slice(1,-1);switch(o){case`treeLabel`:return r.treeLabel??``;case`renamingItem`:return r.renamingItem?a(r.renamingItem):`None`;case`dragItems`:return n.draggingItems?.map(function(e){return t.getItemTitle(e)}).join(`, `)??`None`;case`dropTarget`:if(!n.draggingPosition)return`None`;if(n.draggingPosition.targetType===`item`||n.draggingPosition.targetType===`root`)return`within ${a(n.draggingPosition.targetItem)}`;var s=t.items[n.draggingPosition.parentItem],c=t.getItemTitle(s);return n.draggingPosition.childIndex===0?`within ${c} at the start`:`within ${c} after ${a(s.children[n.draggingPosition.childIndex-1])}`;default:if(o.startsWith(`keybinding:`))return i[o.slice(11)][0];throw Error(`Unknown live descriptor variable {${o}}`)}})},Ix=function(e){var t=e.children,n=e.live;return G.createElement(`div`,{"aria-live":n,dangerouslySetInnerHTML:{__html:t}})},Lx=function(){var e=dx(),t=Jx(),n=Ub(),r=yx(),i=(0,G.useMemo)(function(){return e.liveDescriptors??Px},[e.liveDescriptors]),a=t.renderers.renderLiveDescriptorContainer;return t.treeInformation.isRenaming?G.createElement(a,{tree:t},G.createElement(Ix,{live:`polite`},Fx(i.renamingItem,e,n,t,r))):t.treeInformation.isSearching?G.createElement(a,{tree:t},G.createElement(Ix,{live:`polite`},Fx(i.searching,e,n,t,r))):t.treeInformation.isProgrammaticallyDragging?G.createElement(a,{tree:t},G.createElement(Ix,{live:`polite`},Fx(i.programmaticallyDragging,e,n,t,r)),G.createElement(Ix,{live:`assertive`},Fx(i.programmaticallyDraggingTarget,e,n,t,r))):G.createElement(a,{tree:t},G.createElement(Ix,{live:`off`},Fx(i.introduction,e,n,t,r)))},Rx=function(){return dx().showLiveDescription??!0?G.createElement(Lx,null):null},zx=function(){return zx=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},zx.apply(this,arguments)},Bx=function(){var e=Jx(),t=e.treeId,n=e.rootItem,r=e.renderers,i=e.treeInformation,a=dx(),o=(0,G.useRef)(),s=Ub();kx(),hx(o.current,function(){a.setActiveTree(t)},function(){a.setActiveTree(function(e){return e===t?void 0:e})});var c=a.items[n].children,l=G.createElement(G.Fragment,null,G.createElement(Rx,null),G.createElement(Xx,{depth:0,parentId:n},c??[]),G.createElement(px,{treeId:t}),G.createElement(Nx,{containerRef:o.current})),u=zx({onDragOver:function(e){e.preventDefault(),s.onDragOverTreeHandler(e,t,o)},onDragLeave:function(e){s.onDragLeaveContainerHandler(e,o)},onMouseDown:function(){return s.abortProgrammaticDrag()},ref:o,style:{position:`relative`},role:`tree`,"aria-label":i.treeLabelledBy?void 0:i.treeLabel,"aria-labelledby":i.treeLabelledBy},{"data-rct-tree":t});return r.renderTreeContainer({children:l,info:i,containerProps:u})},Vx=function(e,t,n){var r=dx(),i=Ub(),a=r.viewState[e.treeId]?.selectedItems;return(0,G.useMemo)(function(){return{isFocused:r.activeTreeId===e.treeId,isRenaming:!!t,areItemsSelected:(a?.length??0)>0,isSearching:n!==null,search:n,isProgrammaticallyDragging:i.isProgrammaticallyDragging??!1,treeId:e.treeId,rootItem:e.rootItem,treeLabel:e.treeLabel,treeLabelledBy:e.treeLabelledBy}},[r.activeTreeId,e.treeId,e.rootItem,e.treeLabel,e.treeLabelledBy,t,a?.length,n,i.isProgrammaticallyDragging])},Hx=function(){return Hx=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Hx.apply(this,arguments)},Ux=function(e,t){var n=dx(),r=Jx(),i=Ub();(0,G.useImperativeHandle)(e,function(){return Hx(Hx(Hx({},t),{treeEnvironmentContext:n,dragAndDropContext:i,treeContext:r}),r.treeInformation)})},Wx=G.createContext(null),Gx=G.forwardRef(function(e,t){dx();var n=Jx();Ub();var r=Qb(),i=(0,G.useMemo)(function(){return{abortRenamingItem:function(){n.setRenamingItem(null)},abortSearch:function(){n.setSearch(null)},collapseItem:function(e){r.collapseItem(e,n.treeId)},completeRenamingItem:function(){},expandItem:function(e){r.expandItem(e,n.treeId)},focusItem:function(e,t){t===void 0&&(t=!0),r.focusItem(e,n.treeId,t)},focusTree:function(e){e===void 0&&(e=!0),r.focusTree(n.treeId,e)},invokePrimaryAction:function(e){r.invokePrimaryAction(e,n.treeId)},moveFocusDown:function(){r.moveFocusDown(n.treeId)},moveFocusUp:function(){r.moveFocusUp(n.treeId)},renameItem:function(e,t){r.renameItem(e,t,n.treeId)},selectItems:function(e){r.selectItems(e,n.treeId)},setSearch:function(e){n.setSearch(e)},startRenamingItem:function(e){n.setRenamingItem(e)},stopRenamingItem:function(){n.setRenamingItem(null)},toggleItemExpandedState:function(e){r.toggleItemExpandedState(e,n.treeId)},toggleItemSelectStatus:function(e){r.toggleItemSelectStatus(e,n.treeId)},expandAll:function(){r.expandAll(n.treeId)},collapseAll:function(){r.collapseAll(n.treeId)},expandSubsequently:function(e){return r.expandSubsequently(n.treeId,e)}}},[r,n]);return Ux(t,i),G.createElement(Wx.Provider,{value:i},e.children)}),Kx=function(){return Kx=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Kx.apply(this,arguments)},qx=G.createContext(null),Jx=function(){return(0,G.useContext)(qx)},Yx=G.forwardRef(function(e,t){var n,r=dx(),i=(0,G.useMemo)(function(){return Kx(Kx({},r),e)},[e,r]),a=(0,G.useState)(null),o=a[0],s=a[1],c=(0,G.useState)(null),l=c[0],u=c[1],d=r.items[e.rootItem],f=r.viewState[e.treeId];(0,G.useEffect)(function(){return r.registerTree({treeId:e.treeId,rootItem:e.rootItem}),function(){return r.unregisterTree(e.treeId)}},[e.treeId,e.rootItem]);var p=Vx(e,l,o),m=(0,G.useMemo)(function(){return{treeId:e.treeId,rootItem:e.rootItem,treeLabel:e.treeLabel,treeLabelledBy:e.treeLabelledBy,getItemsLinearly:function(){return ox(e.rootItem,f??{},r.items)},treeInformation:p,search:o,setSearch:s,renamingItem:l,setRenamingItem:u,renderers:i}},[r.items,e.rootItem,e.treeId,e.treeLabel,e.treeLabelledBy,l,i,o,p,f]);return d===void 0?((n=r.onMissingItems)==null||n.call(r,[e.rootItem]),null):G.createElement(qx.Provider,{value:m},G.createElement(Gx,{ref:t},G.createElement(Bx,null)))}),Xx=function(e){for(var t=Jx(),n=t.renderers,r=t.treeInformation,i=[],a=0,o=e.children;a<o.length;a++){var s=o[a];i.push(G.createElement(tS,{key:s,itemIndex:s,depth:e.depth}))}if(i.length===0)return null;var c={role:e.depth===0?void 0:`group`};return n.renderItemsContainer({children:i,info:r,containerProps:c,depth:e.depth,parentId:e.parentId})},Zx=function(){return Zx=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Zx.apply(this,arguments)},Qx=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},$x=function(e){var t=Jx(),n=t.treeId,r=t.search,i=t.renamingItem,a=t.setRenamingItem,o=dx(),s=wb(),c=Ub(),l=Dx(`last-focus`),u=e&&o.getItemTitle(e),d=Lb(),f=(0,G.useMemo)(function(){return r===null||r.length===0||!e||!u?!1:(o.doesSearchMatchItem??Ax)(r,e,u)},[r,e,u,o.doesSearchMatchItem]),p=e&&(o.viewState[n]?.selectedItems)?.includes(e.index),m=e&&(o.viewState[n]?.expandedItems)?.includes(e.index),h=e&&i===e.index;return(0,G.useMemo)(function(){if(e){var t=o.viewState[n],r=((t?.selectedItems)?.map(function(e){return o.items[e]})??(t?.focusedItem?[o.items[t?.focusedItem]]:[])).filter(function(e){return!!e}),i=!!r.find(function(t){return t.index===e.index}),u=r&&(o.canDrag?.call(o,r)??!0)&&r.map(function(e){return e.canMove??!0}).reduce(function(e,t){return e&&t},!0),g=(o.canDrag?.call(o,[e])??!0)&&(e.canMove??!0),_=o.canDragAndDrop&&(i&&u||!i&&g),v=o.canDragAndDrop&&!!(c.viableDragPositions?.[n])?.find(function(t){return t.targetType===`item`&&t.targetItem===e.index}),y={primaryAction:function(){var t;(t=o.onPrimaryAction)==null||t.call(o,o.items[e.index],n)},collapseItem:function(){var t;(t=o.onCollapseItem)==null||t.call(o,e,n)},expandItem:function(){var t;(t=o.onExpandItem)==null||t.call(o,e,n)},toggleExpandedState:function(){var t,r;m?(t=o.onCollapseItem)==null||t.call(o,e,n):(r=o.onExpandItem)==null||r.call(o,e,n)},selectItem:function(){var t;(t=o.onSelectItems)==null||t.call(o,[e.index],n)},addToSelectedItems:function(){var r;(r=o.onSelectItems)==null||r.call(o,Qx(Qx([],t?.selectedItems??[],!0),[e.index],!1),n)},unselectItem:function(){var r;(r=o.onSelectItems)==null||r.call(o,(t?.selectedItems)?.filter(function(t){return t!==e.index})??[],n)},selectUpTo:function(t){l(e,t)},startRenamingItem:function(){a(e.index)},stopRenamingItem:function(){a(null)},focusItem:function(t){var r;t===void 0&&(t=!0),(r=o.onFocusItem)==null||r.call(o,e,n,t)},startDragging:function(){var r,i=t?.selectedItems??[];if(i.includes(e.index)||(i=[e.index],(r=o.onSelectItems)==null||r.call(o,i,n)),_){var a=d(n,i.map(function(e){return o.items[e]}));c.onStartDraggingItems(a,n)}}},b={isSelected:p,isExpanded:m,isFocused:t?.focusedItem===e.index,isRenaming:h,isDraggingOver:c.draggingPosition&&c.draggingPosition.targetType===`item`&&c.draggingPosition.targetItem===e.index&&c.draggingPosition.treeId===n,isDraggingOverParent:!1,isSearchMatching:f,canDrag:_,canDropOn:v},x=Zx(Zx({},s.createInteractiveElementProps(e,n,y,b,t)),{"data-rct-item-interactive":!0,"data-rct-item-focus":b.isFocused?`true`:`false`,"data-rct-item-id":e.index}),S=Zx({},{"data-rct-item-container":`true`}),C={role:`treeitem`,"aria-selected":b.isSelected,"aria-expanded":e.isFolder?b.isExpanded?`true`:`false`:void 0},w={onClick:function(){e.isFolder&&y.toggleExpandedState(),y.selectItem()},onFocus:function(){y.focusItem()},onDragOver:function(e){e.preventDefault()},"aria-hidden":!0,tabIndex:-1},T=t?Object.entries(t).reduce(function(t,n){var r=n[0],i=n[1];return t[r]=Array.isArray(i)?i.includes(e.index):i===e.index,t},{}):{};return Zx(Zx(Zx({},y),b),{interactiveElementProps:x,itemContainerWithChildrenProps:C,itemContainerWithoutChildrenProps:S,arrowProps:w,viewStateFlags:T})}},[e,o,n,c,p,m,h,f,s,l,a,d])},eS=function(e){var t=Jx(),n=t.renderers,r=t.treeInformation,i=t.setRenamingItem,a=t.treeId,o=dx(),s=(0,G.useRef)(null),c=(0,G.useRef)(null),l=o.items[e.itemIndex],u=(0,G.useState)(o.getItemTitle(l)),d=u[0],f=u[1],p=Pb(!0),m=function(){var e;(e=o.onAbortRenamingItem)==null||e.call(o,l,r.treeId),i(null),p(function(){o.setActiveTree(a)})},h=function(){var e;(e=o.onRenameItem)==null||e.call(o,l,d,r.treeId),i(null),p(function(){o.setActiveTree(a)})};Ab(function(){var e,t,n;o.setActiveTree(a),(o.autoFocus??!0)&&((e=s.current)==null||e.select(),(n=(t=s.current)?.focus)==null||n.call(t))},[o,a],[]),xx(`abortRenameItem`,function(){m()},!0,!0);var g={value:d,onChange:function(e){f(e.target.value)},onBlur:function(e){(!e.relatedTarget||e.relatedTarget!==c.current)&&m()},"aria-label":`New item name`,tabIndex:0};return n.renderRenameInput({item:l,inputRef:s,submitButtonProps:{onClick:function(e){e.stopPropagation(),h()}},submitButtonRef:c,formProps:{onSubmit:function(e){e.preventDefault(),h()}},inputProps:g})},tS=function(e){var t,n=(0,G.useState)(!1),r=n[0],i=n[1],a=Jx(),o=a.renderers,s=a.treeInformation,c=a.renamingItem,l=dx(),u=Sx(),d=l.items[e.itemIndex],f=(0,G.useMemo)(function(){return u.expandedItems?.includes(e.itemIndex)},[e.itemIndex,u.expandedItems]),p=$x(d);if(d===void 0||p===void 0)return r||(i(!0),(t=l.onMissingItems)==null||t.call(l,[e.itemIndex])),null;var m=l.shouldRenderChildren?.call(l,d,p)??(d.isFolder&&f),h=d.children&&m&&G.createElement(Xx,{depth:e.depth+1,parentId:e.itemIndex},d.children),g=l.getItemTitle(d),_=c===e.itemIndex?G.createElement(eS,{itemIndex:e.itemIndex}):o.renderItemTitle({info:s,context:p,title:g,item:d}),v=o.renderItemArrow({info:s,context:p,item:l.items[e.itemIndex]});return o.renderItem({item:l.items[e.itemIndex],depth:e.depth,title:_,arrow:v,context:p,info:s,children:h})??null},nS=`__db_root__`,rS=`__create_table__`;function iS(e,t){return`${e}/${t}`}function aS(e,{canManage:t}){let n={},r=Object.keys(e||{}).sort();for(let t of r){let r=Object.keys(e?.[t]||{}).sort();n[t]={index:t,isFolder:!0,children:r.map(e=>iS(t,e)),data:{kind:`database`,databaseName:t},canMove:!1,canRename:!1};for(let e of r){let r=iS(t,e);n[r]={index:r,isFolder:!1,data:{kind:`table`,databaseName:t,tableName:e},canMove:!1,canRename:!1}}}return n[rS]={index:rS,isFolder:!1,data:{kind:`createTable`},canMove:!1,canRename:!1},n[nS]={index:nS,isFolder:!0,children:[...t?[rS]:[],...r],data:{kind:`root`},canMove:!1,canRename:!1},{items:n,rootId:nS}}function oS({items:e,instanceDatabaseMap:t,children:n}){let r=ms(),[i,a]=(0,G.useState)(void 0),[o,s]=(0,G.useState)(``);return(0,W.jsxs)(Xo,{modal:!1,children:[(0,W.jsx)(Zo,{asChild:!0,children:(0,W.jsx)(`div`,{onContextMenu:(0,G.useCallback)(t=>{let n=t.target.closest(`[data-rct-item-id]`)?.getAttribute(`data-rct-item-id`),r=n?e[n]?.data:void 0;if(!r||r.kind===`root`||r.kind===`createTable`){a(void 0),t.preventDefault();return}a(r),s(`${t.clientX},${t.clientY}`)},[e]),className:`min-h-full`,children:n})}),i&&(0,W.jsxs)(Qo,{className:`min-w-44`,onCloseAutoFocus:e=>e.preventDefault(),children:[i.kind===`database`&&r&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)($o,{onSelect:()=>ey(`ShowCreateTable`,{databaseName:i.databaseName}),children:[(0,W.jsx)(Nr,{}),`Create a Table`]}),(0,W.jsx)(ts,{}),(0,W.jsxs)($o,{variant:`destructive`,onSelect:()=>ey(`ShowDeleteDatabase`,{databaseName:i.databaseName}),children:[(0,W.jsx)($r,{}),`Drop Database`]})]}),i.kind===`table`&&(0,W.jsx)(ab,{databaseName:i.databaseName,tableName:i.tableName,instanceDatabaseMap:t})]},o)]})}function sS(e){switch(e.data.kind){case`createTable`:return`Create a Table`;case`database`:return e.data.databaseName;case`table`:return e.data.tableName;default:return``}}var cS=`mr-1.5 h-4 w-4 shrink-0 pointer-events-none`;function lS({title:e,item:t}){let n=t.data.kind;return(0,W.jsxs)(W.Fragment,{children:[n===`createTable`?(0,W.jsx)(Nr,{className:P(cS,`text-green-500`)}):n===`database`?(0,W.jsx)(Qn,{className:P(cS,`text-orange-400`)}):(0,W.jsx)(Jr,{className:cS}),(0,W.jsx)(`span`,{className:`text-nowrap pointer-events-none`,children:e})]})}function uS({databaseName:e,tableName:t}){let{entityId:n}=K(),r=(0,G.useMemo)(()=>e&&t?[iS(e,t)]:e?[e]:[],[e,t]),[i,a]=(0,G.useState)(r[0]);(0,G.useEffect)(()=>{r[0]!==void 0&&a(r[0])},[r]);let[o,s]=Ff(`DatabaseTreeExpanded/${n}`,e?[e]:[]);return(0,G.useEffect)(()=>{e&&s(t=>t.includes(e)?t:[...t,e])},[e,s]),{focusedItem:i,setFocusedItem:a,expandedItems:o,setExpandedItems:s,selectedItems:r}}var dS={"--rct-drop-target-height":`0px`};function fS({instanceDatabaseMap:e}){let t=L({strict:!1}),n=Oe(),r=ms(),{items:i,rootId:a}=(0,G.useMemo)(()=>aS(e,{canManage:r}),[e,r]),{focusedItem:o,setFocusedItem:s,expandedItems:c,setExpandedItems:l,selectedItems:u}=uS(t),d=(0,G.useCallback)((e,r)=>{n({to:bv({...t,databaseName:e,tableName:r})})},[n,t]),f=(0,G.useCallback)(e=>{switch(e.kind){case`createTable`:ey(`ShowCreateTable`,{databaseName:t.databaseName});break;case`database`:(t.databaseName!==e.databaseName||t.tableName)&&d(e.databaseName,void 0);break;case`table`:(t.databaseName!==e.databaseName||t.tableName!==e.tableName)&&d(e.databaseName,e.tableName);break}},[t.databaseName,t.tableName,d]),p=(0,G.useCallback)(e=>{let t=e[e.length-1],n=t===void 0?void 0:i[t]?.data;n&&f(n)},[i,f]);return(0,W.jsx)(`div`,{className:`app-tree-scroll h-full overflow-auto pr-1.5`,style:dS,children:(0,W.jsx)(oS,{items:i,instanceDatabaseMap:e,children:(0,W.jsx)(fx,{canDragAndDrop:!1,canReorderItems:!1,canSearch:!0,canRename:!1,defaultInteractionMode:hb.DoubleClickItemToExpand,getItemTitle:sS,items:i,renderItemArrow:mb,renderItemTitle:lS,viewState:{databasesTree:{focusedItem:o,expandedItems:c,selectedItems:u}},onFocusItem:e=>s(e.index),onExpandItem:e=>l(t=>t.includes(e.index)?t:[...t,e.index]),onCollapseItem:e=>l(t=>t.filter(t=>t!==e.index)),onSelectItems:p,children:(0,W.jsx)(Yx,{treeId:`databasesTree`,rootItem:a,treeLabel:`Databases tree`})})})})}function pS({instanceDatabaseMap:e}){return(0,W.jsxs)(`div`,{className:`pl-3 flex flex-col h-full min-h-0`,children:[(0,W.jsx)(`h1`,{className:`pt-3 pb-3 text-3xl shrink-0`,children:`Databases`}),e?(0,W.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,W.jsx)(fS,{instanceDatabaseMap:e})}):(0,W.jsx)(Kl,{className:`w-full flex-1 min-h-0 rounded-md`})]})}function mS(e){for(let t of e.split(`
|
|
803
|
+
`)){let e=t.match(/^(\t+| +)\S/);if(!e)continue;let n=e[1];return n[0]===` `?` `:n}return` `}function hS(e){return/\r\n/.test(e)?`\r
|
|
804
804
|
`:`
|
|
805
|
-
`}function
|
|
806
|
-
`)return-1;n++}return-1}function
|
|
807
|
-
`;)n++;return n}function
|
|
808
|
-
`);if(t<0)return{body:e};let n=e.slice(0,t);return n.replace(/^[ \t,]+/,``).startsWith(`#`)?{headerComment:n.replace(/\r$/,``).trim(),body:e.slice(t+1)}:{body:e}}function
|
|
809
|
-
`&&t.push(n+1);let n=t.length,r=r=>e.slice(t[r],r+1<n?t[r+1]-1:e.length).replace(/\r$/,``),i=Array.from({length:n},()=>!1),a=!1;for(let e=0;e<n;e++){let t=a,n=0;for(let t=r(e).indexOf(`"""`);t!==-1;t=r(e).indexOf(`"""`,t+3))n++,a=!a;i[e]=t||n>0}let o=t[n-1];for(let e=n-2;e>=0;e--){let n=r(e).trim();if(i[e]||n.startsWith(`#`)){o=t[e];continue}break}return[e.slice(0,o),e.slice(o)]}function XS(e){let t=aS(e),n=oS(e),{blocks:r,ok:i}=BS(e);if(!i)return{document:{segments:[{kind:`raw`,text:e}],indent:t,newline:n},ok:!1};let a=[],o=e=>{e&&a.push({kind:`raw`,text:e})},s=0,c=0;for(let t of r){let n=e.slice(s,t.start),r=e.slice(t.start,t.end),i=JS(r,`t${c}`);if(i){let[e,t]=YS(n);o(e),i.leading=t,a.push({kind:`table`,table:i}),c++}else o(n+r);s=t.end}return o(e.slice(s)),{document:{segments:a,indent:t,newline:n},ok:!0}}function ZS(e){let t=(e||``)?.split(`.`);return t.length>1?t.slice(-1)[0]:``}var QS={apng:{kind:`image`,mime:`image/apng`},avif:{kind:`image`,mime:`image/avif`},bmp:{kind:`image`,mime:`image/bmp`},gif:{kind:`image`,mime:`image/gif`},ico:{kind:`image`,mime:`image/x-icon`},jfif:{kind:`image`,mime:`image/jpeg`},jpeg:{kind:`image`,mime:`image/jpeg`},jpg:{kind:`image`,mime:`image/jpeg`},png:{kind:`image`,mime:`image/png`},webp:{kind:`image`,mime:`image/webp`},m4v:{kind:`video`,mime:`video/mp4`},mov:{kind:`video`,mime:`video/quicktime`},mp4:{kind:`video`,mime:`video/mp4`},ogv:{kind:`video`,mime:`video/ogg`},webm:{kind:`video`,mime:`video/webm`}};function $S(e){return QS[ZS(e).toLowerCase()]}function eC(e){return $S(e)!==void 0}async function tC({instanceClient:e,file:t,project:n,encoding:r}){let{data:i}=await e.post(`/`,{operation:`get_component_file`,project:n,file:t,encoding:r??(eC(t)?`base64`:`utf8`)});return{project:n,file:t,...i}}function nC(e){return B({queryKey:rC(e),queryFn:()=>tC(e),enabled:!!e.file&&!!e.project,retry:!1})}function rC(e){return[e.entityId,`get_component_file`,e.project,e.file,e.encoding]}var iC=`data`,aC=25;function oC(e){return B({queryKey:[e.entityId,`schema-relationships`],staleTime:6e4,retry:!1,enabled:e.enabled!==!1,queryFn:async()=>{try{let t=sC(await kh(e)).slice(0,aC);return cC((await Promise.all(t.map(({project:t,file:n})=>tC({...e,project:t,file:n}).then(e=>e.message).catch(()=>void 0)))).filter(e=>typeof e==`string`))}catch{return{}}}})}function sC(e){let t=[];for(let n of e?.entries??[]){if(!(`entries`in n))continue;let e=(r,i)=>{for(let a of r)`entries`in a?e(a.entries,`${i}${a.name}/`):a.name.endsWith(`.graphql`)&&t.push({project:n.name,file:`${i}${a.name}`})};e(n.entries,``)}return t}function cC(e){let t=[];for(let n of e){let{document:e,ok:r}=XS(n);if(r)for(let n of e.segments){if(n.kind!==`table`)continue;let{table:e}=n,r=uS(e.directives,`table`),i=fS(dS(r,`table`)?.value)??e.typeName,a=fS(dS(r,`database`)?.value)??iC,o=[];for(let t of e.fields){let e=uS(t.directives,`relationship`);e&&o.push({attribute:t.name,relatedTypeName:sS(t.type),isToMany:cS(t.type),from:fS(dS(e,`from`)?.value),to:fS(dS(e,`to`)?.value)})}t.push({typeName:e.typeName,tableName:i,database:a,relationships:o})}}let n={};for(let e of t){if(!e.relationships.length)continue;let r=[];for(let{relatedTypeName:n,...i}of e.relationships){let a=t.find(t=>t.typeName===n&&t.database===e.database);a&&r.push({...i,relatedTableName:a.tableName})}r.length&&((n[e.database]??={})[e.tableName]=r)}return n}function lC({canEditRecords:e,canDeleteRecords:t,setIsModalOpen:n,isModalOpen:r,primaryKey:i,missingPrimaryKey:a,recordUnavailable:o,syntheticAttributes:s,data:c,onSaveChanges:l,onDeleteRecord:u,isUpdateTableRecordsPending:d,isDeleteTableRecordsPending:f}){let p=ld(),m=!!a||!!o,h=!e||m,[g,_]=(0,G.useState)(!0),[v,y]=(0,G.useState)(!1),[b,x]=(0,G.useState)(),S=(0,G.useMemo)(()=>{let e=c?.map(({__createdtime__:e,__updatedtime__:t,...n})=>{for(let e of s??[])delete n[e];return n});return JSON.stringify(e,null,4)},[c,s]),C=(0,G.useCallback)(e=>{y(!0),_(e.length===0)},[_]);return(0,W.jsx)(qt,{onOpenChange:n,open:r,children:(0,W.jsxs)(tn,{"aria-describedby":void 0,resizable:!0,autoFocus:!h,onEscapeKeyDown:h?void 0:e=>{v&&e.preventDefault()},children:[(0,W.jsx)(Zt,{children:(0,W.jsxs)(Jt,{children:[h?`View`:`Edit`,` Row`]})}),m&&(0,W.jsxs)(bh,{variant:`warning`,children:[(0,W.jsx)(ei,{}),(0,W.jsx)(xh,{children:a?`This row has no primary key value`:`This row couldn't be loaded`}),(0,W.jsxs)(Sh,{children:[(0,W.jsx)(`p`,{children:a?i?(0,W.jsxs)(W.Fragment,{children:[`It has no value for the primary key`,` `,(0,W.jsx)(`code`,{children:i}),`, so it can't be looked up, edited, or deleted individually.`]}):`It has no primary key value, so it can't be looked up, edited, or deleted individually.`:i?(0,W.jsxs)(W.Fragment,{children:[`Nothing is stored under its primary key`,` `,(0,W.jsx)(`code`,{children:i}),`, so it can't be edited or deleted individually.`]}):`Nothing is stored under its primary key, so it can't be edited or deleted individually.`}),(0,W.jsx)(`p`,{children:`This usually means the table's primary key was changed after the row was created, so the value shown here isn't the key the record is actually stored under. To remove it, recreate the table or restore the original primary key attribute.`})]})]}),c?(0,W.jsx)(`div`,{className:`flex-1 min-h-0 w-full`,children:(0,W.jsx)(dd,{className:`w-full h-full`,language:`json`,theme:p,options:{readOnly:h,automaticLayout:!0},value:S,onValidate:C,onChange:e=>{x(e)}})}):(0,W.jsx)(Ei,{}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[t&&!m&&(0,W.jsxs)(F,{variant:`destructive`,type:`button`,autoFocus:!1,onClick:()=>{let e=c[0]?.[i];e!=null&&u([e])},disabled:f,children:[(0,W.jsx)($r,{}),` Delete Row`]}),e&&!m&&(0,W.jsxs)(F,{variant:`submit`,autoFocus:!0,accessKey:`s`,onClick:()=>{b&&g?l(JSON.parse(b)):n(!1)},disabled:!g||d,children:[(0,W.jsx)(Ir,{}),` `,(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`S`}),`ave Changes`]})]})]})})]})})}function uC(e=!1){let[t,n]=(0,G.useState)(e),r=(0,G.useCallback)(e=>{e?.preventDefault?.(),n(e=>!e)},[]),i=(0,G.useCallback)(e=>{e?.preventDefault?.(),n(!0)},[]),a=(0,G.useCallback)(e=>{e?.preventDefault?.(),n(!1)},[]);return(0,G.useMemo)(()=>({toggled:t,setToggled:n,toggle:r,toggleOn:i,toggleOff:a}),[r,n,a,i,t])}async function dC({databaseName:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`cleanup_orphan_blobs`,database:e});return n}function fC(){return I({mutationFn:dC})}async function pC({databaseName:e,tableName:t,hashValues:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`delete`,database:e,table:t,hash_values:n});return i}function mC(){return I({mutationFn:pC})}function hC({enabled:e,entityId:t,instanceClient:n,databaseName:r,tableName:i,ids:a}){let o=a?.filter(e=>e!=null)??null;return B({queryKey:[t,`search_by_id`,r,i,o],queryFn:()=>n.post(`/`,{get_attributes:[`*`],ids:o,noCacheStore:!0,onlyIfCached:!1,operation:`search_by_id`,database:r,table:i}),enabled:e&&!!o?.length,retry:!1})}async function gC({databaseName:e,tableName:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`describe_table`,database:e,table:t,exact_count:!0},{timeout:0});return r.record_count}function _C(e){return B({enabled:e.enabled&&!!e.databaseName&&!!e.tableName,queryKey:[e.entityId,e.databaseName,e.tableName,`record_count`,`exact`],queryFn:()=>gC(e),staleTime:6e4,gcTime:5e3,retry:!1})}async function vC(e){let{databaseName:t,tableName:n,records:r,instanceClient:i}=e,{data:a}=await i.post(`/`,{operation:`update`,database:t,table:n,records:r});return a}function yC(){return I({mutationFn:vC})}var bC=ee(S(),S());function xC({applyFilters:e,columnFiltersForm:t,headerGroups:n}){let r=(0,G.useCallback)(t=>{if(t.key===`Enter`)return t.preventDefault(),e(),!1},[e]);return(0,W.jsx)(Bu,{children:(0,W.jsx)(q,{...t,children:n.map(e=>(0,W.jsx)(Hu,{className:`border-none`,children:e.headers.map(e=>{let n=e.column.columnDef.meta?.relationshipInfo;return(0,W.jsx)(Gu,{style:{width:`${e.column.getSize()}px`},className:P(`sticky z-10 bg-card dark:bg-black-dark border-b border-border`,`top-[calc(var(--spacing(32))+var(--spacing(10)))]`),children:e.column.columnDef.enableColumnFilter&&(0,W.jsx)(Y,{control:t.control,name:e.id,render:({field:e})=>(0,W.jsxs)(X,{className:`border-r border-r-black`,children:[(0,W.jsxs)(`div`,{className:`flex items-center`,children:[n&&(0,W.jsx)(SC,{relationshipInfo:n,value:e.value??``,onChange:e.onChange}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,autoCapitalize:`none`,autoComplete:`off`,className:`rounded-none`,onKeyDown:r,value:e.value??``,placeholder:n?`.${n.relatedPrimaryKey} value`:void 0})})]}),(0,W.jsx)(Q,{})]})})},e.id)})},e.id))})})}function SC({relationshipInfo:e,value:t,onChange:n}){return(0,W.jsxs)(ci,{children:[(0,W.jsx)(li,{asChild:!0,children:(0,W.jsx)(F,{type:`button`,variant:`ghost`,size:`icon`,className:`rounded-none shrink-0`,title:`Filter by a ${e.relatedTableName} property`,children:(0,W.jsx)(dn,{})})}),(0,W.jsx)(ui,{side:`bottom`,align:`start`,children:e.relatedAttributes.map(e=>(0,W.jsxs)(di,{onClick:()=>{let r=t.replace(/^\s*\.\S*\s*/,``);n(`.${e.attribute} ${r}`)},children:[e.attribute,e.type&&(0,W.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:e.type})]},e.attribute))})]})}function CC({columns:e,columnVisibility:t,setColumnVisibility:n}){let r=(0,G.useMemo)(()=>e.map(e=>typeof e.header==`string`?e.header:void 0).filter(Xi),[e]),i=(0,G.useCallback)((e,r)=>{n({...t,[e]:r})},[t,n]),a=(0,G.useCallback)(e=>{n({...t,...Object.fromEntries(r.map(t=>[t,e]))})},[r,t,n]),o=(0,G.useMemo)(()=>r.every(e=>t[e]??!0),[r,t]),s=(0,G.useMemo)(()=>r.every(e=>!(t[e]??!0)),[r,t]);return(0,W.jsxs)(ci,{children:[(0,W.jsx)(li,{asChild:!0,children:(0,W.jsxs)(F,{variant:`ghost`,children:[(0,W.jsx)(Jn,{className:`inline-block `}),`Columns`]})}),(0,W.jsxs)(ui,{children:[r.length>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(di,{inset:!0,disabled:o,onSelect:e=>{e.preventDefault(),a(!0)},children:`Select all`}),(0,W.jsx)(di,{inset:!0,disabled:s,onSelect:e=>{e.preventDefault(),a(!1)},children:`Deselect all`}),(0,W.jsx)(mi,{})]}),r.map(e=>(0,W.jsx)(wC,{columnHeader:e,isChecked:t[e]??!0,toggleColumn:i},e))]})]})}function wC({columnHeader:e,isChecked:t,toggleColumn:n}){return(0,W.jsx)(fi,{checked:t,onCheckedChange:(0,G.useCallback)(t=>{n(e,t)},[e,n]),onSelect:e=>e.preventDefault(),children:e})}function TC({className:e}){return(0,W.jsx)(vr,{className:_(`animate-spin`,e)})}var EC=[20,50,100,250];function DC({pageIndex:e,pageSize:t,totalPages:n,totalRecords:r,isEstimatedCount:i,estimatedRange:a,isExactCountFetching:o,isExactCountError:s,onRequestExactCount:c,setPageIndex:l,setPageSize:u}){let d=n===void 0||r===void 0,f=n&&n>0?n:1,p=e+1,m=e>0,h=!d&&p<f,g=e=>{l(Math.max(0,Math.min(e,f)-1))},_=e=>{u(e),l(0)},v=MC(p,f);return(0,W.jsx)(`div`,{className:`@container border-t border-border`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-3 px-1 py-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 whitespace-nowrap text-sm text-muted-foreground`,children:[(0,W.jsxs)(`span`,{className:`hidden @min-[400px]:inline`,children:[`Page `,nu(p),` of `,d?`…`:nu(f)]}),(0,W.jsx)(`span`,{"aria-hidden":!0,className:`hidden text-border @min-[400px]:inline`,children:`•`}),(0,W.jsx)(`span`,{children:d?(0,W.jsx)(Gl,{}):i?(0,W.jsx)(OC,{totalRecords:r,estimatedRange:a,isExactCountFetching:o,isExactCountError:s,onRequestExactCount:c}):(0,W.jsxs)(W.Fragment,{children:[nu(r),` `,r===1?`record`:`records`]})})]}),(0,W.jsx)(`div`,{className:`grow`}),(0,W.jsxs)(`nav`,{className:`flex items-center divide-x divide-border overflow-hidden rounded-lg border border-border`,children:[(0,W.jsxs)(kC,{onClick:()=>g(p-1),disabled:!m,"aria-label":`Previous page`,children:[(0,W.jsx)(In,{}),(0,W.jsx)(`span`,{className:`hidden @min-[480px]:inline`,children:`Previous`})]}),(0,W.jsx)(`div`,{className:`hidden divide-x divide-border @min-[620px]:flex`,children:v.map((e,t)=>e===`ellipsis`?(0,W.jsx)(`span`,{className:`flex h-9 min-w-9 items-center justify-center px-1 text-sm text-muted-foreground`,children:`…`},`ellipsis-${t}`):(0,W.jsx)(kC,{onClick:()=>g(e),isActive:e===p,"aria-label":`Page ${e}`,"aria-current":e===p?`page`:void 0,children:nu(e)},e))}),(0,W.jsxs)(kC,{onClick:()=>g(p+1),disabled:!h,"aria-label":`Next page`,children:[(0,W.jsx)(`span`,{className:`hidden @min-[480px]:inline`,children:`Next`}),(0,W.jsx)(Ln,{})]})]}),(0,W.jsx)(`div`,{className:`hidden grow @min-[840px]:block`}),(0,W.jsx)(jC,{pageSize:t,onChange:_}),(0,W.jsx)(AC,{pageCount:f,disabled:d||f<=1,onGo:g})]})})}function OC({totalRecords:e,estimatedRange:t,isExactCountFetching:n,isExactCountError:r,onRequestExactCount:i}){let a=e===1?`record`:`records`,o=r&&!n;return(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsxs)(`button`,{type:`button`,className:`cursor-help underline decoration-dotted underline-offset-4`,"aria-label":`Approximately ${nu(e)} ${a} (estimated)`,children:[`~`,nu(e),` `,a]})}),(0,W.jsxs)(Rt,{side:`top`,align:`start`,className:`flex max-w-60 flex-col gap-2 p-3 text-left`,children:[(0,W.jsxs)(`span`,{children:[`Estimated count.`,t?(0,W.jsxs)(W.Fragment,{children:[` `,`Likely between `,nu(t[0]),` and `,nu(t[1]),`.`]}):null]}),o&&(0,W.jsx)(`span`,{className:`font-medium`,children:`Couldn’t get the exact count.`}),(0,W.jsxs)(`button`,{type:`button`,onClick:i,disabled:n,className:`inline-flex items-center justify-center gap-1.5 self-start rounded border
|
|
805
|
+
`}function gS(e){return e.kind===`named`?e.name:gS(e.of)}function _S(e){return e.kind===`list`}function vS(e){return e.kind===`named`?`${e.name}${e.nonNull?`!`:``}`:`[${vS(e.of)}]${e.nonNull?`!`:``}`}function yS(e,t){return e.find(e=>e.name===t)}function bS(e,t){return e?.args.find(e=>e.name===t)}function xS(e){if(e===void 0)return;let t=e.trim();if(t.length>=2&&t.startsWith(`"`)&&t.endsWith(`"`))try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function SS(e){if(e===void 0)return;let t=Number(e.trim());return Number.isFinite(t)?t:void 0}function CS(e){let t=e?.trim();return t===`true`||t!==`false`&&void 0}function wS(e){return JSON.stringify(e)}function TS(e){return String(Math.trunc(e))}function ES(e){return e?`true`:`false`}var DS=0;function OS(){return`f${DS++}`}function kS(e=``){return{key:OS(),leadingComments:[],name:e,type:{kind:`named`,name:`String`,nonNull:!1},directives:[]}}function AS(e){return{id:e,leading:``,typeName:``,directives:[{name:`table`,args:[],hadParens:!1},{name:`export`,args:[],hadParens:!1},{name:`sealed`,args:[],hadParens:!1}],fields:[{key:OS(),leadingComments:[],name:`id`,type:{kind:`named`,name:`ID`,nonNull:!1},directives:[{name:`primaryKey`,args:[],hadParens:!1}]}],trailingComments:[],raw:``,edited:!0}}function jS(e,t){return e.some(e=>e.name===t)}function MS(e,t,n){return n===jS(e,t)?e:n?[...e,{name:t,args:[],hadParens:!1}]:e.filter(e=>e.name!==t)}function NS(e,t,n){return e.find(e=>e.name===t)?.args.find(e=>e.name===n)?.value}function PS(e,t,n,r){return(jS(e,t)?e:[...e,{name:t,args:[],hadParens:!1}]).map(e=>{if(e.name!==t)return e;let i=e.args.filter(e=>e.name!==n),a=r===void 0?i:[...i,{name:n,value:r}];return{...e,args:a}})}function FS(e,t,n,r){return PS(e,t,n,r?wS(r):void 0)}function IS(e,t,n,r){return PS(e,t,n,r===void 0||Number.isNaN(r)?void 0:TS(r))}function LS(e,t,n,r,i){return PS(e,t,n,r===i?void 0:ES(r))}function RS(e,t,n){let r={kind:`named`,name:e,nonNull:!t&&n};return t?{kind:`list`,of:r,nonNull:n}:r}function zS(e){return gS(e.type)}function BS(e){return e.type.kind===`list`}function VS(e){return e.type.nonNull}function HS(e){return/[A-Za-z0-9_]/.test(e)}function US(e,t){if(e.startsWith(`"""`,t)){let n=t+3;for(;n<e.length;){if(e[n]===`\\`){n+=2;continue}if(e.startsWith(`"""`,n))return n+3;n++}return-1}let n=t+1;for(;n<e.length;){let t=e[n];if(t===`\\`){n+=2;continue}if(t===`"`)return n+1;if(t===`
|
|
806
|
+
`)return-1;n++}return-1}function WS(e,t){let n=t;for(;n<e.length&&e[n]!==`
|
|
807
|
+
`;)n++;return n}function GS(e,t,n,r){let i=0,a=t;for(;a<e.length;){let t=e[a];if(t===`"`){if(a=US(e,a),a<0)return-1;continue}if(t===`#`){a=WS(e,a);continue}if(t===n)i++;else if(t===r&&(i--,i===0))return a+1;a++}return-1}function KS(e,t){let n=t;for(;n<e.length&&/[\s,]/.test(e[n]);)n++;return n}function qS(e,t,n){if(!e.startsWith(n,t)||t>0&&HS(e[t-1]))return!1;let r=e[t+n.length];return r===void 0||!HS(r)}function JS(e,t){let n=KS(e,t+4),r=n;for(;n<e.length&&HS(e[n]);)n++;if(n===r)return-1;for(;n<e.length;){let t=e[n];if(t===`"`){if(n=US(e,n),n<0)return-1;continue}if(t===`#`){n=WS(e,n);continue}if(t===`(`){if(n=GS(e,n,`(`,`)`),n<0)return-1;continue}if(t===`{`)break;if(t===`}`)return-1;n++}return n>=e.length||e[n]!==`{`?-1:GS(e,n,`{`,`}`)}function YS(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===`"`){if(n=US(e,n),n<0)return{blocks:t,ok:!1};continue}if(r===`#`){n=WS(e,n);continue}if(qS(e,n,`type`)){let r=JS(e,n);if(r>0){t.push({start:n,end:r}),n=r;continue}}n++}return{blocks:t,ok:!0}}function XS(e,t){let n=e[t];if(n===`"`){let n=US(e,t);return n<0?e.length:n}if(n===`[`){let n=GS(e,t,`[`,`]`);return n<0?e.length:n}if(n===`{`){let n=GS(e,t,`{`,`}`);return n<0?e.length:n}let r=t;for(;r<e.length&&!/[\s,)]/.test(e[r]);)r++;return r}function ZS(e){let t=[],n=0;for(;n<e.length&&(n=KS(e,n),!(n>=e.length));){if(e[n]===`#`){n=WS(e,n);continue}let r=n;for(;n<e.length&&HS(e[n]);)n++;let i=e.slice(r,n);if(!i){n++;continue}if(n=KS(e,n),e[n]!==`:`)continue;n=KS(e,n+1);let a=n;n=XS(e,n),t.push({name:i,value:e.slice(a,n).trim()})}return t}function QS(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(/\s/.test(r)){n++;continue}if(r===`#`){n=WS(e,n);continue}if(r!==`@`){n++;continue}n++;let i=n;for(;n<e.length&&HS(e[n]);)n++;let a=e.slice(i,n);if(!a)continue;let o=n;for(;o<e.length&&/\s/.test(e[o]);)o++;let s=[],c=!1;if(e[o]===`(`){let t=GS(e,o,`(`,`)`);t>0&&(c=!0,s=ZS(e.slice(o+1,t-1)),n=t)}t.push({name:a,args:s,hadParens:c})}return t}function $S(e,t){if(t=KS(e,t),e[t]===`[`){let n=$S(e,t+1);if(!n)return null;let r=KS(e,n.end);if(e[r]!==`]`)return null;r++;let i=!1;return e[r]===`!`&&(i=!0,r++),{type:{kind:`list`,of:n.type,nonNull:i},end:r}}let n=t;for(;t<e.length&&HS(e[t]);)t++;if(t===n)return null;let r=e.slice(n,t),i=!1;return e[t]===`!`&&(i=!0,t++),{type:{kind:`named`,name:r,nonNull:i},end:t}}function eC(e,t){let n=t;for(;n<e.length&&(e[n]===` `||e[n]===` `||e[n]===`,`);)n++;return n}function tC(e){let t=[],n=[],r=0;for(;r<e.length;){let i=e[r];if(/[\s,]/.test(i)){r++;continue}if(i===`#`){let t=WS(e,r);n.push(e.slice(r,t).replace(/\r$/,``).trim()),r=t;continue}if(i===`"`){let t=US(e,r);if(t<0)return null;n.push(e.slice(r,t)),r=t;continue}let a=r;for(;r<e.length&&HS(e[r]);)r++;let o=e.slice(a,r);if(!o||(r=KS(e,r),e[r]!==`:`))return null;let s=$S(e,r+1);if(!s)return null;r=s.end;let c=r;for(r=eC(e,r);e[r]===`@`;){for(r++;r<e.length&&HS(e[r]);)r++;let t=eC(e,r);if(e[t]===`(`){let n=GS(e,t,`(`,`)`);if(n<0)return null;t=n}r=t,r=eC(e,r)}let l=QS(e.slice(c,r));r=eC(e,r);let u;if(e[r]===`#`){let t=WS(e,r);u=e.slice(r,t).replace(/\r$/,``).trim(),r=t}t.push({key:OS(),leadingComments:n,name:o,type:s.type,directives:l,lineComment:u}),n=[]}return{fields:t,trailingComments:n}}function nC(e){let t=e.indexOf(`
|
|
808
|
+
`);if(t<0)return{body:e};let n=e.slice(0,t);return n.replace(/^[ \t,]+/,``).startsWith(`#`)?{headerComment:n.replace(/\r$/,``).trim(),body:e.slice(t+1)}:{body:e}}function rC(e,t){let n=KS(e,4),r=n;for(;n<e.length&&HS(e[n]);)n++;let i=e.slice(r,n);if(!i)return null;let a=e.indexOf(`{`,n);if(a<0)return null;let o=QS(e.slice(n,a));if(!yS(o,`table`))return null;let s=e.lastIndexOf(`}`);if(s<a)return null;let{headerComment:c,body:l}=nC(e.slice(a+1,s)),u=tC(l);return u?{id:t,leading:``,typeName:i,headerComment:c,directives:o,fields:u.fields,trailingComments:u.trailingComments,raw:e,edited:!1}:null}function iC(e){let t=[0];for(let n=0;n<e.length;n++)e[n]===`
|
|
809
|
+
`&&t.push(n+1);let n=t.length,r=r=>e.slice(t[r],r+1<n?t[r+1]-1:e.length).replace(/\r$/,``),i=Array.from({length:n},()=>!1),a=!1;for(let e=0;e<n;e++){let t=a,n=0;for(let t=r(e).indexOf(`"""`);t!==-1;t=r(e).indexOf(`"""`,t+3))n++,a=!a;i[e]=t||n>0}let o=t[n-1];for(let e=n-2;e>=0;e--){let n=r(e).trim();if(i[e]||n.startsWith(`#`)){o=t[e];continue}break}return[e.slice(0,o),e.slice(o)]}function aC(e){let t=mS(e),n=hS(e),{blocks:r,ok:i}=YS(e);if(!i)return{document:{segments:[{kind:`raw`,text:e}],indent:t,newline:n},ok:!1};let a=[],o=e=>{e&&a.push({kind:`raw`,text:e})},s=0,c=0;for(let t of r){let n=e.slice(s,t.start),r=e.slice(t.start,t.end),i=rC(r,`t${c}`);if(i){let[e,t]=iC(n);o(e),i.leading=t,a.push({kind:`table`,table:i}),c++}else o(n+r);s=t.end}return o(e.slice(s)),{document:{segments:a,indent:t,newline:n},ok:!0}}function oC(e){let t=(e||``)?.split(`.`);return t.length>1?t.slice(-1)[0]:``}var sC={apng:{kind:`image`,mime:`image/apng`},avif:{kind:`image`,mime:`image/avif`},bmp:{kind:`image`,mime:`image/bmp`},gif:{kind:`image`,mime:`image/gif`},ico:{kind:`image`,mime:`image/x-icon`},jfif:{kind:`image`,mime:`image/jpeg`},jpeg:{kind:`image`,mime:`image/jpeg`},jpg:{kind:`image`,mime:`image/jpeg`},png:{kind:`image`,mime:`image/png`},webp:{kind:`image`,mime:`image/webp`},m4v:{kind:`video`,mime:`video/mp4`},mov:{kind:`video`,mime:`video/quicktime`},mp4:{kind:`video`,mime:`video/mp4`},ogv:{kind:`video`,mime:`video/ogg`},webm:{kind:`video`,mime:`video/webm`}};function cC(e){return sC[oC(e).toLowerCase()]}function lC(e){return cC(e)!==void 0}async function uC({instanceClient:e,file:t,project:n,encoding:r}){let{data:i}=await e.post(`/`,{operation:`get_component_file`,project:n,file:t,encoding:r??(lC(t)?`base64`:`utf8`)});return{project:n,file:t,...i}}function dC(e){return B({queryKey:fC(e),queryFn:()=>uC(e),enabled:!!e.file&&!!e.project,retry:!1})}function fC(e){return[e.entityId,`get_component_file`,e.project,e.file,e.encoding]}var pC=`data`,mC=25;function hC(e){return B({queryKey:[e.entityId,`schema-relationships`],staleTime:6e4,retry:!1,enabled:e.enabled!==!1,queryFn:async()=>{try{let t=gC(await Ah(e)).slice(0,mC);return _C((await Promise.all(t.map(({project:t,file:n})=>uC({...e,project:t,file:n}).then(e=>e.message).catch(()=>void 0)))).filter(e=>typeof e==`string`))}catch{return{}}}})}function gC(e){let t=[];for(let n of e?.entries??[]){if(!(`entries`in n))continue;let e=(r,i)=>{for(let a of r)`entries`in a?e(a.entries,`${i}${a.name}/`):a.name.endsWith(`.graphql`)&&t.push({project:n.name,file:`${i}${a.name}`})};e(n.entries,``)}return t}function _C(e){let t=[];for(let n of e){let{document:e,ok:r}=aC(n);if(r)for(let n of e.segments){if(n.kind!==`table`)continue;let{table:e}=n,r=yS(e.directives,`table`),i=xS(bS(r,`table`)?.value)??e.typeName,a=xS(bS(r,`database`)?.value)??pC,o=[];for(let t of e.fields){let e=yS(t.directives,`relationship`);e&&o.push({attribute:t.name,relatedTypeName:gS(t.type),isToMany:_S(t.type),from:xS(bS(e,`from`)?.value),to:xS(bS(e,`to`)?.value)})}t.push({typeName:e.typeName,tableName:i,database:a,relationships:o})}}let n={};for(let e of t){if(!e.relationships.length)continue;let r=[];for(let{relatedTypeName:n,...i}of e.relationships){let a=t.find(t=>t.typeName===n&&t.database===e.database);a&&r.push({...i,relatedTableName:a.tableName})}r.length&&((n[e.database]??={})[e.tableName]=r)}return n}function vC({canEditRecords:e,canDeleteRecords:t,setIsModalOpen:n,isModalOpen:r,primaryKey:i,missingPrimaryKey:a,recordUnavailable:o,syntheticAttributes:s,data:c,onSaveChanges:l,onDeleteRecord:u,isUpdateTableRecordsPending:d,isDeleteTableRecordsPending:f}){let p=ud(),m=!!a||!!o,h=!e||m,[g,_]=(0,G.useState)(!0),[v,y]=(0,G.useState)(!1),[b,x]=(0,G.useState)(),S=(0,G.useMemo)(()=>{let e=c?.map(({__createdtime__:e,__updatedtime__:t,...n})=>{for(let e of s??[])delete n[e];return n});return JSON.stringify(e,null,4)},[c,s]),[C,w]=(0,G.useState)(S);return S!==C&&(w(S),x(void 0),_(!0),y(!1)),(0,W.jsx)(qt,{onOpenChange:n,open:r,children:(0,W.jsxs)(tn,{"aria-describedby":void 0,resizable:!0,autoFocus:!h,onEscapeKeyDown:h?void 0:e=>{v&&e.preventDefault()},children:[(0,W.jsx)(Zt,{children:(0,W.jsxs)(Jt,{children:[h?`View`:`Edit`,` Row`]})}),m&&(0,W.jsxs)(xh,{variant:`warning`,children:[(0,W.jsx)(ti,{}),(0,W.jsx)(Sh,{children:a?`This row has no primary key value`:`This row couldn't be loaded`}),(0,W.jsxs)(Ch,{children:[(0,W.jsx)(`p`,{children:a?i?(0,W.jsxs)(W.Fragment,{children:[`It has no value for the primary key`,` `,(0,W.jsx)(`code`,{children:i}),`, so it can't be looked up, edited, or deleted individually.`]}):`It has no primary key value, so it can't be looked up, edited, or deleted individually.`:i?(0,W.jsxs)(W.Fragment,{children:[`Nothing is stored under its primary key`,` `,(0,W.jsx)(`code`,{children:i}),`, so it can't be edited or deleted individually.`]}):`Nothing is stored under its primary key, so it can't be edited or deleted individually.`}),(0,W.jsx)(`p`,{children:`This usually means the table's primary key was changed after the row was created, so the value shown here isn't the key the record is actually stored under. To remove it, recreate the table or restore the original primary key attribute.`})]})]}),c?(0,W.jsx)(`div`,{className:`flex-1 min-h-0 w-full`,children:(0,W.jsx)(fd,{className:`w-full h-full`,language:Pv,theme:p,options:{readOnly:h,automaticLayout:!0},value:S,onChange:e=>{x(e),y(!0),_(Bv(e))}})}):(0,W.jsx)(Di,{}),(0,W.jsx)(Ut,{children:(0,W.jsxs)(`div`,{className:`flex justify-between w-full`,children:[t&&!m&&(0,W.jsxs)(F,{variant:`destructive`,type:`button`,autoFocus:!1,onClick:()=>{let e=c?.[0]?.[i];e!=null&&u([e])},disabled:f,children:[(0,W.jsx)(ei,{}),` Delete Row`]}),e&&!m&&(0,W.jsxs)(F,{variant:`submit`,autoFocus:!0,accessKey:`s`,onClick:()=>{if(!b){n(!1);return}let e=Vv(b);if(!e.ok){H.error(`This record isn't valid JSON — fix the syntax and try again.`);return}l(e.value)},disabled:!g||d,children:[(0,W.jsx)(Lr,{}),` `,(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`S`}),`ave Changes`]})]})]})})]})})}function yC(e=!1){let[t,n]=(0,G.useState)(e),r=(0,G.useCallback)(e=>{e?.preventDefault?.(),n(e=>!e)},[]),i=(0,G.useCallback)(e=>{e?.preventDefault?.(),n(!0)},[]),a=(0,G.useCallback)(e=>{e?.preventDefault?.(),n(!1)},[]);return(0,G.useMemo)(()=>({toggled:t,setToggled:n,toggle:r,toggleOn:i,toggleOff:a}),[r,n,a,i,t])}async function bC({databaseName:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`cleanup_orphan_blobs`,database:e});return n}function xC(){return I({mutationFn:bC})}async function SC({databaseName:e,tableName:t,hashValues:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`delete`,database:e,table:t,hash_values:n});return i}function CC(){return I({mutationFn:SC})}function wC({enabled:e,entityId:t,instanceClient:n,databaseName:r,tableName:i,ids:a}){let o=a?.filter(e=>e!=null)??null;return B({queryKey:[t,`search_by_id`,r,i,o],queryFn:()=>n.post(`/`,{get_attributes:[`*`],ids:o,noCacheStore:!0,onlyIfCached:!1,operation:`search_by_id`,database:r,table:i}),enabled:e&&!!o?.length,retry:!1})}async function TC({databaseName:e,tableName:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`describe_table`,database:e,table:t,exact_count:!0},{timeout:0});return r.record_count}function EC(e){return B({enabled:e.enabled&&!!e.databaseName&&!!e.tableName,queryKey:[e.entityId,e.databaseName,e.tableName,`record_count`,`exact`],queryFn:()=>TC(e),staleTime:6e4,gcTime:5e3,retry:!1})}async function DC(e){let{databaseName:t,tableName:n,records:r,instanceClient:i}=e,{data:a}=await i.post(`/`,{operation:`update`,database:t,table:n,records:r});return a}function OC(){return I({mutationFn:DC})}var kC=ee(S(),S());function AC({applyFilters:e,columnFiltersForm:t,headerGroups:n}){let r=(0,G.useCallback)(t=>{if(t.key===`Enter`)return t.preventDefault(),e(),!1},[e]);return(0,W.jsx)(Vu,{children:(0,W.jsx)(q,{...t,children:n.map(e=>(0,W.jsx)(Uu,{className:`border-none`,children:e.headers.map(e=>{let n=e.column.columnDef.meta?.relationshipInfo;return(0,W.jsx)(Ku,{style:{width:`${e.column.getSize()}px`},className:P(`sticky z-10 bg-card dark:bg-black-dark border-b border-border`,`top-[calc(var(--spacing(32))+var(--spacing(10)))]`),children:e.column.columnDef.enableColumnFilter&&(0,W.jsx)(Y,{control:t.control,name:e.id,render:({field:e})=>(0,W.jsxs)(X,{className:`border-r border-r-black`,children:[(0,W.jsxs)(`div`,{className:`flex items-center`,children:[n&&(0,W.jsx)(jC,{relationshipInfo:n,value:e.value??``,onChange:e.onChange}),(0,W.jsx)(J,{children:(0,W.jsx)($,{...e,type:`text`,autoCapitalize:`none`,autoComplete:`off`,className:`rounded-none`,onKeyDown:r,value:e.value??``,placeholder:n?`.${n.relatedPrimaryKey} value`:void 0})})]}),(0,W.jsx)(Q,{})]})})},e.id)})},e.id))})})}function jC({relationshipInfo:e,value:t,onChange:n}){return(0,W.jsxs)(li,{children:[(0,W.jsx)(ui,{asChild:!0,children:(0,W.jsx)(F,{type:`button`,variant:`ghost`,size:`icon`,className:`rounded-none shrink-0`,title:`Filter by a ${e.relatedTableName} property`,children:(0,W.jsx)(dn,{})})}),(0,W.jsx)(di,{side:`bottom`,align:`start`,children:e.relatedAttributes.map(e=>(0,W.jsxs)(fi,{onClick:()=>{let r=t.replace(/^\s*\.\S*\s*/,``);n(`.${e.attribute} ${r}`)},children:[e.attribute,e.type&&(0,W.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:e.type})]},e.attribute))})]})}function MC({columns:e,columnVisibility:t,setColumnVisibility:n}){let r=(0,G.useMemo)(()=>e.map(e=>typeof e.header==`string`?e.header:void 0).filter(Zi),[e]),i=(0,G.useCallback)((e,r)=>{n({...t,[e]:r})},[t,n]),a=(0,G.useCallback)(e=>{n({...t,...Object.fromEntries(r.map(t=>[t,e]))})},[r,t,n]),o=(0,G.useMemo)(()=>r.every(e=>t[e]??!0),[r,t]),s=(0,G.useMemo)(()=>r.every(e=>!(t[e]??!0)),[r,t]);return(0,W.jsxs)(li,{children:[(0,W.jsx)(ui,{asChild:!0,children:(0,W.jsxs)(F,{variant:`ghost`,children:[(0,W.jsx)(Yn,{className:`inline-block `}),`Columns`]})}),(0,W.jsxs)(di,{children:[r.length>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fi,{inset:!0,disabled:o,onSelect:e=>{e.preventDefault(),a(!0)},children:`Select all`}),(0,W.jsx)(fi,{inset:!0,disabled:s,onSelect:e=>{e.preventDefault(),a(!1)},children:`Deselect all`}),(0,W.jsx)(hi,{})]}),r.map(e=>(0,W.jsx)(NC,{columnHeader:e,isChecked:t[e]??!0,toggleColumn:i},e))]})]})}function NC({columnHeader:e,isChecked:t,toggleColumn:n}){return(0,W.jsx)(pi,{checked:t,onCheckedChange:(0,G.useCallback)(t=>{n(e,t)},[e,n]),onSelect:e=>e.preventDefault(),children:e})}function PC({className:e}){return(0,W.jsx)(yr,{className:_(`animate-spin`,e)})}var FC=[20,50,100,250];function IC({pageIndex:e,pageSize:t,totalPages:n,totalRecords:r,isEstimatedCount:i,estimatedRange:a,isExactCountFetching:o,isExactCountError:s,onRequestExactCount:c,setPageIndex:l,setPageSize:u}){let d=n===void 0||r===void 0,f=n&&n>0?n:1,p=e+1,m=e>0,h=!d&&p<f,g=e=>{l(Math.max(0,Math.min(e,f)-1))},_=e=>{u(e),l(0)},v=VC(p,f);return(0,W.jsx)(`div`,{className:`@container border-t border-border`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-3 px-1 py-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 whitespace-nowrap text-sm text-muted-foreground`,children:[(0,W.jsxs)(`span`,{className:`hidden @min-[400px]:inline`,children:[`Page `,ru(p),` of `,d?`…`:ru(f)]}),(0,W.jsx)(`span`,{"aria-hidden":!0,className:`hidden text-border @min-[400px]:inline`,children:`•`}),(0,W.jsx)(`span`,{children:d?(0,W.jsx)(Kl,{}):i?(0,W.jsx)(LC,{totalRecords:r,estimatedRange:a,isExactCountFetching:o,isExactCountError:s,onRequestExactCount:c}):(0,W.jsxs)(W.Fragment,{children:[ru(r),` `,r===1?`record`:`records`]})})]}),(0,W.jsx)(`div`,{className:`grow`}),(0,W.jsxs)(`nav`,{className:`flex items-center divide-x divide-border overflow-hidden rounded-lg border border-border`,children:[(0,W.jsxs)(RC,{onClick:()=>g(p-1),disabled:!m,"aria-label":`Previous page`,children:[(0,W.jsx)(Ln,{}),(0,W.jsx)(`span`,{className:`hidden @min-[480px]:inline`,children:`Previous`})]}),(0,W.jsx)(`div`,{className:`hidden divide-x divide-border @min-[620px]:flex`,children:v.map((e,t)=>e===`ellipsis`?(0,W.jsx)(`span`,{className:`flex h-9 min-w-9 items-center justify-center px-1 text-sm text-muted-foreground`,children:`…`},`ellipsis-${t}`):(0,W.jsx)(RC,{onClick:()=>g(e),isActive:e===p,"aria-label":`Page ${e}`,"aria-current":e===p?`page`:void 0,children:ru(e)},e))}),(0,W.jsxs)(RC,{onClick:()=>g(p+1),disabled:!h,"aria-label":`Next page`,children:[(0,W.jsx)(`span`,{className:`hidden @min-[480px]:inline`,children:`Next`}),(0,W.jsx)(Rn,{})]})]}),(0,W.jsx)(`div`,{className:`hidden grow @min-[840px]:block`}),(0,W.jsx)(BC,{pageSize:t,onChange:_}),(0,W.jsx)(zC,{pageCount:f,disabled:d||f<=1,onGo:g})]})})}function LC({totalRecords:e,estimatedRange:t,isExactCountFetching:n,isExactCountError:r,onRequestExactCount:i}){let a=e===1?`record`:`records`,o=r&&!n;return(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsxs)(`button`,{type:`button`,className:`cursor-help underline decoration-dotted underline-offset-4`,"aria-label":`Approximately ${ru(e)} ${a} (estimated)`,children:[`~`,ru(e),` `,a]})}),(0,W.jsxs)(Rt,{side:`top`,align:`start`,className:`flex max-w-60 flex-col gap-2 p-3 text-left`,children:[(0,W.jsxs)(`span`,{children:[`Estimated count.`,t?(0,W.jsxs)(W.Fragment,{children:[` `,`Likely between `,ru(t[0]),` and `,ru(t[1]),`.`]}):null]}),o&&(0,W.jsx)(`span`,{className:`font-medium`,children:`Couldn’t get the exact count.`}),(0,W.jsxs)(`button`,{type:`button`,onClick:i,disabled:n,className:`inline-flex items-center justify-center gap-1.5 self-start rounded border
|
|
810
810
|
border-primary-foreground/30 bg-primary-foreground/10 px-2 py-1 font-medium transition-colors
|
|
811
|
-
hover:bg-primary-foreground/20 disabled:pointer-events-none disabled:opacity-60`,children:[n&&(0,W.jsx)(
|
|
811
|
+
hover:bg-primary-foreground/20 disabled:pointer-events-none disabled:opacity-60`,children:[n&&(0,W.jsx)(yr,{className:`size-3 animate-spin`}),n?`Counting…`:o?`Try again`:`Get exact count`]})]})]})}function RC({isActive:e,className:t,...n}){return(0,W.jsx)(`button`,{type:`button`,className:P(`flex h-9 min-w-9 items-center justify-center gap-1 px-3 text-sm whitespace-nowrap
|
|
812
812
|
transition-colors hover:bg-accent hover:text-foreground
|
|
813
813
|
disabled:pointer-events-none disabled:opacity-40
|
|
814
|
-
[&_svg]:size-4 [&_svg]:shrink-0`,e&&`bg-muted font-semibold text-foreground`,t),...n})}function
|
|
814
|
+
[&_svg]:size-4 [&_svg]:shrink-0`,e&&`bg-muted font-semibold text-foreground`,t),...n})}function zC({pageCount:e,disabled:t,onGo:n}){let[r,i]=(0,G.useState)(``);return(0,W.jsxs)(`form`,{onSubmit:t=>{t.preventDefault();let a=Number(r);Number.isFinite(a)&&a>=1&&n(Math.min(a,e)),i(``)},className:`hidden items-center gap-2 @min-[840px]:flex`,children:[(0,W.jsx)(`label`,{htmlFor:`pagination-go-to`,className:`text-sm whitespace-nowrap text-muted-foreground`,children:`Go to`}),(0,W.jsx)(`input`,{id:`pagination-go-to`,type:`number`,min:1,max:e,inputMode:`numeric`,placeholder:`Page`,disabled:t,value:r,onChange:e=>i(e.target.value),className:`h-9 w-20 rounded-md border border-input bg-white px-3 text-sm text-foreground
|
|
815
815
|
placeholder:text-muted-foreground focus-visible:ring-1 focus-visible:ring-purple focus-visible:outline-none
|
|
816
|
-
disabled:pointer-events-none disabled:opacity-50 dark:bg-grey-700 dark:text-white`})]})}function jC({pageSize:e,onChange:t}){return(0,W.jsxs)(`div`,{className:`hidden items-center gap-2 @min-[960px]:flex`,children:[(0,W.jsx)(`span`,{className:`text-sm whitespace-nowrap text-muted-foreground`,children:`Rows`}),(0,W.jsxs)(Yt,{value:String(e),onValueChange:e=>t(Number(e)),children:[(0,W.jsx)($t,{"aria-label":`Rows per page`,className:`h-9 w-20`,children:(0,W.jsx)(Vt,{})}),(0,W.jsx)(Qt,{side:`top`,children:EC.map(e=>(0,W.jsx)(zt,{value:String(e),children:nu(e)},e))})]})]})}function MC(e,t,n=1){if(t<=n*2+5)return NC(1,t);let r=Math.max(e-n,1),i=Math.min(e+n,t),a=r>2,o=i<t-1,s=3+2*n;return!a&&o?[...NC(1,s),`ellipsis`,t]:a&&!o?[1,`ellipsis`,...NC(t-s+1,t)]:[1,`ellipsis`,...NC(r,i),`ellipsis`,t]}function NC(e,t){return Array.from({length:t-e+1},(t,n)=>e+n)}function PC({applyFilters:e,columnFiltersForm:t,columns:n,columnVisibility:r,columnSizing:i,setColumnSizing:a,data:o,isFetching:s,onColumnClick:c,onRowClick:l,pageIndex:u,pageSize:d,primaryKey:f,setPageIndex:p,setPageSize:m,filtersToggled:h,totalPages:g,totalRecords:_,isEstimatedCount:v,estimatedRange:y,isExactCountFetching:b,isExactCountError:x,onRequestExactCount:S}){let C=ge({data:o||[],columns:n,manualPagination:!0,enableColumnResizing:!0,columnResizeMode:`onEnd`,onColumnSizingChange:a,pageCount:g,defaultColumn:{minSize:80},state:{columnVisibility:r,columnSizing:i},rowCount:_,getCoreRowModel:xe(),getPaginationRowModel:we()}),w=C.getState().columnSizingInfo,T=w.isResizingColumn,E=null;if(T){let e=C.options.defaultColumn?.minSize??20,t=C.getColumn(T)?.getSize()??0,n=0;for(let e of C.getVisibleLeafColumns())if(n+=e.getSize(),e.id===T)break;E=n+Math.max(w.deltaOffset??0,e-t)}return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`relative flex flex-col grow`,children:[(0,W.jsxs)(zu,{containerClassName:`rounded-md bg-card dark:bg-black-dark grow overflow-visible`,className:`table-fixed`,children:[(0,W.jsx)(Bu,{children:C.getHeaderGroups().map(e=>(0,W.jsxs)(Hu,{className:`border-none`,children:[e.headers.map(e=>(0,W.jsx)(Wu,{header:e,onColumnClick:c,className:`sticky top-32 z-10 bg-card dark:bg-black-dark border-b border-border`},e.id)),(0,W.jsx)(Uu,{"aria-hidden":!0,className:`w-full p-0 sticky top-32 z-10 bg-card dark:bg-black-dark border-b border-border`})]},e.id))}),h&&(0,W.jsx)(xC,{applyFilters:e,columnFiltersForm:t,headerGroups:C.getHeaderGroups()}),(0,W.jsx)(Vu,{className:`bg-background dark:bg-black border border-border dark:border-grey-700`,children:C.getRowModel().rows?.length?C.getRowModel().rows.map(e=>(0,W.jsx)(FC,{row:e,onRowClick:l,primaryKey:f},e.id)):(0,W.jsx)(Hu,{children:(0,W.jsx)(Gu,{colSpan:n.length+1,className:`h-24 text-center`,children:s||o===void 0?(0,W.jsx)(TC,{className:`opacity-50 inline-block`}):(0,W.jsx)(`span`,{children:`No results.`})})})})]}),E!==null&&(0,W.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute top-0 bottom-0 z-20 w-0.5 bg-primary`,style:{left:`${E}px`}})]}),(0,W.jsx)(DC,{pageIndex:u,pageSize:d,totalPages:g,totalRecords:_,isEstimatedCount:v,estimatedRange:y,isExactCountFetching:b,isExactCountError:x,onRequestExactCount:S,setPageIndex:p,setPageSize:m})]})}function FC({row:e,primaryKey:t,onRowClick:n}){let r=e.getVisibleCells(),i=(0,G.useMemo)(()=>{let n=e.original;return n&&n.message===`This entry has expired`?r[0]?.column?.id===t?[(0,W.jsx)(IC,{cell:r[0]},r[0].id),(0,W.jsx)(LC,{colSpan:r.length-1},`expired`)]:[(0,W.jsx)(LC,{colSpan:r.length},`expired`)]:r.map(e=>(0,W.jsx)(IC,{cell:e},e.id))},[e,t,r]);return(0,W.jsxs)(Hu,{"data-state":e.getIsSelected()&&`selected`,onClick:()=>n?.(e),className:P(`hover:bg-muted/10 data-[state=selected]:bg-muted`,n&&`cursor-pointer`),children:[i,(0,W.jsx)(Gu,{"aria-hidden":!0,className:`p-0`})]})}function IC({cell:e}){let t=e.column.getSize();return(0,W.jsx)(Gu,{"data-col-id":e.column.id,style:{width:`${t}px`,maxWidth:`${t}px`},className:`px-2 py-2 overflow-hidden text-ellipsis whitespace-nowrap`,children:Ce(e.column.columnDef.cell,e.getContext())})}function LC({colSpan:e}){return(0,W.jsx)(Gu,{colSpan:e,className:`px-2 py-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,children:(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`This entry has expired`})})}function RC({instanceDatabaseMap:e,databaseName:t,tableName:n}){let r=L({strict:!1}),i=K(),{clusterId:a,instanceId:o}=r,{toggled:s,toggle:c}=uC(!0),l=ze(),u=ms(o??a,t,n,`insert`),d=ms(o??a,t,n,`update`),f=ms(o??a,t,n,`delete`),p=ps(),{data:m}=R($y({...i,databaseName:t,tableName:n})),h=e?.[t],g=h?.[n],_=m??g,v=(0,G.useMemo)(()=>Xs(_?.attributes??[],`attribute`),[_]),{data:y}=R(oC(i)),b=y?.[t]?.[n],x=(0,G.useMemo)(()=>Tv(_,h,b),[_,h,b]),S=(0,G.useMemo)(()=>Av(_,h),[_,h]),C=(0,G.useMemo)(()=>Dv(_?.attributes,h),[_,h]),[w,T]=Ef(null,r),[E,D]=(0,G.useState)(!1),[O,k]=Ef(null,r),A=(0,G.useMemo)(()=>(t?Object.keys(e?.[t]||[]).sort():[]).length===1,[e,t]),{toggled:j,toggleOn:ee,toggleOff:M}=uC(!1),N=bt({resolver:_t(bC)}),{reset:P}=N,I=N.watch(),[te,ne]=Ef(null,[r.clusterId,r.instanceId,t,n]),re=(0,G.useCallback)(e=>{let t=[];for(let n in e){let r=e[n];if(r?.length)try{t.push(...Uy(n,r,v[n],x[n]))}catch(e){H.error(String(e))}}return t},[v,x]),ae=(0,G.useCallback)(()=>{let e=re(I);ne(e.length?e:null),P({...I})},[re,P,I]),oe=(0,G.useCallback)(()=>{P({},{keepValues:!1,keepDirtyValues:!1,keepDefaultValues:!1}),P(),ne(null),M()},[M,P]);(0,G.useEffect)(function(){return oe()},[r,oe]);let{filters:se}=ce({strict:!1}),le=JSON.stringify([t,n,se??null]),z=(0,G.useRef)(null);(0,G.useEffect)(function(){if(!_||z.current===le)return;let e=z.current===null;if(z.current=le,se){P({...se});let e=re(se);ne(e.length?e:null),ee()}else e||oe()},[se,le,_,P,re,ne,ee,oe]);let{dataTableColumns:ue,primaryKey:de}=jy(_,x),[fe,pe]=Ef({attribute:de,descending:!1},r),[me,he]=Ef(0,[t,n,te]),[ge,B]=(0,G.useState)(20),_e=m?.record_count??g?.record_count,ve=m?.estimated_record_range??g?.estimated_record_range,[ye,be]=Ef(!1,[t,n]),{data:xe,isFetching:Se,isError:Ce,refetch:we}=R(_C({...i,enabled:ye,databaseName:t,tableName:n})),Te=(0,G.useCallback)(()=>{ye?we():be(!0)},[ye,we,be]),Ee=xe??_e,De=Ee?Math.ceil(Ee/ge):0,Oe=xe===void 0&&ve!==void 0,ke=j&&!!te,{data:Ae,isFetching:je}=R(tp({...i,enabled:!ke&&!!de,databaseName:t,tableName:n,searchAttribute:de,sort:fe,pageSize:ge,pageIndex:me,onlyIfCached:s,getAttributes:S})),{data:Me,isFetching:Ne}=R(Vy({...i,enabled:ke&&!!de,databaseName:t,tableName:n,conditions:te,sort:fe,pageSize:ge,pageIndex:me,onlyIfCached:s,getAttributes:S})),Pe=ke?Me:Ae,Fe=je||Ne,{data:Ie,isFetching:Le,isError:Re}=R(hC({...i,enabled:E,databaseName:t,tableName:n,ids:w})),Be=E&&!!O&&(!de||O[de]==null),Ve=Ie?.data,He=!Be&&!!w?.length&&!Le&&(Re||Array.isArray(Ve)&&Ve.length===0),{mutate:Ue,isPending:We}=yC(),{mutate:Ge,isPending:Ke}=mC(),{mutate:qe,isPending:Je}=fC(),Ye=ie(),Xe=(0,G.useCallback)(()=>Ye.invalidateQueries({queryKey:[i.entityId,t,n]}),[Ye,i.entityId,t,n]),Ze=(0,G.useCallback)(async()=>{confirm(`Are you sure you want to cleanup orphan blobs for database "${t}"?`)&&qe({...i,databaseName:t},{onSuccess:e=>{H.success(e.message||`Orphan blobs cleanup started successfully`),Xe()},onError:e=>{H.error(e instanceof Error?e.message:`Failed to cleanup orphan blobs`)}})},[qe,t,i,Xe]),{exportCsv:Qe,isExporting:$e}=Yy(),et=(0,G.useCallback)(()=>{Qe({databaseName:t,tableName:n,primaryKey:de,sort:fe,conditions:ke?te:null})},[Qe,t,n,de,fe,ke,te]),tt=(0,G.useCallback)(e=>{Ue({...i,databaseName:t,tableName:n,records:e},{onSuccess:()=>{Xe(),D(!1),H.success(`Record updated successfully`)}})},[Ue,i,t,n,Xe]),nt=(0,G.useCallback)(e=>{Ge({...i,databaseName:t,tableName:n,hashValues:e},{onSuccess:()=>{Xe(),D(!1),H.success(`Record deleted successfully`)}})},[Ge,i,t,n,Xe]),rt=e=>{let t=de?e.original[de]:void 0;k(e.original),T(t==null?null:[t]),D(!0)},it=(e,t)=>{pe({attribute:e,descending:!t})},at=Zu(Xe),ot=(0,G.useCallback)(()=>{Gv(`ShowAddTableRecords`,{databaseName:t,tableName:n})},[t,n]),st=(0,G.useCallback)(()=>{Gv(`ShowImportData`,{databaseName:t,tableName:n})},[t,n]),[ct,lt]=Pf(`ColumnDisplayed/${t}/${n}`,{}),ut=(0,G.useMemo)(()=>({...Object.fromEntries(kv(x).map(e=>[e,!1])),...ct}),[x,ct]),[dt,ft]=Pf(`ColumnSizing/${t}/${n}`,{});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex flex-col md:flex-row items-center justify-between space-y-3 md:space-y-0 md:space-x-3 pt-15 pb-4 pr-4`,children:[(0,W.jsxs)(`div`,{className:`flex space-x-2`,children:[u&&(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:ot,accessKey:`n`,children:[(0,W.jsx)(Mr,{}),(0,W.jsxs)(`span`,{children:[`Add `,(0,W.jsx)(`u`,{children:`N`}),`ew Record(s)`]})]}),u&&(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:st,accessKey:`i`,children:[(0,W.jsx)(qn,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`I`}),`mport Data`]})]}),(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:et,disabled:$e,accessKey:`e`,children:[(0,W.jsx)(Kn,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`E`}),`xport CSV`]})]})]}),(0,W.jsxs)(`div`,{className:`flex space-x-2`,children:[j&&te&&(0,W.jsxs)(F,{type:`button`,variant:`ghost`,onClick:oe,accessKey:`f`,children:[(0,W.jsx)(ir,{className:`inline-block `}),(0,W.jsxs)(`span`,{children:[`Clear `,(0,W.jsx)(`u`,{children:`F`}),`ilters`]})]}),j&&N.formState.isDirty&&(0,W.jsxs)(F,{variant:`default`,onClick:ae,children:[(0,W.jsx)(rr,{className:`inline-block `}),`Apply Filters`]}),j&&!te&&(0,W.jsxs)(F,{variant:`ghost`,onClick:M,accessKey:`f`,children:[(0,W.jsx)(ir,{className:`inline-block `}),(0,W.jsxs)(`span`,{children:[`Hide `,(0,W.jsx)(`u`,{children:`F`}),`ilters`]})]}),!j&&(0,W.jsxs)(F,{variant:`ghost`,onClick:ee,accessKey:`f`,children:[(0,W.jsx)(ar,{className:`inline-block `}),(0,W.jsxs)(`span`,{children:[`Show `,(0,W.jsx)(`u`,{children:`F`}),`ilters`]})]}),(0,W.jsx)(F,{variant:`defaultOutline`,onClick:at,disabled:Fe,children:(0,W.jsx)(fn,{})}),(0,W.jsx)(CC,{columns:ue,columnVisibility:ut,setColumnVisibility:lt}),(0,W.jsxs)(ci,{children:[(0,W.jsx)(li,{asChild:!0,disabled:!e,children:(0,W.jsx)(F,{variant:`ghost`,size:`icon`,disabled:!e,children:(0,W.jsx)(Qn,{"aria-label":`Table options`})})}),(0,W.jsxs)(ui,{side:`bottom`,align:`end`,children:[(0,W.jsxs)(di,{className:`focus:bg-primary/70 focus:text-white`,onClick:c,children:[s?(0,W.jsx)(zn,{className:`text-green`}):(0,W.jsx)(Hn,{}),`Only If Cached`,(0,W.jsx)(V,{to:`https://docs.harperdb.io/docs/developers/applications/caching#cache-control-header`,target:`_blank`,rel:`noopener noreferrer`,onClick:Ey,children:(0,W.jsx)($n,{})})]}),p&&l&&!!o&&(0,W.jsxs)(di,{className:`focus:bg-yellow/70 focus:text-white`,onClick:Ze,disabled:Je,children:[(0,W.jsx)(Mn,{className:`text-yellow `}),`Cleanup Orphan Blobs`]}),p&&!A&&(0,W.jsxs)(di,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>Gv(`ShowDeleteTable`,{databaseName:t,tableName:n}),children:[(0,W.jsx)($r,{className:`inline-block `}),`Drop Table`]}),p&&(0,W.jsxs)(di,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>Gv(`ShowDeleteDatabase`,{databaseName:t}),children:[(0,W.jsx)(Qr,{}),`Drop Database`]})]})]})]})]}),(0,W.jsx)(PC,{primaryKey:de,data:Pe?.data,isFetching:Fe,filtersToggled:j,columns:ue,columnVisibility:ut,columnSizing:dt,setColumnSizing:ft,onRowClick:rt,onColumnClick:it,totalPages:De,totalRecords:Ee,isEstimatedCount:Oe,estimatedRange:ve,isExactCountFetching:Se,isExactCountError:Ce,onRequestExactCount:Te,pageIndex:me,pageSize:ge,columnFiltersForm:N,applyFilters:ae,setPageIndex:he,setPageSize:B}),(0,W.jsx)(lC,{canEditRecords:d,canDeleteRecords:f,setIsModalOpen:D,isModalOpen:E,primaryKey:de,missingPrimaryKey:Be,recordUnavailable:He,syntheticAttributes:C,data:Be||He?O?[O]:void 0:Ie?.data,onSaveChanges:tt,onDeleteRecord:nt,isUpdateTableRecordsPending:We,isDeleteTableRecordsPending:Ke})]})}function zC(e,t){if(!e)return null;if(!(t.databaseName&&e[t.databaseName])){let n=Object.keys(e).sort()[0];return n&&n!==t.databaseName?{databaseName:n,tableName:void 0}:null}return t.tableName&&!e[t.databaseName][t.tableName]?{databaseName:t.databaseName,tableName:void 0}:null}var BC=10;function VC(e){return Math.max(200,Math.floor(e/2))}function HC(e,t){return Math.round(Math.min(Math.max(e,200),VC(t)))}function UC(){let[e,t]=vn(bn.DatabasesSidebarWidth,320),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(()=>HC(e,window.innerWidth)),o=(0,G.useRef)(i);o.current=i;let s=(0,G.useRef)(null);(0,G.useEffect)(()=>{n||a(HC(e,window.innerWidth))},[e,n]),(0,G.useEffect)(()=>{let t=()=>{n||a(HC(e,window.innerWidth))};return window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t)},[e,n]);let c=(0,G.useCallback)(e=>{e.preventDefault(),s.current={startX:e.clientX,startWidth:o.current},r(!0)},[]);return(0,G.useEffect)(()=>{if(!n)return;let e=e=>{let t=s.current;t&&a(HC(t.startWidth+(e.clientX-t.startX),window.innerWidth))},i=()=>{r(!1),t(o.current)},c=document.body.style.userSelect;return document.body.style.userSelect=`none`,window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,i),()=>{document.body.style.userSelect=c,window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,i)}},[n,t]),{width:i,isResizing:n,startResizing:c,handleKeyDown:(0,G.useCallback)(e=>{e.key===`ArrowLeft`?(e.preventDefault(),t(e=>HC(e-BC,window.innerWidth))):e.key===`ArrowRight`&&(e.preventDefault(),t(e=>HC(e+BC,window.innerWidth)))},[t])}}function WC(){let e=L({strict:!1}),{data:t}=R(Dg({...K(),skipRecordCount:!0})),{width:n,isResizing:r,startResizing:i,handleKeyDown:a}=UC(),o={"--db-sidebar-width":`${n}px`},s=zC(t,e);return s?(0,W.jsx)(de,{to:yv({...e,...s}),replace:!0}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`main`,{className:`flex flex-col gap-4 md:flex-row md:items-start`,children:[(0,W.jsxs)(`section`,{style:o,className:`relative text-foreground w-full md:w-[var(--db-sidebar-width)] md:shrink-0 md:border-r border-border flex flex-col min-h-0 md:sticky md:top-32 md:h-[calc(100vh-(--spacing(32)))] md:max-h-[calc(100vh-(--spacing(32)))] overflow-y-clip`,children:[(0,W.jsx)(iS,{instanceDatabaseMap:t}),(0,W.jsx)(`div`,{role:`separator`,tabIndex:0,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,"aria-valuenow":n,"aria-valuemin":200,"aria-valuemax":VC(window.innerWidth),onMouseDown:i,onKeyDown:a,className:`group hidden md:block absolute top-0 bottom-0 right-0 w-4 translate-x-1/2 z-40 cursor-col-resize outline-none`,children:(0,W.jsx)(`div`,{className:P(`absolute inset-y-0 left-1/2 w-1 -translate-x-1/2 transition-colors`,`group-hover:bg-violet-400/60 dark:group-hover:bg-violet-500/60 group-focus-visible:bg-violet-500/80`,r&&`bg-violet-400/60 dark:bg-violet-500/60`)})})]}),(0,W.jsx)(`section`,{className:`text-foreground w-full md:flex-1 md:min-w-0 flex flex-col min-h-0`,children:e.databaseName&&e.tableName?(0,W.jsx)(RC,{instanceDatabaseMap:t,databaseName:e.databaseName,tableName:e.tableName}):e.databaseName?(0,W.jsx)(ib,{instanceDatabaseMap:t,databaseName:e.databaseName}):null})]}),t&&(0,W.jsx)(Ty,{instanceDatabaseMap:t})]})}function GC(e){return z({getParentRoute:()=>e,path:`/databases/{-$databaseName}/{-$tableName}`,head:()=>({meta:[{title:`Databases — Harper Fabric`}]}),component:WC})}var KC={className:`text-primary font-semibold bg-primary/10 rounded-md dark:text-white dark:bg-white/10`};function qC(){let e=fs(),t=L({strict:!1}),{version:n}=De({strict:!1}),r=on(`4.6.0`,n)&&e,i=on(`4.7.0-beta.7`,n),{data:a}=R(zp(K(),r)),o=a?.restartRequired??!1,s=(0,G.useMemo)(()=>[e&&{to:t.clusterId&&!t.instanceId?oh(t,`apps`):oh(t),activeOptions:{exact:!0},name:`Applications`,shortName:`Apps`,icon:(0,W.jsx)(kr,{className:`inline-block`})},{to:oh(t,`databases`),icon:(0,W.jsx)(Zn,{className:`inline-block`}),name:`Databases`},e&&i&&{to:oh(t,`apis`),name:`APIs`,icon:(0,W.jsx)(zr,{className:`inline-block`})},e&&r&&{to:oh(t,`status`),icon:(0,W.jsx)(or,{className:`inline-block`}),name:`Status`},e&&{to:oh(t,`logs`),icon:(0,W.jsx)(Or,{className:`inline-block`}),name:`Logs`},e&&{to:oh(t,`config`),icon:(0,W.jsx)(Br,{className:`inline-block`}),name:`Config`}].filter(Xi),[e,t,i,r]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(JC,{links:s,restartRequired:o}),(0,W.jsx)(YC,{links:s,restartRequired:o})]})}function JC({links:e,restartRequired:t}){return(0,W.jsxs)(`div`,{className:`hidden md:[@media(hover:hover)]:flex xl:flex items-center justify-between h-full text-sm text-foreground`,children:[(0,W.jsx)(Oa,{restartRequired:t}),(0,W.jsx)(`div`,{className:`flex space-x-2`,children:e.map(({shortName:e,...t})=>{let n=(0,W.jsxs)(V,{"aria-label":t.name,className:`p-2 text-center text-muted-foreground hover:text-foreground`,activeProps:KC,...t,children:[t.icon,(0,W.jsx)(`span`,{className:`hidden xl:inline-block ml-1`,children:t.name}),e&&(0,W.jsx)(`span`,{className:`visible xl:hidden ml-1`,children:e})]},t.to);return e?n:(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:n}),(0,W.jsx)(Rt,{side:`bottom`,className:`xl:hidden`,children:t.name})]},t.to)})})]})}function YC({links:e,restartRequired:t}){return(0,W.jsx)(W.Fragment,{children:(0,W.jsxs)(`div`,{className:`flex md:[@media(hover:hover)]:hidden xl:hidden items-center justify-between h-full px-2 text-foreground`,children:[(0,W.jsx)(Oa,{restartRequired:t}),(0,W.jsxs)(ci,{children:[(0,W.jsx)(li,{asChild:!0,children:(0,W.jsx)(F,{variant:`ghost`,className:`p-0`,children:(0,W.jsx)(Tr,{className:`h-8 w-8`})})}),(0,W.jsxs)(ui,{children:[(0,W.jsx)(pi,{children:`Instance Menu`}),(0,W.jsx)(mi,{}),e.map(e=>(0,W.jsx)(di,{asChild:!0,children:(0,W.jsxs)(V,{to:e.to,activeProps:KC,className:`flex items-center gap-2`,children:[e.icon,e.name]})},e.to))]})]})]})})}(0,G.lazy)(()=>je(()=>import(`./FloatingChat-DVCy2mvk.js`).then(e=>({default:e.FloatingChat})),__vite__mapDeps([34,1,4,5,35,16,24])));function XC(){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`nav`,{className:`fixed top-20 w-full z-39 h-12 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none`,children:(0,W.jsx)(qC,{})}),(0,W.jsx)(`div`,{className:`mt-32 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,W.jsx)(Se,{})}),!1]})}function ZC(e){switch(e){case`local`:return z({getParentRoute:()=>pa,id:`_instanceLayout`,component:XC,loader:_v});case`cluster`:return z({getParentRoute:()=>Bf,id:`_instanceLayout`,component:XC,beforeLoad:QC,loader:_v});case`instance`:return z({getParentRoute:()=>Bf,path:`instance/$instanceId`,component:XC,beforeLoad:QC,loader:_v})}}async function QC({context:e,params:t}){let n=t.instanceId||t.clusterId,r=!1;if(u.checkForFabricConnect(n)&&!u.hasResolvedFabricConnect(n)&&(r=!0,await $C(n,e.cluster,t.instanceId)))return;let i=u.getConnectionById(n);if(i.isLoading||i.user)return;let a=e.authentication[h];if(a?.isLoading)return;let{update:o}=t.instanceId?ds(a.user,t.organizationId,t.clusterId):ls(a.user,t.organizationId,t.clusterId);if(!(!r&&o&&await $C(n,e.cluster,t.instanceId)))throw _e({to:`/${t.organizationId}/${t.clusterId}/`+(t.instanceId?`instance/${t.instanceId}`:``)+`/sign-in`,search:ca()})}async function $C(e,t,n){try{return await u.establishFabricConnectAuth({id:e,operationsUrl:ew(t,n)}),!0}catch(e){return console.debug(`Fabric Connect not established`,e),!1}}function ew(e,t){if(t){let n=e?.instances?.find(e=>e.id===t);return n?p(n):void 0}return s(e)??void 0}function tw(e){switch(e){case`warn`:return`warning`;case`notify`:return`success`;case`info`:case`debug`:case`trace`:case void 0:case`stdout`:return`secondary`;case`stderr`:case`error`:return`destructive`;default:return e}}var nw=[`secondary`,`default`,`warning`,`outline`,`success`,`destructive`],rw=0,iw=new Map,aw=e=>{if(iw.has(e))return iw.get(e);rw++;let t=nw[rw%nw.length];return iw.set(e,t),t};function ow(e){switch(e){case`error`:case`stderr`:return`border-l-destructive`;case`warn`:return`border-l-yellow-500`;case`notify`:return`border-l-green-500`;default:return`border-l-transparent`}}function sw({columns:e,data:t,onRowClick:n,containerRef:r}){let i=ge({data:t,columns:e,getCoreRowModel:xe()});return(0,W.jsxs)(zu,{className:`text-xs`,containerRef:r,containerClassName:`rounded-md bg-card dark:bg-black-dark logsTable max-h-[calc(100vh-(--spacing(48)))] overflow-y-auto md:max-h-[calc(100vh-(--spacing(40)))]`,children:[(0,W.jsx)(Bu,{children:i.getHeaderGroups().map(e=>(0,W.jsx)(Hu,{className:`border-b border-border`,children:e.headers.map(e=>(0,W.jsx)(Uu,{className:`p-4 max-w-96 sticky top-0 z-10 border-b border-border bg-card dark:bg-black-dark`,children:e.isPlaceholder?null:Ce(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,W.jsx)(Vu,{className:`bg-background dark:bg-black`,children:i.getRowModel().rows?.length?i.getRowModel().rows.map(e=>(0,W.jsx)(Hu,{"data-state":e.getIsSelected()&&`selected`,className:P(`hover:bg-muted/20 data-[state=selected]:bg-muted max-w-full border-l-2`,ow(e.original.level),n&&`cursor-pointer`),onClick:()=>n?.(e),children:e.getVisibleCells().map(e=>(0,W.jsx)(Gu,{className:`p-2`,children:Ce(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,W.jsx)(Hu,{children:(0,W.jsx)(Gu,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})}var cw=512*1024,lw=class{totalChars=0;spent=!1;get isSpent(){return this.spent}admit(e){return this.spent?{admitted:!1,justExhausted:!1,oversize:!1}:e>524288?{admitted:!1,justExhausted:!1,oversize:!0}:this.totalChars+e>8388608?(this.spent=!0,{admitted:!1,justExhausted:!0,oversize:!1}):(this.totalChars+=e,{admitted:!0,justExhausted:!1,oversize:!1})}};function uw(e){try{JSON.parse(e)}catch{return!1}return!0}function dw(e){return!e||e.length>524288?`plaintext`:uw(e)?`json`:`plaintext`}function fw({label:e,children:t}){return(0,W.jsxs)(`div`,{className:`flex items-start gap-3 py-1.5 border-b border-border/50 last:border-0`,children:[(0,W.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground w-20 shrink-0 pt-0.5`,children:e}),(0,W.jsx)(`span`,{className:`text-xs`,children:t})]})}function pw({setIsModalOpen:e,isModalOpen:t,data:n}){let r=n?aw(n.node):`default`,i=ld();return(0,W.jsx)(qt,{onOpenChange:e,open:t,children:(0,W.jsxs)(tn,{"aria-describedby":void 0,resizable:!0,children:[(0,W.jsx)(Zt,{children:(0,W.jsx)(Jt,{children:`Log Entry`})}),n?(0,W.jsxs)(`div`,{className:`flex flex-1 min-h-0 flex-col gap-2 text-popover-foreground`,children:[(0,W.jsxs)(`div`,{className:`rounded-md border border-border/50 bg-muted/20 px-3 py-1`,children:[(0,W.jsx)(fw,{label:`Level`,children:(0,W.jsx)(ao,{variant:tw(n.level),children:Ea(n.level)})}),(0,W.jsx)(fw,{label:`Timestamp`,children:(0,W.jsx)(`span`,{className:`tabular-nums`,children:new Date(n.timestamp).toLocaleString()})}),(0,W.jsx)(fw,{label:`Thread`,children:(0,W.jsx)(`span`,{className:`tabular-nums font-mono`,children:n.thread})}),n.node&&(0,W.jsx)(fw,{label:`Node`,children:(0,W.jsx)(ao,{variant:r,children:n.node})}),n.tags&&n.tags.length>0&&(0,W.jsx)(fw,{label:`Tags`,children:(0,W.jsx)(`span`,{className:`font-mono`,children:n.tags})})]}),(0,W.jsxs)(`div`,{className:`flex flex-1 min-h-0 flex-col`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1.5`,children:`Message`}),(0,W.jsx)(`div`,{className:`rounded-md overflow-hidden border border-border/50 flex-1 min-h-0`,children:(0,W.jsx)(dd,{className:`w-full h-full`,language:dw(n.message),theme:i,value:n.message,options:{readOnly:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,fontSize:12,padding:{top:12,bottom:12},automaticLayout:!0}})})]})]}):(0,W.jsx)(Ei,{})]})})}var mw=b({limit:S().or(A()).or(x()).optional(),level:j([`notify`,`error`,`warn`,`info`,`debug`,`trace`,`undefined`]).or(A()).or(x()).optional(),from:S().or(A()).or(x()).optional(),until:S().or(A()).or(x()).optional(),log_name:j([`hdb.log`,`system.log`]).or(A()).or(x()).optional(),filter:S().or(A()).or(x()).optional()}),hw=`dark:bg-grey-600 dark:border-grey-500`;function gw({form:e,resetFilters:t,submitFilters:n,showLogName:r,showFilter:i,isOpen:a,onOpenChange:o}){return(0,W.jsxs)(Lt,{className:P(a?`block`:`hidden`,`mt-3 md:mt-0 md:block`),children:[(0,W.jsx)(Pt,{className:`hidden md:block`,children:(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(!a),"aria-expanded":a,"aria-controls":`logs-filters-content`,className:`flex w-full items-center justify-between md:pointer-events-none`,children:(0,W.jsxs)(Nt,{className:`flex items-center gap-2 text-base`,children:[(0,W.jsx)(Ur,{className:`size-4 text-muted-foreground`}),`Filters`]})})}),(0,W.jsx)(Ft,{id:`logs-filters-content`,children:(0,W.jsx)(q,{...e,children:(0,W.jsxs)(`form`,{id:`instance-edit-log-filters-form`,name:`instance-edit-log-filters-form`,onSubmit:e.handleSubmit(n),className:`flex-col space-y-4`,children:[i&&(0,W.jsx)(Y,{control:e.control,name:`filter`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(J,{children:(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(Rr,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,W.jsx)($,{type:`search`,placeholder:`Search logs…`,className:P(`pl-9`,hw),value:e.value??``,onChange:e.onChange})]})}),(0,W.jsx)(Q,{})]})}),r&&(0,W.jsx)(Y,{control:e.control,name:`log_name`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Log file`}),(0,W.jsxs)(Yt,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,W.jsx)($t,{className:P(`w-full bg-white`,hw),children:(0,W.jsx)(Vt,{placeholder:`Select log file`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(zt,{value:`hdb.log`,children:`Application (hdb.log)`}),(0,W.jsx)(zt,{value:`system.log`,children:`System (system.log)`})]})})]}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,W.jsx)(Y,{control:e.control,name:`limit`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Limit`}),(0,W.jsxs)(Yt,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,W.jsx)($t,{className:P(`w-full bg-white`,hw),children:(0,W.jsx)(Vt,{placeholder:`Limit`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(zt,{value:`1000`,children:`1000`}),(0,W.jsx)(zt,{value:`500`,children:`500`}),(0,W.jsx)(zt,{value:`250`,children:`250`}),(0,W.jsx)(zt,{value:`100`,children:`100`}),(0,W.jsx)(zt,{value:`10`,children:`10`})]})})]}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:e.control,name:`level`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Level`}),(0,W.jsxs)(Yt,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,W.jsx)($t,{className:P(`w-full bg-white`,hw),children:(0,W.jsx)(Vt,{placeholder:`Level`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(zt,{value:`undefined`,children:`All`}),(0,W.jsx)(zt,{value:`notify`,children:`Notify`}),(0,W.jsx)(zt,{value:`error`,children:`Error`}),(0,W.jsx)(zt,{value:`warn`,children:`Warn`}),(0,W.jsx)(zt,{value:`info`,children:`Info`}),(0,W.jsx)(zt,{value:`debug`,children:`Debug`}),(0,W.jsx)(zt,{value:`trace`,children:`Trace`})]})})]}),(0,W.jsx)(Q,{})]})})]}),(0,W.jsx)(Y,{control:e.control,name:`from`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Start date`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`datetime-local`,className:hw,value:e.value??void 0,onChange:e.onChange})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:e.control,name:`until`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`End date`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`datetime-local`,className:hw,value:e.value??void 0,onChange:e.onChange})}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,W.jsx)(F,{type:`submit`,variant:`positiveOutline`,className:`grow`,children:`Apply Filters`}),(0,W.jsx)(F,{type:`reset`,variant:`destructiveOutline`,onClick:t,children:`Clear`})]})]})})})]})}var _w=1e4;function vw(e){if(!e)return;let t=parseInt(e,10);if(!(!Number.isFinite(t)||t<=0))return Math.min(t,_w)}function yw(e,t){return{operation:`read_log`,start:0,replicated:t,limit:vw(e.limit),level:e.level===`undefined`?void 0:e.level,from:e.from?new Date(e.from).toISOString():void 0,until:e.until?new Date(e.until).toISOString():void 0,log_name:e.log_name??void 0,filter:e.filter?e.filter:void 0,order:`desc`}}async function bw({instanceClient:e,logFilters:t,replicated:n}){let{data:r}=await e.post(`/`,yw(t,n));return r}function xw(e){let t=e.logFilters;return B({queryKey:[`read_log`,e.entityId,t.limit,t.level,t.from,t.until,t.log_name,t.filter,e.replicated],queryFn:()=>bw(e),retry:!1,refetchInterval:e.isAutoRefreshEnabled?5e3:!1})}async function Sw({connection:e,logFilters:t,replicated:n,signal:r,onEntry:i}){let{url:a,headers:o,credentials:s}=Im(e),c;try{c=await fetch(a,{method:`POST`,headers:o,credentials:s,body:JSON.stringify(yw(t,n)),signal:r})}catch(e){throw r?.aborted?e:new Nm(`Failed to open the read_log SSE stream.`,{cause:e})}let l=c.headers.get(`content-type`)??``;if(!c.ok||!l.includes(`text/event-stream`)||!c.body)throw await c.body?.cancel().catch(()=>{}),new Nm(`read_log did not return an event stream (status ${c.status}, content-type "${l}").`);for await(let e of Am(c.body,r)){if(e.event===`error`){let t=Mm(e);if(!t||typeof t!=`object`)throw new Fm(typeof t==`string`&&t?t:`The log stream failed.`);let n=t;throw new Fm(n.message??`The log stream failed.`,{code:n.code})}if(e.event===`done`||e.event===`end`)return;for(let t of Cw(Mm(e)))i(t)}}function Cw(e){return Array.isArray(e)?e.filter(ww):ww(e)?[e]:[]}function ww(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.timestamp==`string`&&(typeof t.level==`string`||typeof t.message==`string`)}function Tw(e){return[e.timestamp,e.node??``,e.thread??``,e.level,e.message].join(`|`)}function Ew(e,t,n){let r=new Set,i=[];for(let n of[...t,...e]){let e=Tw(n);r.has(e)||(r.add(e),i.push(n))}return i.sort((e,t)=>e.timestamp<t.timestamp?1:e.timestamp>t.timestamp?-1:0),n>0&&i.length>n?i.slice(0,n):i}var Dw={entries:[],fellBack:!1};function Ow(e,t){switch(t.kind){case`reset`:return Dw;case`retry`:return e.fellBack?{...e,fellBack:!1}:e;case`append`:{if(t.entries.length===0)return e;let n=e.entries.concat(t.entries);return n.length<=t.cap?{...e,entries:n}:(n.sort((e,t)=>e.timestamp<t.timestamp?1:e.timestamp>t.timestamp?-1:0),{...e,entries:n.slice(0,t.cap)})}case`fellBack`:return{...e,fellBack:!0}}}function kw(){let e=K();return u.isDirectConnection(e.entityId)}var Aw=1e3,jw=2e3,Mw=250;function Nw(e){return vw(e)??Aw}function Pw(e,t){return JSON.stringify([e.limit,e.level,e.from,e.until,e.log_name,e.filter,t])}function Fw({params:e,logFilters:t,replicated:n,live:r}){let i=kw(),[a,o]=(0,G.useReducer)(Ow,Dw),s=r&&i&&!a.fellBack,c=Pw(t,n),l=Nw(t.limit),u=Math.max(jw,l),d=R(xw({...e,logFilters:t,replicated:n,isAutoRefreshEnabled:r&&!s}));(0,G.useEffect)(()=>{o({kind:`reset`})},[e.entityId,c]),(0,G.useEffect)(()=>{r&&o({kind:`retry`})},[r]);let f=(0,G.useRef)({logFilters:t,replicated:n});f.current={logFilters:t,replicated:n},(0,G.useEffect)(()=>{if(!s)return;let t=new AbortController,n=[],r=()=>{if(n.length>0&&!t.signal.aborted){let e=n;n=[],o({kind:`append`,entries:e,cap:u})}},i=setInterval(r,Mw);return Sw({connection:{id:e.entityId},logFilters:f.current.logFilters,replicated:f.current.replicated,signal:t.signal,onEntry:e=>n.push(e)}).catch(()=>{}).finally(()=>{clearInterval(i),!t.signal.aborted&&(r(),o({kind:`fellBack`}))}),()=>{clearInterval(i),t.abort()}},[s,e.entityId,c]);let p=(0,G.useMemo)(()=>{let e=d.data??[];return a.entries.length===0?e:Ew(e,a.entries,l)},[d.data,a.entries,l]),m=s?`streaming`:r?`polling`:`idle`;return{logs:p,isLoading:d.isLoading,isFetching:d.isFetching,refetch:()=>d.refetch(),transport:m}}var Iw={log_name:`hdb.log`,limit:`100`,level:`undefined`,from:``,until:``,filter:``},Lw={error:(0,W.jsx)(Rn,{className:`size-3`}),stderr:(0,W.jsx)(Rn,{className:`size-3`}),warn:(0,W.jsx)(ei,{className:`size-3`}),notify:(0,W.jsx)(An,{className:`size-3`}),info:(0,W.jsx)(fr,{className:`size-3`}),debug:(0,W.jsx)(Nn,{className:`size-3`}),trace:(0,W.jsx)(Tn,{className:`size-3`}),stdout:(0,W.jsx)(Xr,{className:`size-3`})},Rw=[{accessorKey:`level`,header:`Level`,cell:({row:e})=>{let{level:t}=e.original;return(0,W.jsxs)(ao,{variant:tw(t),children:[Lw[t],Ea(t)]})}},{accessorKey:`timestamp`,header:`Timestamp`,cell:({row:e})=>{let{timestamp:t}=e.original,n=new Date(t);return(0,W.jsxs)(`span`,{className:`tabular-nums whitespace-nowrap text-muted-foreground`,children:[n.getFullYear()===new Date().getFullYear()?n.toLocaleDateString(void 0,{month:`numeric`,day:`2-digit`}):n.toLocaleDateString(),` `,n.toLocaleTimeString()]})}},{accessorKey:`message`,header:`Message`,cell:({row:e})=>{let{message:t}=e.original;return(0,W.jsx)(`span`,{className:`block max-w-xl truncate font-mono text-xs`,children:t})}},{accessorKey:`thread`,header:`Thread`,cell:({row:e})=>(0,W.jsx)(`span`,{className:`text-muted-foreground tabular-nums`,children:e.original.thread})},{accessorKey:`node`,header:`Node`,cell:({row:e})=>{let{node:t}=e.original,n=aw(t);return(0,W.jsx)(W.Fragment,{children:t?(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsxs)(ao,{variant:n,children:[t.split(`.`)[0],`...`]})}),(0,W.jsx)(Rt,{className:`bg-popover text-popover-foreground border border-border`,arrowClassName:`bg-popover fill-popover`,children:t})]}):null})}},{accessorKey:`tags`,header:`Tags`,cell:({row:e})=>{let{tags:t}=e.original;return t&&t.length>0?(0,W.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:t}):null}}],zw=(e,t)=>!e&&!t||!e||!t||new Date(e)<=new Date(t);function Bw(){return(0,W.jsxs)(`div`,{className:`rounded-md bg-card dark:bg-black-dark overflow-hidden`,children:[(0,W.jsx)(`div`,{className:`flex gap-4 p-4 border-b border-border`,children:[`w-14`,`w-32`,`w-14`,`w-24`,`w-16`,`flex-1`].map((e,t)=>(0,W.jsx)(Qd,{className:`h-4 ${e}`},t))}),Array.from({length:12}).map((e,t)=>(0,W.jsxs)(`div`,{className:`flex gap-4 p-3 border-b border-border/40 border-l-2 border-l-transparent`,children:[(0,W.jsx)(Qd,{className:`h-5 w-14`}),(0,W.jsx)(Qd,{className:`h-5 w-32`}),(0,W.jsx)(Qd,{className:`h-5 w-10`}),(0,W.jsx)(Qd,{className:`h-5 w-20`}),(0,W.jsx)(Qd,{className:`h-5 w-12`}),(0,W.jsx)(Qd,{className:`h-5 flex-1 max-w-xs`})]},t))]})}function Vw(){let[e,t]=(0,G.useState)(Iw),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(),[o,s]=(0,G.useState)(!1),[c,l]=vn(bn.LogsOrderReversed,!1),[u,d]=(0,G.useState)(!1),f=K(),{data:p}=R(ln(f)),m=p?.version,h=!!m&&on(`4.7.16`,m),{logs:g,isLoading:_,isFetching:v,refetch:y,transport:b}=Fw({params:f,logFilters:e,replicated:f.entityType===`cluster`,live:o}),x=(0,G.useMemo)(()=>c?[...g??[]].reverse():g??[],[g,c]),S=(0,G.useRef)(null);(0,G.useEffect)(()=>{let e=S.current;_||!e||e.scrollTo({top:c?e.scrollHeight:0})},[c,_]),(0,G.useEffect)(()=>{let e=S.current;!o||_||!e||e.scrollTo({top:c?e.scrollHeight:0})},[x,o,c,_]);let C=bt({resolver:_t(mw),defaultValues:Iw,mode:`onChange`}),w=e=>{a(e.original),r(!0)},T=async e=>{if(!zw(e.from,e.until)){C.setError(`from`,{type:`onChange`,message:`Start date must be before end date`}),C.setError(`until`,{type:`onChange`,message:`End date must be after start date`});return}t(e)},E=async()=>{C.reset(),t(Iw)},D=Zu(y);return(0,W.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 pt-2 text-foreground md:grid-cols-12 md:gap-4`,children:[(0,W.jsxs)(`section`,{className:`col-span-1 md:col-span-4 lg:col-span-3 px-2 pb-0 md:self-start md:sticky md:top-34 md:max-h-[calc(100vh-(--spacing(34)))] md:overflow-y-auto md:pb-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 md:hidden`,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:()=>d(e=>!e),"aria-label":`Toggle filters`,"aria-expanded":u,className:`flex-1`,children:[(0,W.jsx)(Ur,{}),`Filters`]}),(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:D,disabled:v||_||o,"aria-label":`Refresh logs`,className:`flex-1`,children:[(0,W.jsx)(fn,{className:v?`animate-spin`:``}),`Refresh`]}),(0,W.jsxs)(F,{variant:c?`default`:`defaultOutline`,onClick:()=>l(e=>!e),"aria-label":`Reverse log order`,"aria-pressed":c,className:`flex-1`,children:[(0,W.jsx)(On,{}),`Reverse`]})]}),(0,W.jsx)(gw,{form:C,resetFilters:E,submitFilters:T,showLogName:!1,showFilter:h,isOpen:u,onOpenChange:d}),(0,W.jsxs)(`div`,{className:`mt-3 space-y-3 hidden md:block`,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:D,disabled:v||_||o,className:`w-full`,children:[(0,W.jsx)(fn,{}),`Refresh`]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-foreground`,children:[(0,W.jsx)(Td,{id:`logs-live-switch`,"aria-label":`Toggle live logs`,checked:o,onCheckedChange:s}),(0,W.jsxs)(`label`,{htmlFor:`logs-live-switch`,className:`flex items-center gap-2 cursor-pointer`,children:[(0,W.jsx)(fn,{className:`size-4 ${o?`animate-spin [animation-duration:3s]`:``}`}),o?b===`streaming`?`Live (streaming)`:`Live (polling every 5s)`:`Live`]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-foreground`,children:[(0,W.jsx)(Td,{id:`logs-reverse-order-switch`,"aria-label":`Reverse log order`,checked:c,onCheckedChange:l}),(0,W.jsxs)(`label`,{htmlFor:`logs-reverse-order-switch`,className:`flex items-center gap-2 cursor-pointer`,children:[(0,W.jsx)(On,{className:`size-4`}),c?`Oldest first`:`Newest first`]})]})]})]})]}),(0,W.jsx)(`section`,{className:`col-span-1 md:col-span-8 lg:col-span-9`,children:_?(0,W.jsx)(Bw,{}):(0,W.jsx)(sw,{columns:Rw,data:x,onRowClick:w,containerRef:S})}),(0,W.jsx)(pw,{isModalOpen:n,setIsModalOpen:r,data:i})]})}function Hw(e){return z({getParentRoute:()=>e,path:`logs`,head:()=>({meta:[{title:`Logs — Harper Fabric`}]}),component:Vw})}var Uw=6e4,Ww=60*Uw,Gw=24*Ww,Kw=[{id:`1h`,label:`Last 1 hour`,durationMs:Ww,bucketMs:1*Uw},{id:`6h`,label:`Last 6 hours`,durationMs:6*Ww,bucketMs:1*Uw},{id:`24h`,label:`Last 24 hours`,durationMs:Gw,bucketMs:5*Uw},{id:`7d`,label:`Last 7 days`,durationMs:7*Gw,bucketMs:15*Uw},{id:`30d`,label:`Last 30 days`,durationMs:30*Gw,bucketMs:Ww}];function qw(e){let t=Kw.find(t=>t.id===e);if(!t)throw Error(`Unknown preset: ${e}`);return t}var Jw=[{label:`Off`,value:0},{label:`30s`,value:3e4},{label:`60s`,value:6e4},{label:`5m`,value:3e5}],Yw=6e4,Xw=[`health`,`traffic`,`requests`,`database`,`replication`,`storage`,`overview`],Zw={tab:`health`,range:`1h`,refresh:Yw};function Qw(e){let t=e.refresh===``?NaN:Number(e.refresh);return{tab:Xw.find(t=>t===e.tab)??Zw.tab,range:Kw.find(t=>t.id===e.range)?.id??Zw.range,refresh:Jw.find(e=>e.value===t)?.value??Zw.refresh}}function $w(e){return z({getParentRoute:()=>e,path:`status`,validateSearch:Qw,search:{middlewares:[te(Zw)]},head:()=>({meta:[{title:`Status — Harper Fabric`}]}),component:ye(async()=>je(()=>import(`./status-CtgqjZ6q.js`),__vite__mapDeps([36,1,3,2,4,5,6,7,8,16,22,23,24,25,28,37,38,39,40,41,42,43,44,45,46,47,48,49,50])),`StatusIndex`)})}function eT(e){let t=ZC(e),n=[Hw(t),...nm(t,e),tm(t),$w(t),vv(t),GC(t)];return t.addChildren(n)}z({getParentRoute:()=>pa,path:`profile`,head:()=>({meta:[{title:`Profile — Harper Fabric`}]}),component:ye(async()=>je(()=>import(`./profile-Dgjkaqud.js`),__vite__mapDeps([51,1,18,3,2,4,5,6,7,21])),`ProfileIndex`)});var tT=fa.addChildren([...zo,pa.addChildren([eT(`local`)])]);function nT({routeTree:e=tT,authentication:t}){let[n]=(0,G.useState)(()=>me({routeTree:e,history:oe(),defaultNotFoundComponent:oi,defaultErrorComponent:ai,defaultPreload:!si()&&`intent`,trailingSlash:`never`,defaultPreloadStaleTime:0,scrollRestoration:!0,context:{queryClient:hn,authentication:t||{}}}));return n}function rT(){let e=Be(),t=nT({authentication:e}),n=(0,G.useRef)(e);return(0,G.useEffect)(()=>{n.current!==e&&(n.current=e,t.invalidate())},[t,e]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(pe,{router:t,context:{authentication:e}}),(0,W.jsx)(be,{router:t,position:`bottom-right`})]})}var iT=({...e})=>(0,W.jsx)(it,{className:`toaster group`,toastOptions:{classNames:{toast:`group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg`,description:`group-[.toast]:text-muted-foreground`,actionButton:`group-[.toast]:bg-primary group-[.toast]:text-primary-foreground font-medium`,cancelButton:`group-[.toast]:bg-muted group-[.toast]:text-muted-foreground font-medium`}},...e}),aT=!1;function oT(){(0,G.useEffect)(()=>{aT||=!0},[])}function sT(){return _a(),ua(),oT(),(0,W.jsxs)(ji,{children:[(0,W.jsxs)(re,{client:hn,children:[(0,W.jsx)(rT,{}),(0,W.jsx)(Te,{buttonPosition:`bottom-right`})]}),(0,W.jsx)(iT,{richColors:!0})]})}function cT(){u.signOutAllLocally(),hn.getMutationCache().clear(),hn.getQueryCache().clear(),Gi(),Ki()}function lT(e,t=()=>!1,n=()=>!0){return r=>(r?.response?.status===401&&!t(r.config?.url??``)&&n(r.config)&&e(),Promise.reject(r))}var uT=[`/Login/`,`/ForgotPassword/`,`/ResetPassword/`,`/VerifyEmail/`,`/ResendVerificationEmail/`],dT=`authUserAtSend`;function fT(){let e=u.getConnectionById(h).user;return e&&`id`in e?e.id:null}var pT=!1;function mT(){pT||(pT=!0,N.interceptors.request.use(e=>(e[dT]=fT(),e)),N.interceptors.response.use(e=>e,lT(cT,e=>uT.some(t=>e.startsWith(t)),e=>e?.[dT]===fT())))}function hT(){if(typeof Node!=`function`||!Node.prototype)return;let e=`__harperTranslationGuarded__`,t=Node.prototype;if(t[e])return;Object.defineProperty(t,e,{value:!0,configurable:!0,writable:!0,enumerable:!1});let n=Node.prototype.removeChild;Node.prototype.removeChild=function(e){return e instanceof Node&&e.parentNode!==this?e:n.call(this,e)};let r=Node.prototype.insertBefore;Node.prototype.insertBefore=function(e,t){return t instanceof Node&&t.parentNode!==this?r.call(this,e,null):r.call(this,e,t)}}var gT=`Studio:StaleDeployReloadedAt`,_T=6e4,vT=`__harperStaleDeployReloadState__`;function yT(){if(!(typeof window>`u`))return window[vT]}function bT(){let e=yT();if(e){try{let e=Number(sessionStorage.getItem(gT)??0);if(Date.now()-e<_T)return;sessionStorage.setItem(gT,String(Date.now()))}catch{return}e.reload()}}function xT(e=()=>window.location.reload()){if(typeof window>`u`)return;let t=window,n=t[vT];if(n){n.reload=e;return}t[vT]={reload:e},window.addEventListener(`vite:preloadError`,()=>bT())}var ST=Pe();hT(),xT(),mT(),(0,ST.createRoot)(document.getElementById(`root`),{onUncaughtError:(e,t)=>{Me(e,t),console.error(`Uncaught error:`,e,t)},onCaughtError:(e,t)=>{Me(e,t),console.error(`Caught error:`,e,t)},onRecoverableError:(e,t)=>{Me(e,t),console.warn(`Recoverable error:`,e,t)}}).render((0,W.jsx)(G.StrictMode,{children:(0,W.jsx)(sT,{})}));export{u_ as $,ao as $t,mS as A,Xr as An,Af as At,Hy as B,kr as Bn,yc as Bt,MS as C,_i as Cn,Nm as Ct,CS as D,ei as Dn,np as Dt,OS as E,ni as En,up as Et,rx as F,Ir as Fn,Td as Ft,Wv as G,Zn as Gn,ps as Gt,Kv as H,vr as Hn,lc as Ht,ob as I,Pr as In,dd as It,L_ as J,Rn as Jn,Zo as Jt,jv as K,Yn as Kn,fs as Kt,ab as L,Nr as Ln,ld as Lt,pS as M,qr as Mn,jf as Mt,fS as N,Vr as Nn,Of as Nt,DS as O,$r as On,Pf as Ot,Bx as P,Rr as Pn,Qd as Pt,s_ as Q,Xo as Qt,eb as R,Mr as Rn,Yu as Rt,jS as S,vi as Sn,Pm as St,SS as T,ai as Tn,zp as Tt,Gv as U,pr as Un,js as Ut,Ey as V,yr as Vn,dc as Vt,qv as W,fr as Wn,As as Wt,b_ as X,Dn as Xn,es as Xt,M_ as Y,Ln as Yn,Qo as Yt,x_ as Z,ts as Zt,XS as _,ui as _n,oh as _t,qw as a,X as an,Eg as at,xS as b,hi as bn,Um as bt,cw as c,q as cn,jh as ct,uC as d,qi as dn,Oh as dt,Ba as en,d_ as et,tC as f,Hi as fn,bh as ft,ZS as g,ci as gn,mh as gt,$S as h,Ei as hn,_h as ht,Kw as i,Ma as in,Ag as it,lS as j,Jr as jn,kf as jt,ES as k,Qr as kn,Mf as kt,vC as l,oa as ln,kh as lt,nC as m,Ui as mn,xh as mt,Qw as n,Q as nn,f_ as nt,bw as o,Y as on,rg as ot,rC as p,K as pn,Sh as pt,ev as q,Bn as qn,Yo as qt,Jw as r,Z as rn,__ as rt,lw as s,J as sn,Qh as st,bT as t,$ as tn,v_ as tt,pC as u,Xi as un,Ah as ut,kS as v,di as vn,Ym as vt,wS as w,li as wn,Dm as wt,AS as x,gi as xn,Bm as xt,bS as y,mi as yn,qm as yt,Qy as z,Ar as zn,Mu as zt};
|
|
817
|
-
//# sourceMappingURL=index-
|
|
816
|
+
disabled:pointer-events-none disabled:opacity-50 dark:bg-grey-700 dark:text-white`})]})}function BC({pageSize:e,onChange:t}){return(0,W.jsxs)(`div`,{className:`hidden items-center gap-2 @min-[960px]:flex`,children:[(0,W.jsx)(`span`,{className:`text-sm whitespace-nowrap text-muted-foreground`,children:`Rows`}),(0,W.jsxs)(Yt,{value:String(e),onValueChange:e=>t(Number(e)),children:[(0,W.jsx)($t,{"aria-label":`Rows per page`,className:`h-9 w-20`,children:(0,W.jsx)(Vt,{})}),(0,W.jsx)(Qt,{side:`top`,children:FC.map(e=>(0,W.jsx)(zt,{value:String(e),children:ru(e)},e))})]})]})}function VC(e,t,n=1){if(t<=n*2+5)return HC(1,t);let r=Math.max(e-n,1),i=Math.min(e+n,t),a=r>2,o=i<t-1,s=3+2*n;return!a&&o?[...HC(1,s),`ellipsis`,t]:a&&!o?[1,`ellipsis`,...HC(t-s+1,t)]:[1,`ellipsis`,...HC(r,i),`ellipsis`,t]}function HC(e,t){return Array.from({length:t-e+1},(t,n)=>e+n)}function UC({applyFilters:e,columnFiltersForm:t,columns:n,columnVisibility:r,columnSizing:i,setColumnSizing:a,data:o,isFetching:s,onColumnClick:c,onRowClick:l,pageIndex:u,pageSize:d,primaryKey:f,setPageIndex:p,setPageSize:m,filtersToggled:h,totalPages:g,totalRecords:_,isEstimatedCount:v,estimatedRange:y,isExactCountFetching:b,isExactCountError:x,onRequestExactCount:S}){let C=ge({data:o||[],columns:n,manualPagination:!0,enableColumnResizing:!0,columnResizeMode:`onEnd`,onColumnSizingChange:a,pageCount:g,defaultColumn:{minSize:80},state:{columnVisibility:r,columnSizing:i},rowCount:_,getCoreRowModel:xe(),getPaginationRowModel:we()}),w=C.getState().columnSizingInfo,T=w.isResizingColumn,E=null;if(T){let e=C.options.defaultColumn?.minSize??20,t=C.getColumn(T)?.getSize()??0,n=0;for(let e of C.getVisibleLeafColumns())if(n+=e.getSize(),e.id===T)break;E=n+Math.max(w.deltaOffset??0,e-t)}return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`relative flex flex-col grow`,children:[(0,W.jsxs)(Bu,{containerClassName:`rounded-md bg-card dark:bg-black-dark grow overflow-visible`,className:`table-fixed`,children:[(0,W.jsx)(Vu,{children:C.getHeaderGroups().map(e=>(0,W.jsxs)(Uu,{className:`border-none`,children:[e.headers.map(e=>(0,W.jsx)(Gu,{header:e,onColumnClick:c,className:`sticky top-32 z-10 bg-card dark:bg-black-dark border-b border-border`},e.id)),(0,W.jsx)(Wu,{"aria-hidden":!0,className:`w-full p-0 sticky top-32 z-10 bg-card dark:bg-black-dark border-b border-border`})]},e.id))}),h&&(0,W.jsx)(AC,{applyFilters:e,columnFiltersForm:t,headerGroups:C.getHeaderGroups()}),(0,W.jsx)(Hu,{className:`bg-background dark:bg-black border border-border dark:border-grey-700`,children:C.getRowModel().rows?.length?C.getRowModel().rows.map(e=>(0,W.jsx)(WC,{row:e,onRowClick:l,primaryKey:f},e.id)):(0,W.jsx)(Uu,{children:(0,W.jsx)(Ku,{colSpan:n.length+1,className:`h-24 text-center`,children:s||o===void 0?(0,W.jsx)(PC,{className:`opacity-50 inline-block`}):(0,W.jsx)(`span`,{children:`No results.`})})})})]}),E!==null&&(0,W.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute top-0 bottom-0 z-20 w-0.5 bg-primary`,style:{left:`${E}px`}})]}),(0,W.jsx)(IC,{pageIndex:u,pageSize:d,totalPages:g,totalRecords:_,isEstimatedCount:v,estimatedRange:y,isExactCountFetching:b,isExactCountError:x,onRequestExactCount:S,setPageIndex:p,setPageSize:m})]})}function WC({row:e,primaryKey:t,onRowClick:n}){let r=e.getVisibleCells(),i=(0,G.useMemo)(()=>{let n=e.original;return n&&n.message===`This entry has expired`?r[0]?.column?.id===t?[(0,W.jsx)(GC,{cell:r[0]},r[0].id),(0,W.jsx)(KC,{colSpan:r.length-1},`expired`)]:[(0,W.jsx)(KC,{colSpan:r.length},`expired`)]:r.map(e=>(0,W.jsx)(GC,{cell:e},e.id))},[e,t,r]);return(0,W.jsxs)(Uu,{"data-state":e.getIsSelected()&&`selected`,onClick:()=>n?.(e),className:P(`hover:bg-muted/10 data-[state=selected]:bg-muted`,n&&`cursor-pointer`),children:[i,(0,W.jsx)(Ku,{"aria-hidden":!0,className:`p-0`})]})}function GC({cell:e}){let t=e.column.getSize();return(0,W.jsx)(Ku,{"data-col-id":e.column.id,style:{width:`${t}px`,maxWidth:`${t}px`},className:`px-2 py-2 overflow-hidden text-ellipsis whitespace-nowrap`,children:Ce(e.column.columnDef.cell,e.getContext())})}function KC({colSpan:e}){return(0,W.jsx)(Ku,{colSpan:e,className:`px-2 py-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,children:(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`This entry has expired`})})}function qC({instanceDatabaseMap:e,databaseName:t,tableName:n}){let r=L({strict:!1}),i=K(),{clusterId:a,instanceId:o}=r,{toggled:s,toggle:c}=yC(!0),l=ze(),u=hs(o??a,t,n,`insert`),d=hs(o??a,t,n,`update`),f=hs(o??a,t,n,`delete`),p=ms(),{data:m}=R(cb({...i,databaseName:t,tableName:n})),h=e?.[t],g=h?.[n],_=m??g,v=(0,G.useMemo)(()=>Zs(_?.attributes??[],`attribute`),[_]),{data:y}=R(hC(i)),b=y?.[t]?.[n],x=(0,G.useMemo)(()=>Ev(_,h,b),[_,h,b]),S=(0,G.useMemo)(()=>jv(_,h),[_,h]),C=(0,G.useMemo)(()=>Ov(_?.attributes,h),[_,h]),[w,T]=Df(null,r),[E,D]=(0,G.useState)(!1),[O,k]=Df(null,r),A=(0,G.useMemo)(()=>(t?Object.keys(e?.[t]||[]).sort():[]).length===1,[e,t]),{toggled:j,toggleOn:ee,toggleOff:M}=yC(!1),N=bt({resolver:_t(kC)}),{reset:P}=N,I=N.watch(),[te,ne]=Df(null,[r.clusterId,r.instanceId,t,n]),re=(0,G.useCallback)(e=>{let t=[];for(let n in e){let r=e[n];if(r?.length)try{t.push(...Qy(n,r,v[n],x[n]))}catch(e){H.error(String(e))}}return t},[v,x]),ae=(0,G.useCallback)(()=>{let e=re(I);ne(e.length?e:null),P({...I})},[re,P,I]),oe=(0,G.useCallback)(()=>{P({},{keepValues:!1,keepDirtyValues:!1,keepDefaultValues:!1}),P(),ne(null),M()},[M,P]);(0,G.useEffect)(function(){return oe()},[r,oe]);let{filters:se}=ce({strict:!1}),le=JSON.stringify([t,n,se??null]),z=(0,G.useRef)(null);(0,G.useEffect)(function(){if(!_||z.current===le)return;let e=z.current===null;if(z.current=le,se){P({...se});let e=re(se);ne(e.length?e:null),ee()}else e||oe()},[se,le,_,P,re,ne,ee,oe]);let{dataTableColumns:ue,primaryKey:de}=By(_,x),[fe,pe]=Df({attribute:de,descending:!1},r),[me,he]=Df(0,[t,n,te]),[ge,B]=(0,G.useState)(20),_e=m?.record_count??g?.record_count,ve=m?.estimated_record_range??g?.estimated_record_range,[ye,be]=Df(!1,[t,n]),{data:xe,isFetching:Se,isError:Ce,refetch:we}=R(EC({...i,enabled:ye,databaseName:t,tableName:n})),Te=(0,G.useCallback)(()=>{ye?we():be(!0)},[ye,we,be]),Ee=xe??_e,De=Ee?Math.ceil(Ee/ge):0,Oe=xe===void 0&&ve!==void 0,ke=j&&!!te,{data:Ae,isFetching:je}=R(np({...i,enabled:!ke&&!!de,databaseName:t,tableName:n,searchAttribute:de,sort:fe,pageSize:ge,pageIndex:me,onlyIfCached:s,getAttributes:S})),{data:Me,isFetching:Ne}=R(Xy({...i,enabled:ke&&!!de,databaseName:t,tableName:n,conditions:te,sort:fe,pageSize:ge,pageIndex:me,onlyIfCached:s,getAttributes:S})),Pe=ke?Me:Ae,Fe=je||Ne,{data:Ie,isFetching:Le,isError:Re}=R(wC({...i,enabled:E,databaseName:t,tableName:n,ids:w})),Be=E&&!!O&&(!de||O[de]==null),Ve=Ie?.data,He=!Be&&!!w?.length&&!Le&&(Re||Array.isArray(Ve)&&Ve.length===0),{mutate:Ue,isPending:We}=OC(),{mutate:Ge,isPending:Ke}=CC(),{mutate:qe,isPending:Je}=xC(),Ye=ie(),Xe=(0,G.useCallback)(()=>Ye.invalidateQueries({queryKey:[i.entityId,t,n]}),[Ye,i.entityId,t,n]),Ze=(0,G.useCallback)(async()=>{confirm(`Are you sure you want to cleanup orphan blobs for database "${t}"?`)&&qe({...i,databaseName:t},{onSuccess:e=>{H.success(e.message||`Orphan blobs cleanup started successfully`),Xe()},onError:e=>{H.error(e instanceof Error?e.message:`Failed to cleanup orphan blobs`)}})},[qe,t,i,Xe]),{exportCsv:Qe,isExporting:$e}=ib(),et=(0,G.useCallback)(()=>{Qe({databaseName:t,tableName:n,primaryKey:de,sort:fe,conditions:ke?te:null})},[Qe,t,n,de,fe,ke,te]),tt=(0,G.useCallback)(e=>{Ue({...i,databaseName:t,tableName:n,records:e},{onSuccess:()=>{Xe(),D(!1),H.success(`Record updated successfully`)}})},[Ue,i,t,n,Xe]),nt=(0,G.useCallback)(e=>{Ge({...i,databaseName:t,tableName:n,hashValues:e},{onSuccess:()=>{Xe(),D(!1),H.success(`Record deleted successfully`)}})},[Ge,i,t,n,Xe]),rt=e=>{let t=de?e.original[de]:void 0;k(e.original),T(t==null?null:[t]),D(!0)},it=(e,t)=>{pe({attribute:e,descending:!t})},at=Qu(Xe),ot=(0,G.useCallback)(()=>{ey(`ShowAddTableRecords`,{databaseName:t,tableName:n})},[t,n]),st=(0,G.useCallback)(()=>{ey(`ShowImportData`,{databaseName:t,tableName:n})},[t,n]),[ct,lt]=Ff(`ColumnDisplayed/${t}/${n}`,{}),ut=(0,G.useMemo)(()=>({...Object.fromEntries(Av(x).map(e=>[e,!1])),...ct}),[x,ct]),[dt,ft]=Ff(`ColumnSizing/${t}/${n}`,{});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex flex-col md:flex-row items-center justify-between space-y-3 md:space-y-0 md:space-x-3 pt-15 pb-4 pr-4`,children:[(0,W.jsxs)(`div`,{className:`flex space-x-2`,children:[u&&(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:ot,accessKey:`n`,children:[(0,W.jsx)(Nr,{}),(0,W.jsxs)(`span`,{children:[`Add `,(0,W.jsx)(`u`,{children:`N`}),`ew Record(s)`]})]}),u&&(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:st,accessKey:`i`,children:[(0,W.jsx)(Jn,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`I`}),`mport Data`]})]}),(0,W.jsxs)(F,{variant:`positiveOutline`,onClick:et,disabled:$e,accessKey:`e`,children:[(0,W.jsx)(qn,{}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`u`,{children:`E`}),`xport CSV`]})]})]}),(0,W.jsxs)(`div`,{className:`flex space-x-2`,children:[j&&te&&(0,W.jsxs)(F,{type:`button`,variant:`ghost`,onClick:oe,accessKey:`f`,children:[(0,W.jsx)(ar,{className:`inline-block `}),(0,W.jsxs)(`span`,{children:[`Clear `,(0,W.jsx)(`u`,{children:`F`}),`ilters`]})]}),j&&N.formState.isDirty&&(0,W.jsxs)(F,{variant:`default`,onClick:ae,children:[(0,W.jsx)(ir,{className:`inline-block `}),`Apply Filters`]}),j&&!te&&(0,W.jsxs)(F,{variant:`ghost`,onClick:M,accessKey:`f`,children:[(0,W.jsx)(ar,{className:`inline-block `}),(0,W.jsxs)(`span`,{children:[`Hide `,(0,W.jsx)(`u`,{children:`F`}),`ilters`]})]}),!j&&(0,W.jsxs)(F,{variant:`ghost`,onClick:ee,accessKey:`f`,children:[(0,W.jsx)(or,{className:`inline-block `}),(0,W.jsxs)(`span`,{children:[`Show `,(0,W.jsx)(`u`,{children:`F`}),`ilters`]})]}),(0,W.jsx)(F,{variant:`defaultOutline`,onClick:at,disabled:Fe,children:(0,W.jsx)(fn,{})}),(0,W.jsx)(MC,{columns:ue,columnVisibility:ut,setColumnVisibility:lt}),(0,W.jsxs)(li,{children:[(0,W.jsx)(ui,{asChild:!0,disabled:!e,children:(0,W.jsx)(F,{variant:`ghost`,size:`icon`,disabled:!e,children:(0,W.jsx)($n,{"aria-label":`Table options`})})}),(0,W.jsxs)(di,{side:`bottom`,align:`end`,children:[(0,W.jsxs)(fi,{className:`focus:bg-primary/70 focus:text-white`,onClick:c,children:[s?(0,W.jsx)(Bn,{className:`text-green`}):(0,W.jsx)(Un,{}),`Only If Cached`,(0,W.jsx)(V,{to:`https://docs.harperdb.io/docs/developers/applications/caching#cache-control-header`,target:`_blank`,rel:`noopener noreferrer`,onClick:Fy,children:(0,W.jsx)(er,{})})]}),p&&l&&!!o&&(0,W.jsxs)(fi,{className:`focus:bg-yellow/70 focus:text-white`,onClick:Ze,disabled:Je,children:[(0,W.jsx)(Nn,{className:`text-yellow `}),`Cleanup Orphan Blobs`]}),p&&!A&&(0,W.jsxs)(fi,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>ey(`ShowDeleteTable`,{databaseName:t,tableName:n}),children:[(0,W.jsx)(ei,{className:`inline-block `}),`Drop Table`]}),p&&(0,W.jsxs)(fi,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>ey(`ShowDeleteDatabase`,{databaseName:t}),children:[(0,W.jsx)($r,{}),`Drop Database`]})]})]})]})]}),(0,W.jsx)(UC,{primaryKey:de,data:Pe?.data,isFetching:Fe,filtersToggled:j,columns:ue,columnVisibility:ut,columnSizing:dt,setColumnSizing:ft,onRowClick:rt,onColumnClick:it,totalPages:De,totalRecords:Ee,isEstimatedCount:Oe,estimatedRange:ve,isExactCountFetching:Se,isExactCountError:Ce,onRequestExactCount:Te,pageIndex:me,pageSize:ge,columnFiltersForm:N,applyFilters:ae,setPageIndex:he,setPageSize:B}),(0,W.jsx)(vC,{canEditRecords:d,canDeleteRecords:f,setIsModalOpen:D,isModalOpen:E,primaryKey:de,missingPrimaryKey:Be,recordUnavailable:He,syntheticAttributes:C,data:Be||He?O?[O]:void 0:Ie?.data,onSaveChanges:tt,onDeleteRecord:nt,isUpdateTableRecordsPending:We,isDeleteTableRecordsPending:Ke})]})}function JC(e,t){if(!e)return null;if(!(t.databaseName&&e[t.databaseName])){let n=Object.keys(e).sort()[0];return n&&n!==t.databaseName?{databaseName:n,tableName:void 0}:null}return t.tableName&&!e[t.databaseName][t.tableName]?{databaseName:t.databaseName,tableName:void 0}:null}var YC=10;function XC(e){return Math.max(200,Math.floor(e/2))}function ZC(e,t){return Math.round(Math.min(Math.max(e,200),XC(t)))}function QC(){let[e,t]=vn(bn.DatabasesSidebarWidth,320),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(()=>ZC(e,window.innerWidth)),o=(0,G.useRef)(i);o.current=i;let s=(0,G.useRef)(null);(0,G.useEffect)(()=>{n||a(ZC(e,window.innerWidth))},[e,n]),(0,G.useEffect)(()=>{let t=()=>{n||a(ZC(e,window.innerWidth))};return window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t)},[e,n]);let c=(0,G.useCallback)(e=>{e.preventDefault(),s.current={startX:e.clientX,startWidth:o.current},r(!0)},[]);return(0,G.useEffect)(()=>{if(!n)return;let e=e=>{let t=s.current;t&&a(ZC(t.startWidth+(e.clientX-t.startX),window.innerWidth))},i=()=>{r(!1),t(o.current)},c=document.body.style.userSelect;return document.body.style.userSelect=`none`,window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,i),()=>{document.body.style.userSelect=c,window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,i)}},[n,t]),{width:i,isResizing:n,startResizing:c,handleKeyDown:(0,G.useCallback)(e=>{e.key===`ArrowLeft`?(e.preventDefault(),t(e=>ZC(e-YC,window.innerWidth))):e.key===`ArrowRight`&&(e.preventDefault(),t(e=>ZC(e+YC,window.innerWidth)))},[t])}}function $C(){let e=L({strict:!1}),{data:t}=R(Og({...K(),skipRecordCount:!0})),{width:n,isResizing:r,startResizing:i,handleKeyDown:a}=QC(),o={"--db-sidebar-width":`${n}px`},s=JC(t,e);return s?(0,W.jsx)(de,{to:bv({...e,...s}),replace:!0}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`main`,{className:`flex flex-col gap-4 md:flex-row md:items-start`,children:[(0,W.jsxs)(`section`,{style:o,className:`relative text-foreground w-full md:w-[var(--db-sidebar-width)] md:shrink-0 md:border-r border-border flex flex-col min-h-0 md:sticky md:top-32 md:h-[calc(100vh-(--spacing(32)))] md:max-h-[calc(100vh-(--spacing(32)))] overflow-y-clip`,children:[(0,W.jsx)(pS,{instanceDatabaseMap:t}),(0,W.jsx)(`div`,{role:`separator`,tabIndex:0,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,"aria-valuenow":n,"aria-valuemin":200,"aria-valuemax":XC(window.innerWidth),onMouseDown:i,onKeyDown:a,className:`group hidden md:block absolute top-0 bottom-0 right-0 w-4 translate-x-1/2 z-40 cursor-col-resize outline-none`,children:(0,W.jsx)(`div`,{className:P(`absolute inset-y-0 left-1/2 w-1 -translate-x-1/2 transition-colors`,`group-hover:bg-violet-400/60 dark:group-hover:bg-violet-500/60 group-focus-visible:bg-violet-500/80`,r&&`bg-violet-400/60 dark:bg-violet-500/60`)})})]}),(0,W.jsx)(`section`,{className:`text-foreground w-full md:flex-1 md:min-w-0 flex flex-col min-h-0`,children:e.databaseName&&e.tableName?(0,W.jsx)(qC,{instanceDatabaseMap:t,databaseName:e.databaseName,tableName:e.tableName}):e.databaseName?(0,W.jsx)(pb,{instanceDatabaseMap:t,databaseName:e.databaseName}):null})]}),t&&(0,W.jsx)(Py,{instanceDatabaseMap:t})]})}function ew(e){return z({getParentRoute:()=>e,path:`/databases/{-$databaseName}/{-$tableName}`,head:()=>({meta:[{title:`Databases — Harper Fabric`}]}),component:$C})}var tw={className:`text-primary font-semibold bg-primary/10 rounded-md dark:text-white dark:bg-white/10`};function nw(){let e=ps(),t=L({strict:!1}),{version:n}=De({strict:!1}),r=on(`4.6.0`,n)&&e,i=on(`4.7.0-beta.7`,n),{data:a}=R(Bp(K(),r)),o=a?.restartRequired??!1,s=(0,G.useMemo)(()=>[e&&{to:t.clusterId&&!t.instanceId?sh(t,`apps`):sh(t),activeOptions:{exact:!0},name:`Applications`,shortName:`Apps`,icon:(0,W.jsx)(Ar,{className:`inline-block`})},{to:sh(t,`databases`),icon:(0,W.jsx)(Qn,{className:`inline-block`}),name:`Databases`},e&&i&&{to:sh(t,`apis`),name:`APIs`,icon:(0,W.jsx)(Br,{className:`inline-block`})},e&&r&&{to:sh(t,`status`),icon:(0,W.jsx)(sr,{className:`inline-block`}),name:`Status`},e&&{to:sh(t,`logs`),icon:(0,W.jsx)(kr,{className:`inline-block`}),name:`Logs`},e&&{to:sh(t,`config`),icon:(0,W.jsx)(Vr,{className:`inline-block`}),name:`Config`}].filter(Zi),[e,t,i,r]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(rw,{links:s,restartRequired:o}),(0,W.jsx)(iw,{links:s,restartRequired:o})]})}function rw({links:e,restartRequired:t}){return(0,W.jsxs)(`div`,{className:`hidden md:[@media(hover:hover)]:flex xl:flex items-center justify-between h-full text-sm text-foreground`,children:[(0,W.jsx)(ka,{restartRequired:t}),(0,W.jsx)(`div`,{className:`flex space-x-2`,children:e.map(({shortName:e,...t})=>{let n=(0,W.jsxs)(V,{"aria-label":t.name,className:`p-2 text-center text-muted-foreground hover:text-foreground`,activeProps:tw,...t,children:[t.icon,(0,W.jsx)(`span`,{className:`hidden xl:inline-block ml-1`,children:t.name}),e&&(0,W.jsx)(`span`,{className:`visible xl:hidden ml-1`,children:e})]},t.to);return e?n:(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:n}),(0,W.jsx)(Rt,{side:`bottom`,className:`xl:hidden`,children:t.name})]},t.to)})})]})}function iw({links:e,restartRequired:t}){return(0,W.jsx)(W.Fragment,{children:(0,W.jsxs)(`div`,{className:`flex md:[@media(hover:hover)]:hidden xl:hidden items-center justify-between h-full px-2 text-foreground`,children:[(0,W.jsx)(ka,{restartRequired:t}),(0,W.jsxs)(li,{children:[(0,W.jsx)(ui,{asChild:!0,children:(0,W.jsx)(F,{variant:`ghost`,className:`p-0`,children:(0,W.jsx)(Er,{className:`h-8 w-8`})})}),(0,W.jsxs)(di,{children:[(0,W.jsx)(mi,{children:`Instance Menu`}),(0,W.jsx)(hi,{}),e.map(e=>(0,W.jsx)(fi,{asChild:!0,children:(0,W.jsxs)(V,{to:e.to,activeProps:tw,className:`flex items-center gap-2`,children:[e.icon,e.name]})},e.to))]})]})]})})}(0,G.lazy)(()=>je(()=>import(`./FloatingChat-Bqjk6Bf4.js`).then(e=>({default:e.FloatingChat})),__vite__mapDeps([35,1,4,5,36,16,24])));function aw(){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`nav`,{className:`fixed top-20 w-full z-39 h-12 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none`,children:(0,W.jsx)(nw,{})}),(0,W.jsx)(`div`,{className:`mt-32 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,W.jsx)(Se,{})}),!1]})}function ow(e){switch(e){case`local`:return z({getParentRoute:()=>ma,id:`_instanceLayout`,component:aw,loader:vv});case`cluster`:return z({getParentRoute:()=>Vf,id:`_instanceLayout`,component:aw,beforeLoad:sw,loader:vv});case`instance`:return z({getParentRoute:()=>Vf,path:`instance/$instanceId`,component:aw,beforeLoad:sw,loader:vv})}}async function sw({context:e,params:t}){let n=t.instanceId||t.clusterId,r=!1;if(u.checkForFabricConnect(n)&&!u.hasResolvedFabricConnect(n)&&(r=!0,await cw(n,e.cluster,t.instanceId)))return;let i=u.getConnectionById(n);if(i.isLoading||i.user)return;let a=e.authentication[h];if(!a||a.isLoading)return;let{update:o}=t.instanceId?fs(a.user,t.organizationId,t.clusterId):us(a.user,t.organizationId,t.clusterId);if(!(!r&&o&&await cw(n,e.cluster,t.instanceId)))throw _e({to:`/${t.organizationId}/${t.clusterId}/`+(t.instanceId?`instance/${t.instanceId}`:``)+`/sign-in`,search:la()})}async function cw(e,t,n){try{return await u.establishFabricConnectAuth({id:e,operationsUrl:lw(t,n)}),!0}catch(e){return console.debug(`Fabric Connect not established`,e),!1}}function lw(e,t){if(t){let n=e?.instances?.find(e=>e.id===t);return n?p(n):void 0}return s(e)??void 0}function uw(e){switch(e){case`warn`:return`warning`;case`notify`:return`success`;case`info`:case`debug`:case`trace`:case void 0:case`stdout`:return`secondary`;case`stderr`:case`error`:return`destructive`;default:return e}}var dw=[`secondary`,`default`,`warning`,`outline`,`success`,`destructive`],fw=0,pw=new Map,mw=e=>{if(pw.has(e))return pw.get(e);fw++;let t=dw[fw%dw.length];return pw.set(e,t),t};function hw(e){switch(e){case`error`:case`stderr`:return`border-l-destructive`;case`warn`:return`border-l-yellow-500`;case`notify`:return`border-l-green-500`;default:return`border-l-transparent`}}function gw({columns:e,data:t,onRowClick:n,containerRef:r}){let i=ge({data:t,columns:e,getCoreRowModel:xe()});return(0,W.jsxs)(Bu,{className:`text-xs`,containerRef:r,containerClassName:`rounded-md bg-card dark:bg-black-dark logsTable max-h-[calc(100vh-(--spacing(48)))] overflow-y-auto md:max-h-[calc(100vh-(--spacing(40)))]`,children:[(0,W.jsx)(Vu,{children:i.getHeaderGroups().map(e=>(0,W.jsx)(Uu,{className:`border-b border-border`,children:e.headers.map(e=>(0,W.jsx)(Wu,{className:`p-4 max-w-96 sticky top-0 z-10 border-b border-border bg-card dark:bg-black-dark`,children:e.isPlaceholder?null:Ce(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,W.jsx)(Hu,{className:`bg-background dark:bg-black`,children:i.getRowModel().rows?.length?i.getRowModel().rows.map(e=>(0,W.jsx)(Uu,{"data-state":e.getIsSelected()&&`selected`,className:P(`hover:bg-muted/20 data-[state=selected]:bg-muted max-w-full border-l-2`,hw(e.original.level),n&&`cursor-pointer`),onClick:()=>n?.(e),children:e.getVisibleCells().map(e=>(0,W.jsx)(Ku,{className:`p-2`,children:Ce(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,W.jsx)(Uu,{children:(0,W.jsx)(Ku,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})}function _w(e){try{JSON.parse(e)}catch{return!1}return!0}function vw(e){return!e||e.length>524288?`plaintext`:_w(e)?`json`:`plaintext`}function yw({label:e,children:t}){return(0,W.jsxs)(`div`,{className:`flex items-start gap-3 py-1.5 border-b border-border/50 last:border-0`,children:[(0,W.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground w-20 shrink-0 pt-0.5`,children:e}),(0,W.jsx)(`span`,{className:`text-xs`,children:t})]})}function bw({setIsModalOpen:e,isModalOpen:t,data:n}){let r=n?mw(n.node):`default`,i=ud();return(0,W.jsx)(qt,{onOpenChange:e,open:t,children:(0,W.jsxs)(tn,{"aria-describedby":void 0,resizable:!0,children:[(0,W.jsx)(Zt,{children:(0,W.jsx)(Jt,{children:`Log Entry`})}),n?(0,W.jsxs)(`div`,{className:`flex flex-1 min-h-0 flex-col gap-2 text-popover-foreground`,children:[(0,W.jsxs)(`div`,{className:`rounded-md border border-border/50 bg-muted/20 px-3 py-1`,children:[(0,W.jsx)(yw,{label:`Level`,children:(0,W.jsx)(oo,{variant:uw(n.level),children:Da(n.level)})}),(0,W.jsx)(yw,{label:`Timestamp`,children:(0,W.jsx)(`span`,{className:`tabular-nums`,children:new Date(n.timestamp).toLocaleString()})}),(0,W.jsx)(yw,{label:`Thread`,children:(0,W.jsx)(`span`,{className:`tabular-nums font-mono`,children:n.thread})}),n.node&&(0,W.jsx)(yw,{label:`Node`,children:(0,W.jsx)(oo,{variant:r,children:n.node})}),n.tags&&n.tags.length>0&&(0,W.jsx)(yw,{label:`Tags`,children:(0,W.jsx)(`span`,{className:`font-mono`,children:n.tags})})]}),(0,W.jsxs)(`div`,{className:`flex flex-1 min-h-0 flex-col`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1.5`,children:`Message`}),(0,W.jsx)(`div`,{className:`rounded-md overflow-hidden border border-border/50 flex-1 min-h-0`,children:(0,W.jsx)(fd,{className:`w-full h-full`,language:vw(n.message),theme:i,value:n.message,options:{readOnly:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,fontSize:12,padding:{top:12,bottom:12},automaticLayout:!0}})})]})]}):(0,W.jsx)(Di,{})]})})}var xw=b({limit:S().or(A()).or(x()).optional(),level:j([`notify`,`error`,`warn`,`info`,`debug`,`trace`,`undefined`]).or(A()).or(x()).optional(),from:S().or(A()).or(x()).optional(),until:S().or(A()).or(x()).optional(),log_name:j([`hdb.log`,`system.log`]).or(A()).or(x()).optional(),filter:S().or(A()).or(x()).optional()}),Sw=`dark:bg-grey-600 dark:border-grey-500`;function Cw({form:e,resetFilters:t,submitFilters:n,showLogName:r,showFilter:i,isOpen:a,onOpenChange:o}){return(0,W.jsxs)(Lt,{className:P(a?`block`:`hidden`,`mt-3 md:mt-0 md:block`),children:[(0,W.jsx)(Pt,{className:`hidden md:block`,children:(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(!a),"aria-expanded":a,"aria-controls":`logs-filters-content`,className:`flex w-full items-center justify-between md:pointer-events-none`,children:(0,W.jsxs)(Nt,{className:`flex items-center gap-2 text-base`,children:[(0,W.jsx)(Wr,{className:`size-4 text-muted-foreground`}),`Filters`]})})}),(0,W.jsx)(Ft,{id:`logs-filters-content`,children:(0,W.jsx)(q,{...e,children:(0,W.jsxs)(`form`,{id:`instance-edit-log-filters-form`,name:`instance-edit-log-filters-form`,onSubmit:e.handleSubmit(n),className:`flex-col space-y-4`,children:[i&&(0,W.jsx)(Y,{control:e.control,name:`filter`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(J,{children:(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(zr,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,W.jsx)($,{type:`search`,placeholder:`Search logs…`,className:P(`pl-9`,Sw),value:e.value??``,onChange:e.onChange})]})}),(0,W.jsx)(Q,{})]})}),r&&(0,W.jsx)(Y,{control:e.control,name:`log_name`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Log file`}),(0,W.jsxs)(Yt,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,W.jsx)($t,{className:P(`w-full bg-white`,Sw),children:(0,W.jsx)(Vt,{placeholder:`Select log file`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(zt,{value:`hdb.log`,children:`Application (hdb.log)`}),(0,W.jsx)(zt,{value:`system.log`,children:`System (system.log)`})]})})]}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,W.jsx)(Y,{control:e.control,name:`limit`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Limit`}),(0,W.jsxs)(Yt,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,W.jsx)($t,{className:P(`w-full bg-white`,Sw),children:(0,W.jsx)(Vt,{placeholder:`Limit`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(zt,{value:`1000`,children:`1000`}),(0,W.jsx)(zt,{value:`500`,children:`500`}),(0,W.jsx)(zt,{value:`250`,children:`250`}),(0,W.jsx)(zt,{value:`100`,children:`100`}),(0,W.jsx)(zt,{value:`10`,children:`10`})]})})]}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:e.control,name:`level`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Level`}),(0,W.jsxs)(Yt,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,W.jsx)($t,{className:P(`w-full bg-white`,Sw),children:(0,W.jsx)(Vt,{placeholder:`Level`})}),(0,W.jsx)(Qt,{children:(0,W.jsxs)(Kt,{children:[(0,W.jsx)(zt,{value:`undefined`,children:`All`}),(0,W.jsx)(zt,{value:`notify`,children:`Notify`}),(0,W.jsx)(zt,{value:`error`,children:`Error`}),(0,W.jsx)(zt,{value:`warn`,children:`Warn`}),(0,W.jsx)(zt,{value:`info`,children:`Info`}),(0,W.jsx)(zt,{value:`debug`,children:`Debug`}),(0,W.jsx)(zt,{value:`trace`,children:`Trace`})]})})]}),(0,W.jsx)(Q,{})]})})]}),(0,W.jsx)(Y,{control:e.control,name:`from`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`Start date`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`datetime-local`,className:Sw,value:e.value??void 0,onChange:e.onChange})}),(0,W.jsx)(Q,{})]})}),(0,W.jsx)(Y,{control:e.control,name:`until`,render:({field:e})=>(0,W.jsxs)(X,{children:[(0,W.jsx)(Z,{children:`End date`}),(0,W.jsx)(J,{children:(0,W.jsx)($,{type:`datetime-local`,className:Sw,value:e.value??void 0,onChange:e.onChange})}),(0,W.jsx)(Q,{})]})}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,W.jsx)(F,{type:`submit`,variant:`positiveOutline`,className:`grow`,children:`Apply Filters`}),(0,W.jsx)(F,{type:`reset`,variant:`destructiveOutline`,onClick:t,children:`Clear`})]})]})})})]})}var ww=1e4;function Tw(e){if(!e)return;let t=parseInt(e,10);if(!(!Number.isFinite(t)||t<=0))return Math.min(t,ww)}function Ew(e,t){return{operation:`read_log`,start:0,replicated:t,limit:Tw(e.limit),level:e.level===`undefined`?void 0:e.level,from:e.from?new Date(e.from).toISOString():void 0,until:e.until?new Date(e.until).toISOString():void 0,log_name:e.log_name??void 0,filter:e.filter?e.filter:void 0,order:`desc`}}async function Dw({instanceClient:e,logFilters:t,replicated:n}){let{data:r}=await e.post(`/`,Ew(t,n));return r}function Ow(e){let t=e.logFilters;return B({queryKey:[`read_log`,e.entityId,t.limit,t.level,t.from,t.until,t.log_name,t.filter,e.replicated],queryFn:()=>Dw(e),retry:!1,refetchInterval:e.isAutoRefreshEnabled?5e3:!1})}async function kw({connection:e,logFilters:t,replicated:n,signal:r,onEntry:i}){let{url:a,headers:o,credentials:s}=Lm(e),c;try{c=await fetch(a,{method:`POST`,headers:o,credentials:s,body:JSON.stringify(Ew(t,n)),signal:r})}catch(e){throw r?.aborted?e:new Pm(`Failed to open the read_log SSE stream.`,{cause:e})}let l=c.headers.get(`content-type`)??``;if(!c.ok||!l.includes(`text/event-stream`)||!c.body)throw await c.body?.cancel().catch(()=>{}),new Pm(`read_log did not return an event stream (status ${c.status}, content-type "${l}").`);for await(let e of jm(c.body,r)){if(e.event===`error`){let t=Nm(e);if(!t||typeof t!=`object`)throw new Im(typeof t==`string`&&t?t:`The log stream failed.`);let n=t;throw new Im(n.message??`The log stream failed.`,{code:n.code})}if(e.event===`done`||e.event===`end`)return;for(let t of Aw(Nm(e)))i(t)}}function Aw(e){return Array.isArray(e)?e.filter(jw):jw(e)?[e]:[]}function jw(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.timestamp==`string`&&(typeof t.level==`string`||typeof t.message==`string`)}function Mw(e){return[e.timestamp,e.node??``,e.thread??``,e.level,e.message].join(`|`)}function Nw(e,t,n){let r=new Set,i=[];for(let n of[...t,...e]){let e=Mw(n);r.has(e)||(r.add(e),i.push(n))}return i.sort((e,t)=>e.timestamp<t.timestamp?1:e.timestamp>t.timestamp?-1:0),n>0&&i.length>n?i.slice(0,n):i}var Pw={entries:[],fellBack:!1};function Fw(e,t){switch(t.kind){case`reset`:return Pw;case`retry`:return e.fellBack?{...e,fellBack:!1}:e;case`append`:{if(t.entries.length===0)return e;let n=e.entries.concat(t.entries);return n.length<=t.cap?{...e,entries:n}:(n.sort((e,t)=>e.timestamp<t.timestamp?1:e.timestamp>t.timestamp?-1:0),{...e,entries:n.slice(0,t.cap)})}case`fellBack`:return{...e,fellBack:!0}}}function Iw(){let e=K();return u.isDirectConnection(e.entityId)}var Lw=1e3,Rw=2e3,zw=250;function Bw(e){return Tw(e)??Lw}function Vw(e,t){return JSON.stringify([e.limit,e.level,e.from,e.until,e.log_name,e.filter,t])}function Hw({params:e,logFilters:t,replicated:n,live:r}){let i=Iw(),[a,o]=(0,G.useReducer)(Fw,Pw),s=r&&i&&!a.fellBack,c=Vw(t,n),l=Bw(t.limit),u=Math.max(Rw,l),d=R(Ow({...e,logFilters:t,replicated:n,isAutoRefreshEnabled:r&&!s}));(0,G.useEffect)(()=>{o({kind:`reset`})},[e.entityId,c]),(0,G.useEffect)(()=>{r&&o({kind:`retry`})},[r]);let f=(0,G.useRef)({logFilters:t,replicated:n});f.current={logFilters:t,replicated:n},(0,G.useEffect)(()=>{if(!s)return;let t=new AbortController,n=[],r=()=>{if(n.length>0&&!t.signal.aborted){let e=n;n=[],o({kind:`append`,entries:e,cap:u})}},i=setInterval(r,zw);return kw({connection:{id:e.entityId},logFilters:f.current.logFilters,replicated:f.current.replicated,signal:t.signal,onEntry:e=>n.push(e)}).catch(()=>{}).finally(()=>{clearInterval(i),!t.signal.aborted&&(r(),o({kind:`fellBack`}))}),()=>{clearInterval(i),t.abort()}},[s,e.entityId,c]);let p=(0,G.useMemo)(()=>{let e=d.data??[];return a.entries.length===0?e:Nw(e,a.entries,l)},[d.data,a.entries,l]),m=s?`streaming`:r?`polling`:`idle`;return{logs:p,isLoading:d.isLoading,isFetching:d.isFetching,refetch:()=>d.refetch(),transport:m}}var Uw={log_name:`hdb.log`,limit:`100`,level:`undefined`,from:``,until:``,filter:``},Ww={error:(0,W.jsx)(zn,{className:`size-3`}),stderr:(0,W.jsx)(zn,{className:`size-3`}),warn:(0,W.jsx)(ti,{className:`size-3`}),notify:(0,W.jsx)(jn,{className:`size-3`}),info:(0,W.jsx)(pr,{className:`size-3`}),debug:(0,W.jsx)(Pn,{className:`size-3`}),trace:(0,W.jsx)(En,{className:`size-3`}),stdout:(0,W.jsx)(Zr,{className:`size-3`})},Gw=[{accessorKey:`level`,header:`Level`,cell:({row:e})=>{let{level:t}=e.original;return(0,W.jsxs)(oo,{variant:uw(t),children:[Ww[t],Da(t)]})}},{accessorKey:`timestamp`,header:`Timestamp`,cell:({row:e})=>{let{timestamp:t}=e.original,n=new Date(t);return(0,W.jsxs)(`span`,{className:`tabular-nums whitespace-nowrap text-muted-foreground`,children:[n.getFullYear()===new Date().getFullYear()?n.toLocaleDateString(void 0,{month:`numeric`,day:`2-digit`}):n.toLocaleDateString(),` `,n.toLocaleTimeString()]})}},{accessorKey:`message`,header:`Message`,cell:({row:e})=>{let{message:t}=e.original;return(0,W.jsx)(`span`,{className:`block max-w-xl truncate font-mono text-xs`,children:t})}},{accessorKey:`thread`,header:`Thread`,cell:({row:e})=>(0,W.jsx)(`span`,{className:`text-muted-foreground tabular-nums`,children:e.original.thread})},{accessorKey:`node`,header:`Node`,cell:({row:e})=>{let{node:t}=e.original,n=mw(t);return(0,W.jsx)(W.Fragment,{children:t?(0,W.jsxs)(Wt,{children:[(0,W.jsx)(nn,{asChild:!0,children:(0,W.jsxs)(oo,{variant:n,children:[t.split(`.`)[0],`...`]})}),(0,W.jsx)(Rt,{className:`bg-popover text-popover-foreground border border-border`,arrowClassName:`bg-popover fill-popover`,children:t})]}):null})}},{accessorKey:`tags`,header:`Tags`,cell:({row:e})=>{let{tags:t}=e.original;return t&&t.length>0?(0,W.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:t}):null}}],Kw=(e,t)=>!e&&!t||!e||!t||new Date(e)<=new Date(t);function qw(){return(0,W.jsxs)(`div`,{className:`rounded-md bg-card dark:bg-black-dark overflow-hidden`,children:[(0,W.jsx)(`div`,{className:`flex gap-4 p-4 border-b border-border`,children:[`w-14`,`w-32`,`w-14`,`w-24`,`w-16`,`flex-1`].map((e,t)=>(0,W.jsx)($d,{className:`h-4 ${e}`},t))}),Array.from({length:12}).map((e,t)=>(0,W.jsxs)(`div`,{className:`flex gap-4 p-3 border-b border-border/40 border-l-2 border-l-transparent`,children:[(0,W.jsx)($d,{className:`h-5 w-14`}),(0,W.jsx)($d,{className:`h-5 w-32`}),(0,W.jsx)($d,{className:`h-5 w-10`}),(0,W.jsx)($d,{className:`h-5 w-20`}),(0,W.jsx)($d,{className:`h-5 w-12`}),(0,W.jsx)($d,{className:`h-5 flex-1 max-w-xs`})]},t))]})}function Jw(){let[e,t]=(0,G.useState)(Uw),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(),[o,s]=(0,G.useState)(!1),[c,l]=vn(bn.LogsOrderReversed,!1),[u,d]=(0,G.useState)(!1),f=K(),{data:p}=R(ln(f)),m=p?.version,h=!!m&&on(`4.7.16`,m),{logs:g,isLoading:_,isFetching:v,refetch:y,transport:b}=Hw({params:f,logFilters:e,replicated:f.entityType===`cluster`,live:o}),x=(0,G.useMemo)(()=>c?[...g??[]].reverse():g??[],[g,c]),S=(0,G.useRef)(null);(0,G.useEffect)(()=>{let e=S.current;_||!e||e.scrollTo({top:c?e.scrollHeight:0})},[c,_]),(0,G.useEffect)(()=>{let e=S.current;!o||_||!e||e.scrollTo({top:c?e.scrollHeight:0})},[x,o,c,_]);let C=bt({resolver:_t(xw),defaultValues:Uw,mode:`onChange`}),w=e=>{a(e.original),r(!0)},T=async e=>{if(!Kw(e.from,e.until)){C.setError(`from`,{type:`onChange`,message:`Start date must be before end date`}),C.setError(`until`,{type:`onChange`,message:`End date must be after start date`});return}t(e)},E=async()=>{C.reset(),t(Uw)},D=Qu(y);return(0,W.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 pt-2 text-foreground md:grid-cols-12 md:gap-4`,children:[(0,W.jsxs)(`section`,{className:`col-span-1 md:col-span-4 lg:col-span-3 px-2 pb-0 md:self-start md:sticky md:top-34 md:max-h-[calc(100vh-(--spacing(34)))] md:overflow-y-auto md:pb-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 md:hidden`,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:()=>d(e=>!e),"aria-label":`Toggle filters`,"aria-expanded":u,className:`flex-1`,children:[(0,W.jsx)(Wr,{}),`Filters`]}),(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:D,disabled:v||_||o,"aria-label":`Refresh logs`,className:`flex-1`,children:[(0,W.jsx)(fn,{className:v?`animate-spin`:``}),`Refresh`]}),(0,W.jsxs)(F,{variant:c?`default`:`defaultOutline`,onClick:()=>l(e=>!e),"aria-label":`Reverse log order`,"aria-pressed":c,className:`flex-1`,children:[(0,W.jsx)(kn,{}),`Reverse`]})]}),(0,W.jsx)(Cw,{form:C,resetFilters:E,submitFilters:T,showLogName:!1,showFilter:h,isOpen:u,onOpenChange:d}),(0,W.jsxs)(`div`,{className:`mt-3 space-y-3 hidden md:block`,children:[(0,W.jsxs)(F,{variant:`defaultOutline`,onClick:D,disabled:v||_||o,className:`w-full`,children:[(0,W.jsx)(fn,{}),`Refresh`]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-foreground`,children:[(0,W.jsx)(Ed,{id:`logs-live-switch`,"aria-label":`Toggle live logs`,checked:o,onCheckedChange:s}),(0,W.jsxs)(`label`,{htmlFor:`logs-live-switch`,className:`flex items-center gap-2 cursor-pointer`,children:[(0,W.jsx)(fn,{className:`size-4 ${o?`animate-spin [animation-duration:3s]`:``}`}),o?b===`streaming`?`Live (streaming)`:`Live (polling every 5s)`:`Live`]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-foreground`,children:[(0,W.jsx)(Ed,{id:`logs-reverse-order-switch`,"aria-label":`Reverse log order`,checked:c,onCheckedChange:l}),(0,W.jsxs)(`label`,{htmlFor:`logs-reverse-order-switch`,className:`flex items-center gap-2 cursor-pointer`,children:[(0,W.jsx)(kn,{className:`size-4`}),c?`Oldest first`:`Newest first`]})]})]})]})]}),(0,W.jsx)(`section`,{className:`col-span-1 md:col-span-8 lg:col-span-9`,children:_?(0,W.jsx)(qw,{}):(0,W.jsx)(gw,{columns:Gw,data:x,onRowClick:w,containerRef:S})}),(0,W.jsx)(bw,{isModalOpen:n,setIsModalOpen:r,data:i})]})}function Yw(e){return z({getParentRoute:()=>e,path:`logs`,head:()=>({meta:[{title:`Logs — Harper Fabric`}]}),component:Jw})}var Xw=6e4,Zw=60*Xw,Qw=24*Zw,$w=[{id:`1h`,label:`Last 1 hour`,durationMs:Zw,bucketMs:1*Xw},{id:`6h`,label:`Last 6 hours`,durationMs:6*Zw,bucketMs:1*Xw},{id:`24h`,label:`Last 24 hours`,durationMs:Qw,bucketMs:5*Xw},{id:`7d`,label:`Last 7 days`,durationMs:7*Qw,bucketMs:15*Xw},{id:`30d`,label:`Last 30 days`,durationMs:30*Qw,bucketMs:Zw}];function eT(e){let t=$w.find(t=>t.id===e);if(!t)throw Error(`Unknown preset: ${e}`);return t}var tT=[{label:`Off`,value:0},{label:`30s`,value:3e4},{label:`60s`,value:6e4},{label:`5m`,value:3e5}],nT=6e4,rT=[`health`,`traffic`,`requests`,`database`,`replication`,`storage`,`overview`],iT={tab:`health`,range:`1h`,refresh:nT};function aT(e){let t=e.refresh===``?NaN:Number(e.refresh);return{tab:rT.find(t=>t===e.tab)??iT.tab,range:$w.find(t=>t.id===e.range)?.id??iT.range,refresh:tT.find(e=>e.value===t)?.value??iT.refresh}}function oT(e){return z({getParentRoute:()=>e,path:`status`,validateSearch:aT,search:{middlewares:[te(iT)]},head:()=>({meta:[{title:`Status — Harper Fabric`}]}),component:ye(async()=>je(()=>import(`./status-D7A8OktU.js`),__vite__mapDeps([37,1,3,2,4,5,6,7,8,16,22,23,24,25,28,38,39,40,41,42,43,44,45,46,47,48,49,50,51])),`StatusIndex`)})}function sT(e){let t=ow(e),n=[Yw(t),...rm(t,e),nm(t),oT(t),yv(t),ew(t)];return t.addChildren(n)}z({getParentRoute:()=>ma,path:`profile`,head:()=>({meta:[{title:`Profile — Harper Fabric`}]}),component:ye(async()=>je(()=>import(`./profile-CY1FwgRs.js`),__vite__mapDeps([52,1,18,3,2,4,5,6,7,21])),`ProfileIndex`)});var cT=pa.addChildren([...Bo,ma.addChildren([sT(`local`)])]);function lT({routeTree:e=cT,authentication:t}){let[n]=(0,G.useState)(()=>me({routeTree:e,history:oe(),defaultNotFoundComponent:si,defaultErrorComponent:oi,defaultPreload:!ci()&&`intent`,trailingSlash:`never`,defaultPreloadStaleTime:0,scrollRestoration:!0,context:{queryClient:hn,authentication:t||{}}}));return n}function uT(){let e=Be(),t=lT({authentication:e}),n=(0,G.useRef)(e);return(0,G.useEffect)(()=>{n.current!==e&&(n.current=e,t.invalidate())},[t,e]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(pe,{router:t,context:{authentication:e}}),(0,W.jsx)(be,{router:t,position:`bottom-right`})]})}var dT=({...e})=>(0,W.jsx)(it,{className:`toaster group`,toastOptions:{classNames:{toast:`group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg`,description:`group-[.toast]:text-muted-foreground`,actionButton:`group-[.toast]:bg-primary group-[.toast]:text-primary-foreground font-medium`,cancelButton:`group-[.toast]:bg-muted group-[.toast]:text-muted-foreground font-medium`}},...e}),fT=!1;function pT(){(0,G.useEffect)(()=>{fT||=!0},[])}function mT(){return va(),da(),pT(),(0,W.jsxs)(Mi,{children:[(0,W.jsxs)(re,{client:hn,children:[(0,W.jsx)(uT,{}),(0,W.jsx)(Te,{buttonPosition:`bottom-right`})]}),(0,W.jsx)(dT,{richColors:!0})]})}function hT(){u.signOutAllLocally(),hn.getMutationCache().clear(),hn.getQueryCache().clear(),Ki(),qi()}function gT(e,t=()=>!1,n=()=>!0){return r=>(r?.response?.status===401&&!t(r.config?.url??``)&&n(r.config)&&e(),Promise.reject(r))}var _T=[`/Login/`,`/ForgotPassword/`,`/ResetPassword/`,`/VerifyEmail/`,`/ResendVerificationEmail/`],vT=`authUserAtSend`;function yT(){let e=u.getConnectionById(h).user;return e&&`id`in e?e.id:null}var bT=!1;function xT(){bT||(bT=!0,N.interceptors.request.use(e=>(e[vT]=yT(),e)),N.interceptors.response.use(e=>e,gT(hT,e=>_T.some(t=>e.startsWith(t)),e=>e?.[vT]===yT())))}function ST(){if(typeof Node!=`function`||!Node.prototype)return;let e=`__harperTranslationGuarded__`,t=Node.prototype;if(t[e])return;Object.defineProperty(t,e,{value:!0,configurable:!0,writable:!0,enumerable:!1});let n=Node.prototype.removeChild;Node.prototype.removeChild=function(e){return e instanceof Node&&e.parentNode!==this?e:n.call(this,e)};let r=Node.prototype.insertBefore;Node.prototype.insertBefore=function(e,t){return t instanceof Node&&t.parentNode!==this?r.call(this,e,null):r.call(this,e,t)}}var CT=`Studio:StaleDeployReloadedAt`,wT=6e4,TT=`__harperStaleDeployReloadState__`;function ET(){if(!(typeof window>`u`))return window[TT]}function DT(){let e=ET();if(e){try{let e=Number(sessionStorage.getItem(CT)??0);if(Date.now()-e<wT)return;sessionStorage.setItem(CT,String(Date.now()))}catch{return}e.reload()}}function OT(e=()=>window.location.reload()){if(typeof window>`u`)return;let t=window,n=t[TT];if(n){n.reload=e;return}t[TT]={reload:e},window.addEventListener(`vite:preloadError`,()=>DT())}var kT=Pe();ST(),OT(),xT(),(0,kT.createRoot)(document.getElementById(`root`),{onUncaughtError:(e,t)=>{Me(e,t),console.error(`Uncaught error:`,e,t)},onCaughtError:(e,t)=>{Me(e,t),console.error(`Caught error:`,e,t)},onRecoverableError:(e,t)=>{Me(e,t),console.warn(`Recoverable error:`,e,t)}}).render((0,W.jsx)(G.StrictMode,{children:(0,W.jsx)(mT,{})}));export{c_ as $,Zo as $t,SS as A,$r as An,Nf as At,ty as B,jr as Bn,Nu as Bt,jS as C,yi as Cn,Fm as Ct,FS as D,ri as Dn,dp as Dt,IS as E,oi as En,Bp as Et,mb as F,zr as Fn,$d as Ft,Rv as G,pr as Gn,js as Gt,ny as H,br as Hn,fc as Ht,lb as I,Lr as In,Ed as It,tv as J,Vn as Jn,Xo as Jt,Lv as K,Qn as Kn,ms as Kt,sb as L,Fr as Ln,fd as Lt,Yx as M,Yr as Mn,Af as Mt,fx as N,Jr as Nn,Mf as Nt,CS as O,ti as On,rp as Ot,hb as P,Hr as Pn,kf as Pt,S_ as Q,ns as Qt,Zy as R,Pr as Rn,ud as Rt,NS as S,_i as Sn,Vm as St,MS as T,ui as Tn,Om as Tt,$v as U,yr as Un,uc as Ut,ey as V,Ar as Vn,bc as Vt,zv as W,mr as Wn,Ms as Wt,N_ as X,Rn as Xn,$o as Xt,R_ as Y,zn as Yn,Qo as Yt,x_ as Z,On as Zn,ts as Zt,kS as _,li as _n,hh as _t,eT as a,Na as an,jg as at,BS as b,hi as bn,Jm as bt,SC as c,J as cn,$h as ct,fC as d,Zi as dn,jh as dt,oo as en,d_ as et,dC as f,Ji as fn,kh as ft,RS as g,Di as gn,vh as gt,aC as h,Wi as hn,Sh as ht,$w as i,Z as in,v_ as it,xS as j,Zr as jn,jf as jt,vS as k,ei as kn,Ff as kt,yC as l,q as ln,Mh as lt,oC as m,K as mn,Ch as mt,aT as n,$ as nn,y_ as nt,Dw as o,X as on,Dg as ot,cC as p,Ui as pn,xh as pt,Mv as q,Xn as qn,ps as qt,tT as r,Q as rn,p_ as rt,DC as s,Y as sn,ig as st,DT as t,Va as tn,f_ as tt,uC as u,sa as un,Ah as ut,AS as v,di as vn,sh as vt,LS as w,vi as wn,Pm as wt,VS as x,gi as xn,Wm as xt,zS as y,fi as yn,Xm as yt,Fy as z,Nr as zn,Xu as zt};
|
|
817
|
+
//# sourceMappingURL=index-BbsxXAVZ.js.map
|