@exulu/frontend 1.8.0 → 1.10.0
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/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +153 -155
- package/dist/.next/app-path-routes-manifest.json +1 -1
- package/dist/.next/build-manifest.json +2 -2
- package/dist/.next/prerender-manifest.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +8 -8
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js +4 -4
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/page.js +1 -1
- package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/prompts/page.js +1 -1
- package/dist/.next/server/app/(application)/prompts/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +1 -1
- package/dist/.next/server/app-paths-manifest.json +5 -5
- package/dist/.next/server/chunks/1025.js +1 -0
- package/dist/.next/server/chunks/2270.js +18 -44
- package/dist/.next/server/chunks/3434.js +1 -1
- package/dist/.next/server/chunks/3503.js +1 -0
- package/dist/.next/server/chunks/5084.js +1 -0
- package/dist/.next/server/chunks/5192.js +1 -1
- package/dist/.next/server/chunks/5485.js +1 -1
- package/dist/.next/server/chunks/5600.js +1 -1
- package/dist/.next/server/chunks/5974.js +1 -0
- package/dist/.next/server/chunks/6590.js +1 -1
- package/dist/.next/server/chunks/7471.js +1 -1
- package/dist/.next/server/chunks/8286.js +1 -1
- package/dist/.next/server/chunks/{3679.js → 9874.js} +5 -5
- package/dist/.next/server/middleware-manifest.json +5 -5
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/server/server-reference-manifest.json +1 -1
- package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js +2 -0
- package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js.map +1 -0
- package/dist/.next/static/chunks/{4811-316807e25b634f9f.js → 192-72d6868cd891ccc6.js} +8 -8
- package/dist/.next/static/chunks/192-72d6868cd891ccc6.js.map +1 -0
- package/dist/.next/static/chunks/1957-cf44b1d31a9c7d5c.js +2 -0
- package/dist/.next/static/chunks/1957-cf44b1d31a9c7d5c.js.map +1 -0
- package/dist/.next/static/chunks/342-d9c2d6ae9f9435cb.js +2 -0
- package/dist/.next/static/chunks/342-d9c2d6ae9f9435cb.js.map +1 -0
- package/dist/.next/static/chunks/3750-e3d1b2cccd265190.js +2 -0
- package/dist/.next/static/chunks/3750-e3d1b2cccd265190.js.map +1 -0
- package/dist/.next/static/chunks/{3832-417a5eeee712a793.js → 3832-d7782d6a2771ae6c.js} +1 -1
- package/dist/.next/static/chunks/{3832-417a5eeee712a793.js.map → 3832-d7782d6a2771ae6c.js.map} +1 -1
- package/dist/.next/static/chunks/552-39155a93c527ec6d.js +2 -0
- package/dist/.next/static/chunks/552-39155a93c527ec6d.js.map +1 -0
- package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js +2 -0
- package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js.map +1 -0
- package/dist/.next/static/chunks/6367-59655a85d75e19be.js +2 -0
- package/dist/.next/static/chunks/6367-59655a85d75e19be.js.map +1 -0
- package/dist/.next/static/chunks/6373-aef582adc575d3ca.js +2 -0
- package/dist/.next/static/chunks/6373-aef582adc575d3ca.js.map +1 -0
- package/dist/.next/static/chunks/8030-9c926ea4dfd3a54e.js +2 -0
- package/dist/.next/static/chunks/8030-9c926ea4dfd3a54e.js.map +1 -0
- package/dist/.next/static/chunks/{6805-792cc8008b165c07.js → 8293-ba5cd36594e6fde1.js} +10 -10
- package/dist/.next/static/chunks/8293-ba5cd36594e6fde1.js.map +1 -0
- package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js +2 -0
- package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js.map +1 -0
- package/dist/.next/static/chunks/9953-95900a236271a222.js +2 -0
- package/dist/.next/static/chunks/9953-95900a236271a222.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e4a4693953329671.js +2 -0
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e4a4693953329671.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-d59534ca19eee51f.js +2 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-d59534ca19eee51f.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-0c7c1b0e1713bf60.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-0c7c1b0e1713bf60.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js +2 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/cases/{page-a39fef7444581565.js → page-827f50c6d1f150d0.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/evals/cases/{page-a39fef7444581565.js.map → page-827f50c6d1f150d0.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/explorer/{page-1d676c9dfe3ed58b.js → page-e6b1c034c07776e2.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/explorer/{page-1d676c9dfe3ed58b.js.map → page-e6b1c034c07776e2.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-f04fd5291a1ef7b1.js +2 -0
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-f04fd5291a1ef7b1.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/prompts/page-2c500e9898447506.js +2 -0
- package/dist/.next/static/chunks/app/(application)/prompts/page-2c500e9898447506.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/token/{page-3f74f711f3d04fce.js → page-3acc39cb8a718331.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/token/{page-3f74f711f3d04fce.js.map → page-3acc39cb8a718331.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/workflows/{page-47dedb88cec600d5.js → page-e38f9456120dab69.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/workflows/page-e38f9456120dab69.js.map +1 -0
- package/dist/.next/static/chunks/ba12c10f-85ed008ce7746dbe.js +2 -0
- package/dist/.next/static/chunks/ba12c10f-85ed008ce7746dbe.js.map +1 -0
- package/dist/.next/static/css/9c08ae5d990a6b14.css +4 -0
- package/dist/.next/static/css/9c08ae5d990a6b14.css.map +1 -0
- package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
- package/dist/.next/server/chunks/2948.js +0 -1
- package/dist/.next/server/chunks/38.js +0 -1
- package/dist/.next/server/chunks/7958.js +0 -1
- package/dist/.next/server/chunks/8050.js +0 -1
- package/dist/.next/static/chunks/1685-9cacdee7e3f0942f.js +0 -2
- package/dist/.next/static/chunks/1685-9cacdee7e3f0942f.js.map +0 -1
- package/dist/.next/static/chunks/1957-39a01a3915f246ab.js +0 -2
- package/dist/.next/static/chunks/1957-39a01a3915f246ab.js.map +0 -1
- package/dist/.next/static/chunks/3750-f45c59ef1cc79417.js +0 -2
- package/dist/.next/static/chunks/3750-f45c59ef1cc79417.js.map +0 -1
- package/dist/.next/static/chunks/4811-316807e25b634f9f.js.map +0 -1
- package/dist/.next/static/chunks/5282-68f9880f1f951f44.js +0 -2
- package/dist/.next/static/chunks/5282-68f9880f1f951f44.js.map +0 -1
- package/dist/.next/static/chunks/572-2940a399da1e3a3b.js +0 -2
- package/dist/.next/static/chunks/572-2940a399da1e3a3b.js.map +0 -1
- package/dist/.next/static/chunks/6367-59cef3c74213925b.js +0 -2
- package/dist/.next/static/chunks/6367-59cef3c74213925b.js.map +0 -1
- package/dist/.next/static/chunks/6373-4c5dffaf4193621c.js +0 -2
- package/dist/.next/static/chunks/6373-4c5dffaf4193621c.js.map +0 -1
- package/dist/.next/static/chunks/6805-792cc8008b165c07.js.map +0 -1
- package/dist/.next/static/chunks/8030-c1b6be46253076cb.js +0 -2
- package/dist/.next/static/chunks/8030-c1b6be46253076cb.js.map +0 -1
- package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js +0 -2
- package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js.map +0 -1
- package/dist/.next/static/chunks/9621-f81c4d7c0ecf5a67.js +0 -2
- package/dist/.next/static/chunks/9621-f81c4d7c0ecf5a67.js.map +0 -1
- package/dist/.next/static/chunks/9953-dfb5fc0e5b74ec09.js +0 -2
- package/dist/.next/static/chunks/9953-dfb5fc0e5b74ec09.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-4e7e02768ed1a72a.js +0 -2
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-4e7e02768ed1a72a.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-38f845d5ccdad76b.js +0 -2
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-38f845d5ccdad76b.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-2d47be0ee80dd89d.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-2d47be0ee80dd89d.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-a391b8407f74e9b4.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-a391b8407f74e9b4.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-cf6f8d2bd4e9c819.js +0 -2
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-cf6f8d2bd4e9c819.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-bc859da58d8505f7.js +0 -2
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-bc859da58d8505f7.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/prompts/page-d2f36ff149385efd.js +0 -2
- package/dist/.next/static/chunks/app/(application)/prompts/page-d2f36ff149385efd.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/workflows/page-47dedb88cec600d5.js.map +0 -1
- package/dist/.next/static/chunks/ba12c10f-aaafcb074f608624.js +0 -2
- package/dist/.next/static/chunks/ba12c10f-aaafcb074f608624.js.map +0 -1
- package/dist/.next/static/css/c8c015815c72d053.css +0 -4
- package/dist/.next/static/css/c8c015815c72d053.css.map +0 -1
- /package/dist/.next/static/{GOwerAkBncYx0J8q1TqQb → 3j63p6b3zZZB_v1Hn8Mxp}/_buildManifest.js +0 -0
- /package/dist/.next/static/{GOwerAkBncYx0J8q1TqQb → 3j63p6b3zZZB_v1Hn8Mxp}/_ssgManifest.js +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8030],{8014:function(e,s,t){t.d(s,{P:function(){return C}});var a=t(57437),r=t(27689),l=t(2265),n=t(63251),i=t(7211),d=t(53647),o=t(66337),c=t(95805),m=t(98728),u=t(29202),f=t(14924),x=t(24156),p=t(30401),h=t(15863),g=t(18930),N=t(95186),j=t(26110),v=t(19378),y=t(94508),b=t(57054),w=t(23518),k=t(62869),R=t(26815);let z=[{value:"private",label:"Private",description:"Only you can see this agent",icon:o.Z},{value:"users",label:"Shared with Users",description:"Share with specific users",icon:c.Z},{value:"roles",label:"Shared with Roles",description:"Share with specific roles",icon:m.Z},{value:"public",label:"Public",description:"Anyone can see this agent",icon:u.Z},{value:"projects",label:"Projects",description:"Share with specific projects",icon:f.Z}];function C(e){var s,t;let{allowedModes:o,initialRightsMode:c,modalMode:m=!1,initialUsers:u,initialRoles:f,initialProjects:C,onChange:S}=e,[Z,_]=(0,l.useState)(c),[Y,P]=(0,l.useState)(u||[]),[V,B]=(0,l.useState)(f||[]),[O,Q]=(0,l.useState)([]),[E,I]=(0,l.useState)(!1),[L,U]=(0,l.useState)([]),[q,D]=(0,l.useState)(""),[A,F]=(0,l.useState)(!1),[G,W]=(0,l.useState)(!1),$=(0,n.x)(),{data:J,loading:T,refetch:H}=(0,i.aM)(r.fo,{variables:{page:1,limit:5,filters:L},skip:"users"!==Z||!q}),K=(0,i.aM)(r.l1,{fetchPolicy:"cache-first",nextFetchPolicy:"network-only",variables:{page:1,limit:30,filters:[{type:{ne:"api"}}]}}),M=(0,l.useCallback)(e=>{D(e);let s=[...L,{type:{ne:"api"}}],t=s.find(e=>e.email);(null==t?void 0:t.email)?t.email.contains=e:s.push({email:{contains:e}}),U(s),H()},[L,H]),X=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5;if(W(!0),!Y||0===Y.length){Q([]),W(!1);return}let s=null==Y?void 0:Y.slice(0,e).map(async e=>{let{id:s,rights:t}=e;return{...(await $.query({query:r.L5,variables:{id:s}})).data.userById,rights:t}});Q(await Promise.all(s)),W(!1)};(0,l.useEffect)(()=>{X(5)},[]),(0,l.useEffect)(()=>{console.log("selectedUsers",Y),console.log("hydratedUsers",O),S(Z,Y,V,[])},[Z,Y,V]);let ee=null==O?void 0:O.slice(0,5).filter(e=>!!(null==e?void 0:e.id)),es=z;return(null==o?void 0:o.length)&&(es=z.filter(e=>o.includes(e.value))),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(R._,{className:"text-sm font-medium",children:"Visibility & sharing"}),(0,a.jsxs)(b.J2,{modal:m||!1,open:E,onOpenChange:I,children:[(0,a.jsx)(b.xo,{asChild:!0,children:(0,a.jsxs)(k.z,{variant:"outline",role:"combobox","aria-expanded":E,className:"w-full justify-between text-sm capitalize",children:[(null===(s=es.find(e=>e.value===Z))||void 0===s?void 0:s.label)||"Select visibility...",(0,a.jsx)(x.Z,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,a.jsx)(b.yk,{className:"w-full p-0",children:(0,a.jsxs)(w.mY,{children:[(0,a.jsx)(w.sZ,{placeholder:"Search options..."}),(0,a.jsxs)(w.e8,{children:[(0,a.jsx)(w.rb,{children:"No options found."}),(0,a.jsx)(w.fu,{children:es.map(e=>(0,a.jsxs)(w.di,{onSelect:()=>{"users"!==e.value&&P([]),"roles"!==e.value&&B([]),_(e.value),I(!1)},children:[(0,a.jsx)(p.Z,{className:(0,y.cn)("mr-2 h-4 w-4",Z===e.value?"opacity-100":"opacity-0")}),(0,a.jsxs)("div",{className:"flex flex-col",children:[(0,a.jsx)("span",{children:e.label}),(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:e.description})]})]},e.value))})]})]})})]})]}),"users"===Z&&(0,a.jsx)("div",{className:"space-y-3 pt-3",children:(0,a.jsxs)("div",{children:[(0,a.jsx)(R._,{className:"text-sm font-medium",children:"Share with users"}),(0,a.jsx)("div",{className:"mt-2",children:(0,a.jsx)(N.I,{placeholder:"Search users by email...",value:q,onChange:e=>M(e.target.value),className:"text-sm"})}),T&&(0,a.jsxs)("div",{className:"mt-2 flex items-center justify-center py-4",children:[(0,a.jsx)(h.Z,{className:"h-4 w-4 animate-spin mr-2"}),(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading users..."})]}),!T&&J&&(null===(t=J.usersPagination)||void 0===t?void 0:t.items.length)>0&&(0,a.jsxs)("div",{className:"mt-2",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Search Results:"}),(0,a.jsx)("div",{className:"max-h-50 overflow-y-auto border rounded-lg",children:J.usersPagination.items.filter(e=>!Y.some(s=>s.id===e.id)).map(e=>(0,a.jsxs)("label",{className:"flex items-center space-x-2 p-2 hover:bg-muted/50 cursor-pointer",children:[(0,a.jsx)("input",{type:"checkbox",checked:Y.some(s=>s.id===e.id),onChange:s=>{P(s=>[...s,{id:e.id,rights:"read"}]),Q(s=>[...s,{...e,rights:"read"}])}}),(0,a.jsx)("span",{className:"text-sm",children:e.email})]},e.id))}),(0,a.jsxs)("div",{className:"text-xs text-muted-foreground mt-2",children:[(0,a.jsx)("span",{className:"font-medium",children:"Note:"})," Only the first 5 users are shown, use the Search bar to find more users."]})]}),!T&&q&&J&&0===J.usersPagination.items.length&&(0,a.jsx)("div",{className:"mt-2 text-center py-4",children:(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"No users found"})}),(null==ee?void 0:ee.length)>0?(0,a.jsxs)("div",{className:"mt-2",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Selected Users:"}),(0,a.jsxs)("div",{className:"space-y-1",children:[ee.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2 border p-2 rounded-lg text-sm",children:[(0,a.jsx)("span",{className:"flex-1 pl-2",children:e.email}),(0,a.jsxs)(d.Ph,{value:e.rights,onValueChange:s=>{P(t=>t.map(t=>t.id===e.id?{...t,rights:s}:t)),Q(t=>t.map(t=>t.id===e.id?{...t,rights:s}:t))},children:[(0,a.jsx)(d.i4,{className:"h-6 w-20 text-xs",children:(0,a.jsx)(d.ki,{})}),(0,a.jsxs)(d.Bw,{children:[(0,a.jsx)(d.Ql,{value:"read",children:"Read"}),(0,a.jsx)(d.Ql,{value:"write",children:"Write"})]})]}),(0,a.jsx)(k.z,{size:"sm",variant:"ghost",className:"h-5 w-5 p-0 hover:bg-blue-100",onClick:()=>{P(s=>s.filter(s=>s.id!==e.id)),Q(s=>s.filter(s=>s.id!==e.id))},children:(0,a.jsx)(g.Z,{className:"w-3 h-3"})})]},e.id)),Y&&Y.length>5&&(0,a.jsxs)(k.z,{variant:"link",type:"button",className:"h-auto p-0 text-blue-600 hover:text-blue-800 text-xs",onClick:()=>{X(50),F(!0)},children:["+ ",Y.length-5," more users"]})]})]}):(0,a.jsx)("div",{className:"mt-2 text-center py-4",children:(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"No users selected."})})]})}),"roles"===Z&&(0,a.jsx)("div",{className:"space-y-3",children:(0,a.jsxs)("div",{children:[(0,a.jsxs)(R._,{className:"text-sm font-medium",children:["Share with roles (",(null==V?void 0:V.length)||0,")"]}),(0,a.jsxs)("div",{className:"mt-2",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Available Roles"}),K.loading&&(0,a.jsxs)("div",{className:"flex items-center justify-center py-4 border rounded-lg",children:[(0,a.jsx)(h.Z,{className:"h-4 w-4 animate-spin mr-2"}),(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading roles..."})]}),!K.loading&&K.data&&(0,a.jsx)("div",{className:"max-h-24 overflow-y-auto border rounded-lg",children:K.data.rolesPagination.items.map(e=>(0,a.jsxs)("label",{className:"flex items-center space-x-2 p-2 hover:bg-muted/50 cursor-pointer",children:[(0,a.jsx)("input",{type:"checkbox",checked:V.some(s=>s.id===e.id),onChange:s=>{s.target.checked?B(s=>[...s,{id:e.id,rights:"read"}]):B(s=>s.filter(s=>s.id!==e.id))}}),(0,a.jsx)("span",{className:"text-sm capitalize",children:e.name})]},e.id))})]}),V.length>0&&K.data&&(0,a.jsxs)("div",{className:"mt-2",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Selected Roles:"}),(0,a.jsx)("div",{className:"space-y-1",children:V.map(e=>{let s=K.data.rolesPagination.items.find(s=>s.id===e.id);return(0,a.jsxs)("div",{className:"flex items-center gap-2 border p-2 rounded-lg text-sm",children:[(0,a.jsx)("span",{className:"flex-1 pl-2 capitalize",children:null==s?void 0:s.name}),(0,a.jsxs)(d.Ph,{value:e.rights,onValueChange:s=>{B(t=>t.map(t=>t.id===e.id?{...t,rights:s}:t))},children:[(0,a.jsx)(d.i4,{className:"h-6 text-xs w-20 border-none",children:(0,a.jsx)(d.ki,{})}),(0,a.jsxs)(d.Bw,{children:[(0,a.jsx)(d.Ql,{value:"read",children:(0,a.jsx)("span",{className:"pr-7",children:"Read"})}),(0,a.jsx)(d.Ql,{value:"write",children:(0,a.jsx)("span",{className:"pr-7",children:"Write"})})]})]}),(0,a.jsx)(k.z,{size:"sm",variant:"ghost",className:"h-5 w-5 p-0 hover:bg-blue-100",onClick:()=>{B(s=>s.filter(s=>s.id!==e.id))},children:(0,a.jsx)(g.Z,{className:"w-3 h-3"})})]},e.id)})})]})]})}),(0,a.jsx)(j.Vq,{open:A,onOpenChange:F,children:(0,a.jsxs)(j.cZ,{className:"sm:max-w-2xl max-h-[85vh] flex flex-col",children:[(0,a.jsxs)(j.fK,{children:[(0,a.jsxs)(j.$N,{children:["All Selected Users (",(null==Y?void 0:Y.length)||0,")"]}),(0,a.jsx)(j.Be,{children:"View and manage all selected users and their permissions"})]}),(0,a.jsxs)(v.x,{className:"flex-1 pr-4",children:[G&&(0,a.jsxs)("div",{className:"flex items-center justify-center py-8",children:[(0,a.jsx)(h.Z,{className:"h-6 w-6 animate-spin mr-2"}),(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading users..."})]}),!G&&O.length>0&&(0,a.jsx)("div",{className:"space-y-2",children:O.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-3 border p-3 rounded-lg",children:[(0,a.jsx)("span",{className:"flex-1",children:e.email}),(0,a.jsxs)(d.Ph,{value:e.rights,onValueChange:s=>{P(t=>t.map(t=>t.id===e.id?{...t,rights:s}:t)),Q(t=>t.map(t=>t.id===e.id?{...t,rights:s}:t))},children:[(0,a.jsx)(d.i4,{className:"w-24",children:(0,a.jsx)(d.ki,{})}),(0,a.jsxs)(d.Bw,{children:[(0,a.jsx)(d.Ql,{value:"read",children:"Read"}),(0,a.jsx)(d.Ql,{value:"write",children:"Write"})]})]}),(0,a.jsx)(k.z,{size:"sm",variant:"ghost",className:"h-8 w-8 p-0 hover:bg-destructive/10",onClick:()=>{P(s=>s.filter(s=>s.id!==e.id)),Q(s=>s.filter(s=>s.id!==e.id))},children:(0,a.jsx)(g.Z,{className:"w-4 h-4"})})]},e.id))}),!G&&0===O.length&&(0,a.jsx)("div",{className:"text-center py-8",children:(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"No users selected"})})]})]})})]})}},35974:function(e,s,t){t.d(s,{C:function(){return i}});var a=t(57437),r=t(90535);t(2265);var l=t(94508);let n=(0,r.j)("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function i(e){let{className:s,variant:t,...r}=e;return(0,a.jsx)("div",{className:(0,l.cn)(n({variant:t}),s),...r})}},66070:function(e,s,t){t.d(s,{Ol:function(){return i},SZ:function(){return o},Zb:function(){return n},aY:function(){return c},eW:function(){return m},ll:function(){return d}});var a=t(57437),r=t(2265),l=t(94508);let n=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,l.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",t),...r})});n.displayName="Card";let i=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,l.cn)("flex flex-col space-y-1.5 p-6",t),...r})});i.displayName="CardHeader";let d=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("h3",{ref:s,className:(0,l.cn)("text-2xl font-semibold leading-none tracking-tight",t),...r})});d.displayName="CardTitle";let o=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("p",{ref:s,className:(0,l.cn)("text-sm text-muted-foreground",t),...r})});o.displayName="CardDescription";let c=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,l.cn)("p-6 pt-0",t),...r})});c.displayName="CardContent";let m=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,l.cn)("flex items-center p-6 pt-0",t),...r})});m.displayName="CardFooter"},23518:function(e,s,t){t.d(s,{di:function(){return f},e8:function(){return c},fu:function(){return u},mY:function(){return d},rb:function(){return m},sZ:function(){return o}});var a=t(57437),r=t(83918),l=t(73247),n=t(2265);t(26110);var i=t(94508);let d=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.mY,{ref:s,className:(0,i.cn)("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",t),...l})});d.displayName=r.mY.displayName;let o=n.forwardRef((e,s)=>{let{className:t,...n}=e;return(0,a.jsxs)("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[(0,a.jsx)(l.Z,{className:"mr-2 size-4 shrink-0 opacity-50"}),(0,a.jsx)(r.mY.Input,{ref:s,className:(0,i.cn)("flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",t),...n})]})});o.displayName=r.mY.Input.displayName;let c=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.mY.List,{ref:s,className:(0,i.cn)("max-h-[300px] overflow-y-auto overflow-x-hidden",t),...l})});c.displayName=r.mY.List.displayName;let m=n.forwardRef((e,s)=>(0,a.jsx)(r.mY.Empty,{ref:s,className:"py-6 text-center text-sm",...e}));m.displayName=r.mY.Empty.displayName;let u=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.mY.Group,{ref:s,className:(0,i.cn)("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",t),...l})});u.displayName=r.mY.Group.displayName,n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.mY.Separator,{ref:s,className:(0,i.cn)("-mx-1 h-px bg-border",t),...l})}).displayName=r.mY.Separator.displayName;let f=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.mY.Item,{ref:s,className:(0,i.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...l})});f.displayName=r.mY.Item.displayName},26110:function(e,s,t){t.d(s,{$N:function(){return p},Be:function(){return h},Vq:function(){return d},cN:function(){return x},cZ:function(){return u},fK:function(){return f},hg:function(){return o}});var a=t(57437),r=t(34567),l=t(32489),n=t(2265),i=t(94508);let d=r.fC,o=r.xz,c=r.h_;r.x8;let m=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.aV,{ref:s,className:(0,i.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...l})});m.displayName=r.aV.displayName;let u=n.forwardRef((e,s)=>{let{className:t,children:n,...d}=e;return(0,a.jsxs)(c,{children:[(0,a.jsx)(m,{}),(0,a.jsxs)(r.VY,{ref:s,className:(0,i.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),...d,children:[n,(0,a.jsxs)(r.x8,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,a.jsx)(l.Z,{className:"size-4"}),(0,a.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});u.displayName=r.VY.displayName;let f=e=>{let{className:s,...t}=e;return(0,a.jsx)("div",{className:(0,i.cn)("flex flex-col space-y-1.5 text-center sm:text-left",s),...t})};f.displayName="DialogHeader";let x=e=>{let{className:s,...t}=e;return(0,a.jsx)("div",{className:(0,i.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",s),...t})};x.displayName="DialogFooter";let p=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.Dx,{ref:s,className:(0,i.cn)("text-lg font-semibold leading-none tracking-tight",t),...l})});p.displayName=r.Dx.displayName;let h=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.dk,{ref:s,className:(0,i.cn)("text-sm text-muted-foreground",t),...l})});h.displayName=r.dk.displayName},26815:function(e,s,t){t.d(s,{_:function(){return o}});var a=t(57437),r=t(6394),l=t(90535),n=t(2265),i=t(94508);let d=(0,l.j)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),o=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.f,{ref:s,className:(0,i.cn)(d(),t),...l})});o.displayName=r.f.displayName},57054:function(e,s,t){t.d(s,{J2:function(){return i},xo:function(){return d},yk:function(){return o}});var a=t(57437),r=t(27312),l=t(2265),n=t(94508);let i=r.fC,d=r.xz,o=l.forwardRef((e,s)=>{let{className:t,align:l="center",sideOffset:i=4,...d}=e;return(0,a.jsx)(r.h_,{children:(0,a.jsx)(r.VY,{ref:s,align:l,sideOffset:i,className:(0,n.cn)("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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",t),...d})})});o.displayName=r.VY.displayName},19378:function(e,s,t){t.d(s,{B:function(){return d},x:function(){return i}});var a=t(57437),r=t(14488),l=t(2265),n=t(94508);let i=l.forwardRef((e,s)=>{let{className:t,children:l,...i}=e;return(0,a.jsxs)(r.fC,{ref:s,className:(0,n.cn)("relative overflow-hidden",t),...i,children:[(0,a.jsx)(r.l_,{className:"size-full rounded-[inherit]",children:l}),(0,a.jsx)(d,{}),(0,a.jsx)(r.Ns,{})]})});i.displayName=r.fC.displayName;let d=l.forwardRef((e,s)=>{let{className:t,orientation:l="vertical",...i}=e;return(0,a.jsx)(r.gb,{ref:s,orientation:l,className:(0,n.cn)("flex touch-none select-none transition-colors","vertical"===l&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===l&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",t),...i,children:(0,a.jsx)(r.q4,{className:"relative flex-1 rounded-full bg-border"})})});d.displayName=r.gb.displayName},53647:function(e,s,t){t.d(s,{Bw:function(){return p},Ph:function(){return c},Ql:function(){return h},i4:function(){return u},ki:function(){return m}});var a=t(57437),r=t(46943),l=t(40875),n=t(22135),i=t(30401),d=t(2265),o=t(94508);let c=r.fC;r.ZA;let m=r.B4,u=d.forwardRef((e,s)=>{let{className:t,children:n,...i}=e;return(0,a.jsxs)(r.xz,{ref:s,className:(0,o.cn)("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",t),...i,children:[n,(0,a.jsx)(r.JO,{asChild:!0,children:(0,a.jsx)(l.Z,{className:"size-4 opacity-50"})})]})});u.displayName=r.xz.displayName;let f=d.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.u_,{ref:s,className:(0,o.cn)("flex cursor-default items-center justify-center py-1",t),...l,children:(0,a.jsx)(n.Z,{className:"size-4"})})});f.displayName=r.u_.displayName;let x=d.forwardRef((e,s)=>{let{className:t,...n}=e;return(0,a.jsx)(r.$G,{ref:s,className:(0,o.cn)("flex cursor-default items-center justify-center py-1",t),...n,children:(0,a.jsx)(l.Z,{className:"size-4"})})});x.displayName=r.$G.displayName;let p=d.forwardRef((e,s)=>{let{className:t,children:l,position:n="popper",...i}=e;return(0,a.jsx)(r.h_,{children:(0,a.jsxs)(r.VY,{ref:s,className:(0,o.cn)("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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","popper"===n&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,...i,children:[(0,a.jsx)(f,{}),(0,a.jsx)(r.l_,{className:(0,o.cn)("p-1","popper"===n&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:l}),(0,a.jsx)(x,{})]})})});p.displayName=r.VY.displayName,d.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.__,{ref:s,className:(0,o.cn)("py-1.5 pl-8 pr-2 text-sm font-semibold",t),...l})}).displayName=r.__.displayName;let h=d.forwardRef((e,s)=>{let{className:t,children:l,...n}=e;return(0,a.jsxs)(r.ck,{ref:s,className:(0,o.cn)("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[(0,a.jsx)("span",{className:"absolute left-2 flex size-3.5 items-center justify-center",children:(0,a.jsx)(r.wU,{children:(0,a.jsx)(i.Z,{className:"size-4"})})}),(0,a.jsx)(r.eT,{children:l})]})});h.displayName=r.ck.displayName,d.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.Z0,{ref:s,className:(0,o.cn)("-mx-1 my-1 h-px bg-muted",t),...l})}).displayName=r.Z0.displayName},76818:function(e,s,t){t.d(s,{g:function(){return n}});var a=t(57437),r=t(2265),l=t(94508);let n=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("textarea",{className:(0,l.cn)("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",t),ref:s,...r})});n.displayName="Textarea"}}]);
|
|
2
|
-
//# sourceMappingURL=8030-c1b6be46253076cb.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/8030-c1b6be46253076cb.js","mappings":"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","sources":["webpack://_N_E/./components/rbac.tsx","webpack://_N_E/./components/ui/badge.tsx","webpack://_N_E/./components/ui/card.tsx","webpack://_N_E/./components/ui/command.tsx","webpack://_N_E/./components/ui/dialog.tsx","webpack://_N_E/./components/ui/label.tsx","webpack://_N_E/./components/ui/popover.tsx","webpack://_N_E/./components/ui/scroll-area.tsx","webpack://_N_E/./components/ui/select.tsx","webpack://_N_E/./components/ui/textarea.tsx"],"sourcesContent":["\nimport {\n GET_USER_ROLES,\n GET_USERS,\n GET_USER_BY_ID\n} from \"@/queries/queries\";\nimport { useState, useEffect, useCallback } from \"react\";\nimport { useApolloClient, useQuery } from \"@apollo/client\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";\nimport { User } from \"@/types/models/user\";\nimport { Check, ChevronsUpDown, Users, Lock, Globe, Settings, Trash2, Loader2, Folder } from \"lucide-react\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n} from \"@/components/ui/dialog\";\nimport { ScrollArea } from \"@/components/ui/scroll-area\";\nimport { cn } from \"@/lib/utils\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\";\nimport { Button } from \"@/components/ui/button\";\nimport { Label } from \"./ui/label\";\n\nconst VISIBILITY_OPTIONS = [\n { value: 'private', label: 'Private', description: 'Only you can see this agent', icon: Lock },\n { value: 'users', label: 'Shared with Users', description: 'Share with specific users', icon: Users },\n { value: 'roles', label: 'Shared with Roles', description: 'Share with specific roles', icon: Settings },\n { value: 'public', label: 'Public', description: 'Anyone can see this agent', icon: Globe },\n { value: 'projects', label: 'Projects', description: 'Share with specific projects', icon: Folder }\n]\n\ntype Modes = 'private' | 'users' | 'roles' | 'public' | 'projects'\n\nexport function RBACControl({\n allowedModes,\n initialRightsMode,\n modalMode = false,\n initialUsers,\n initialRoles,\n initialProjects,\n onChange\n}: {\n allowedModes?: Modes[],\n modalMode?: boolean,\n initialRightsMode: 'private' | 'users' | 'roles' | 'public' | 'projects' | undefined,\n initialUsers: { id: number, rights: 'read' | 'write' }[] | undefined,\n initialRoles: { id: string, rights: 'read' | 'write' }[] | undefined,\n initialProjects: { id: string, rights: 'read' | 'write' }[] | undefined,\n onChange: (rights_mode: Modes, users: { id: number, rights: 'read' | 'write' }[], roles: { id: string, rights: 'read' | 'write' }[], projects: { id: string, rights: 'read' | 'write' }[]) => void\n}) {\n const [visibility, setVisibility] = useState<Modes | undefined>(initialRightsMode)\n const [selectedUsers, setSelectedUsers] = useState<{ id: number, rights: 'read' | 'write' }[]>(initialUsers || [])\n const [selectedRoles, setSelectedRoles] = useState<{ id: string, rights: 'read' | 'write' }[]>(initialRoles || [])\n const [hydratedUsers, setHydratedUsers] = useState<User[]>([])\n const [visibilitySelectorOpen, setVisibilitySelectorOpen] = useState(false)\n const [userFilters, setUserFilters] = useState<any[]>([])\n const [userSearchValue, setUserSearchValue] = useState('')\n const [modalOpen, setModalOpen] = useState(false)\n const [modalLoading, setModalLoading] = useState(false)\n const client = useApolloClient()\n\n // GraphQL queries for RBAC\n const { data: usersData, loading: usersLoading, refetch: refetchUsers } = useQuery(GET_USERS, {\n variables: { page: 1, limit: 5, filters: userFilters },\n skip: visibility !== 'users' || !userSearchValue\n })\n\n const roles = useQuery(GET_USER_ROLES, {\n fetchPolicy: \"cache-first\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 30,\n filters: [\n {\n type: {\n ne: \"api\"\n }\n }\n ]\n },\n });\n\n\n // User search function\n const searchUsers = useCallback((value: string) => {\n setUserSearchValue(value)\n const copy = [...userFilters, {\n type: {\n ne: \"api\"\n }\n }]\n const exists = copy.find((filter) => filter.email)\n if (exists?.email) {\n exists.email.contains = value\n } else {\n copy.push({\n email: {\n contains: value,\n },\n })\n }\n setUserFilters(copy)\n refetchUsers()\n }, [userFilters, refetchUsers])\n\n const hydrateUsers = async (max: number = 5) => {\n setModalLoading(true)\n if (!selectedUsers || selectedUsers.length === 0) {\n setHydratedUsers([])\n setModalLoading(false)\n return\n }\n\n const promises = selectedUsers?.slice(0, max).map(async ({ id, rights }) => {\n const user = await client.query({\n query: GET_USER_BY_ID,\n variables: {\n id\n }\n })\n return {\n ...user.data.userById,\n rights\n };\n })\n const results = await Promise.all(promises)\n setHydratedUsers(results)\n setModalLoading(false)\n }\n\n useEffect(() => {\n hydrateUsers(5)\n }, [])\n\n useEffect(() => {\n console.log(\"selectedUsers\", selectedUsers)\n console.log(\"hydratedUsers\", hydratedUsers)\n onChange(visibility as 'private' | 'users' | 'roles' | 'public', selectedUsers, selectedRoles, [])\n }, [visibility, selectedUsers, selectedRoles])\n\n const filteredUsers = hydratedUsers?.slice(0, 5).filter(user => !!user?.id)\n\n let visibilityOptions = VISIBILITY_OPTIONS\n if (allowedModes?.length) {\n visibilityOptions = VISIBILITY_OPTIONS.filter(option => allowedModes.includes(option.value as Modes))\n }\n\n return (\n <>\n <div className=\"space-y-2\">\n <Label className=\"text-sm font-medium\">Visibility & sharing</Label>\n <Popover modal={modalMode || false} open={visibilitySelectorOpen} onOpenChange={setVisibilitySelectorOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={visibilitySelectorOpen}\n className=\"w-full justify-between text-sm capitalize\"\n >\n {visibilityOptions.find(option => option.value === visibility)?.label || \"Select visibility...\"}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search options...\" />\n <CommandList>\n <CommandEmpty>No options found.</CommandEmpty>\n <CommandGroup>\n {visibilityOptions.map((option: any) => (\n <CommandItem\n key={option.value}\n onSelect={() => {\n if (option.value !== \"users\") {\n setSelectedUsers([])\n }\n if (option.value !== \"roles\") {\n setSelectedRoles([])\n }\n setVisibility(option.value)\n setVisibilitySelectorOpen(false)\n }}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n visibility === option.value ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n <div className=\"flex flex-col\">\n <span>{option.label}</span>\n <span className=\"text-xs text-muted-foreground\">{option.description}</span>\n </div>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n\n {/* Users sharing section */}\n {visibility === 'users' && (\n <div className=\"space-y-3 pt-3\">\n <div>\n <Label className=\"text-sm font-medium\">Share with users</Label>\n {/* Search bar */}\n <div className=\"mt-2\">\n <Input\n placeholder=\"Search users by email...\"\n value={userSearchValue}\n onChange={(e) => searchUsers(e.target.value)}\n className=\"text-sm\"\n />\n </div>\n\n {/* Search results */}\n {usersLoading && (\n <div className=\"mt-2 flex items-center justify-center py-4\">\n <Loader2 className=\"h-4 w-4 animate-spin mr-2\" />\n <span className=\"text-sm text-muted-foreground\">Loading users...</span>\n </div>\n )}\n {!usersLoading && usersData && usersData.usersPagination?.items.length > 0 && (\n <div className=\"mt-2\">\n <div className=\"text-xs text-muted-foreground mb-1\">Search Results:</div>\n <div className=\"max-h-50 overflow-y-auto border rounded-lg\">\n {usersData.usersPagination.items.filter(user => !selectedUsers.some(selected => selected.id === user.id)).map((user: any) => (\n <label key={user.id} className=\"flex items-center space-x-2 p-2 hover:bg-muted/50 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={selectedUsers.some(selected => selected.id === user.id)}\n onChange={(e) => {\n setSelectedUsers(prev => [...prev, { id: user.id, rights: 'read' }])\n setHydratedUsers(prev => [...prev, {\n ...user,\n rights: 'read'\n }])\n }}\n />\n <span className=\"text-sm\">{user.email}</span>\n </label>\n ))}\n </div>\n <div className=\"text-xs text-muted-foreground mt-2\">\n <span className=\"font-medium\">Note:</span> Only the first 5 users are shown, use the Search bar to find more users.\n </div>\n </div>\n )}\n {!usersLoading && userSearchValue && usersData && usersData.usersPagination.items.length === 0 && (\n <div className=\"mt-2 text-center py-4\">\n <span className=\"text-sm text-muted-foreground\">No users found</span>\n </div>\n )}\n\n {/* Selected users list */}\n {filteredUsers?.length > 0 ? (\n <div className=\"mt-2\">\n <div className=\"text-xs text-muted-foreground mb-1\">Selected Users:</div>\n <div className=\"space-y-1\">\n {filteredUsers.map((user: any) => (\n <div key={user.id} className=\"flex items-center gap-2 border p-2 rounded-lg text-sm\">\n <span className=\"flex-1 pl-2\">{user.email}</span>\n <Select\n value={user.rights}\n onValueChange={(value: 'read' | 'write') => {\n setSelectedUsers(prev =>\n prev.map(selected =>\n selected.id === user.id\n ? { ...selected, rights: value }\n : selected\n )\n )\n setHydratedUsers(prev =>\n prev.map(hydratedUser =>\n hydratedUser.id === user.id\n ? { ...hydratedUser, rights: value }\n : hydratedUser\n )\n )\n }}\n >\n <SelectTrigger className=\"h-6 w-20 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"read\">Read</SelectItem>\n <SelectItem value=\"write\">Write</SelectItem>\n </SelectContent>\n </Select>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-5 w-5 p-0 hover:bg-blue-100\"\n onClick={() => {\n setSelectedUsers(prev => prev.filter(selected => selected.id !== user.id))\n setHydratedUsers(prev => prev.filter(hydratedUser => hydratedUser.id !== user.id))\n }}\n >\n <Trash2 className=\"w-3 h-3\" />\n </Button>\n </div>\n ))}\n {selectedUsers && selectedUsers.length > 5 && (\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"h-auto p-0 text-blue-600 hover:text-blue-800 text-xs\"\n onClick={() => {\n hydrateUsers(50)\n setModalOpen(true)\n }}\n >\n + {selectedUsers.length - 5} more users\n </Button>\n )}\n </div>\n </div>\n ) : (\n <div className=\"mt-2 text-center py-4\">\n <span className=\"text-sm text-muted-foreground\">No users selected.</span>\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* Roles sharing section */}\n {visibility === 'roles' && (\n <div className=\"space-y-3\">\n <div>\n <Label className=\"text-sm font-medium\">Share with roles ({selectedRoles?.length || 0})</Label>\n\n {/* Available roles list */}\n <div className=\"mt-2\">\n <div className=\"text-xs text-muted-foreground mb-1\">Available Roles</div>\n {roles.loading && (\n <div className=\"flex items-center justify-center py-4 border rounded-lg\">\n <Loader2 className=\"h-4 w-4 animate-spin mr-2\" />\n <span className=\"text-sm text-muted-foreground\">Loading roles...</span>\n </div>\n )}\n {!roles.loading && roles.data && (\n <div className=\"max-h-24 overflow-y-auto border rounded-lg\">\n {roles.data.rolesPagination.items.map((role: any) => (\n <label key={role.id} className=\"flex items-center space-x-2 p-2 hover:bg-muted/50 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={selectedRoles.some(selected => selected.id === role.id)}\n onChange={(e) => {\n if (e.target.checked) {\n setSelectedRoles(prev => [...prev, { id: role.id, rights: 'read' }])\n } else {\n setSelectedRoles(prev => prev.filter(selected => selected.id !== role.id))\n }\n }}\n />\n <span className=\"text-sm capitalize\">{role.name}</span>\n </label>\n ))}\n </div>\n )}\n </div>\n\n {/* Selected roles list */}\n {selectedRoles.length > 0 && roles.data && (\n <div className=\"mt-2\">\n <div className=\"text-xs text-muted-foreground mb-1\">Selected Roles:</div>\n <div className=\"space-y-1\">\n {selectedRoles.map((selectedRole: any) => {\n const role = roles.data.rolesPagination.items.find((r: any) => r.id === selectedRole.id)\n return (\n <div key={selectedRole.id} className=\"flex items-center gap-2 border p-2 rounded-lg text-sm\">\n <span className=\"flex-1 pl-2 capitalize\">{role?.name}</span>\n <Select\n value={selectedRole.rights}\n onValueChange={(value: 'read' | 'write') => {\n setSelectedRoles(prev =>\n prev.map(selected =>\n selected.id === selectedRole.id\n ? { ...selected, rights: value }\n : selected\n )\n )\n }}\n >\n <SelectTrigger className=\"h-6 text-xs w-20 border-none\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"read\">\n <span className=\"pr-7\">Read</span>\n </SelectItem>\n <SelectItem value=\"write\">\n <span className=\"pr-7\">Write</span>\n </SelectItem>\n </SelectContent>\n </Select>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-5 w-5 p-0 hover:bg-blue-100\"\n onClick={() => {\n setSelectedRoles(prev => prev.filter(selected => selected.id !== selectedRole.id))\n }}\n >\n <Trash2 className=\"w-3 h-3\" />\n </Button>\n </div>\n )\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* Modal for viewing all selected users */}\n <Dialog open={modalOpen} onOpenChange={setModalOpen} >\n <DialogContent className=\"sm:max-w-2xl max-h-[85vh] flex flex-col\">\n <DialogHeader>\n <DialogTitle>All Selected Users ({selectedUsers?.length || 0})</DialogTitle>\n <DialogDescription>\n View and manage all selected users and their permissions\n </DialogDescription>\n </DialogHeader>\n\n <ScrollArea className=\"flex-1 pr-4\">\n {modalLoading && (\n <div className=\"flex items-center justify-center py-8\">\n <Loader2 className=\"h-6 w-6 animate-spin mr-2\" />\n <span className=\"text-sm text-muted-foreground\">Loading users...</span>\n </div>\n )}\n\n {!modalLoading && hydratedUsers.length > 0 && (\n <div className=\"space-y-2\">\n {hydratedUsers.map((user: any) => (\n <div key={user.id} className=\"flex items-center gap-3 border p-3 rounded-lg\">\n <span className=\"flex-1\">{user.email}</span>\n <Select\n value={user.rights}\n onValueChange={(value: 'read' | 'write') => {\n // Update selectedUsers state\n setSelectedUsers(prev =>\n prev.map(selected =>\n selected.id === user.id\n ? { ...selected, rights: value }\n : selected\n )\n )\n // Update hydratedUsers state if this user is in the first 5\n setHydratedUsers(prev =>\n prev.map(hydratedUser =>\n hydratedUser.id === user.id\n ? { ...hydratedUser, rights: value }\n : hydratedUser\n )\n )\n }}\n >\n <SelectTrigger className=\"w-24\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"read\">Read</SelectItem>\n <SelectItem value=\"write\">Write</SelectItem>\n </SelectContent>\n </Select>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-8 w-8 p-0 hover:bg-destructive/10\"\n onClick={() => {\n setSelectedUsers(prev => prev.filter(selected => selected.id !== user.id))\n setHydratedUsers(prev => prev.filter(hydratedUser => hydratedUser.id !== user.id))\n }}\n >\n <Trash2 className=\"w-4 h-4\" />\n </Button>\n </div>\n ))}\n </div>\n )}\n\n {!modalLoading && hydratedUsers.length === 0 && (\n <div className=\"text-center py-8\">\n <span className=\"text-sm text-muted-foreground\">No users selected</span>\n </div>\n )}\n </ScrollArea>\n </DialogContent>\n </Dialog >\n </>\n )\n}","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n};\n","\"use client\";\n\nimport { type DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Dialog, DialogContent } from \"@/components/ui/dialog\";\nimport { cn } from \"@/lib/utils\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends DialogProps {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:size-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:size-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","\"use client\";\n\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","\"use client\";\n\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","\"use client\";\n\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","\"use client\";\n\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"size-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUp className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDown className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n"],"names":["VISIBILITY_OPTIONS","value","label","description","icon","Lock","Users","Settings","Globe","Folder","RBACControl","param","visibilityOptions","usersData","allowedModes","initialRightsMode","modalMode","initialUsers","initialRoles","initialProjects","onChange","visibility","setVisibility","useState","selectedUsers","setSelectedUsers","selectedRoles","setSelectedRoles","hydratedUsers","setHydratedUsers","visibilitySelectorOpen","setVisibilitySelectorOpen","userFilters","setUserFilters","userSearchValue","setUserSearchValue","modalOpen","setModalOpen","modalLoading","setModalLoading","client","useApolloClient","data","loading","usersLoading","refetch","refetchUsers","useQuery","GET_USERS","variables","page","limit","filters","skip","roles","GET_USER_ROLES","fetchPolicy","nextFetchPolicy","type","ne","searchUsers","useCallback","copy","exists","find","filter","email","contains","push","hydrateUsers","max","length","promises","slice","map","id","rights","user","query","GET_USER_BY_ID","userById","Promise","all","useEffect","console","log","filteredUsers","option","includes","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsxs","Fragment","div","className","jsx","Label","Popover","modal","open","onOpenChange","PopoverTrigger","asChild","Button","variant","role","aria-expanded","ChevronsUpDown","PopoverContent","Command","CommandInput","placeholder","CommandList","CommandEmpty","CommandGroup","CommandItem","onSelect","Check","cn","span","Input","e","target","Loader2","usersPagination","items","some","selected","input","checked","prev","Select","onValueChange","hydratedUser","SelectTrigger","SelectValue","SelectContent","SelectItem","size","onClick","Trash2","rolesPagination","name","r","selectedRole","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","ScrollArea","badgeVariants","cva","variants","default","secondary","destructive","outline","defaultVariants","Badge","props","Card","React","ref","displayName","CardHeader","CardTitle","h3","CardDescription","p","CardContent","CardFooter","CommandPrimitive","cmdk-input-wrapper","Search","List","Empty","Group","CommandSeparator","Separator","Item","DialogPrimitive","DialogTrigger","DialogPortal","DialogOverlay","children","X","DialogFooter","labelVariants","LabelPrimitive","PopoverPrimitive","align","sideOffset","ScrollAreaPrimitive","ScrollBar","orientation","SelectPrimitive","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","position","SelectLabel","SelectSeparator","Textarea","textarea"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9105],{8864:function(e,s,a){a.d(s,{R:function(){return k}});var l=a(57437),i=a(2265),n=a(7211),t=a(12199),r=a(27689),d=a(62869),c=a(66070),o=a(19060),u=a(73578),x=a(12339),h=a(37099),m=a(35974),j=a(15863),v=a(33276),g=a(89227),p=a(93609),b=a(18930),f=a(52636),N=a(92451),y=a(10407),w=a(77992),C=a(27107),P=a(68656),S=a(20653);function k(e){var s,a,k,Z,z,q,R,T,D,I;let{queueName:O,nameGenerator:A,retryJob:J}=e,{toast:Q}=(0,w.pm)(),[L,M]=(0,i.useState)(!1),[_,E]=(0,i.useState)(!1),[F,Y]=(0,i.useState)(!1),[$,G]=(0,i.useState)([]),[W,X]=(0,i.useState)(null),[B,H]=(0,i.useState)("completed"),[V,K]=(0,i.useState)(1),[U,ee]=(0,i.useState)(20),[es,ea]=(0,i.useState)(new Set),{data:el,loading:ei,refetch:en}=(0,n.aM)(r.k9,{variables:{queue:O},pollInterval:5e3}),{data:et,loading:er,refetch:ed,networkStatus:ec}=(0,n.aM)(r.Jq,{variables:{queue:O,statusses:B,page:V,limit:U},pollInterval:5e3}),[eo,{loading:eu}]=(0,t.D)(r.Wr,{onError:e=>{Q({title:"Failed to delete job",description:e.message,variant:"destructive"})}}),[ex,{loading:eh}]=(0,t.D)(r.fc,{onCompleted:()=>{Q({title:"Queue paused",description:"The ".concat(O," queue has been paused.")}),en(),M(!1)},onError:e=>{Q({title:"Failed to pause queue",description:e.message,variant:"destructive"})}}),[em,{loading:ej}]=(0,t.D)(r.iC,{onCompleted:()=>{Q({title:"Queue resumed",description:"The ".concat(O," queue has been resumed.")}),en(),Y(!1)},onError:e=>{Q({title:"Failed to resume queue",description:e.message,variant:"destructive"})}}),[ev,{loading:eg}]=(0,t.D)(r.QW,{onCompleted:()=>{Q({title:"Queue drained",description:"All waiting and delayed jobs have been removed from the queue."}),en(),ed(),E(!1)},onError:e=>{Q({title:"Failed to drain queue",description:e.message,variant:"destructive"})}}),ep=e=>{G([e])},eb=e=>{X(e)},ef=e=>{let s=new Set(es);s.has(e)?s.delete(e):s.add(e),ea(s)},eN=async()=>{if($.filter(e=>!e.id).length>0){Q({title:"Failed to delete jobs",description:"Some jobs have no ID.",variant:"destructive"});return}try{await Promise.all($.map(e=>eo({variables:{queue:O,id:e.id}}))),Q({title:1===$.length?"Job deleted":"Jobs deleted",description:"Successfully deleted ".concat($.length," job").concat(1===$.length?"":"s",".")}),ed(),en(),G([]),ea(new Set)}catch(e){}},ey=null==el?void 0:el.queue,ew=(null==et?void 0:et.jobs)||{items:[],pageInfo:{pageCount:0,itemCount:0,currentPage:1,hasPreviousPage:!1,hasNextPage:!1}},eC=e=>(0,l.jsx)(m.C,{variant:"outline",className:{active:"bg-blue-100 text-blue-800 border-blue-200",waiting:"bg-yellow-100 text-yellow-800 border-yellow-200",completed:"bg-green-100 text-green-800 border-green-200",failed:"bg-red-100 text-red-800 border-red-200",delayed:"bg-orange-100 text-orange-800 border-orange-200",paused:"bg-gray-100 text-gray-800 border-gray-200"}[e]||"bg-gray-100 text-gray-800",children:e});return ei&&er?(0,l.jsx)("div",{className:"space-y-4",children:(0,l.jsx)(c.Zb,{children:(0,l.jsx)(c.aY,{className:"pt-6",children:(0,l.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,l.jsx)(j.Z,{className:"h-6 w-6 animate-spin"})})})})}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(c.Zb,{children:[(0,l.jsx)(c.Ol,{children:(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("div",{className:"flex items-center gap-3",children:(0,l.jsxs)("div",{children:[(0,l.jsxs)(c.ll,{children:["Queue: ",O]}),(0,l.jsxs)(c.SZ,{children:["Manage the ",O," job queue and view all jobs."]})]})}),ey&&(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsxs)(d.z,{variant:"outline",size:"sm",onClick:()=>(null==ey?void 0:ey.isPaused)?Y(!0):M(!0),disabled:eh||ej,children:[(null==ey?void 0:ey.isPaused)?(0,l.jsx)(v.Z,{className:"mr-2 h-4 w-4"}):(0,l.jsx)(g.Z,{className:"mr-2 h-4 w-4"}),(null==ey?void 0:ey.isPaused)?"Resume queue":"Pause queue"]}),(0,l.jsxs)(d.z,{variant:"outline",size:"sm",onClick:()=>E(!0),disabled:eg,children:[(0,l.jsx)(p.Z,{className:"mr-2 h-4 w-4"}),"Drain queue"]})]})]})}),(0,l.jsxs)(c.aY,{className:"space-y-6",children:[ey&&(0,l.jsxs)("div",{className:"flex items-center gap-8 p-4 bg-muted/50 rounded-lg",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"text-sm text-muted-foreground",children:"Status:"}),(0,l.jsx)("div",{children:ey.isPaused?(0,l.jsx)(m.C,{variant:"outline",className:"bg-gray-100 text-gray-800",children:"Paused"}):ey.isMaxed?(0,l.jsx)(m.C,{variant:"outline",className:"bg-red-100 text-red-800",children:"Maxed"}):(0,l.jsx)(m.C,{variant:"outline",className:"bg-green-100 text-green-800",children:"Active"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"text-sm text-muted-foreground",children:"Concurrency:"}),(0,l.jsx)("div",{className:"font-semibold",children:ey.concurrency})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"text-sm text-muted-foreground",children:"Rate Limit:"}),(0,l.jsx)("div",{className:"font-semibold",children:ey.ratelimit||"None"})]}),(0,l.jsx)(x.mQ,{value:B,onValueChange:e=>H(e),className:"w-auto",children:(0,l.jsxs)(x.dr,{children:[(0,l.jsxs)(x.SP,{value:"active",className:"gap-1.5",children:[(0,l.jsx)("span",{children:"Active"}),(0,l.jsx)(m.C,{variant:"secondary",className:"ml-1 bg-blue-100 text-blue-600 border-blue-200",children:(null===(s=ey.jobs)||void 0===s?void 0:s.active)||0})]}),(0,l.jsxs)(x.SP,{value:"waiting",className:"gap-1.5",children:[(0,l.jsx)("span",{children:"Waiting"}),(0,l.jsx)(m.C,{variant:"secondary",className:"ml-1 bg-yellow-100 text-yellow-600 border-yellow-200",children:(null===(a=ey.jobs)||void 0===a?void 0:a.waiting)||0})]}),(0,l.jsxs)(x.SP,{value:"failed",className:"gap-1.5",children:[(0,l.jsx)("span",{children:"Failed"}),(0,l.jsx)(m.C,{variant:"secondary",className:"ml-1 bg-red-100 text-red-600 border-red-200",children:(null===(k=ey.jobs)||void 0===k?void 0:k.failed)||0})]}),(0,l.jsxs)(x.SP,{value:"completed",className:"gap-1.5",children:[(0,l.jsx)("span",{children:"Completed"}),(0,l.jsx)(m.C,{variant:"secondary",className:"ml-1 bg-green-100 text-green-600 border-green-200",children:(null===(Z=ey.jobs)||void 0===Z?void 0:Z.completed)||0})]})]})})]}),(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"mb-3 flex items-center justify-between gap-2",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h3",{className:"text-sm font-semibold",children:"Queue Jobs"}),(0,l.jsxs)("p",{className:"text-xs text-muted-foreground",children:["All jobs currently in the ",O," queue"]})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[es.size>0&&(0,l.jsxs)(d.z,{variant:"destructive",size:"sm",onClick:()=>{G(ew.items.filter(e=>es.has(e.id)))},disabled:eu,children:[(0,l.jsx)(b.Z,{className:"mr-2 h-4 w-4"}),"Delete ",es.size," job",1===es.size?"":"s"]}),(0,l.jsxs)(m.C,{variant:"outline",children:["Auto Refresh: ",(0,l.jsx)(j.Z,{className:"h-4 w-4 animate-spin text-muted-foreground ml-1"})]})]})]}),(0,l.jsxs)("div",{className:"border rounded-lg",children:[er?(0,l.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,l.jsx)(j.Z,{className:"h-6 w-6 animate-spin"})}):(null===(z=ew.items)||void 0===z?void 0:z.length)===0?(0,l.jsx)("div",{className:"text-center pt-8 text-muted-foreground",children:"No jobs in queue"}):(0,l.jsxs)(u.iA,{children:[(0,l.jsx)(u.xD,{children:(0,l.jsxs)(u.SC,{children:[(0,l.jsx)(u.ss,{className:"w-12",children:(0,l.jsx)(o.X,{checked:ew.items.filter(e=>"active"!==e.state).length>0&&es.size===ew.items.filter(e=>"active"!==e.state).length,onCheckedChange:()=>{let e=ew.items.filter(e=>"active"!==e.state);es.size===e.length&&e.length>0?ea(new Set):ea(new Set(e.map(e=>e.id)))},"aria-label":"Select all jobs"})}),(0,l.jsx)(u.ss,{children:"Name"}),(0,l.jsx)(u.ss,{children:"State"}),(0,l.jsx)(u.ss,{children:"Timestamp"}),(0,l.jsx)(u.ss,{children:"Inputs"}),(0,l.jsx)(u.ss,{children:"Outputs"}),(0,l.jsx)(u.ss,{className:"text-right",children:"Actions"})]})}),(0,l.jsx)(u.RM,{children:null===(q=ew.items)||void 0===q?void 0:q.map((e,s)=>(0,l.jsxs)(u.SC,{children:[(0,l.jsx)(u.pj,{children:(0,l.jsx)(o.X,{checked:es.has(e.id),onCheckedChange:()=>ef(e.id),disabled:"active"===e.state,"aria-label":"Select job ".concat(A(e))})}),(0,l.jsx)(u.pj,{className:"font-medium max-w-[200px] truncate",children:A(e)}),(0,l.jsx)(u.pj,{children:eC(e.state)}),(0,l.jsx)(u.pj,{children:e.timestamp?(0,C.WU)(new Date(e.timestamp),"MMM d, yyyy HH:mm:ss"):"N/A"}),(0,l.jsx)(u.pj,{children:e.data?(0,l.jsx)("div",{className:"text-xs max-w-[200px] truncate",children:(0,l.jsx)(P.J,{text:JSON.stringify(e.data)})}):null}),(0,l.jsx)(u.pj,{children:e.failedReason?(0,l.jsx)("div",{className:"text-xs text-red-600 max-w-[200px] truncate",children:(0,l.jsx)(P.J,{text:"Error: "+e.failedReason})}):(0,l.jsx)("div",{className:"text-xs text-muted-foreground max-w-[200px] truncate",children:(0,l.jsx)(P.J,{text:JSON.stringify(e.returnvalue)})})}),(0,l.jsxs)(u.pj,{className:"text-right",children:["active"!==e.state&&(0,l.jsx)(d.z,{variant:"ghost",size:"sm",onClick:()=>ep(e),disabled:eu,children:(0,l.jsx)(b.Z,{className:"h-4 w-4 text-red-600"})}),"failed"===e.state&&(0,l.jsxs)(d.z,{variant:"ghost",size:"sm",onClick:()=>eb(e),children:[(0,l.jsx)(f.Z,{className:"h-4 w-4 text-blue-600"}),"Retry"]})]})]},s))})]}),(0,l.jsxs)("div",{className:"flex items-center justify-between px-2 pb-2",children:[(0,l.jsxs)("div",{className:"flex-1 text-sm text-muted-foreground",children:["(",(null==ew?void 0:null===(R=ew.pageInfo)||void 0===R?void 0:R.itemCount)||0," total"," ","items)."]}),(0,l.jsx)("div",{className:"flex items-center space-x-6 lg:space-x-8",children:(0,l.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,l.jsxs)(d.z,{variant:"outline",className:"hidden size-8 p-0 lg:flex",onClick:()=>{K(1),ed()},disabled:!(null==ew?void 0:null===(T=ew.pageInfo)||void 0===T?void 0:T.hasPreviousPage),children:[(0,l.jsx)("span",{className:"sr-only",children:"Go to first page"}),(0,l.jsx)(S.kRt,{className:"size-4"})]}),(0,l.jsxs)(d.z,{variant:"outline",className:"size-8 p-0",onClick:()=>{var e,s,a;console.log("itemsData.data?.pageInfo.hasPreviousPage",null==ew?void 0:null===(e=ew.pageInfo)||void 0===e?void 0:e.hasPreviousPage),K((null==ew?void 0:null===(s=ew.pageInfo)||void 0===s?void 0:s.hasPreviousPage)?(null==ew?void 0:null===(a=ew.pageInfo)||void 0===a?void 0:a.currentPage)-1:1),ed()},disabled:!(null==ew?void 0:null===(D=ew.pageInfo)||void 0===D?void 0:D.hasPreviousPage),children:[(0,l.jsx)("span",{className:"sr-only",children:"Go to previous page"}),(0,l.jsx)(N.Z,{className:"size-4"})]}),(0,l.jsxs)(d.z,{variant:"outline",className:"size-8 p-0",onClick:()=>{var e,s;K((null==ew?void 0:null===(e=ew.pageInfo)||void 0===e?void 0:e.hasNextPage)?(null==ew?void 0:null===(s=ew.pageInfo)||void 0===s?void 0:s.currentPage)+1:1),ed()},disabled:!(null==ew?void 0:ew.pageInfo.hasNextPage),children:[(0,l.jsx)("span",{className:"sr-only",children:"Go to next page"}),(0,l.jsx)(y.Z,{className:"size-4"})]})]})})]})]})]})]})]}),(0,l.jsx)(h.aR,{open:$.length>0,onOpenChange:e=>!e&&G([]),children:(0,l.jsxs)(h._T,{children:[(0,l.jsxs)(h.fY,{children:[(0,l.jsx)(h.f$,{children:1===$.length?"Delete Job?":"Delete ".concat($.length," Jobs?")}),(0,l.jsx)(h.yT,{children:1===$.length?'Are you sure you want to delete the job "'.concat(null===(I=$[0])||void 0===I?void 0:I.name,'"? This action cannot be undone.'):"Are you sure you want to delete ".concat($.length," jobs? This action cannot be undone.")})]}),(0,l.jsxs)(h.xo,{children:[(0,l.jsx)(h.le,{children:"Cancel"}),(0,l.jsxs)(h.OL,{onClick:eN,disabled:eu,children:[eu&&(0,l.jsx)(j.Z,{className:"mr-2 h-4 w-4 animate-spin"}),"Delete"]})]})]})}),(0,l.jsx)(h.aR,{open:!!W,onOpenChange:e=>!e&&X(null),children:(0,l.jsxs)(h._T,{children:[(0,l.jsxs)(h.fY,{children:[(0,l.jsx)(h.f$,{children:"Retry Job?"}),(0,l.jsxs)(h.yT,{children:['Are you sure you want to retry the job "',null==W?void 0:W.name,'"? This will schedule a new job with the same data.']})]}),(0,l.jsxs)(h.xo,{children:[(0,l.jsx)(h.le,{children:"Cancel"}),(0,l.jsx)(h.OL,{onClick:()=>{W&&J(W)},disabled:eu,children:"Retry"})]})]})}),(0,l.jsx)(h.aR,{open:L,onOpenChange:M,children:(0,l.jsxs)(h._T,{children:[(0,l.jsxs)(h.fY,{children:[(0,l.jsx)(h.f$,{children:"Pause Queue?"}),(0,l.jsxs)(h.yT,{children:["Are you sure you want to pause the ",O," queue? No jobs will be processed until the queue is resumed."]})]}),(0,l.jsxs)(h.xo,{children:[(0,l.jsx)(h.le,{children:"Cancel"}),(0,l.jsxs)(h.OL,{onClick:()=>{ex({variables:{queue:O}})},disabled:eh,children:[eh&&(0,l.jsx)(j.Z,{className:"mr-2 h-4 w-4 animate-spin"}),"Pause Queue"]})]})]})}),(0,l.jsx)(h.aR,{open:F,onOpenChange:Y,children:(0,l.jsxs)(h._T,{children:[(0,l.jsxs)(h.fY,{children:[(0,l.jsx)(h.f$,{children:"Resume Queue?"}),(0,l.jsxs)(h.yT,{children:["Are you sure you want to resume the ",O," queue?."]})]}),(0,l.jsxs)(h.xo,{children:[(0,l.jsx)(h.le,{children:"Cancel"}),(0,l.jsxs)(h.OL,{onClick:()=>{em({variables:{queue:O}})},disabled:ej,children:[ej&&(0,l.jsx)(j.Z,{className:"mr-2 h-4 w-4 animate-spin"}),"Resume Queue"]})]})]})}),(0,l.jsx)(h.aR,{open:_,onOpenChange:E,children:(0,l.jsxs)(h._T,{children:[(0,l.jsxs)(h.fY,{children:[(0,l.jsx)(h.f$,{children:"Drain Queue?"}),(0,l.jsxs)(h.yT,{children:["Are you sure you want to drain the ",O," queue? This will remove all jobs that are waiting or delayed, but not active, waiting-children, completed or failed. This action cannot be undone."]})]}),(0,l.jsxs)(h.xo,{children:[(0,l.jsx)(h.le,{children:"Cancel"}),(0,l.jsxs)(h.OL,{onClick:()=>{ev({variables:{queue:O}})},disabled:eg,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:[eg&&(0,l.jsx)(j.Z,{className:"mr-2 h-4 w-4 animate-spin"}),"Drain Queue"]})]})]})})]})}},62910:function(e,s,a){a.d(s,{G:function(){return j}});var l=a(57437),i=a(29406),n=a(10842),t=a(38436),r=a(2265),d=a(42571),c=a(71558),o=a(69797),u=a(49712),x=a(26110),h=a(77992),m=a(94508);function j(e){let{className:s=null,code:a,language:c,slice:o=200}=e,{toast:j}=(0,h.pm)(),[v,g]=(0,r.useState)(null),p=async(e,s)=>{"string"!=typeof e&&(e=JSON.stringify(e,null,2)),g(await t.ZP.format(e,{parser:s,plugins:[i.Z,n.ZP]}))};return(0,r.useEffect)(()=>{"json"===c?p(a,"json"):"javascript"===c||"js"===c?p(a,"babel"):g(a)},[a,c]),(0,l.jsxs)(x.Vq,{children:[(0,l.jsx)(x.hg,{asChild:!0,children:(null==v?void 0:v.length)&&(0,l.jsx)(d.Z,{className:(0,m.cn)("cursor-pointer",s),showLineNumbers:!0,wrapLines:!0,lineProps:{style:{wordBreak:"break-all",whiteSpace:"pre-wrap"}},language:c||"plaintext",style:u.Z,children:"".concat(null==v?void 0:v.slice(0,o||200)," ").concat((null==v?void 0:v.length)>(o||200)?"...":"")})}),(0,l.jsx)(x.cZ,{className:"sm:max-w-[800px] overflow-hidden max-h-[500px] overflow-y-scroll",children:(0,l.jsxs)(x.fK,{children:[(0,l.jsx)(x.$N,{children:"Code"}),(0,l.jsx)("div",{className:"cursor-copy",onClick:async()=>{await navigator.clipboard.writeText(null!=v?v:""),j({title:"Copied to clipboard"})},children:(0,l.jsx)(d.Z,{className:(0,m.cn)(s),showLineNumbers:!0,wrapLines:!0,lineProps:{style:{wordBreak:"break-all",whiteSpace:"pre-wrap"}},language:c||"plaintext",style:u.Z,children:null!=v?v:""})})]})})]})}d.Z.registerLanguage("json",o.Z),d.Z.registerLanguage("javascript",c.Z)},19060:function(e,s,a){a.d(s,{X:function(){return d}});var l=a(57437),i=a(9270),n=a(30401),t=a(2265),r=a(94508);let d=t.forwardRef((e,s)=>{let{className:a,...t}=e;return(0,l.jsx)(i.fC,{ref:s,className:(0,r.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",a),...t,children:(0,l.jsx)(i.z$,{className:(0,r.cn)("flex items-center justify-center text-current"),children:(0,l.jsx)(n.Z,{className:"size-4"})})})});d.displayName=i.fC.displayName}}]);
|
|
2
|
-
//# sourceMappingURL=9105-dfbce1bad8e3e8dd.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/9105-dfbce1bad8e3e8dd.js","mappings":"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","sources":["webpack://_N_E/./app/(application)/evals/[id]/runs/components/queue-management.tsx","webpack://_N_E/./components/custom/code-preview.tsx","webpack://_N_E/./components/ui/checkbox.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport { useQuery, useMutation, NetworkStatus } from \"@apollo/client\";\nimport { GET_QUEUE, GET_JOBS, DELETE_JOB, PAUSE_QUEUE, DRAIN_QUEUE, RESUME_QUEUE } from \"@/queries/queries\";\nimport { QueueJob } from \"@/types/models/job\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\";\nimport { Tabs, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Loader2, Trash2, Pause, Droplet, Play, RefreshCcw, ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { format } from \"date-fns\";\nimport { TextPreview } from \"@/components/custom/text-preview\";\nimport { DoubleArrowLeftIcon } from \"@radix-ui/react-icons\";\nimport { JobStatus } from \"@/types/models/job-result\";\n\ninterface QueueManagementProps {\n queueName: string;\n nameGenerator: (job: QueueJob) => string;\n retryJob: (job: QueueJob) => void;\n}\n\nexport function QueueManagement({ queueName, nameGenerator, retryJob }: QueueManagementProps) {\n const { toast } = useToast();\n const [pauseDialogOpen, setPauseDialogOpen] = useState(false);\n const [drainDialogOpen, setDrainDialogOpen] = useState(false);\n const [resumeDialogOpen, setResumeDialogOpen] = useState(false);\n const [jobsToDelete, setJobsToDelete] = useState<QueueJob[]>([]);\n const [jobToRetry, setJobToRetry] = useState<QueueJob | null>(null);\n const [status, setStatus] = useState<JobStatus>(\"completed\");\n const [page, setPage] = useState(1);\n const [limit, setLimit] = useState(20);\n const [selectedJobs, setSelectedJobs] = useState<Set<string>>(new Set());\n\n const { data: queueData, loading: loadingQueue, refetch: refetchQueue } = useQuery(GET_QUEUE, {\n variables: { queue: queueName },\n pollInterval: 5000, // Poll every 5 seconds\n });\n\n const { data: jobsData, loading: loadingJobs, refetch: refetchJobs, networkStatus: jobsNetworkStatus } = useQuery(GET_JOBS, {\n variables: {\n queue: queueName,\n statusses: status,\n page: page,\n limit: limit\n },\n pollInterval: 5000, // Poll every 5 seconds\n });\n\n const [deleteJob, { loading: deletingJob }] = useMutation(DELETE_JOB, {\n onError: (error) => {\n toast({\n title: \"Failed to delete job\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const [pauseQueue, { loading: pausingQueue }] = useMutation(PAUSE_QUEUE, {\n onCompleted: () => {\n toast({\n title: \"Queue paused\",\n description: `The ${queueName} queue has been paused.`,\n });\n refetchQueue();\n setPauseDialogOpen(false);\n },\n onError: (error) => {\n toast({\n title: \"Failed to pause queue\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const [resumeQueue, { loading: resumingQueue }] = useMutation(RESUME_QUEUE, {\n onCompleted: () => {\n toast({\n title: \"Queue resumed\",\n description: `The ${queueName} queue has been resumed.`,\n });\n refetchQueue();\n setResumeDialogOpen(false);\n },\n onError: (error) => {\n toast({\n title: \"Failed to resume queue\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const [drainQueue, { loading: drainingQueue }] = useMutation(DRAIN_QUEUE, {\n onCompleted: () => {\n toast({\n title: \"Queue drained\",\n description: \"All waiting and delayed jobs have been removed from the queue.\",\n });\n refetchQueue();\n refetchJobs();\n setDrainDialogOpen(false);\n },\n onError: (error) => {\n toast({\n title: \"Failed to drain queue\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const handleDeleteJob = (job: QueueJob) => {\n setJobsToDelete([job]);\n };\n\n const handleBulkDelete = () => {\n const jobsToDeleteArray = jobs.items.filter(job => selectedJobs.has(job.id));\n setJobsToDelete(jobsToDeleteArray);\n };\n\n const handleRetryJob = (job: QueueJob) => {\n setJobToRetry(job);\n };\n\n const toggleJobSelection = (jobId: string) => {\n const newSelection = new Set(selectedJobs);\n if (newSelection.has(jobId)) {\n newSelection.delete(jobId);\n } else {\n newSelection.add(jobId);\n }\n setSelectedJobs(newSelection);\n };\n\n const toggleAllJobs = () => {\n // Filter out active jobs since they can't be deleted\n const selectableJobs = jobs.items.filter(job => job.state !== \"active\");\n if (selectedJobs.size === selectableJobs.length && selectableJobs.length > 0) {\n setSelectedJobs(new Set());\n } else {\n setSelectedJobs(new Set(selectableJobs.map(job => job.id)));\n }\n };\n\n const confirmDeleteJobs = async () => {\n const jobsWithoutId = jobsToDelete.filter(job => !job.id);\n if (jobsWithoutId.length > 0) {\n toast({\n title: \"Failed to delete jobs\",\n description: \"Some jobs have no ID.\",\n variant: \"destructive\",\n });\n return;\n }\n\n try {\n // Delete all jobs in parallel\n await Promise.all(\n jobsToDelete.map(job =>\n deleteJob({\n variables: {\n queue: queueName,\n id: job.id,\n },\n })\n )\n );\n\n toast({\n title: jobsToDelete.length === 1 ? \"Job deleted\" : \"Jobs deleted\",\n description: `Successfully deleted ${jobsToDelete.length} job${jobsToDelete.length === 1 ? '' : 's'}.`,\n });\n\n refetchJobs();\n refetchQueue();\n setJobsToDelete([]);\n setSelectedJobs(new Set());\n } catch (error) {\n // Error toast already handled by mutation onError\n }\n };\n\n const handlePauseQueue = () => {\n pauseQueue({\n variables: { queue: queueName },\n });\n };\n\n const handleResumeQueue = () => {\n resumeQueue({\n variables: { queue: queueName },\n });\n };\n\n const handleDrainQueue = () => {\n drainQueue({\n variables: { queue: queueName },\n });\n };\n\n const queue = queueData?.queue;\n const jobs: {\n items: QueueJob[],\n pageInfo: {\n pageCount: number,\n itemCount: number,\n currentPage: number,\n hasPreviousPage: boolean,\n hasNextPage: boolean,\n }\n } = jobsData?.jobs || {\n items: [],\n pageInfo: {\n pageCount: 0,\n itemCount: 0,\n currentPage: 1,\n hasPreviousPage: false,\n hasNextPage: false,\n }\n };\n\n const getStatusBadge = (state: string) => {\n const statusColors: Record<string, string> = {\n active: \"bg-blue-100 text-blue-800 border-blue-200\",\n waiting: \"bg-yellow-100 text-yellow-800 border-yellow-200\",\n completed: \"bg-green-100 text-green-800 border-green-200\",\n failed: \"bg-red-100 text-red-800 border-red-200\",\n delayed: \"bg-orange-100 text-orange-800 border-orange-200\",\n paused: \"bg-gray-100 text-gray-800 border-gray-200\",\n };\n\n return (\n <Badge variant=\"outline\" className={statusColors[state] || \"bg-gray-100 text-gray-800\"}>\n {state}\n </Badge>\n );\n };\n\n if (loadingQueue && loadingJobs) {\n return (\n <div className=\"space-y-4\">\n <Card>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center justify-center py-8\">\n <Loader2 className=\"h-6 w-6 animate-spin\" />\n </div>\n </CardContent>\n </Card>\n </div>\n );\n }\n\n return (\n <>\n <Card>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div>\n <CardTitle>Queue: {queueName}</CardTitle>\n <CardDescription>Manage the {queueName} job queue and view all jobs.</CardDescription>\n </div>\n </div>\n {queue && <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => queue?.isPaused ? setResumeDialogOpen(true) : setPauseDialogOpen(true)}\n disabled={pausingQueue || resumingQueue}\n >\n {queue?.isPaused ? <Play className=\"mr-2 h-4 w-4\" /> : <Pause className=\"mr-2 h-4 w-4\" />}\n {queue?.isPaused ? \"Resume queue\" : \"Pause queue\"}\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setDrainDialogOpen(true)}\n disabled={drainingQueue}\n >\n <Droplet className=\"mr-2 h-4 w-4\" />\n Drain queue\n </Button>\n </div>}\n </div>\n </CardHeader>\n <CardContent className=\"space-y-6\">\n {/* Queue Stats - Compact Layout */}\n {queue && (\n <div className=\"flex items-center gap-8 p-4 bg-muted/50 rounded-lg\">\n <div className=\"flex items-center gap-2\">\n <div className=\"text-sm text-muted-foreground\">Status:</div>\n <div>\n {queue.isPaused ? (\n <Badge variant=\"outline\" className=\"bg-gray-100 text-gray-800\">\n Paused\n </Badge>\n ) : queue.isMaxed ? (\n <Badge variant=\"outline\" className=\"bg-red-100 text-red-800\">\n Maxed\n </Badge>\n ) : (\n <Badge variant=\"outline\" className=\"bg-green-100 text-green-800\">\n Active\n </Badge>\n )}\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <div className=\"text-sm text-muted-foreground\">Concurrency:</div>\n <div className=\"font-semibold\">{queue.concurrency}</div>\n </div>\n <div className=\"flex items-center gap-2\">\n <div className=\"text-sm text-muted-foreground\">Rate Limit:</div>\n <div className=\"font-semibold\">{queue.ratelimit || \"None\"}</div>\n </div>\n <Tabs value={status} onValueChange={(value) => setStatus(value as JobStatus)} className=\"w-auto\">\n <TabsList>\n <TabsTrigger value=\"active\" className=\"gap-1.5\">\n <span>Active</span>\n <Badge variant=\"secondary\" className=\"ml-1 bg-blue-100 text-blue-600 border-blue-200\">\n {queue.jobs?.active || 0}\n </Badge>\n </TabsTrigger>\n <TabsTrigger value=\"waiting\" className=\"gap-1.5\">\n <span>Waiting</span>\n <Badge variant=\"secondary\" className=\"ml-1 bg-yellow-100 text-yellow-600 border-yellow-200\">\n {queue.jobs?.waiting || 0}\n </Badge>\n </TabsTrigger>\n <TabsTrigger value=\"failed\" className=\"gap-1.5\">\n <span>Failed</span>\n <Badge variant=\"secondary\" className=\"ml-1 bg-red-100 text-red-600 border-red-200\">\n {queue.jobs?.failed || 0}\n </Badge>\n </TabsTrigger>\n <TabsTrigger value=\"completed\" className=\"gap-1.5\">\n <span>Completed</span>\n <Badge variant=\"secondary\" className=\"ml-1 bg-green-100 text-green-600 border-green-200\">\n {queue.jobs?.completed || 0}\n </Badge>\n </TabsTrigger>\n </TabsList>\n </Tabs>\n </div>\n )}\n\n {/* Jobs Table */}\n <div>\n <div className=\"mb-3 flex items-center justify-between gap-2\">\n <div>\n <h3 className=\"text-sm font-semibold\">Queue Jobs</h3>\n <p className=\"text-xs text-muted-foreground\">All jobs currently in the {queueName} queue</p>\n </div>\n <div className=\"flex items-center gap-2\">\n {selectedJobs.size > 0 && (\n <Button\n variant=\"destructive\"\n size=\"sm\"\n onClick={handleBulkDelete}\n disabled={deletingJob}\n >\n <Trash2 className=\"mr-2 h-4 w-4\" />\n Delete {selectedJobs.size} job{selectedJobs.size === 1 ? '' : 's'}\n </Button>\n )}\n <Badge variant=\"outline\">\n Auto Refresh: <Loader2 className=\"h-4 w-4 animate-spin text-muted-foreground ml-1\" />\n </Badge>\n </div>\n </div>\n <div className=\"border rounded-lg\">\n {loadingJobs ? (\n <div className=\"flex items-center justify-center py-8\">\n <Loader2 className=\"h-6 w-6 animate-spin\" />\n </div>\n ) : jobs.items?.length === 0 ? (\n <div className=\"text-center pt-8 text-muted-foreground\">\n No jobs in queue\n </div>\n ) : (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className=\"w-12\">\n <Checkbox\n checked={\n jobs.items.filter(job => job.state !== \"active\").length > 0 &&\n selectedJobs.size === jobs.items.filter(job => job.state !== \"active\").length\n }\n onCheckedChange={toggleAllJobs}\n aria-label=\"Select all jobs\"\n />\n </TableHead>\n <TableHead>Name</TableHead>\n <TableHead>State</TableHead>\n <TableHead>Timestamp</TableHead>\n <TableHead>Inputs</TableHead>\n <TableHead>Outputs</TableHead>\n <TableHead className=\"text-right\">Actions</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {jobs.items?.map((job, index) => (\n <TableRow key={index}>\n <TableCell>\n <Checkbox\n checked={selectedJobs.has(job.id)}\n onCheckedChange={() => toggleJobSelection(job.id)}\n disabled={job.state === \"active\"}\n aria-label={`Select job ${nameGenerator(job)}`}\n />\n </TableCell>\n <TableCell className=\"font-medium max-w-[200px] truncate\">\n {nameGenerator(job)}\n </TableCell>\n <TableCell>{getStatusBadge(job.state)}</TableCell>\n <TableCell>\n {job.timestamp ? format(new Date(job.timestamp), \"MMM d, yyyy HH:mm:ss\") : \"N/A\"}\n </TableCell>\n <TableCell>\n {job.data ? (\n <div className=\"text-xs max-w-[200px] truncate\">\n <TextPreview\n text={JSON.stringify(job.data)}\n />\n </div>\n ) : null}\n </TableCell>\n <TableCell>\n {job.failedReason ? (\n <div className=\"text-xs text-red-600 max-w-[200px] truncate\">\n <TextPreview\n text={\"Error: \" + job.failedReason}\n />\n </div>\n ) : (\n <div className=\"text-xs text-muted-foreground max-w-[200px] truncate\">\n <TextPreview\n text={JSON.stringify(job.returnvalue)}\n />\n </div>\n )}\n </TableCell>\n <TableCell className=\"text-right\">\n {job.state !== \"active\" && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => handleDeleteJob(job)}\n disabled={deletingJob}\n >\n <Trash2 className=\"h-4 w-4 text-red-600\" />\n </Button>\n )}\n {job.state === \"failed\" && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => handleRetryJob(job)}>\n <RefreshCcw className=\"h-4 w-4 text-blue-600\" />\n Retry\n </Button>\n )}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n )}\n\n <div className=\"flex items-center justify-between px-2 pb-2\">\n <div className=\"flex-1 text-sm text-muted-foreground\">\n ({jobs?.pageInfo?.itemCount || 0} total{\" \"}items).\n </div>\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <Button\n variant=\"outline\"\n className=\"hidden size-8 p-0 lg:flex\"\n onClick={() => {\n setPage(1);\n refetchJobs();\n }}\n disabled={!jobs?.pageInfo?.hasPreviousPage}\n >\n <span className=\"sr-only\">Go to first page</span>\n <DoubleArrowLeftIcon className=\"size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"size-8 p-0\"\n onClick={() => {\n console.log(\n \"itemsData.data?.pageInfo.hasPreviousPage\",\n jobs?.pageInfo?.hasPreviousPage,\n );\n setPage(jobs?.pageInfo?.hasPreviousPage ? jobs?.pageInfo?.currentPage - 1 : 1);\n refetchJobs();\n }}\n disabled={!jobs?.pageInfo?.hasPreviousPage}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"size-8 p-0\"\n onClick={() => {\n setPage(jobs?.pageInfo?.hasNextPage ? jobs?.pageInfo?.currentPage + 1 : 1);\n refetchJobs();\n }}\n disabled={!jobs?.pageInfo.hasNextPage}>\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n\n {/* Delete Job(s) Confirmation Dialog */}\n <AlertDialog open={jobsToDelete.length > 0} onOpenChange={(open) => !open && setJobsToDelete([])}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>\n {jobsToDelete.length === 1 ? \"Delete Job?\" : `Delete ${jobsToDelete.length} Jobs?`}\n </AlertDialogTitle>\n <AlertDialogDescription>\n {jobsToDelete.length === 1\n ? `Are you sure you want to delete the job \"${jobsToDelete[0]?.name}\"? This action cannot be undone.`\n : `Are you sure you want to delete ${jobsToDelete.length} jobs? This action cannot be undone.`\n }\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction onClick={confirmDeleteJobs} disabled={deletingJob}>\n {deletingJob && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n Delete\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n\n {/* Delete Job Confirmation Dialog */}\n <AlertDialog open={!!jobToRetry} onOpenChange={(open) => !open && setJobToRetry(null)}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Retry Job?</AlertDialogTitle>\n <AlertDialogDescription>\n Are you sure you want to retry the job \"{jobToRetry?.name}\"? This will schedule a new job with the same data.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction onClick={() => {\n if (!jobToRetry) {\n return;\n }\n retryJob(jobToRetry);\n }} disabled={deletingJob}>\n Retry\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n\n {/* Pause Queue Confirmation Dialog */}\n <AlertDialog open={pauseDialogOpen} onOpenChange={setPauseDialogOpen}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Pause Queue?</AlertDialogTitle>\n <AlertDialogDescription>\n Are you sure you want to pause the {queueName} queue? No jobs will be processed until the queue is resumed.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction onClick={handlePauseQueue} disabled={pausingQueue}>\n {pausingQueue && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n Pause Queue\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n\n {/* Resume Queue Confirmation Dialog */}\n <AlertDialog open={resumeDialogOpen} onOpenChange={setResumeDialogOpen}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Resume Queue?</AlertDialogTitle>\n <AlertDialogDescription>\n Are you sure you want to resume the {queueName} queue?.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction onClick={handleResumeQueue} disabled={resumingQueue}>\n {resumingQueue && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n Resume Queue\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n\n {/* Drain Queue Confirmation Dialog */}\n <AlertDialog open={drainDialogOpen} onOpenChange={setDrainDialogOpen}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Drain Queue?</AlertDialogTitle>\n <AlertDialogDescription>\n Are you sure you want to drain the {queueName} queue? This will remove all jobs that are waiting or delayed, but not active, waiting-children, completed or failed. This action cannot be undone.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={handleDrainQueue}\n disabled={drainingQueue}\n className=\"bg-destructive text-destructive-foreground hover:bg-destructive/90\"\n >\n {drainingQueue && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n Drain Queue\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </>\n );\n}\n","import babel from \"prettier/plugins/babel\";\nimport estree from \"prettier/plugins/estree\";\nimport prettier from \"prettier/standalone\";\nimport * as React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { Light as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport javascript from \"react-syntax-highlighter/dist/esm/languages/hljs/javascript\";\nimport json from \"react-syntax-highlighter/dist/esm/languages/hljs/json\";\nimport {\n a11yDark,\n dracula,\n} from \"react-syntax-highlighter/dist/esm/styles/prism\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { cn } from \"@/lib/utils\";\n\nSyntaxHighlighter.registerLanguage(\"json\", json);\nSyntaxHighlighter.registerLanguage(\"javascript\", javascript);\n\nexport function CodePreview({\n className = null,\n code: inputCode,\n language,\n slice = 200,\n }: {\n className?: string | null;\n code: string;\n language?: string;\n slice?: number | null;\n}) {\n const { toast } = useToast();\n const [code, setCode] = useState<string | null>(null);\n\n const format = async (code, language) => {\n if (typeof code !== \"string\") {\n code = JSON.stringify(code, null, 2);\n }\n const formattedCode = await prettier.format(code, {\n parser: language,\n plugins: [babel, estree],\n });\n setCode(formattedCode);\n };\n\n useEffect(() => {\n if (language === \"json\") {\n format(inputCode, \"json\");\n } else if (language === \"javascript\" || language === \"js\") {\n format(inputCode, \"babel\");\n } else {\n setCode(inputCode);\n }\n }, [inputCode, language]);\n\n return (\n <Dialog>\n <DialogTrigger asChild>\n {code?.length && (\n <SyntaxHighlighter\n className={cn(\"cursor-pointer\", className)}\n showLineNumbers={true}\n wrapLines={true}\n lineProps={{\n style: { wordBreak: \"break-all\", whiteSpace: \"pre-wrap\" },\n }}\n language={language ? language : \"plaintext\"}\n style={dracula}\n >\n {`${code?.slice(0, slice || 200)} ${code?.length > (slice || 200) ? \"...\" : \"\"}`}\n </SyntaxHighlighter>\n )}\n </DialogTrigger>\n <DialogContent className=\"sm:max-w-[800px] overflow-hidden max-h-[500px] overflow-y-scroll\">\n <DialogHeader>\n <DialogTitle>Code</DialogTitle>\n <div\n className=\"cursor-copy\"\n onClick={async () => {\n await navigator.clipboard.writeText(code ?? \"\");\n toast({ title: \"Copied to clipboard\" });\n }}\n >\n <SyntaxHighlighter\n className={cn(className)}\n showLineNumbers={true}\n wrapLines={true}\n lineProps={{\n style: { wordBreak: \"break-all\", whiteSpace: \"pre-wrap\" },\n }}\n language={language ? language : \"plaintext\"}\n style={dracula}\n >\n {code ?? \"\"}\n </SyntaxHighlighter>\n </div>\n </DialogHeader>\n </DialogContent>\n </Dialog>\n );\n}\n","\"use client\";\n\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"size-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n"],"names":["QueueManagement","param","queue","jobs","jobsToDelete","queueName","nameGenerator","retryJob","toast","useToast","pauseDialogOpen","setPauseDialogOpen","useState","drainDialogOpen","setDrainDialogOpen","resumeDialogOpen","setResumeDialogOpen","setJobsToDelete","jobToRetry","setJobToRetry","status","setStatus","page","setPage","limit","setLimit","selectedJobs","setSelectedJobs","Set","data","queueData","loading","loadingQueue","refetch","refetchQueue","useQuery","GET_QUEUE","variables","pollInterval","jobsData","loadingJobs","refetchJobs","networkStatus","jobsNetworkStatus","GET_JOBS","statusses","deleteJob","deletingJob","useMutation","DELETE_JOB","onError","title","description","error","message","variant","pauseQueue","pausingQueue","PAUSE_QUEUE","onCompleted","concat","resumeQueue","resumingQueue","RESUME_QUEUE","drainQueue","drainingQueue","DRAIN_QUEUE","handleDeleteJob","job","handleRetryJob","toggleJobSelection","newSelection","has","jobId","delete","add","confirmDeleteJobs","jobsWithoutId","filter","id","length","Promise","all","map","items","pageInfo","pageCount","itemCount","currentPage","hasPreviousPage","hasNextPage","getStatusBadge","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","Badge","className","statusColors","active","waiting","completed","failed","delayed","paused","state","div","Card","CardContent","Loader2","jsxs","Fragment","CardHeader","CardTitle","CardDescription","Button","size","onClick","isPaused","disabled","Play","Pause","Droplet","isMaxed","concurrency","ratelimit","Tabs","value","onValueChange","TabsList","TabsTrigger","span","h3","p","Trash2","Table","TableHeader","TableRow","TableHead","Checkbox","checked","onCheckedChange","selectableJobs","aria-label","TableBody","index","TableCell","timestamp","format","Date","TextPreview","text","JSON","stringify","failedReason","returnvalue","RefreshCcw","DoubleArrowLeftIcon","console","log","ChevronLeftIcon","ChevronRightIcon","AlertDialog","open","onOpenChange","AlertDialogContent","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","name","AlertDialogFooter","AlertDialogCancel","AlertDialogAction","CodePreview","code","inputCode","language","slice","setCode","prettier","parser","plugins","babel","estree","useEffect","Dialog","DialogTrigger","asChild","SyntaxHighlighter","cn","showLineNumbers","wrapLines","lineProps","style","wordBreak","whiteSpace","dracula","DialogContent","DialogHeader","DialogTitle","navigator","clipboard","writeText","registerLanguage","json","javascript","React","ref","props","CheckboxPrimitive","Check","displayName"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9621,7598,3619],{22252:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(39763).Z)("AlertCircle",[["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"}]])},32660:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(39763).Z)("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]])},55455:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(39763).Z)("Book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}]])},66901:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(39763).Z)("CheckCircle2",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},40875:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(39763).Z)("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},33245:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(39763).Z)("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]])},15863:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(39763).Z)("Loader2",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},53417:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(39763).Z)("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]])},45675:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(39763).Z)("Pencil",[["path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",key:"5qss01"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]])},52636:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(39763).Z)("RefreshCcw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]])},45131:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(39763).Z)("XCircle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]])},1119:function(e,t,n){n.d(t,{Z:function(){return r}});function r(){return(r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}},62484:function(e,t,n){n.d(t,{u:function(){return r}});function r(e,[t,n]){return Math.min(n,Math.max(t,e))}},23619:function(e,t,n){n.d(t,{aU:function(){return eM},$j:function(){return eN},VY:function(){return ex},dk:function(){return eR},aV:function(){return ew},h_:function(){return eT},fC:function(){return eb},Dx:function(){return eC},xz:function(){return eD}});var r=n(2265),o=n(73966),i=n(98575),a=n(6741),l=n(99255),u=n(80886),s=n(22308),c=n(99103),d=n(83832),f=n(71599),p=n(66840),m=n(86097),g=n(60703),v=n(5478),h=n(37053),y=n(57437),b="Dialog",[D,T]=(0,o.b)(b),[w,x]=D(b),M=e=>{let{__scopeDialog:t,children:n,open:o,defaultOpen:i,onOpenChange:a,modal:s=!0}=e,c=r.useRef(null),d=r.useRef(null),[f,p]=(0,u.T)({prop:o,defaultProp:null!=i&&i,onChange:a,caller:b});return(0,y.jsx)(w,{scope:t,triggerRef:c,contentRef:d,contentId:(0,l.M)(),titleId:(0,l.M)(),descriptionId:(0,l.M)(),open:f,onOpenChange:p,onOpenToggle:r.useCallback(()=>p(e=>!e),[p]),modal:s,children:n})};M.displayName=b;var N="DialogTrigger",C=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=x(N,n),l=(0,i.e)(t,o.triggerRef);return(0,y.jsx)(p.WV.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":q(o.open),...r,ref:l,onClick:(0,a.M)(e.onClick,o.onOpenToggle)})});C.displayName=N;var R="DialogPortal",[k,j]=D(R,{forceMount:void 0}),S=e=>{let{__scopeDialog:t,forceMount:n,children:o,container:i}=e,a=x(R,t);return(0,y.jsx)(k,{scope:t,forceMount:n,children:r.Children.map(o,e=>(0,y.jsx)(f.z,{present:n||a.open,children:(0,y.jsx)(d.h,{asChild:!0,container:i,children:e})}))})};S.displayName=R;var A="DialogOverlay",O=r.forwardRef((e,t)=>{let n=j(A,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=x(A,e.__scopeDialog);return i.modal?(0,y.jsx)(f.z,{present:r||i.open,children:(0,y.jsx)(I,{...o,ref:t})}):null});O.displayName=A;var E=(0,h.Z8)("DialogOverlay.RemoveScroll"),I=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=x(A,n);return(0,y.jsx)(g.Z,{as:E,allowPinchZoom:!0,shards:[o.contentRef],children:(0,y.jsx)(p.WV.div,{"data-state":q(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),F="DialogContent",Z=r.forwardRef((e,t)=>{let n=j(F,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=x(F,e.__scopeDialog);return(0,y.jsx)(f.z,{present:r||i.open,children:i.modal?(0,y.jsx)(_,{...o,ref:t}):(0,y.jsx)(P,{...o,ref:t})})});Z.displayName=F;var _=r.forwardRef((e,t)=>{let n=x(F,e.__scopeDialog),o=r.useRef(null),l=(0,i.e)(t,n.contentRef,o);return r.useEffect(()=>{let e=o.current;if(e)return(0,v.Ry)(e)},[]),(0,y.jsx)(z,{...e,ref:l,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,a.M)(e.onCloseAutoFocus,e=>{var t;e.preventDefault(),null===(t=n.triggerRef.current)||void 0===t||t.focus()}),onPointerDownOutside:(0,a.M)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;(2===t.button||n)&&e.preventDefault()}),onFocusOutside:(0,a.M)(e.onFocusOutside,e=>e.preventDefault())})}),P=r.forwardRef((e,t)=>{let n=x(F,e.__scopeDialog),o=r.useRef(!1),i=r.useRef(!1);return(0,y.jsx)(z,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var r,a;null===(r=e.onCloseAutoFocus)||void 0===r||r.call(e,t),t.defaultPrevented||(o.current||null===(a=n.triggerRef.current)||void 0===a||a.focus(),t.preventDefault()),o.current=!1,i.current=!1},onInteractOutside:t=>{var r,a;null===(r=e.onInteractOutside)||void 0===r||r.call(e,t),t.defaultPrevented||(o.current=!0,"pointerdown"!==t.detail.originalEvent.type||(i.current=!0));let l=t.target;(null===(a=n.triggerRef.current)||void 0===a?void 0:a.contains(l))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&i.current&&t.preventDefault()}})}),z=r.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:o,onOpenAutoFocus:a,onCloseAutoFocus:l,...u}=e,d=x(F,n),f=r.useRef(null),p=(0,i.e)(t,f);return(0,m.EW)(),(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(c.M,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:a,onUnmountAutoFocus:l,children:(0,y.jsx)(s.XB,{role:"dialog",id:d.contentId,"aria-describedby":d.descriptionId,"aria-labelledby":d.titleId,"data-state":q(d.open),...u,ref:p,onDismiss:()=>d.onOpenChange(!1)})}),(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(J,{titleId:d.titleId}),(0,y.jsx)(K,{contentRef:f,descriptionId:d.descriptionId})]})]})}),L="DialogTitle",H=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=x(L,n);return(0,y.jsx)(p.WV.h2,{id:o.titleId,...r,ref:t})});H.displayName=L;var Q="DialogDescription",B=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=x(Q,n);return(0,y.jsx)(p.WV.p,{id:o.descriptionId,...r,ref:t})});B.displayName=Q;var W="DialogClose",V=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=x(W,n);return(0,y.jsx)(p.WV.button,{type:"button",...r,ref:t,onClick:(0,a.M)(e.onClick,()=>o.onOpenChange(!1))})});function q(e){return e?"open":"closed"}V.displayName=W;var U="DialogTitleWarning",[X,Y]=(0,o.k)(U,{contentName:F,titleName:L,docsSlug:"dialog"}),J=e=>{let{titleId:t}=e,n=Y(U),o="`".concat(n.contentName,"` requires a `").concat(n.titleName,"` for the component to be accessible for screen reader users.\n\nIf you want to hide the `").concat(n.titleName,"`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/").concat(n.docsSlug);return r.useEffect(()=>{t&&!document.getElementById(t)&&console.error(o)},[o,t]),null},K=e=>{let{contentRef:t,descriptionId:n}=e,o=Y("DialogDescriptionWarning"),i="Warning: Missing `Description` or `aria-describedby={undefined}` for {".concat(o.contentName,"}.");return r.useEffect(()=>{var e;let r=null===(e=t.current)||void 0===e?void 0:e.getAttribute("aria-describedby");n&&r&&!document.getElementById(n)&&console.warn(i)},[i,t,n]),null},$="AlertDialog",[G,ee]=(0,o.b)($,[T]),et=T(),en=e=>{let{__scopeAlertDialog:t,...n}=e,r=et(t);return(0,y.jsx)(M,{...r,...n,modal:!0})};en.displayName=$;var er=r.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,o=et(n);return(0,y.jsx)(C,{...o,...r,ref:t})});er.displayName="AlertDialogTrigger";var eo=e=>{let{__scopeAlertDialog:t,...n}=e,r=et(t);return(0,y.jsx)(S,{...r,...n})};eo.displayName="AlertDialogPortal";var ei=r.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,o=et(n);return(0,y.jsx)(O,{...o,...r,ref:t})});ei.displayName="AlertDialogOverlay";var ea="AlertDialogContent",[el,eu]=G(ea),es=(0,h.sA)("AlertDialogContent"),ec=r.forwardRef((e,t)=>{let{__scopeAlertDialog:n,children:o,...l}=e,u=et(n),s=r.useRef(null),c=(0,i.e)(t,s),d=r.useRef(null);return(0,y.jsx)(X,{contentName:ea,titleName:ed,docsSlug:"alert-dialog",children:(0,y.jsx)(el,{scope:n,cancelRef:d,children:(0,y.jsxs)(Z,{role:"alertdialog",...u,...l,ref:c,onOpenAutoFocus:(0,a.M)(l.onOpenAutoFocus,e=>{var t;e.preventDefault(),null===(t=d.current)||void 0===t||t.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,y.jsx)(es,{children:o}),(0,y.jsx)(ey,{contentRef:s})]})})})});ec.displayName=ea;var ed="AlertDialogTitle",ef=r.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,o=et(n);return(0,y.jsx)(H,{...o,...r,ref:t})});ef.displayName=ed;var ep="AlertDialogDescription",em=r.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,o=et(n);return(0,y.jsx)(B,{...o,...r,ref:t})});em.displayName=ep;var eg=r.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,o=et(n);return(0,y.jsx)(V,{...o,...r,ref:t})});eg.displayName="AlertDialogAction";var ev="AlertDialogCancel",eh=r.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,{cancelRef:o}=eu(ev,n),a=et(n),l=(0,i.e)(t,o);return(0,y.jsx)(V,{...a,...r,ref:l})});eh.displayName=ev;var ey=e=>{let{contentRef:t}=e,n="`".concat(ea,"` requires a description for the component to be accessible for screen reader users.\n\nYou can add a description to the `").concat(ea,"` by passing a `").concat(ep,"` component as a child, which also benefits sighted users by adding visible context to the dialog.\n\nAlternatively, you can use your own component as a description by assigning it an `id` and passing the same value to the `aria-describedby` prop in `").concat(ea,"`. If the description is confusing or duplicative for sighted users, you can use the `@radix-ui/react-visually-hidden` primitive as a wrapper around your description component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/alert-dialog");return r.useEffect(()=>{var e;document.getElementById(null===(e=t.current)||void 0===e?void 0:e.getAttribute("aria-describedby"))||console.warn(n)},[n,t]),null},eb=en,eD=er,eT=eo,ew=ei,ex=ec,eM=eg,eN=eh,eC=ef,eR=em},88985:function(e,t,n){n.d(t,{zF:function(){return y},Fw:function(){return w},wy:function(){return D},fC:function(){return N}});var r=n(2265);"undefined"!=typeof window&&window.document&&window.document.createElement;var o=n(73966),i=n(80886),a=n(61188),l=n(98575),u=n(66840),s=e=>{var t,n;let o,i;let{present:u,children:s}=e,d=function(e){var t,n;let[o,i]=r.useState(),l=r.useRef(null),u=r.useRef(e),s=r.useRef("none"),[d,f]=(t=e?"mounted":"unmounted",n={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},r.useReducer((e,t)=>{let r=n[e][t];return null!=r?r:e},t));return r.useEffect(()=>{let e=c(l.current);s.current="mounted"===d?e:"none"},[d]),(0,a.b)(()=>{let t=l.current,n=u.current;if(n!==e){let r=s.current,o=c(t);e?f("MOUNT"):"none"===o||(null==t?void 0:t.display)==="none"?f("UNMOUNT"):n&&r!==o?f("ANIMATION_OUT"):f("UNMOUNT"),u.current=e}},[e,f]),(0,a.b)(()=>{if(o){var e;let t;let n=null!==(e=o.ownerDocument.defaultView)&&void 0!==e?e:window,r=e=>{let r=c(l.current).includes(CSS.escape(e.animationName));if(e.target===o&&r&&(f("ANIMATION_END"),!u.current)){let e=o.style.animationFillMode;o.style.animationFillMode="forwards",t=n.setTimeout(()=>{"forwards"===o.style.animationFillMode&&(o.style.animationFillMode=e)})}},i=e=>{e.target===o&&(s.current=c(l.current))};return o.addEventListener("animationstart",i),o.addEventListener("animationcancel",r),o.addEventListener("animationend",r),()=>{n.clearTimeout(t),o.removeEventListener("animationstart",i),o.removeEventListener("animationcancel",r),o.removeEventListener("animationend",r)}}f("ANIMATION_END")},[o,f]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:r.useCallback(e=>{l.current=e?getComputedStyle(e):null,i(e)},[])}}(u),f="function"==typeof s?s({present:d.isPresent}):r.Children.only(s),p=(0,l.e)(d.ref,(o=null===(t=Object.getOwnPropertyDescriptor(f.props,"ref"))||void 0===t?void 0:t.get)&&"isReactWarning"in o&&o.isReactWarning?f.ref:(o=null===(n=Object.getOwnPropertyDescriptor(f,"ref"))||void 0===n?void 0:n.get)&&"isReactWarning"in o&&o.isReactWarning?f.props.ref:f.props.ref||f.ref);return"function"==typeof s||d.isPresent?r.cloneElement(f,{ref:p}):null};function c(e){return(null==e?void 0:e.animationName)||"none"}s.displayName="Presence";var d=n(99255),f=n(57437),p="Collapsible",[m,g]=(0,o.b)(p),[v,h]=m(p),y=r.forwardRef((e,t)=>{let{__scopeCollapsible:n,open:o,defaultOpen:a,disabled:l,onOpenChange:s,...c}=e,[m,g]=(0,i.T)({prop:o,defaultProp:null!=a&&a,onChange:s,caller:p});return(0,f.jsx)(v,{scope:n,disabled:l,contentId:(0,d.M)(),open:m,onOpenToggle:r.useCallback(()=>g(e=>!e),[g]),children:(0,f.jsx)(u.WV.div,{"data-state":M(m),"data-disabled":l?"":void 0,...c,ref:t})})});y.displayName=p;var b="CollapsibleTrigger",D=r.forwardRef((e,t)=>{let{__scopeCollapsible:n,...r}=e,o=h(b,n);return(0,f.jsx)(u.WV.button,{type:"button","aria-controls":o.contentId,"aria-expanded":o.open||!1,"data-state":M(o.open),"data-disabled":o.disabled?"":void 0,disabled:o.disabled,...r,ref:t,onClick:function(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),!1===n||!r.defaultPrevented)return t?.(r)}}(e.onClick,o.onOpenToggle)})});D.displayName=b;var T="CollapsibleContent",w=r.forwardRef((e,t)=>{let{forceMount:n,...r}=e,o=h(T,e.__scopeCollapsible);return(0,f.jsx)(s,{present:n||o.open,children:e=>{let{present:n}=e;return(0,f.jsx)(x,{...r,ref:t,present:n})}})});w.displayName=T;var x=r.forwardRef((e,t)=>{let{__scopeCollapsible:n,present:o,children:i,...s}=e,c=h(T,n),[d,p]=r.useState(o),m=r.useRef(null),g=(0,l.e)(t,m),v=r.useRef(0),y=v.current,b=r.useRef(0),D=b.current,w=c.open||d,x=r.useRef(w),N=r.useRef(void 0);return r.useEffect(()=>{let e=requestAnimationFrame(()=>x.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,a.b)(()=>{let e=m.current;if(e){N.current=N.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let t=e.getBoundingClientRect();v.current=t.height,b.current=t.width,x.current||(e.style.transitionDuration=N.current.transitionDuration,e.style.animationName=N.current.animationName),p(o)}},[c.open,o]),(0,f.jsx)(u.WV.div,{"data-state":M(c.open),"data-disabled":c.disabled?"":void 0,id:c.contentId,hidden:!w,...s,ref:g,style:{"--radix-collapsible-content-height":y?"".concat(y,"px"):void 0,"--radix-collapsible-content-width":D?"".concat(D,"px"):void 0,...e.style},children:w&&i})});function M(e){return e?"open":"closed"}var N=y},81363:function(e,t,n){n.d(t,{T:function(){return o}});var r=n(99649);function o(e,t){let n=(0,r.Q)(e),o=(0,r.Q)(t);return 12*(n.getFullYear()-o.getFullYear())+(n.getMonth()-o.getMonth())}},27742:function(e,t,n){n.d(t,{V:function(){return o}});var r=n(99649);function o(e){let t=(0,r.Q)(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(23,59,59,999),t}},7598:function(e,t,n){n.d(t,{Q:function(){return f}});var r=n(63497),o=n(99649);function i(e,t){let n=(0,o.Q)(e),r=(0,o.Q)(t),i=n.getTime()-r.getTime();return i<0?-1:i>0?1:i}var a=n(78198),l=n(81363),u=n(27742),s=n(5654),c=n(55528),d=n(9340);function f(e,t){return function(e,t,n){var r,f,p,m,g,v;let h,y,b;let D=(0,c.j)(),T=null!==(f=null!==(r=null==n?void 0:n.locale)&&void 0!==r?r:D.locale)&&void 0!==f?f:s._,w=i(e,t);if(isNaN(w))throw RangeError("Invalid time value");let x=Object.assign({},n,{addSuffix:null==n?void 0:n.addSuffix,comparison:w});w>0?(h=(0,o.Q)(t),y=(0,o.Q)(e)):(h=(0,o.Q)(e),y=(0,o.Q)(t));let M=(p=y,m=h,(v=null==void 0?void 0:(void 0).roundingMethod,e=>{let t=(v?Math[v]:Math.trunc)(e);return 0===t?0:t})((+(0,o.Q)(p)-+(0,o.Q)(m))/1e3)),N=Math.round((M-((0,d.D)(y)-(0,d.D)(h))/1e3)/60);if(N<2){if(null==n?void 0:n.includeSeconds){if(M<5)return T.formatDistance("lessThanXSeconds",5,x);if(M<10)return T.formatDistance("lessThanXSeconds",10,x);if(M<20)return T.formatDistance("lessThanXSeconds",20,x);if(M<40)return T.formatDistance("halfAMinute",0,x);else if(M<60)return T.formatDistance("lessThanXMinutes",1,x);else return T.formatDistance("xMinutes",1,x)}return 0===N?T.formatDistance("lessThanXMinutes",1,x):T.formatDistance("xMinutes",N,x)}if(N<45)return T.formatDistance("xMinutes",N,x);if(N<90)return T.formatDistance("aboutXHours",1,x);if(N<a.H_)return T.formatDistance("aboutXHours",Math.round(N/60),x);if(N<2520)return T.formatDistance("xDays",1,x);if(N<a.fH){let e=Math.round(N/a.H_);return T.formatDistance("xDays",e,x)}if(N<2*a.fH)return b=Math.round(N/a.fH),T.formatDistance("aboutXMonths",b,x);if((b=function(e,t){let n;let r=(0,o.Q)(e),a=(0,o.Q)(t),s=i(r,a),c=Math.abs((0,l.T)(r,a));if(c<1)n=0;else{1===r.getMonth()&&r.getDate()>27&&r.setDate(30),r.setMonth(r.getMonth()-s*c);let t=i(r,a)===-s;(function(e){let t=(0,o.Q)(e);return+function(e){let t=(0,o.Q)(e);return t.setHours(23,59,59,999),t}(t)==+(0,u.V)(t)})((0,o.Q)(e))&&1===c&&1===i(e,a)&&(t=!1),n=s*(c-Number(t))}return 0===n?0:n}(y,h))<12){let e=Math.round(N/a.fH);return T.formatDistance("xMonths",e,x)}{let e=b%12,t=Math.trunc(b/12);return e<3?T.formatDistance("aboutXYears",t,x):e<9?T.formatDistance("overXYears",t,x):T.formatDistance("almostXYears",t+1,x)}}(e,(0,r.L)(e,Date.now()),t)}},20460:function(e,t,n){n.d(t,{h:function(){return m}});var r=n(57437),o=n(2265);let i={damping:.7,stiffness:.05,mass:1.25},a=1e3/60,l=!1;globalThis.document?.addEventListener("mousedown",()=>{l=!0}),globalThis.document?.addEventListener("mouseup",()=>{l=!1}),globalThis.document?.addEventListener("click",()=>{l=!1});let u=(e={})=>{let[t,n]=(0,o.useState)(!1),[r,i]=(0,o.useState)(!1!==e.initial),[u,c]=(0,o.useState)(!1),f=(0,o.useRef)(null);f.current=e;let p=(0,o.useCallback)(()=>{if(!l)return!1;let e=window.getSelection();if(!e||!e.rangeCount)return!1;let t=e.getRangeAt(0);return t.commonAncestorContainer.contains(T.current)||T.current?.contains(t.commonAncestorContainer)},[]),m=(0,o.useCallback)(e=>{v.isAtBottom=e,i(e)},[]),g=(0,o.useCallback)(e=>{v.escapedFromLock=e,n(e)},[]),v=(0,o.useMemo)(()=>{let n;return{escapedFromLock:t,isAtBottom:r,resizeDifference:0,accumulated:0,velocity:0,listeners:new Set,get scrollTop(){return T.current?.scrollTop??0},set scrollTop(scrollTop){T.current&&(T.current.scrollTop=scrollTop,v.ignoreScrollToTop=T.current.scrollTop)},get targetScrollTop(){if(!T.current||!w.current)return 0;return T.current.scrollHeight-1-T.current.clientHeight},get calculatedTargetScrollTop(){if(!T.current||!w.current)return 0;let{targetScrollTop:t}=this;if(!e.targetScrollTop)return t;if(n?.targetScrollTop===t)return n.calculatedScrollTop;let r=Math.max(Math.min(e.targetScrollTop(t,{scrollElement:T.current,contentElement:w.current}),t),0);return n={targetScrollTop:t,calculatedScrollTop:r},requestAnimationFrame(()=>{n=void 0}),r},get scrollDifference(){return this.calculatedTargetScrollTop-this.scrollTop},get isNearBottom(){return this.scrollDifference<=70}}},[]),h=(0,o.useCallback)((e={})=>{let t;"string"==typeof e&&(e={animation:e}),e.preserveScrollPosition||m(!0);let n=Date.now()+(Number(e.wait)||0),r=d(f.current,e.animation),{ignoreEscapes:o=!1}=e,i=v.calculatedTargetScrollTop;e.duration instanceof Promise?e.duration.finally(()=>{t=Date.now()}):t=n+(e.duration??0);let l=async()=>{let e=new Promise(requestAnimationFrame).then(()=>{if(!v.isAtBottom)return v.animation=void 0,!1;let{scrollTop:u}=v,s=performance.now(),c=(s-(v.lastTick??s))/a;if(v.animation||(v.animation={behavior:r,promise:e,ignoreEscapes:o}),v.animation.behavior===r&&(v.lastTick=s),p()||n>Date.now())return l();if(u<Math.min(i,v.calculatedTargetScrollTop)){if(v.animation?.behavior===r){if("instant"===r)return v.scrollTop=v.calculatedTargetScrollTop,l();v.velocity=(r.damping*v.velocity+r.stiffness*v.scrollDifference)/r.mass,v.accumulated+=v.velocity*c,v.scrollTop+=v.accumulated,v.scrollTop!==u&&(v.accumulated=0)}return l()}return t>Date.now()?(i=v.calculatedTargetScrollTop,l()):(v.animation=void 0,v.scrollTop<v.calculatedTargetScrollTop)?h({animation:d(f.current,f.current.resize),ignoreEscapes:o,duration:Math.max(0,t-Date.now())||void 0}):v.isAtBottom});return e.then(e=>(requestAnimationFrame(()=>{v.animation||(v.lastTick=void 0,v.velocity=0)}),e))};return(!0!==e.wait&&(v.animation=void 0),v.animation?.behavior===r)?v.animation.promise:l()},[m,p,v]),y=(0,o.useCallback)(()=>{g(!0),m(!1)},[g,m]),b=(0,o.useCallback)(({target:e})=>{if(e!==T.current)return;let{scrollTop:t,ignoreScrollToTop:n}=v,{lastScrollTop:r=t}=v;v.lastScrollTop=t,v.ignoreScrollToTop=void 0,n&&n>t&&(r=n),c(v.isNearBottom),setTimeout(()=>{if(v.resizeDifference||t===n)return;if(p()){g(!0),m(!1);return}let e=t>r,o=t<r;if(v.animation?.ignoreEscapes){v.scrollTop=r;return}o&&(g(!0),m(!1)),e&&g(!1),!v.escapedFromLock&&v.isNearBottom&&m(!0)},1)},[g,m,p,v]),D=(0,o.useCallback)(({target:e,deltaY:t})=>{let n=e;for(;!["scroll","auto"].includes(getComputedStyle(n).overflow);){if(!n.parentElement)return;n=n.parentElement}n===T.current&&t<0&&T.current.scrollHeight>T.current.clientHeight&&!v.animation?.ignoreEscapes&&(g(!0),m(!1))},[g,m,v]),T=s(e=>{T.current?.removeEventListener("scroll",b),T.current?.removeEventListener("wheel",D),e?.addEventListener("scroll",b,{passive:!0}),e?.addEventListener("wheel",D,{passive:!0})},[]),w=s(e=>{let t;v.resizeObserver?.disconnect(),e&&(v.resizeObserver=new ResizeObserver(([e])=>{let{height:n}=e.contentRect,r=n-(t??n);if(v.resizeDifference=r,v.scrollTop>v.targetScrollTop&&(v.scrollTop=v.targetScrollTop),c(v.isNearBottom),r>=0){let e=d(f.current,t?f.current.resize:f.current.initial);h({animation:e,wait:!0,preserveScrollPosition:!0,duration:"instant"===e?void 0:350})}else v.isNearBottom&&(g(!1),m(!0));t=n,requestAnimationFrame(()=>{setTimeout(()=>{v.resizeDifference===r&&(v.resizeDifference=0)},1)})}),v.resizeObserver?.observe(e))},[]);return{contentRef:w,scrollRef:T,scrollToBottom:h,stopScroll:y,isAtBottom:r||u,isNearBottom:u,escapedFromLock:t,state:v}};function s(e,t){let n=(0,o.useCallback)(t=>(n.current=t,e(t)),t);return n}let c=new Map;function d(...e){let t={...i},n=!1;for(let r of e){if("instant"===r){n=!0;continue}"object"==typeof r&&(n=!1,t.damping=r.damping??t.damping,t.stiffness=r.stiffness??t.stiffness,t.mass=r.mass??t.mass)}let r=JSON.stringify(t);return c.has(r)||c.set(r,Object.freeze(t)),n?"instant":c.get(r)}let f=(0,o.createContext)(null),p="undefined"!=typeof window?o.useLayoutEffect:o.useEffect;function m({instance:e,children:t,resize:n,initial:i,mass:a,damping:l,stiffness:s,targetScrollTop:c,contextRef:d,...m}){let g=(0,o.useRef)(null),v=u({mass:a,damping:l,stiffness:s,resize:n,initial:i,targetScrollTop:o.useCallback((e,t)=>{let n=M?.targetScrollTop??c;return n?.(e,t)??e},[c])}),{scrollRef:h,contentRef:y,scrollToBottom:b,stopScroll:D,isAtBottom:T,escapedFromLock:w,state:x}=e??v,M=(0,o.useMemo)(()=>({scrollToBottom:b,stopScroll:D,scrollRef:h,isAtBottom:T,escapedFromLock:w,contentRef:y,state:x,get targetScrollTop(){return g.current},set targetScrollTop(targetScrollTop){g.current=targetScrollTop}}),[b,T,y,h,D,w,x]);return(0,o.useImperativeHandle)(d,()=>M,[M]),p(()=>{h.current&&"visible"===getComputedStyle(h.current).overflow&&(h.current.style.overflow="auto")},[]),(0,r.jsx)(f.Provider,{value:M,children:(0,r.jsx)("div",{...m,children:"function"==typeof t?t(M):t})})}(m||(m={})).Content=function({children:e,...t}){let n=function(){let e=(0,o.useContext)(f);if(!e)throw Error("use-stick-to-bottom component context must be used within a StickToBottom component");return e}();return(0,r.jsx)("div",{ref:n.scrollRef,style:{height:"100%",width:"100%"},children:(0,r.jsx)("div",{...t,ref:n.contentRef,children:"function"==typeof e?e(n):e})})}}}]);
|
|
2
|
-
//# sourceMappingURL=9621-f81c4d7c0ecf5a67.js.map
|