@flexkit/studio 0.2.32 → 0.2.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/activity-nav-button-ZHQOZBCC.js +2 -0
  2. package/dist/{activity-nav-button-E4I4YC3X.js.map → activity-nav-button-ZHQOZBCC.js.map} +1 -1
  3. package/dist/astro.js +1 -1
  4. package/dist/chat-page-7XT4K75G.js +4 -0
  5. package/dist/chat-page-7XT4K75G.js.map +1 -0
  6. package/dist/chunk-2FCVATRT.js +4 -0
  7. package/dist/{chunk-R2O4WC3H.js.map → chunk-2FCVATRT.js.map} +1 -1
  8. package/dist/{chunk-ERCVR23U.js → chunk-36DLIVZF.js} +2 -2
  9. package/dist/{chunk-ERCVR23U.js.map → chunk-36DLIVZF.js.map} +1 -1
  10. package/dist/{chunk-ONB3FWK5.js → chunk-3OBELKJU.js} +2 -2
  11. package/dist/{chunk-ONB3FWK5.js.map → chunk-3OBELKJU.js.map} +1 -1
  12. package/dist/chunk-4ZWQ44NZ.js +2 -0
  13. package/dist/{chunk-2NXQF2F7.js.map → chunk-4ZWQ44NZ.js.map} +1 -1
  14. package/dist/chunk-5JUG4BEF.js +2 -0
  15. package/dist/chunk-5JUG4BEF.js.map +1 -0
  16. package/dist/{chunk-XV7U33XQ.js → chunk-6AJRQSFO.js} +3 -3
  17. package/dist/{chunk-XV7U33XQ.js.map → chunk-6AJRQSFO.js.map} +1 -1
  18. package/dist/chunk-7JA6SI5H.js +2 -0
  19. package/dist/{chunk-5AJXR47U.js.map → chunk-7JA6SI5H.js.map} +1 -1
  20. package/dist/{chunk-SZEGGBOC.js → chunk-A4DPLZZF.js} +2 -2
  21. package/dist/{chunk-SZEGGBOC.js.map → chunk-A4DPLZZF.js.map} +1 -1
  22. package/dist/{chunk-C4XLDODU.js → chunk-C2KPTRYM.js} +3 -1
  23. package/dist/{chunk-GSGPULRL.js → chunk-CHNQZU2P.js} +2 -2
  24. package/dist/{chunk-GSGPULRL.js.map → chunk-CHNQZU2P.js.map} +1 -1
  25. package/dist/chunk-DFBG7PUJ.js +10 -0
  26. package/dist/{chunk-JAPZBEBZ.js.map → chunk-DFBG7PUJ.js.map} +1 -1
  27. package/dist/{chunk-V7C4EHK3.js → chunk-DSLPTDZX.js} +2 -2
  28. package/dist/{chunk-V7C4EHK3.js.map → chunk-DSLPTDZX.js.map} +1 -1
  29. package/dist/{chunk-EMFHKTAV.js → chunk-EUWIIL3X.js} +2 -2
  30. package/dist/{chunk-EMFHKTAV.js.map → chunk-EUWIIL3X.js.map} +1 -1
  31. package/dist/chunk-G5N6HEPW.js +2 -0
  32. package/dist/chunk-G5N6HEPW.js.map +1 -0
  33. package/dist/chunk-HR4QZ5TD.js +3 -0
  34. package/dist/chunk-HR4QZ5TD.js.map +1 -0
  35. package/dist/chunk-KO2JLLUJ.js +2 -0
  36. package/dist/chunk-KO2JLLUJ.js.map +1 -0
  37. package/dist/chunk-MBBE4RND.js +3 -0
  38. package/dist/chunk-MBBE4RND.js.map +1 -0
  39. package/dist/{chunk-USNXQOMJ.js → chunk-N33S7BSG.js} +2 -2
  40. package/dist/{chunk-USNXQOMJ.js.map → chunk-N33S7BSG.js.map} +1 -1
  41. package/dist/{chunk-KN7OJFEX.js → chunk-N52JTYBJ.js} +2 -2
  42. package/dist/{chunk-KN7OJFEX.js.map → chunk-N52JTYBJ.js.map} +1 -1
  43. package/dist/{chunk-KR27GOH6.js → chunk-PC5Z37LT.js} +3 -3
  44. package/dist/{chunk-KR27GOH6.js.map → chunk-PC5Z37LT.js.map} +1 -1
  45. package/dist/{chunk-2NQ2RZ2M.js → chunk-PSECMZJC.js} +3 -3
  46. package/dist/{chunk-2NQ2RZ2M.js.map → chunk-PSECMZJC.js.map} +1 -1
  47. package/dist/chunk-RBGXXVF4.js +7 -0
  48. package/dist/{chunk-NNISUDZX.js.map → chunk-RBGXXVF4.js.map} +1 -1
  49. package/dist/chunk-RULCANNM.js +7 -0
  50. package/dist/chunk-RULCANNM.js.map +1 -0
  51. package/dist/chunk-S7Z6KKIN.js +2 -0
  52. package/dist/chunk-S7Z6KKIN.js.map +1 -0
  53. package/dist/{chunk-AY2RXJWS.js → chunk-U6NFYYTF.js} +2 -2
  54. package/dist/{chunk-AY2RXJWS.js.map → chunk-U6NFYYTF.js.map} +1 -1
  55. package/dist/chunk-VFV44YZB.js +2 -0
  56. package/dist/{chunk-54AXLGAK.js.map → chunk-VFV44YZB.js.map} +1 -1
  57. package/dist/chunk-VRDTHLA3.js +3 -0
  58. package/dist/chunk-VRDTHLA3.js.map +1 -0
  59. package/dist/chunk-WU2KCXBC.js +2 -0
  60. package/dist/{chunk-5LGIALCK.js.map → chunk-WU2KCXBC.js.map} +1 -1
  61. package/dist/chunk-X3SHNHHM.js +2 -0
  62. package/dist/chunk-X3SHNHHM.js.map +1 -0
  63. package/dist/chunk-XYFS6X74.js +2 -0
  64. package/dist/{chunk-JWJJZVP3.js.map → chunk-XYFS6X74.js.map} +1 -1
  65. package/dist/chunk-YC7PBLTK.js +2 -0
  66. package/dist/{chunk-MRHZN4G4.js.map → chunk-YC7PBLTK.js.map} +1 -1
  67. package/dist/electron.js +1 -1
  68. package/dist/{entry-CA2QAEHN.js → entry-APJ4V7PW.js} +2 -2
  69. package/dist/{entry-CA2QAEHN.js.map → entry-APJ4V7PW.js.map} +1 -1
  70. package/dist/index.css +43 -0
  71. package/dist/index.d.ts +10 -1
  72. package/dist/index.js +8 -8
  73. package/dist/index.js.map +1 -1
  74. package/dist/list-7IHDJM54.js +3 -0
  75. package/dist/{list-Q2KAEJ26.js.map → list-7IHDJM54.js.map} +1 -1
  76. package/dist/list-7WFALOUT.js +2 -0
  77. package/dist/{list-UMMVRYVD.js.map → list-7WFALOUT.js.map} +1 -1
  78. package/dist/nextjs.js +1 -1
  79. package/dist/pages-BV3ABSFQ.js +5 -0
  80. package/dist/{pages-KZ66JVNU.js.map → pages-BV3ABSFQ.js.map} +1 -1
  81. package/dist/plugin-pages-OWGJPPWV.js +2 -0
  82. package/dist/{plugin-pages-SR2WSUKZ.js.map → plugin-pages-OWGJPPWV.js.map} +1 -1
  83. package/dist/project-selector-V5N2724B.js +2 -0
  84. package/dist/project-selector-V5N2724B.js.map +1 -0
  85. package/dist/record-links-3P3XSW66.js +2 -0
  86. package/dist/{record-links-3WZGSVFU.js.map → record-links-3P3XSW66.js.map} +1 -1
  87. package/dist/root-F2GTYDJM.js +2 -0
  88. package/dist/{root-6QTQUYK4.js.map → root-F2GTYDJM.js.map} +1 -1
  89. package/dist/root-GBBZ3DX5.js +31 -0
  90. package/dist/{root-7BUVDOMV.js.map → root-GBBZ3DX5.js.map} +1 -1
  91. package/dist/root-J62PBDZ2.js +2 -0
  92. package/dist/{root-2VBLPRG7.js.map → root-J62PBDZ2.js.map} +1 -1
  93. package/dist/root-LYRL7VPN.js +14 -0
  94. package/dist/{root-LFJ5BQSY.js.map → root-LYRL7VPN.js.map} +1 -1
  95. package/dist/root-NIL2UHKS.js +2 -0
  96. package/dist/{root-OXS3QQX6.js.map → root-NIL2UHKS.js.map} +1 -1
  97. package/dist/root-RGZZYETM.js +23 -0
  98. package/dist/{root-FZLKYL5W.js.map → root-RGZZYETM.js.map} +1 -1
  99. package/dist/search-IIGNCQEZ.js +2 -0
  100. package/dist/{search-AZK3Q2KX.js.map → search-IIGNCQEZ.js.map} +1 -1
  101. package/dist/skills-pages-T52MF4DO.js +2 -0
  102. package/dist/{skills-pages-7IYBJ4QI.js.map → skills-pages-T52MF4DO.js.map} +1 -1
  103. package/dist/source-IJAAJDGW.js +2 -0
  104. package/dist/{source-4BP5PJ2N.js.map → source-IJAAJDGW.js.map} +1 -1
  105. package/dist/spec-renderer-Z6GVHLFU.js +2 -0
  106. package/dist/{spec-renderer-3GAVSV52.js.map → spec-renderer-Z6GVHLFU.js.map} +1 -1
  107. package/dist/tanstack-start.js +1 -1
  108. package/dist/ui.js +1 -1
  109. package/dist/user-nav-ZH63YHX7.js +2 -0
  110. package/dist/{user-nav-OWTTAXZS.js.map → user-nav-ZH63YHX7.js.map} +1 -1
  111. package/package.json +2 -2
  112. package/dist/activity-nav-button-E4I4YC3X.js +0 -2
  113. package/dist/chat-page-7UB3BMBF.js +0 -4
  114. package/dist/chat-page-7UB3BMBF.js.map +0 -1
  115. package/dist/chunk-2NXQF2F7.js +0 -2
  116. package/dist/chunk-32ZU4MLE.js +0 -2
  117. package/dist/chunk-32ZU4MLE.js.map +0 -1
  118. package/dist/chunk-54AXLGAK.js +0 -2
  119. package/dist/chunk-5AJXR47U.js +0 -2
  120. package/dist/chunk-5LGIALCK.js +0 -2
  121. package/dist/chunk-6NRQMG26.js +0 -2
  122. package/dist/chunk-6NRQMG26.js.map +0 -1
  123. package/dist/chunk-AKQ6ELDX.js +0 -2
  124. package/dist/chunk-AKQ6ELDX.js.map +0 -1
  125. package/dist/chunk-DGIY4SKN.js +0 -7
  126. package/dist/chunk-DGIY4SKN.js.map +0 -1
  127. package/dist/chunk-HDOIOXMP.js +0 -2
  128. package/dist/chunk-HDOIOXMP.js.map +0 -1
  129. package/dist/chunk-HZOD2HOF.js +0 -3
  130. package/dist/chunk-HZOD2HOF.js.map +0 -1
  131. package/dist/chunk-JAPZBEBZ.js +0 -10
  132. package/dist/chunk-JWJJZVP3.js +0 -2
  133. package/dist/chunk-MRHZN4G4.js +0 -2
  134. package/dist/chunk-NNISUDZX.js +0 -7
  135. package/dist/chunk-O2QMYUPS.js +0 -2
  136. package/dist/chunk-O2QMYUPS.js.map +0 -1
  137. package/dist/chunk-R2O4WC3H.js +0 -4
  138. package/dist/chunk-WPCPL2TQ.js +0 -3
  139. package/dist/chunk-WPCPL2TQ.js.map +0 -1
  140. package/dist/list-Q2KAEJ26.js +0 -3
  141. package/dist/list-UMMVRYVD.js +0 -2
  142. package/dist/pages-KZ66JVNU.js +0 -5
  143. package/dist/plugin-pages-SR2WSUKZ.js +0 -2
  144. package/dist/project-selector-72VM6SUI.js +0 -2
  145. package/dist/project-selector-72VM6SUI.js.map +0 -1
  146. package/dist/record-links-3WZGSVFU.js +0 -2
  147. package/dist/root-2VBLPRG7.js +0 -2
  148. package/dist/root-6QTQUYK4.js +0 -2
  149. package/dist/root-7BUVDOMV.js +0 -31
  150. package/dist/root-FZLKYL5W.js +0 -23
  151. package/dist/root-LFJ5BQSY.js +0 -14
  152. package/dist/root-OXS3QQX6.js +0 -2
  153. package/dist/search-AZK3Q2KX.js +0 -2
  154. package/dist/skills-pages-7IYBJ4QI.js +0 -2
  155. package/dist/source-4BP5PJ2N.js +0 -2
  156. package/dist/spec-renderer-3GAVSV52.js +0 -2
  157. package/dist/user-nav-OWTTAXZS.js +0 -2
@@ -1,23 +0,0 @@
1
- import'./index.css';import {a as a$1}from'./chunk-CLCIE5RF.js';import {c as c$3,a as a$5}from'./chunk-ONB3FWK5.js';import {a as a$4}from'./chunk-54AXLGAK.js';import {a as a$3}from'./chunk-AY2RXJWS.js';import {m,a,b as b$1,d,f as f$1,e as e$4,c as c$5,h as h$3,j as j$4,i as i$1,k as k$1}from'./chunk-NNISUDZX.js';import {b as b$5}from'./chunk-CAZ6EUR2.js';import'./chunk-2DXR5NJV.js';import {s,j,e as e$1,h,g}from'./chunk-KR27GOH6.js';import {b as b$2}from'./chunk-V7C4EHK3.js';import {e,j as j$3}from'./chunk-XV7U33XQ.js';import {c}from'./chunk-XMOSCJOI.js';import'./chunk-YDVO6XWD.js';import'./chunk-ERDARDGB.js';import {f,b}from'./chunk-HZOD2HOF.js';import'./chunk-WPCPL2TQ.js';import'./chunk-5CVDMZUI.js';import {x,y,z,s as s$1,na,c as c$4,d as d$2,o as o$2}from'./chunk-DGIY4SKN.js';import {e as e$3,g as g$1,h as h$2,j as j$2,o,t}from'./chunk-SZEGGBOC.js';import {c as c$2,d as d$1,h as h$1,i,k,l,j as j$1,w,n,o as o$1,p,q,r,t as t$1,s as s$2}from'./chunk-32ZU4MLE.js';import'./chunk-U45E5X3H.js';import'./chunk-HDOIOXMP.js';import {a as a$2,b as b$3,c as c$1,e as e$2}from'./chunk-USNXQOMJ.js';import {b as b$4}from'./chunk-6NRQMG26.js';import'./chunk-O2QMYUPS.js';import {useState,useMemo,useCallback,useRef,useEffect}from'react';import {TagIcon,PlusIcon,Loader2,Ellipsis,Check,Copy,Link,MinusIcon,Trash2,LoaderCircle,Search,X,ImagePlayIcon,ImageIcon,FilePlayIcon,LayersIcon,SplinePointerIcon,ListChecks,Trash2Icon,LayoutGrid,List}from'lucide-react';import {gql}from'@apollo/client';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useLocation,Outlet,useParams}from'react-router-dom';import {useReactTable,getSortedRowModel,getPaginationRowModel,getFilteredRowModel,getCoreRowModel}from'@tanstack/react-table';import {defaultStyles,FileIcon}from'react-file-icon';var be={where:{},limit:500,offset:0,sort:[{name:"ASC"}]},Y={selection:"display",includeCount:false};function Pt(){let{scope:e}=c(),{currentProjectSchema:n}=f(),[t,s$2,r]=f$1(),[f$2,l$1]=useState(""),[u,D]=useState(false),[v,g$2]=useState(false),[I,i$1]=useState(null),[A,d]=useState(false),[_,x]=useState(null),[J,M]=useState(""),[P,O]=useState(false),[R,B]=useState(false),k$1=b$2(),w$1="_tag",c$3="_tags",{data:b,isLoading:T}=s({entityNamePlural:c$3,schema:n,scope:e,variables:be,...Y}),z=(Array.isArray(b)?b:[]).map(a=>{let U=a;return {_id:U._id,name:U.name}}),L=useCallback(async()=>{let a=f$2.trim();if(!a)return;O(true);let U=typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`${Date.now()}`,F=j(c$3,n,{name:{value:a,disabled:false,scope:"default"}},U),j$1=e$1(c$3,e,n,Y),K=gql`
2
- ${j$1.query}
3
- `;await new Promise(h=>{s$2(gql`
4
- ${F}
5
- `),r({refetchQueries:[K],onCompleted:()=>{l$1(""),D(false),h();}}),t(true);}),O(false);},[c$3,t,n,e,s$2,r,f$2]),q=useCallback(async a=>{B(true);let U=h(w$1,n,a),Z=e$1(c$3,e,n,Y),F=gql`
6
- ${Z.query}
7
- `;await new Promise((j,K)=>{s$2(gql`
8
- ${U}
9
- `),r({variables:{where:{_id:{eq:a}}},refetchQueries:[F],onCompleted:()=>{j();},onError:h=>{K(h);}}),t(true);}),B(false);},[w$1,c$3,t,n,e,s$2,r]),y=useCallback(async()=>{let a=J.trim();if(!a||!_)return;O(true);let U={name:{value:a,disabled:false,scope:"default"}},Z={},F=g(c$3,_._id,e,n,Z,U),j=e$1(c$3,e,n,Y),K=gql`
10
- ${j.query}
11
- `;await new Promise(h=>{s$2(gql`
12
- ${F}
13
- `),r({variables:{where:{_id:{eq:_._id}}},refetchQueries:[K],onCompleted:()=>{d(false),x(null),M(""),h();}}),t(true);}),O(false);},[J,c$3,t,n,e,s$2,r,_]);return jsxs("div",{className:"fk:flex fk:h-full fk:max-h-screen fk:flex-col fk:gap-2",children:[jsxs("div",{className:"fk:flex fk:h-12 fk:items-center fk:border-b fk:border-b-border fk:px-4 fk:lg:px-6",children:[jsx(TagIcon,{className:"fk:h-4 fk:w-4"}),jsx("span",{className:"fk:px-4 fk:text-sm fk:font-semibold fk:tracking-tight",children:"Tags"}),k$1?jsx(a$2,{children:jsxs(b$3,{children:[jsx(c$1,{asChild:true,children:jsxs(c$2,{open:u,onOpenChange:D,children:[jsx(d$1,{asChild:true,children:jsxs(b$4,{variant:"secondary",size:"icon",className:"fk:ml-auto fk:h-8 fk:w-8",children:[jsx(PlusIcon,{className:"fk:h-4 fk:w-4"}),jsx("span",{className:"fk:sr-only",children:"Add tag"})]})}),jsxs(h$1,{children:[jsxs(i,{children:[jsx(k,{children:"New tag"}),jsx(l,{className:"fk:sr-only",children:"Create a new tag"})]}),jsx("div",{className:"fk:flex fk:gap-2",children:jsx(s$1,{autoFocus:true,value:f$2,placeholder:"New tag name",onChange:a=>l$1(a.target.value),onKeyDown:a=>{a.key==="Enter"&&L();}})}),jsx(j$1,{children:jsxs(b$4,{disabled:P,onClick:L,variant:"default",children:[P?jsx(Loader2,{className:"fk:h-4 fk:w-4 fk:mr-2 fk:animate-spin"}):null,"Add"]})})]})]})}),jsx(e$2,{children:jsx("p",{children:"Add tag"})})]})}):jsx("div",{className:"fk:ml-auto",children:jsx(na,{disabled:true,children:jsxs(b$4,{disabled:true,variant:"secondary",size:"icon",className:"fk:h-8 fk:w-8",children:[jsx(PlusIcon,{className:"fk:h-4 fk:w-4"}),jsx("span",{className:"fk:sr-only",children:"Add tag"})]})})})]}),jsx(w,{className:"fk:h-full",children:jsx("div",{className:"fk:flex fk:flex-col fk:gap-2 fk:px-4 fk:py-2",children:T?jsx("div",{className:"fk:text-sm fk:text-muted-foreground",children:"Loading..."}):z.length===0?jsx("div",{className:"fk:text-sm fk:text-muted-foreground",children:"No tags yet"}):z.map(a=>jsxs("div",{className:"fk:group fk:flex fk:items-center fk:justify-between fk:rounded-sm fk:border fk:border-border fk:bg-card fk:px-3 fk:py-1 fk:corner-squircle",children:[jsx("span",{className:"fk:text-sm",children:a.name}),jsxs(e$3,{children:[jsx(na,{disabled:!k$1,children:jsx(g$1,{asChild:true,children:jsx(b$4,{"aria-label":`Actions for ${a.name}`,disabled:!k$1,title:k$1?`Actions for ${a.name}`:void 0,variant:"ghost",size:"icon",className:"fk:h-7 fk:w-7 fk:text-muted-foreground fk:hover:text-foreground",children:jsx(Ellipsis,{className:"fk:h-4 fk:w-4"})})})}),jsxs(h$2,{align:"end",className:"w-[160px]",children:[jsx(j$2,{onClick:()=>{x(a),M(a.name),d(true);},children:"Edit"}),jsx(o,{}),jsx(j$2,{className:"fk:text-destructive",onClick:()=>{i$1(a),g$2(true);},children:"Remove"})]})]})]},a._id))})}),jsx(c$2,{open:A,onOpenChange:d,children:jsxs(h$1,{children:[jsxs(i,{children:[jsx(k,{children:"Edit tag"}),jsx(l,{className:"fk:sr-only",children:"Rename an existing tag"})]}),jsx("div",{className:"fk:flex fk:gap-2",children:jsx(s$1,{autoFocus:true,value:J,placeholder:"Tag name",onChange:a=>M(a.target.value),onKeyDown:a=>{a.key==="Enter"&&y();}})}),jsxs(j$1,{children:[jsx(b$4,{disabled:P,variant:"secondary",onClick:()=>{d(false),x(null);},children:"Cancel"}),jsxs(b$4,{disabled:P,onClick:y,variant:"default",children:[P?jsx(Loader2,{className:"fk:h-4 fk:w-4 fk:mr-2 fk:animate-spin"}):null,"Save"]})]})]})}),jsx(c$2,{open:v,onOpenChange:g$2,children:jsxs(h$1,{children:[jsxs(i,{children:[jsx(k,{children:"Delete tag"}),jsx(l,{className:"fk:sr-only",children:"Confirm deletion of a tag"})]}),jsxs("div",{className:"fk:text-sm fk:text-muted-foreground",children:["Are you sure you want to delete the tag"," ",jsx("span",{className:"fk:font-semibold fk:text-foreground",children:I?.name}),"?"]}),jsxs(j$1,{children:[jsx(b$4,{disabled:R,variant:"secondary",onClick:()=>{g$2(false),i$1(null);},children:"Cancel"}),jsxs(b$4,{disabled:R,variant:"destructive",onClick:()=>{I&&(async()=>(await q(I._id),g$2(false),i$1(null)))();},children:[R?jsx(Loader2,{className:"fk:h-4 fk:w-4 fk:mr-2 fk:animate-spin"}):null,"Delete"]})]})]})})]})}var Ft=`_updatedAt
14
- tags(limit: 3, offset: 0) {
15
- _id
16
- name
17
- }
18
- `;function Le({assetIds:e,mode:n$1,onModeChange:t,onCompleted:s$1}){let{scope:r$1}=c(),f$2=a$5("_assets"),[l,u,D]=f$1(),{currentProjectSchema:v}=f(),[g$1,I]=useState([]),[i,A]=useState(false),{data:d}=s({entityNamePlural:"_tags",schema:v,scope:r$1,variables:be,...Y}),_=useMemo(()=>(Array.isArray(d)?d:[]).map(w=>({_id:w._id,name:w.name})),[d]),x=useCallback(()=>{I([]);},[]),J=useCallback(k=>{!k&&!i&&(t(null),x());},[i,t,x]),M=useCallback(k=>{let c=(k?.update_assets?._assets??[]).filter(b=>typeof b?._id=="string").map(b=>{let T=(Array.isArray(b.tags)?b.tags:[]).map(z=>z.name).filter(Boolean).slice(0,3).join(", ");return {_id:b._id,attributes:{tags:T,...typeof b._updatedAt=="string"?{_updatedAt:b._updatedAt}:{}}}});c.length>0&&f$2(c);},[f$2]),P=useCallback(async()=>{if(!(e.length===0||g$1.length===0||i)){A(true);try{let k={tags:{relationships:{connect:g$1.map(c=>({_id:c}))},disabled:!1,scope:r$1}},w=g("_assets",e[0]??"",r$1,v,{},k,{responseFields:Ft});await new Promise((c,b)=>{u(gql`
19
- ${w}
20
- `),D({variables:{where:{_id:{in:e}}},onCompleted:T=>{M(T),c();},onError:T=>b(T)}),l(!0);}),s$1?.(),x(),t(null);}catch{}finally{A(false);}}},[M,e,i,s$1,t,x,l,v,r$1,g$1,u,D]),O=useCallback(async()=>{if(!(e.length===0||g$1.length===0||i)){A(true);try{let k={tags:{relationships:{disconnect:g$1},disabled:!1,scope:r$1}},w=g("_assets",e[0]??"",r$1,v,{},k,{responseFields:Ft});await new Promise((c,b)=>{u(gql`
21
- ${w}
22
- `),D({variables:{where:{_id:{in:e}}},onCompleted:T=>{M(T),c();},onError:T=>b(T)}),l(!0);}),s$1?.(),x(),t(null);}catch{}finally{A(false);}}},[M,e,i,s$1,t,x,l,v,r$1,g$1,u,D]),R=n$1==="remove",B=R?"Remove tag(s)":"Add tag(s)";return e.length>1&&(B=R?"Remove tag(s) from selected assets":"Add tag(s) to selected assets"),jsxs(n,{open:n$1!==null,onOpenChange:J,children:[jsx(o$1,{placeholder:"Search tags..."}),jsxs(p,{className:"fk:h-75",children:[jsx(q,{children:"No tags found."}),jsx(r,{heading:"Tags",children:_.map(k=>{let w=g$1.includes(k._id);return jsxs(t$1,{disabled:i,onSelect:()=>{i||I(c=>w?c.filter(b=>b!==k._id):[...c,k._id]);},children:[jsx("input",{className:"fk:mr-2",checked:w,onChange:()=>{},type:"checkbox"}),k.name]},k._id)})})]}),jsx(s$2,{}),jsx("div",{className:"fk:p-2",children:jsxs(b$4,{className:"fk:w-full",disabled:g$1.length===0||i,onClick:R?O:P,children:[i?jsx(LoaderCircle,{className:"fk:mr-2 fk:h-4 fk:w-4 fk:animate-spin"}):null,B]})})]})}function Ve({overlay:e=false,row:n}){let[t,s]=useState(null),[r,f]=useState(null),l=j$3(),u=b$2(),D=n.original,v=D._id??"",g=D.url??"";function I(){l({type:"DeleteEntity",payload:{entityId:v,entityName:b.name}});}function i(d,_){navigator.clipboard.writeText(_),s(d),window.setTimeout(()=>s(null),1500);}return jsxs(Fragment,{children:[jsxs(e$3,{children:[jsx(g$1,{asChild:true,children:jsxs(b$4,{className:e?"fk:flex fk:h-7 fk:w-7 fk:p-0 fk:text-white fk:group-hover:bg-background/10 fk:group-hover:text-white! fk:data-[state=open]:bg-background/15":"fk:flex fk:h-8 fk:w-8 fk:p-0 fk:data-[state=open]:bg-muted",onClick:d=>d.stopPropagation(),variant:"ghost",children:[jsx(Ellipsis,{className:"fk:h-4 fk:w-4"}),jsx("span",{className:"fk:sr-only",children:"Open menu"})]})}),jsxs(h$2,{align:"start",className:"fk:w-45",children:[jsxs(j$2,{disabled:!v,onClick:d=>{d.stopPropagation(),i("id",v);},children:[t==="id"?jsx(Check,{className:"fk:mr-2 fk:h-4 fk:w-4"}):jsx(Copy,{className:"fk:mr-2 fk:h-4 fk:w-4"}),"Copy ID"]}),jsxs(j$2,{disabled:!g,onClick:d=>{d.stopPropagation(),i("url",g);},children:[t==="url"?jsx(Check,{className:"fk:mr-2 fk:h-4 fk:w-4"}):jsx(Link,{className:"fk:mr-2 fk:h-4 fk:w-4"}),"Copy URL"]}),jsx(o,{}),jsxs(j$2,{disabled:!v||!u,onClick:d=>{d.stopPropagation(),f("add");},children:[jsx(TagIcon,{className:"fk:mr-2 fk:h-4 fk:w-4"}),"Add tag"]}),jsxs(j$2,{disabled:!v||!u,onClick:d=>{d.stopPropagation(),f("remove");},children:[jsx(MinusIcon,{className:"fk:mr-2 fk:h-4 fk:w-4"}),"Remove tag"]}),jsx(o,{}),jsxs(j$2,{className:"fk:text-destructive",disabled:!v||!u,onClick:d=>{d.stopPropagation(),I();},children:[jsx(Trash2,{className:"fk:mr-2 fk:h-4 fk:w-4"}),"Delete"]})]})]}),r!==null?jsx(Le,{assetIds:v?[v]:[],mode:r,onModeChange:f}):null]})}var ho=FileIcon,yo="fk:bg-[#fafafa] [--asset-checker:#f0f0f0] [background-image:linear-gradient(45deg,var(--asset-checker)_25%,transparent_25%),linear-gradient(-45deg,var(--asset-checker)_25%,transparent_25%),linear-gradient(45deg,transparent_75%,var(--asset-checker)_75%),linear-gradient(-45deg,transparent_75%,var(--asset-checker)_75%)] [background-position:0_0,0_4px,4px_-4px,-4px_0px] [background-size:8px_8px] fk:dark:bg-[#222] dark:[--asset-checker:#2a2a2a]";function vo(e){return e==null||Number.isNaN(e)?"":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function Ut({columns:e$1,data:n,entityName:t$1,hasMore:s=false,isLoading:r=false,isLoadingMore:f=false,onLoadMore:l,onSortingChange:u,pageSize:D,sorting:v,toolbarComponent:g}){let I=useRef(null),{schemaErrorMessage:i}=e(),[A,d]=useState({}),[_,x]=useState({}),[J,M]=useState([]),[P,O]=useState([]),R=v??P;useEffect(()=>{I.current?.scrollTo({top:0});},[t$1]);function B(y){if(u){u(y);return}O(y);}let k=useReactTable({data:n,columns:e$1,state:{sorting:R,columnVisibility:_,rowSelection:A,columnFilters:J},initialState:{pagination:{pageSize:D??50}},enableRowSelection:true,onRowSelectionChange:d,onSortingChange:B,onColumnFiltersChange:M,onColumnVisibilityChange:x,getCoreRowModel:getCoreRowModel(),getFilteredRowModel:getFilteredRowModel(),getPaginationRowModel:getPaginationRowModel(),getSortedRowModel:getSortedRowModel(),getRowId:y=>y._id,manualFiltering:true,manualPagination:true,manualSorting:true}),{rows:w}=k.getRowModel(),c=useRef(l),b=useRef(s),T=useRef(f);c.current=l,b.current=s,T.current=f;let z=useCallback(y=>{if(!c.current||!b.current||T.current)return;let a=y??I.current;a&&c$5(a)&&(T.current=true,c.current());},[]),L=b$5();useEffect(()=>{L&&z();},[z,w.length,s,f,L]);function q(y){z(y.currentTarget);}return i?jsx(Fragment,{}):jsxs("div",{className:"fk:flex fk:h-full fk:min-h-0 fk:w-full fk:min-w-0 fk:flex-col fk:gap-4",children:[g?g(k):null,jsxs("div",{className:"fk:relative fk:min-h-0 fk:min-w-0 fk:flex-1",children:[f?jsx("div",{"aria-hidden":true,className:"fk:pointer-events-none fk:absolute fk:top-0 fk:right-px fk:left-px fk:z-20 fk:h-0.5 fk:overflow-hidden fk:opacity-40",children:jsx("div",{className:"fk:animate-progress fk:h-full fk:w-full fk:bg-foreground"})}):null,jsxs("div",{className:"fk:h-full fk:overflow-auto fk:pt-px fk:pb-20 fk:-ml-0.5 fk:pr-3",onScroll:q,ref:I,children:[r?jsx("div",{className:"fk:grid fk:grid-cols-[repeat(auto-fill,minmax(10rem,1fr))] fk:gap-3",children:Array.from({length:D??50},(y,a)=>jsxs("div",{className:"fk:rounded-md fk:border fk:border-border fk:p-2 fk:corner-squircle",children:[jsx(t,{className:"fk:aspect-square fk:w-full fk:rounded-sm fk:corner-squircle"}),jsx(t,{className:"fk:mt-2 fk:h-3 fk:w-[75%]"}),jsx(t,{className:"fk:mt-1.5 fk:h-3 fk:w-[50%]"})]},`skeleton-${a}`))}):null,!r&&w.length===0?jsx("div",{className:"fk:flex fk:h-24 fk:items-center fk:justify-center fk:text-sm fk:text-muted-foreground",children:"No results."}):null,!r&&w.length>0?jsx("div",{className:"fk:grid fk:grid-cols-[repeat(auto-fill,minmax(10rem,1fr))] fk:pl-0.5 fk:gap-3",children:w.map(y=>jsx(wo,{row:y},y.id))}):null]})]})]})}function wo({row:e}){let n=e.original,t=h$3(n)||"Untitled",s=n.mimeType??"",r=vo(n.size),f=e.getIsSelected(),l=[s,r].filter(Boolean).join(" \xB7 ");return jsxs("div",{className:`fk:relative fk:rounded-md fk:border fk:p-2 fk:transition-colors ${f?"fk:border-primary fk:ring-1 fk:ring-primary/40 fk:bg-muted/40":"fk:border-border fk:bg-background fk:hover:border-muted-foreground/30"} fk:corner-squircle`,"data-state":f?"selected":void 0,children:[jsx("div",{className:"fk:absolute fk:left-3 fk:top-3 fk:z-10 fk:mix-blend-difference",children:jsx(o$2,{className:"fk:border-white!","aria-label":`Select ${t}`,checked:f,onCheckedChange:u=>{e.toggleSelected(!!u);},onClick:u=>u.stopPropagation()})}),jsx("div",{className:"fk:group fk:absolute fk:right-2 fk:top-2 fk:z-10 fk:mix-blend-difference",children:jsx(Ve,{overlay:true,row:e})}),jsx(bo,{asset:n,filename:t}),jsx("div",{className:"fk:mt-2 fk:truncate fk:text-xs fk:font-medium",title:t,children:t}),l?jsx("div",{className:"fk:mt-0.5 fk:truncate fk:text-[11px] fk:text-muted-foreground",title:l,children:l}):null]})}function bo({asset:e,filename:n}){let[t,s]=useState(false),[r,f]=useState(false),l$1=e.url??"";if(!l$1&&!e.path)return jsx("div",{className:"fk:flex fk:aspect-square fk:items-center fk:justify-center fk:rounded-sm fk:bg-muted fk:corner-squircle",children:jsx("span",{className:"fk:text-xs fk:text-muted-foreground",children:"No preview"})});if(!j$4(e)||!l$1){let i=i$1(e),A=defaultStyles[i];return jsx("div",{className:"fk:flex fk:aspect-square fk:items-center fk:justify-center fk:rounded-sm fk:bg-muted fk:[&>svg]:h-12 fk:[&>svg]:w-auto fk:corner-squircle",children:jsx(ho,{extension:i,...A||{}})})}let D=k$1(l$1,{width:320,height:320}),v=l$1;function g(i){i.stopPropagation(),f(false),s(true);}function I(i){s(i),i||f(false);}return jsxs(Fragment,{children:[jsx("button",{className:`fk:aspect-square fk:w-full fk:cursor-zoom-in fk:overflow-hidden fk:rounded-sm fk:border-0 fk:p-0 ${yo} fk:corner-squircle`,onClick:g,type:"button",children:jsx("img",{alt:n,className:"fk:h-full fk:w-full fk:object-contain",src:D})}),jsx(c$2,{open:t,onOpenChange:I,children:jsxs(h$1,{className:"fk:sm:max-w-4xl fk:p-3",children:[jsxs(i,{children:[jsx(k,{className:"fk:sr-only",children:"Asset preview"}),jsx(l,{className:"fk:sr-only",children:"Enlarged asset preview"})]}),jsxs("div",{className:"fk:relative fk:flex fk:h-[min(85vh,56rem)] fk:w-full fk:items-center fk:justify-center fk:overflow-hidden fk:rounded-md fk:corner-squircle",children:[r?null:jsx(LoaderCircle,{"aria-label":"Loading image",className:"fk:absolute fk:h-8 fk:w-8 fk:animate-spin fk:text-muted-foreground"}),jsx("img",{alt:n,className:`fk:max-h-full fk:max-w-full fk:object-contain fk:transition-opacity ${r?"fk:opacity-100":"fk:opacity-0"}`,onError:()=>f(true),onLoad:()=>f(true),src:v})]})]})})]})}var Fo=[{value:"image/gif",label:"GIF",icon:ImagePlayIcon},{value:"image/jpeg",label:"JPEG",icon:ImageIcon},{value:"video/mp4",label:"MP4",icon:FilePlayIcon},{value:"image/png",label:"PNG",icon:LayersIcon},{value:"image/svg+xml",label:"SVG",icon:SplinePointerIcon},{value:"image/webp",label:"WebP",icon:ImageIcon}];function je({entityName:e,isUploading:n=false,table:t,viewMode:s$2,onUploadClick:r,onViewModeChange:f$1,onSearchLoadingChange:l,onSearchWhereChange:u}){let D=t.getState().columnFilters.length>0,{projectId:v}=useParams(),g=j$3(),{scope:I}=c(),[i,A]=useState(null),{currentProjectSchema:d}=f(),_=b$2(),[x,J]=useState(""),M=useRef({}),P=useRef({});function O(){return {searchRequests:{searches:[{collection:"_assets"},{collection:"_tags"}]},commonParams:{q:""}}}let R=useMemo(()=>O(),[]),[B,k]=useState(R),{results:w,isLoading:c$1}=a$3(v??"",B),b=useRef(""),T=x.trim(),z=B.commonParams.q??"",L=T.length>0&&(c$1||z!==T),q=useMemo(()=>Lo(m=>{k({...R,commonParams:{q:m}});},300),[R]);useEffect(()=>()=>{q.cancel();},[q]);let y=t.getSelectedRowModel().rows.map(m=>m.original._id),{data:a}=s({entityNamePlural:"_tags",schema:d,scope:I,variables:be,...Y}),U=useMemo(()=>(Array.isArray(a)?a:[]).map(S=>({_id:S._id,name:S.name})),[a]),Z=useMemo(()=>U.map(m=>({value:m._id,label:m.name})),[U]),F=useCallback(()=>{if(!u)return;let m=[];Object.keys(M.current).length>0&&m.push(M.current),Object.keys(P.current).length>0&&m.push(P.current);let S=m.length===0?{}:m.length===1?m[0]:{AND:m},H=JSON.stringify(S);b.current!==H&&(b.current=H,u(S));},[u]);function j(){q.cancel(),J(""),k({...R,commonParams:{q:""}}),M.current={},F();}async function K(){g({type:"AlertDialog",payload:{options:{dialogTitle:`Delete ${y.length} asset${y.length>1?"s":""}`,dialogMessage:y.length>1?"Are you sure you want to delete the selected assets? They will be deleted permanently.":"Are you sure you want to delete the selected asset? The item will be deleted permanently.",dialogCancelTitle:"Cancel",dialogActionLabel:"Delete",isDestructive:true,dialogActionCancel:()=>{},dialogActionSubmit:()=>{g({type:"DeleteEntity",_id:`delete-batch-${Date.now()}`,payload:{entityId:y,entityName:e,silent:true}}),t.resetRowSelection();}}}});}useEffect(()=>{l?.(L);},[L,l]),useEffect(()=>{if(!u)return;if(T.length===0){M.current={},F();return}if(L)return;let m=w??[],S={};if(m.length===0)S={_id:{in:[]}};else {let H=m.filter(V=>V._entityNamePlural==="_assets").map(V=>V._id),xe=m.filter(V=>V._entityNamePlural==="_tags").map(V=>({tags:{some:{_id:{eq:V._id}}}})),Q=[];H.length>0&&Q.push({_id:{in:H}}),Q.push(...xe),Q.length===0?S={_id:{in:[]}}:Q.length===1?S=Q[0]:S={OR:Q};}M.current=S,F();},[F,L,u,w,T]);let h=JSON.stringify(t.getState().columnFilters);return useEffect(()=>{if(!u)return;let m=t.getState().columnFilters.find(V=>V.id==="mimeType"),S=Array.isArray(m?.value)?m?.value:[],H=t.getState().columnFilters.find(V=>V.id==="tags"),xe=Array.isArray(H?.value)?H?.value:[],Q=[];if(S.length>0&&Q.push({mimeType:{in:S}}),xe.length>0){let V=xe.map(jt=>({tags:{some:{_id:{eq:jt}}}}));Q.push(V.length===1?V[0]:{OR:V});}Q.length===0?P.current={}:Q.length===1?P.current=Q[0]:P.current={AND:Q},F();},[h,F,u,t]),jsxs("div",{className:"fk:flex fk:items-center fk:justify-between fk:pr-3",children:[jsxs("div",{className:"fk:flex fk:flex-1 fk:items-center fk:space-x-2",children:[jsxs("div",{className:"fk:relative",children:[c$1?jsx(LoaderCircle,{className:"fk:absolute fk:left-2 fk:top-2 fk:h-4 fk:w-4 fk:shrink-0 fk:opacity-50 fk:animate-spin"}):jsx(Search,{className:"fk:absolute fk:left-2 fk:top-2 fk:h-4 fk:w-4 fk:shrink-0 fk:opacity-50"}),jsx(s$1,{placeholder:"Search assets...",name:"search-assets",value:x,onChange:m=>{let{value:S}=m.target;if(J(S),S.trim().length===0){j();return}q(S.trim());},className:"fk:h-8 fk:w-37.5 fk:lg:w-70 fk:px-7"}),x?jsx(b$4,{"aria-label":"Clear search",className:"fk:absolute fk:right-1 fk:top-1 fk:h-6 fk:w-6 fk:text-muted-foreground fk:hover:text-foreground fk:hover:bg-foreground/10 fk:cursor-pointer fk:rounded-full fk:bg-transparent fk:corner-squircle",onClick:j,type:"button",children:jsx(X,{className:"fk:h-4 fk:w-4"})}):null]}),t.getColumn("mimeType")&&jsx(a$4,{column:t.getColumn("mimeType"),options:Fo,title:"File type"}),t.getColumn("tags")&&jsx(a$4,{column:t.getColumn("tags"),options:Z,title:"Tags"}),D&&jsxs(b$4,{variant:"ghost",onClick:()=>{t.resetColumnFilters(),P.current={},F();},className:"fk:h-8 fk:px-2 fk:lg:px-3",children:["Reset",jsx(X,{className:"fk:ml-2 fk:h-4 fk:w-4"})]}),jsx(e$4,{table:t})]}),y.length>0?jsx("div",{className:"fk:flex fk:items-center fk:gap-2",children:jsxs(e$3,{children:[jsx(na,{disabled:!_,children:jsx(g$1,{asChild:true,children:jsxs(b$4,{className:"fk:h-8 fk:mr-2 fk:lg:flex",disabled:!_,size:"sm",variant:"secondary",children:["Actions ",jsx(ListChecks,{className:"fk:ml-2 fk:h-4 fk:w-4"})]})})}),jsxs(h$2,{align:"end",className:"fk:w-[240px]",children:[jsxs(j$2,{onClick:()=>A("add"),children:[jsx(TagIcon,{className:"fk:mr-2 fk:h-4 fk:w-4"})," Add tag"]}),jsxs(j$2,{onClick:()=>A("remove"),children:[jsx(MinusIcon,{className:"fk:mr-2 fk:h-4 fk:w-4"})," Remove tag"]}),jsx(o,{}),jsxs(j$2,{onClick:K,className:"fk:text-destructive",children:[jsx(Trash2Icon,{className:"fk:mr-2 fk:h-4 fk:w-4"})," Delete asset",y.length>1?"s":""," (",y.length,")"]})]})]})}):null,jsxs("div",{className:"fk:ml-auto fk:flex fk:items-center fk:gap-2",children:[jsxs(c$4,{size:"sm",type:"single",value:s$2,onValueChange:m=>{(m==="list"||m==="grid")&&f$1(m);},children:[jsx(d$2,{"aria-label":"Grid view",value:"grid",children:jsx(LayoutGrid,{className:"fk:h-4 fk:w-4"})}),jsx(d$2,{"aria-label":"List view",value:"list",children:jsx(List,{className:"fk:h-4 fk:w-4"})})]}),jsx(na,{disabled:!_,children:jsxs(b$4,{"aria-busy":n,className:"fk:h-8 fk:lg:flex",disabled:!_||n,onClick:r,size:"sm",variant:"default",children:[n?jsx(LoaderCircle,{className:"fk:mr-2 fk:h-4 fk:w-4 fk:animate-spin"}):null,"Upload assets"]})})]}),i!==null?jsx(Le,{assetIds:y,mode:i,onCompleted:()=>t.resetRowSelection(),onModeChange:A}):null]})}function Lo(e,n=300){let t,s=function(...r){t!==void 0&&clearTimeout(t),t=setTimeout(()=>{t=void 0,e.apply(this,r);},n);};return s.cancel=()=>{t!==void 0&&(clearTimeout(t),t=void 0);},s}var Uo=4*1024*1024;function Gt(){let{projectId:e}=useParams(),n=c$3(),t=b$2(),[s,r]=useState(false);async function f(l){if(!(!t||s)&&!(l&&l.length===0))try{await n({files:l,maxBytes:Uo,multiple:!0,onUploadStart:()=>{r(!0);},projectId:e});}finally{r(false);}}return {canMutate:t,isUploading:s,uploadFiles:l=>f(l),uploadFromDialog:()=>f()}}var Wt="flexkit-asset-manager:viewMode";function $t(){if(typeof localStorage>"u")return "grid";try{let e=localStorage.getItem(Wt);if(e==="list"||e==="grid")return e}catch{}return "grid"}function Jt(e){if(!(typeof localStorage>"u"))try{localStorage.setItem(Wt,e);}catch{}}var Me=36,Qo=[{_updatedAt:"DESC"},{_id:"DESC"}];function Xt(){let e$1="_assets",{search:n}=useLocation(),s$1=new URLSearchParams(n).get("id"),{scope:r}=c(),{schemaErrorMessage:f$1}=e(),{currentProject:l}=f(),u=l?.schema??[],[D,v]=useState([]),[g,I]=useState(()=>$t()),i=m({attributesSchema:b.attributes,actionsComponent:h=>jsx(Ve,{row:h}),checkboxSelect:"multiple",enableColumnSorting:true}),[A,d$1]=useState({}),[_,x]=useState(false),{canMutate:J,isUploading:M,uploadFiles:P,uploadFromDialog:O}=Gt(),R=useMemo(()=>{let h=s$1?{_id:{eq:s$1}}:{NOT:{path:{eq:null}}};return !A||Object.keys(A).length===0||s$1?h:{AND:[h,A]}},[s$1,A]),B=useMemo(()=>{if(D.length===0)return Qo;let h=D.map(({id:S,desc:H})=>({[S]:H?"DESC":"ASC"}));return h.some(S=>"_id"in S)?h:[...h,{_id:"DESC"}]},[D]),k=useMemo(()=>({where:R,offset:0,limit:Me,sort:B}),[R,B]);function w(h){v(h);}function c$1(h){I(h),Jt(h);}let{isLoading:b$2,isLoadingMore:T,fetchMore:z,count:L,data:q,isProjectDisabled:y}=s({entityNamePlural:e$1,schema:u,scope:r,variables:k,selection:"list"}),a$2=_||b$2&&(q==null||q.length===0),U=q?.length??0,Z=!_&&L>0&&U>0&&U<L,F=useCallback(()=>{z({variables:{offset:0,limit:Me}});},[z]),j=useMemo(()=>Array.from({length:Me},(h,m)=>({_id:`loading-${m}`})),[]),K=useMemo(()=>Go(i),[i]);return y?jsx("div",{className:"fk:flex fk:flex-col fk:h-full fk:pl-3",children:jsx(a,{})}):jsxs("div",{className:"fk:flex fk:flex-col fk:h-full fk:pl-3",children:[jsx(b$1,{}),jsxs("div",{className:"fk:mb-4 fk:flex fk:items-center fk:gap-2 fk:pr-3",children:[jsx("h2",{className:"fk:text-lg fk:font-semibold fk:leading-none fk:tracking-tight",children:"Asset Manager"}),a$2?null:jsxs("span",{className:"fk:ml-auto fk:text-sm fk:font-normal fk:text-muted-foreground",children:[L.toLocaleString()," ",L===1?"record":"records"]})]}),f$1?null:jsx(a$1,{disabled:!J||M,onDropFiles:P,children:g==="list"?jsx(d,{classNames:{row:"fk:h-20"},columns:a$2?K:i,data:a$2?j:q??[],entityName:b.name,hasMore:Z,isLoadingMore:T,pageSize:Me,sorting:D,onLoadMore:F,onSortingChange:w,toolbarComponent:h=>jsx(je,{entityName:b.name,isUploading:M,table:h,viewMode:g,onSearchLoadingChange:x,onSearchWhereChange:d$1,onUploadClick:O,onViewModeChange:c$1})}):jsx(Ut,{columns:i,data:a$2?[]:q??[],entityName:b.name,hasMore:Z,isLoading:a$2,isLoadingMore:T,pageSize:Me,sorting:D,onLoadMore:F,onSortingChange:w,toolbarComponent:h=>jsx(je,{entityName:b.name,isUploading:M,table:h,viewMode:g,onSearchLoadingChange:x,onSearchWhereChange:d$1,onUploadClick:O,onViewModeChange:c$1})})}),jsx(Outlet,{})]})}function Go(e){return e.map(n=>({...n,cell:()=>jsx(t,{className:"fk:h-4 fk:w-full",style:{marginTop:"7px",marginBottom:"6px"}})}))}function Rn(){return jsxs(x,{orientation:"horizontal",className:"fk:h-full",children:[jsx(y,{className:"fk:p-3",defaultSize:"82%",children:jsx("div",{className:"fk:flex fk:flex-col fk:h-full",children:jsx(Xt,{})})}),jsx(z,{className:"fk:hover:bg-blue-500 fk:transition-colors",withHandle:true}),jsx(y,{defaultSize:"18%",minSize:"10%",children:jsx("div",{className:"fk:sm:hidden fk:md:block",children:jsx(Pt,{})})})]})}export{Rn as Root};//# sourceMappingURL=root-FZLKYL5W.js.map
23
- //# sourceMappingURL=root-FZLKYL5W.js.map
@@ -1,14 +0,0 @@
1
- import'./index.css';import {a as a$3,b as b$5}from'./chunk-MLHXPTBT.js';import {b as b$4,c as c$3}from'./chunk-ELOJGLAR.js';import {e}from'./chunk-2NQ2RZ2M.js';import {a as a$1}from'./chunk-AY2RXJWS.js';import {f as f$1,i,g as g$1,y,k,b as b$1,e as e$2,l,w,v,d,a,m,h,p,n,o as o$2,s as s$2,c as c$4,q as q$1,r as r$1,j as j$2,u,t}from'./chunk-4PUMSUJL.js';import {c as c$1}from'./chunk-2DXR5NJV.js';import {j,f as f$2}from'./chunk-XV7U33XQ.js';import {c}from'./chunk-XMOSCJOI.js';import'./chunk-HKN6BX5U.js';import'./chunk-YDVO6XWD.js';import {a as a$2}from'./chunk-ERDARDGB.js';import {f}from'./chunk-HZOD2HOF.js';import {g}from'./chunk-WPCPL2TQ.js';import'./chunk-5CVDMZUI.js';import {K,M,Q,O,qa,N,R,S,s,T,V,W,X,o,P,ha,ia,ja,ka,e as e$4,$,aa,da,ea,ba,fa}from'./chunk-DGIY4SKN.js';import {e as e$3,g as g$2,h as h$1,j as j$1,q,r,s as s$1,o as o$1}from'./chunk-SZEGGBOC.js';import {v as v$1}from'./chunk-32ZU4MLE.js';import {b}from'./chunk-U45E5X3H.js';import'./chunk-HDOIOXMP.js';import {b as b$2,c as c$2,e as e$1}from'./chunk-USNXQOMJ.js';import {b as b$3}from'./chunk-6NRQMG26.js';import'./chunk-O2QMYUPS.js';import {useEffect,useMemo,useRef,useState,useCallback,useReducer}from'react';import {useLocation}from'react-router-dom';import On from'graphology';import qn from'graphology-layout-forceatlas2';import Qn from'graphology-layout-forceatlas2/worker';import zn,{DEFAULT_STYLES}from'sigma';import {jsxs,jsx}from'react/jsx-runtime';import {gql}from'@apollo/client';import {useApolloClient,useQuery}from'@apollo/client/react';import {formatDistance}from'date-fns';import {SearchIcon,ChevronDownIcon,LoaderCircleIcon,PlayIcon,ScanIcon,ExpandIcon,EyeOffIcon,EraserIcon,XIcon,SquareArrowOutUpRightIcon}from'lucide-react';import {closeBrackets,closeBracketsKeymap}from'@codemirror/autocomplete';import {history,defaultKeymap,historyKeymap,indentWithTab}from'@codemirror/commands';import {foldGutter,indentOnInput,bracketMatching,foldKeymap}from'@codemirror/language';import {Compartment,EditorState,Prec}from'@codemirror/state';import {EditorView,lineNumbers,highlightActiveLineGutter,highlightSpecialChars,drawSelection,dropCursor,highlightActiveLine,keymap,placeholder}from'@codemirror/view';import {graphql,updateSchema}from'cm6-graphql';import {getIntrospectionQuery,buildClientSchema}from'graphql';import {useDebounce}from'use-debounce';function Ae(e){return Math.min(2e4,2e3+e*9)}function Zt({mean:e,max:t,diagonal:n}){let r=Math.max(.05,n*.0015);return e<r&&t<r*20}var Hn=40,jn=400,Bn=1200,Xn=2;function Fn(e){return 5+Math.min(10,Math.sqrt(e)*2)}function nn(e){return Hn*(.8+Math.sqrt(e)*.6)}function rn(e,t,n){let r=Math.random()*Math.PI*2;return Array.from({length:t},(i,s)=>{let o=r+s/t*Math.PI*2+Math.random()*.3,d=n*(.9+Math.random()*.2);return {x:e.x+Math.cos(o)*d,y:e.y+Math.sin(o)*d}})}function on(e,t){return !Number.isNaN(e.getNodeAttribute(t,"x"))}function $n(e,t){if(t.length===0)return {center:{x:0,y:0},reach:0};let n=t.reduce((i,s)=>({x:i.x+e.getNodeAttribute(s,"x"),y:i.y+e.getNodeAttribute(s,"y")}),{x:0,y:0});n.x/=t.length,n.y/=t.length;let r=t.reduce((i,s)=>Math.max(i,Math.hypot(e.getNodeAttribute(s,"x")-n.x,e.getNodeAttribute(s,"y")-n.y)),0);return {center:n,reach:r}}function Jn(e,t){let n=new Map;t.forEach(r=>{let i=e.neighbors(r).find(s=>!t.has(s)&&on(e,s))??null;n.set(i,[...n.get(i)??[],r]);}),n.forEach((r,i)=>{let s;if(i){let o={x:e.getNodeAttribute(i,"x"),y:e.getNodeAttribute(i,"y")};s=rn(o,r.length,nn(r.length));}else {let o=e.nodes().filter(S=>!t.has(S)&&on(e,S)),d=$n(e,o);s=rn(d.center,r.length,d.reach+nn(r.length));}s.forEach((o,d)=>e.mergeNodeAttributes(r[d],o));});}var Ke=class{constructor(t){this.graph=t;this.positions=new Float64Array(t.order*2);let n=0;this.graph.forEachNode((r,i)=>{this.positions[n]=i.x,this.positions[n+1]=i.y,n+=2;});}positions;measure(){let{graph:t,positions:n}=this,r=0,i=0,s=0,o=Number.POSITIVE_INFINITY,d=Number.POSITIVE_INFINITY,S=Number.NEGATIVE_INFINITY,T=Number.NEGATIVE_INFINITY,y=0;return t.forEachNode((c,a)=>{let{x:h,y:g}=a;if(y+1<n.length&&!a.fixed){let N=Math.hypot(h-n[y],g-n[y+1]);r+=N,i=Math.max(i,N),s+=1;}n[y]=h,n[y+1]=g,y+=2,o=Math.min(o,h),d=Math.min(d,g),S=Math.max(S,h),T=Math.max(T,g);}),{mean:s>0?r/s:0,max:i,diagonal:t.order>0?Math.hypot(S-o,T-d):0}}};function Yn(e,t,n){let r=false,i=new Set,s=e.order>0;return e.forEachNode(o=>{t.nodes[o]||(e.dropNode(o),r=true);}),Object.values(t.nodes).forEach(o=>{if(e.hasNode(o.key)){e.getNodeAttribute(o.key,"label")!==o.label&&e.setNodeAttribute(o.key,"label",o.label);return}e.addNode(o.key,{entity:o.entity,label:o.label,color:n[o.entity]??"#71717a",size:5,x:Number.NaN,y:Number.NaN}),i.add(o.key),r=true;}),e.forEachEdge(o=>{t.edges[o]||(e.dropEdge(o),r=true);}),Object.values(t.edges).forEach(o=>{e.hasEdge(o.key)||(e.addEdgeWithKey(o.key,o.source,o.target,{size:1}),r=true);}),Jn(e,i),r&&e.forEachNode(o=>{e.setNodeAttribute(o,"size",Fn(e.degree(o)));}),{changed:r,added:i,hadNodes:s}}function sn({scene:e,colors:t,theme:n,apiRef:r,onSelect:i,onContextMenu:s,onExpand:o,onPin:d,onLayoutChange:S}){let T=useRef(null),y=useRef(null),c=useRef(null),a=useRef(null),h=useRef(null),g=useRef(null),N=useRef(null),f=useRef(null),u=useRef(null),l=useRef(new Set),p=useRef(e.pinned);p.current=e.pinned;let M=useRef({key:null,nodes:[]}),w=useRef({onSelect:i,onContextMenu:s,onExpand:o,onPin:d,onLayoutChange:S}),[F,D]=useState(0);w.current={onSelect:i,onContextMenu:s,onExpand:o,onPin:d,onLayoutChange:S},y.current||(y.current=new On({type:"undirected",multi:true}));let E=useCallback(()=>{h.current!==null&&(window.clearTimeout(h.current),h.current=null),f.current!==null&&(window.clearInterval(f.current),f.current=null),a.current&&(a.current.kill(),a.current=null,u.current=null,w.current.onLayoutChange(false));let m=y.current;l.current.forEach(x=>{m?.hasNode(x)&&m.setNodeAttribute(x,"fixed",p.current[x]===true);}),l.current=new Set;},[]),P=useCallback((m,x=[])=>{let v=y.current;if(E(),!v||v.order===0)return;if(l.current=new Set(x.filter(C=>v.hasNode(C))),l.current.forEach(C=>v.setNodeAttribute(C,"fixed",true)),!v.someNode((C,L)=>!L.fixed)){E();return}let A=qn.inferSettings(v),G=new Qn(v,{settings:{...A,adjustSizes:true,gravity:.2,slowDown:(A.slowDown??1)*2},outputReducer:(C,L)=>{let oe=g.current;return oe&&oe.node===C&&(L.x=oe.x,L.y=oe.y),L}}),q=performance.now(),Y=new Ke(v),V=false,K=0;a.current=G,u.current=q+m,G.start(),w.current.onLayoutChange(true);let k=()=>{g.current?(u.current=performance.now()+m,h.current=window.setTimeout(k,m)):E();};h.current=window.setTimeout(k,m),f.current=window.setInterval(()=>{let C=Y.measure();if(g.current){K=0;return}V=V||C.max>0,K=V&&Zt(C)?K+1:0,K>=Xn&&performance.now()-q>=Bn&&E();},jn);},[E]),$=useCallback(m=>{let x=y.current,v=c.current;if(!x||!v)return;let A=M.current;if(v.setNodesState(A.nodes.filter(G=>x.hasNode(G)),{isNeighbour:false}),m&&x.hasNode(m)){let G=x.neighbors(m);v.setNodesState(G,{isNeighbour:true}),M.current={key:m,nodes:G};}else M.current={key:null,nodes:[]};},[]);return useEffect(()=>{let m=T.current,x=y.current;if(!m||!x)return;if(m.clientWidth===0||m.clientHeight===0){let k=new ResizeObserver(()=>{m.clientWidth>0&&m.clientHeight>0&&(k.disconnect(),D(C=>C+1));});return k.observe(m),()=>k.disconnect()}let v=n==="dark",A=new zn(x,m,{customNodeState:{isNeighbour:false},customEdgeState:{},customGraphState:{isDense:x.order>300,isZoomedIn:false},settings:{allowInvalidContainer:true,itemSizesReference:"screen",enableNodeDrag:true,renderEdgeLabels:false,labelRenderedSizeThreshold:7,labelDensity:.1,labelGridCellSize:80},styles:{nodes:[{...DEFAULT_STYLES.nodes,size:{whenState:"isHighlighted",then:k=>k.size+5,else:{whenState:"isHovered",then:k=>k.size+2,else:{attribute:"size"}}},cursor:"pointer",labelColor:v?"#e4e4e7":"#18181b",labelSize:12,labelFont:"ui-sans-serif, system-ui, sans-serif",labelVisibility:(k,C,L)=>C.isHovered||C.isHighlighted?"visible":L.isDense&&!L.isZoomedIn&&!C.isNeighbour?"hidden":"auto",backdropColor:v?"#27272a":"#ffffff",backdropShadowColor:v?"rgba(0, 0, 0, 0.6)":"rgba(0, 0, 0, 0.25)"}],edges:[{...DEFAULT_STYLES.edges,color:v?"#3f3f46":"#d4d4d8",size:1}]}});c.current=A,A.on("clickNode",({node:k})=>{w.current.onSelect(k);}),A.on("clickStage",()=>{w.current.onSelect(null);}),A.on("doubleClickNode",({node:k,event:C})=>{C.preventSigmaDefault(),w.current.onExpand(k);}),A.on("rightClickNode",({node:k,event:C})=>{C.preventSigmaDefault();let L=C.original;L.preventDefault(),w.current.onSelect(k),w.current.onContextMenu(k,{x:L.clientX,y:L.clientY});}),A.on("enterNode",({node:k})=>$(k)),A.on("leaveNode",()=>$(null));let G=k=>{let C=new Set([k,...x.neighbors(k)]);return x.nodes().filter(L=>L===k||!C.has(L))};A.on("nodeDragStart",({node:k})=>{g.current={node:k,x:x.getNodeAttribute(k,"x"),y:x.getNodeAttribute(k,"y")},x.size>0?(P(Ae(x.order),G(k)),N.current=a.current):(E(),x.setNodeAttribute(k,"fixed",true));}),A.on("nodeDrag",({node:k})=>{g.current?.node===k&&(g.current.x=x.getNodeAttribute(k,"x"),g.current.y=x.getNodeAttribute(k,"y"));}),A.on("nodeDragEnd",({node:k})=>{let C=g.current!==null&&a.current!==null&&a.current===N.current;g.current=null,N.current=null,w.current.onPin(k),C&&P(Ae(x.order),G(k));});let q=A.getCamera(),Y=({ratio:k})=>{let C=k<.45;A.getGraphState().isZoomedIn!==C&&A.setGraphState({isZoomedIn:C});};q.on("updated",Y);let V=k=>k.preventDefault();m.addEventListener("contextmenu",V);let K=new ResizeObserver(()=>{m.clientWidth>0&&m.clientHeight>0&&(A.resize(),A.scheduleRefresh());});return K.observe(m),r.current={fit:()=>{q.reset({duration:300});}},()=>{K.disconnect(),q.off("updated",Y),m.removeEventListener("contextmenu",V),r.current=null,c.current=null,M.current={key:null,nodes:[]},A.kill();}},[n,F,r,P,E,$]),useEffect(()=>{let m=y.current;if(!m)return;E();let{changed:x,added:v,hadNodes:A}=Yn(m,e,t);if(!x)return;if(c.current?.setGraphState({isDense:m.order>300}),$(m.hasNode(M.current.key??"")?M.current.key:null),m.size===0){E();return}let G=A&&v.size>0?m.nodes().filter(q=>!v.has(q)):[];P(Ae(G.length>0?v.size:m.order),G);},[e.version]),useEffect(()=>{let m=y.current;m&&m.forEachNode((x,v)=>{m.setNodeAttribute(x,"color",t[v.entity]??"#71717a");});},[t]),useEffect(()=>{let m=y.current,x=c.current;if(!m||!x)return;let v=new Set(e.hiddenEntities),A=false;m.forEachNode((G,q)=>{x.setNodeState(G,{isHidden:v.has(q.entity),isHighlighted:G===e.selected});let Y=e.pinned[G]===true||l.current.has(G);(q.fixed??false)!==Y&&(m.setNodeAttribute(G,"fixed",Y),A=true);}),A&&u.current!==null&&P(Math.max(500,u.current-performance.now()),[...l.current]),m.forEachEdge((G,q,Y,V)=>{x.setEdgeState(G,{isHidden:v.has(m.getNodeAttribute(Y,"entity"))||v.has(m.getNodeAttribute(V,"entity"))});});},[e.hiddenEntities,e.selected,e.pinned,e.version,F,n,P]),useEffect(()=>E,[E]),jsx("div",{className:"fk:h-full fk:w-full fk:min-h-0",ref:T})}function an({menu:e,relationships:t,isPinned:n,onClose:r$1,onExpandAll:i,onExpandAttribute:s,onHide:o,onHideOthers:d,onTogglePin:S,onOpenRecord:T}){let y=e?.key??"";return jsxs(e$3,{onOpenChange:c=>{c||r$1();},open:e!==null,children:[jsx(g$2,{asChild:true,children:jsx("span",{"aria-hidden":"true",className:"fk:fixed fk:size-0",style:{left:e?.x??0,top:e?.y??0}})}),jsxs(h$1,{align:"start",className:"fk:w-52","data-testid":"graph-context-menu",side:"bottom",children:[jsx(j$1,{onSelect:()=>i(y),children:"Expand all"}),t.length>0?jsxs(q,{children:[jsx(r,{children:"Expand"}),jsx(s$1,{className:"fk:max-h-80 fk:overflow-y-auto",children:t.map(c=>jsx(j$1,{onSelect:()=>s(y,c),children:c.label},c.name))})]}):null,jsx(o$1,{}),jsx(j$1,{onSelect:()=>o(y),children:"Hide"}),jsx(j$1,{onSelect:()=>d(y),children:"Hide others"}),jsx(j$1,{onSelect:()=>S(y),children:n?"Unpin position":"Pin position"}),jsx(o$1,{}),jsx(j$1,{onSelect:()=>T(y),children:"Open record"})]})]})}var Ve={nodes:{},edges:{},counts:{},fetched:{},hiddenEntities:[],pinned:{},selected:null,notice:null,version:0};function Un(e,t){if(!t)return e;let n={...e};return Object.entries(t).forEach(([r,i])=>{n[r]={...n[r],...i};}),n}function Vn(e,t){if(!t)return e;let n={...e};return Object.entries(t).forEach(([r,i])=>{let s={...n[r]};Object.entries(i).forEach(([o,d])=>{s[o]=Math.max(s[o]??0,d);}),n[r]=s;}),n}function ln(e,t){let n=Object.fromEntries(Object.entries(e.nodes).filter(([s])=>!t.has(s))),r=Object.fromEntries(Object.entries(e.edges).filter(([,s])=>!t.has(s.source)&&!t.has(s.target))),i=Object.fromEntries(Object.entries(e.pinned).filter(([s])=>!t.has(s)));return {...e,nodes:n,edges:r,pinned:i,selected:e.selected&&t.has(e.selected)?null:e.selected,version:e.version+1}}function un(e,t){switch(t.type){case "merge":{let n={...e.nodes},r=Object.keys(n).length,i=0;t.data.nodes.forEach(o=>{let d=n[o.key];if(d){d.label===d.id&&o.label!==o.id&&(n[o.key]={...d,label:o.label});return}if(r>=c$4){i+=1;return}n[o.key]=o,r+=1;});let s={...e.edges};return t.data.edges.forEach(o=>{n[o.source]&&n[o.target]&&(s[o.key]=o);}),{...e,nodes:n,edges:s,counts:Un(e.counts,t.data.counts),fetched:Vn(e.fetched,t.fetched),notice:i>0?`The canvas holds ${c$4.toLocaleString()} nodes at most; ${i.toLocaleString()} were left out. Hide some nodes to make room.`:e.notice,version:e.version+1}}case "remove":return ln(e,new Set(t.keys));case "keepOnly":{let n=new Set(t.keys);return ln(e,new Set(Object.keys(e.nodes).filter(r=>!n.has(r))))}case "clear":return {...Ve,hiddenEntities:e.hiddenEntities,version:e.version+1};case "toggleEntity":return {...e,hiddenEntities:e.hiddenEntities.includes(t.entity)?e.hiddenEntities.filter(n=>n!==t.entity):[...e.hiddenEntities,t.entity]};case "select":return e.selected===t.key?e:{...e,selected:t.key};case "togglePin":{let n={...e.pinned};return n[t.key]?delete n[t.key]:n[t.key]=true,{...e,pinned:n}}case "notice":return {...e,notice:t.message};default:return e}}function cn(e){return Object.values(e.nodes).reduce((t,n)=>(t[n.entity]=(t[n.entity]??0)+1,t),{})}function dn(e,t){return Object.values(e.edges).reduce((n,r)=>(r.source===t?n[r.sourceAttribute]=(n[r.sourceAttribute]??0)+1:r.target===t&&(n[r.targetAttribute]=(n[r.targetAttribute]??0)+1),n),{})}function fn(e,t){return Object.values(e.edges).flatMap(n=>n.source===t?[n.target]:n.target===t?[n.source]:[])}function or(e){let[t,n,r]=[1,3,5].map(s=>{let o=parseInt(e.slice(s,s+2),16)/255;return o<=.03928?o/12.92:((o+.055)/1.055)**2.4});return .2126*t+.7152*n+.0722*r>.3?"#0a0a0a":"#ffffff"}function gn({node:e,schema:t,scope:n$1,scene:r,colors:i,isLoading:s,onClose:o,onOpenRecord:d,onExpandAll:S,onExpandAttribute:T,onHide:y}){let c=g$1(t,e.entity),a=useMemo(()=>gql(c?p({entity:c,scope:n$1}):"query GraphDetails { __typename }"),[c,n$1]),h$1=useMemo(()=>gql(c?n({entity:c}):"query GraphCounts { __typename }"),[c]),g=useQuery(a,{variables:{id:e.id},skip:!c}),N=useQuery(h$1,{variables:{id:e.id},skip:!c}),f=c?g.data?.[c.plural]?.[0]:void 0,u=c?N.data?.[c.plural]?.[0]:void 0,l=useMemo(()=>dn(r,e.key),[r,e.key]),p$1=c?e$2(c):[],M=c?o$2(c):[],w=f?._updatedAt?new Date(f._updatedAt):null,F=i[e.entity]??"#71717a";return jsxs("aside",{"aria-label":"Selected record",className:"fk:flex fk:w-72 fk:shrink-0 fk:flex-col fk:gap-5 fk:overflow-y-auto fk:border-l fk:bg-background fk:p-4 fk:text-sm","data-testid":"graph-inspector",children:[jsxs("div",{className:"fk:flex fk:flex-col fk:gap-2",children:[jsxs("div",{className:"fk:flex fk:items-center fk:justify-between fk:gap-2",children:[jsx("span",{className:"fk:inline-flex fk:items-center fk:rounded-full fk:px-2 fk:py-0.5 fk:text-xs fk:font-medium",style:{backgroundColor:F,color:or(F)},children:c?h(c):e.entity}),jsx(b$3,{"aria-label":"Close",className:"fk:size-7",onClick:o,size:"icon",variant:"ghost",children:jsx(XIcon,{className:"fk:size-4"})})]}),jsx("h2",{className:"fk:text-base fk:font-semibold fk:leading-snug fk:break-words",children:e.label}),jsxs("div",{className:"fk:flex fk:gap-1.5",children:[jsxs(b$3,{onClick:()=>d(e.key),size:"xs",children:[jsx(SquareArrowOutUpRightIcon,{}),"Open record"]}),jsxs(b$2,{children:[jsx(c$2,{asChild:true,children:jsxs(b$3,{"aria-label":"Expand every relationship",disabled:s,onClick:()=>S(e.key),size:"xs",variant:"outline",children:[s?jsx(LoaderCircleIcon,{className:"fk:animate-spin"}):jsx(ExpandIcon,{}),"Expand"]})}),jsx(e$1,{children:"Load the first related records of every relationship"})]}),jsxs(b$3,{"aria-label":"Hide this node",onClick:()=>y(e.key),size:"xs",variant:"outline",children:[jsx(EyeOffIcon,{}),"Hide"]})]})]}),jsxs("section",{className:"fk:flex fk:flex-col fk:gap-2",children:[jsx("h3",{className:"fk:text-xs fk:font-medium fk:text-muted-foreground",children:"Attributes"}),g.loading&&!f?jsx("span",{className:"fk:text-muted-foreground",children:"Loading\u2026"}):jsxs("dl",{className:"fk:grid fk:grid-cols-[minmax(0,2fr)_minmax(0,3fr)] fk:gap-x-3 fk:gap-y-1.5",children:[M.map(D=>jsxs("div",{className:"fk:contents",children:[jsx("dt",{className:"fk:truncate fk:text-muted-foreground",title:D.label,children:D.label}),jsx("dd",{className:"fk:min-w-0 fk:break-words",children:f&&s$2(f[D.name],n$1)||"\u2014"})]},D.name)),w?jsxs("div",{className:"fk:contents",children:[jsx("dt",{className:"fk:text-muted-foreground",children:"Updated"}),jsx("dd",{children:formatDistance(w,new Date,{addSuffix:true})})]}):null]})]}),p$1.length>0?jsxs("section",{className:"fk:flex fk:flex-col fk:gap-1",children:[jsx("h3",{className:"fk:mb-1 fk:text-xs fk:font-medium fk:text-muted-foreground",children:"Relationships"}),p$1.map(D=>{let E=g$1(t,D.relationship?.entity??""),P=u?.[`${D.name}Connection`]?.aggregate?.count?.nodes,$=l[D.name]??0,m=r.fetched[e.key]?.[D.name]??0,x=typeof P=="number"&&m>=P;return jsxs("div",{className:"fk:flex fk:h-8 fk:items-center fk:gap-2",children:[jsx("span",{"aria-hidden":"true",className:"fk:size-2 fk:shrink-0 fk:rounded-full",style:{backgroundColor:i[D.relationship?.entity??""]??"#71717a"}}),jsx("span",{className:"fk:min-w-0 fk:flex-1 fk:truncate",title:E?h(E):void 0,children:D.label}),jsx("span",{className:"fk:text-xs fk:text-muted-foreground",children:typeof P=="number"?`${$} of ${P.toLocaleString()}`:$}),P===0||x?null:jsx(b$3,{className:"fk:h-6 fk:px-2 fk:text-xs",disabled:s,onClick:()=>T(e.key,D),size:"xs",variant:"outline",children:m>0?"More":"Expand"})]},D.name)})]}):null]})}var kn=EditorView.theme({"&":{fontSize:"13px",height:"100%",minHeight:"0"},"&.cm-focused":{outline:"none"},".cm-scroller":{height:"100%",lineHeight:"1.6",minHeight:"0",overflow:"auto"},".cm-content":{fontSize:"13px",padding:"12px 0"},".cm-gutters":{borderRight:"1px solid transparent"}});function yn({ariaLabel:e,schema:t,theme:n,value:r,onChange:i,onRun:s}){let o=useRef(null),d=useRef(null),S=useRef(new Compartment),T=useRef(i),y=useRef(s),c=useRef(r);return T.current=i,y.current=s,c.current=r,useEffect(()=>{let a=o.current;if(!a)return;let h=new EditorView({parent:a,state:EditorState.create({doc:c.current,extensions:[lineNumbers(),highlightActiveLineGutter(),highlightSpecialChars(),history(),foldGutter(),drawSelection(),dropCursor(),indentOnInput(),bracketMatching(),closeBrackets(),highlightActiveLine(),Prec.highest(keymap.of([{key:"Mod-Enter",run:()=>(y.current(),true)}])),keymap.of([...closeBracketsKeymap,...defaultKeymap,...historyKeymap,...foldKeymap,indentWithTab]),graphql(void 0,{showErrorOnInvalidSchema:false}),EditorView.updateListener.of(g=>{g.docChanged&&T.current(g.state.doc.toString());}),EditorView.contentAttributes.of({"aria-label":e,"aria-multiline":"true",role:"textbox"}),placeholder(`query {
2
- \u2026
3
- }`),S.current.of([n==="dark"?a$3:b$5,kn])]})});return d.current=h,()=>{h.destroy(),d.current=null;}},[]),useEffect(()=>{d.current?.dispatch({effects:S.current.reconfigure([n==="dark"?a$3:b$5,kn])});},[n]),useEffect(()=>{d.current&&updateSchema(d.current,t??void 0);},[t]),useEffect(()=>{let a=d.current;!a||a.state.doc.toString()===r||a.dispatch({changes:{from:0,to:a.state.doc.length,insert:r}});},[r]),jsx("div",{className:"fk:h-full fk:min-h-0 fk:w-full","data-testid":"graph-query-editor",ref:o})}var Me=200,Rr=5,Tr=3;function bn(e){return typeof e=="object"&&e!==null&&typeof e._id=="string"}function me(e){if(Array.isArray(e))return e.flatMap(me);if(typeof e!="object"||e===null)return [];if(bn(e))return [e];let{edges:t}=e;return Array.isArray(t)?t.flatMap(n=>me(n?.node)):[]}function Mr(e,t){let n=e.endsWith("Connection")?e.slice(0,-10):e;return t.find(r=>r.plural===n)}function Gr(e,t){let n=e.endsWith("Connection")?e.slice(0,-10):e;return e$2(t).find(r=>r.name===n)}function Lr(e,t){let n=e$2(e).filter(r=>r.relationship?.entity===t);return n.length===1?n[0]:void 0}function Dr(e,t,n){let r=e.__typename;return typeof r=="string"&&g$1(n,r)||t}function Ir(e,t$1,n){let r=t(e,t$1,n);if(r!==e._id)return r;let i=Object.entries(e).find(([s,o])=>!s.startsWith("_")&&typeof o=="string"&&o.trim().length>0);return i?i[1]:e._id}function xn({data:e,schema:t,scope:n}){let r=new Map,i=new Map,s=(o,d$1)=>{let S=Dr(o,d$1,t);if(!S)return null;let T=d(S.name,o._id),y=Ir(o,S,n),c=r.get(T),a=c??{key:T,entity:S.name,id:o._id,label:y};return c?c.label===c.id&&y!==o._id&&(c.label=y):r.set(T,a),Object.entries(o).forEach(([h,g])=>{let N=Gr(h,S),f=N?g$1(t,N.relationship?.entity??""):void 0;me(g).forEach(u$1=>{let l=s(u$1,f),p=N??(l?Lr(S,l.entity):void 0);if(l&&p&&l.key!==a.key){let M=u(a,l,p);i.has(M.key)||i.set(M.key,M);}});}),a};return Object.entries(e??{}).forEach(([o,d])=>{let S=Mr(o,t);me(d).forEach(T=>s(T,S));}),{nodes:[...r.values()],edges:[...i.values()],counts:{}}}function Sn(e,t){return f$1(e).map(n=>{let r=e$2(n).slice(0,Tr).map(s=>{let o=g$1(e,s.relationship?.entity??"");return ` ${s.name}(limit: ${Rr}) {
4
- _id
5
- ${j$2(o,t)}
6
- }`}),i=j$2(n,t);return {entity:n.name,title:h(n),query:`query {
7
- ${n.plural}(limit: 25) {
8
- _id
9
- ${i?` ${i}
10
- `:""}${r.join(`
11
- `)}
12
- }
13
- }`}})}function Pr(e,t){let n=me(e);return n.length>0?`${n.length} ${n.length===1?"record":"records"}`:Array.isArray(e)&&!(typeof e[0]=="object"&&e[0]!==null)?e.map(r=>s$2(r,t)).join(", "):s$2(e,t)}function Ze(e){if(Array.isArray(e))return e.flatMap(Ze);if(typeof e!="object"||e===null)return [];let{edges:t}=e;return !bn(e)&&Array.isArray(t)?t.flatMap(n=>Ze(n?.node)):[e]}function En(e,t){let n=Object.values(e??{}).flatMap(Ze),r=n.slice(0,Me),i=[];return r.forEach(s=>{Object.keys(s).forEach(o=>{o!=="__typename"&&!i.includes(o)&&i.push(o);});}),{columns:i,rows:r.map(s=>Object.fromEntries(i.map(o=>[o,Pr(s[o],t)]))),total:n.length}}function Te(e){return Array.isArray(e)?e.map(Te):typeof e=="object"&&e!==null?Object.fromEntries(Object.entries(e).filter(([t])=>t!=="__typename").map(([t,n])=>[t,Te(n)])):e}function et(e){return `flexkit-graph:query:${e}`}var Ge=new Map;function jr(e,t,n){let r=Ge.get(t);if(r&&r.hash===n)return r.schema;let i=e.query({query:gql(getIntrospectionQuery()),fetchPolicy:"no-cache",context:f$2}).then(s=>{if(!s.data)throw new Error("The schema could not be introspected.");return buildClientSchema(s.data)});return i.catch(()=>{Ge.get(t)?.schema===i&&Ge.delete(t);}),Ge.set(t,{hash:n,schema:i}),i}function Nn(e,t){let n=useApolloClient(),[r,i]=useState(null);return useEffect(()=>{if(!e)return;let s=false;return jr(n,e,t??"").then(o=>{s||i(o);}).catch(()=>{}),()=>{s=true;}},[n,e,t]),r}function vn({projectId:e,schemaHash:t,schema:n,scope:r,theme:i,isRunning:s,hidden:o$1,onRun:d}){let[S,T]=useState(!o$1),y=Nn(S?e:void 0,t),c=useMemo(()=>Sn(n,r),[n,r]),[a,h]=useState(()=>b$4(et(e))||c[0]?.query||""),g=useRef(a!==""),[N,f]=useState(false),[u,l]=useState("graph"),[p,M]=useState(null),w=useMemo(()=>u==="table"&&p?.data?En(p.data,r):null,[u,p,r]),F=useMemo(()=>u==="json"&&p?.data?JSON.stringify(Te(p.data),null,2):null,[u,p]);useEffect(()=>{o$1||T(true);},[o$1]),useEffect(()=>{let[E]=c;!g.current&&E&&(g.current=true,h(P=>P||E.query));},[c]),useEffect(()=>{c$3(et(e),a);},[e,a]);let D=async()=>{!a.trim()||s||M(await d(a,{append:N}));};return jsxs("section",{"aria-label":"Query",className:`fk:w-[26rem] fk:shrink-0 fk:flex-col fk:border-r fk:bg-background ${o$1?"fk:hidden":"fk:flex"}`,"data-testid":"graph-query-pane",hidden:o$1,children:[jsxs("div",{className:"fk:flex fk:h-12 fk:shrink-0 fk:items-center fk:gap-2 fk:border-b fk:pl-4 fk:pr-3",children:[jsx("span",{className:"fk:text-sm fk:font-semibold",children:"Query"}),jsxs("div",{className:"fk:ml-auto fk:flex fk:items-center fk:gap-1.5",children:[c.length>0?jsxs(e$3,{children:[jsx(g$2,{asChild:true,children:jsxs(b$3,{className:"fk:h-8",size:"sm",variant:"outline",children:["Examples",jsx(ChevronDownIcon,{className:"fk:size-3.5"})]})}),jsx(h$1,{align:"end",className:"fk:max-h-80 fk:overflow-y-auto",children:c.map(E=>jsx(j$1,{onSelect:()=>h(E.query),children:E.title},E.entity))})]}):null,jsxs(b$3,{className:"fk:h-8",disabled:s||!a.trim(),onClick:()=>{D();},size:"sm",children:[s?jsx(LoaderCircleIcon,{className:"fk:size-3.5 fk:animate-spin"}):jsx(PlayIcon,{className:"fk:size-3.5"}),"Run"]})]})]}),jsx("div",{className:"fk:min-h-0 fk:flex-1",children:jsx(yn,{ariaLabel:"GraphQL query",onChange:h,onRun:()=>{D();},schema:y,theme:i,value:a})}),jsxs(ha,{className:"fk:flex fk:max-h-[45%] fk:shrink-0 fk:flex-col fk:gap-0 fk:border-t",onValueChange:E=>l(E),value:u,children:[jsxs("div",{className:"fk:flex fk:h-11 fk:shrink-0 fk:items-center fk:gap-3 fk:px-3",children:[jsxs(ia,{children:[jsx(ja,{value:"graph",children:"Graph"}),jsx(ja,{value:"table",children:"Table"}),jsx(ja,{value:"json",children:"JSON"})]}),jsx("span",{className:"fk:ml-auto fk:truncate fk:text-xs fk:text-muted-foreground","data-testid":"graph-query-stats",children:p&&!p.error?`${p.nodes.toLocaleString()} ${p.nodes===1?"node":"nodes"} \xB7 ${p.edges.toLocaleString()} ${p.edges===1?"relationship":"relationships"} \xB7 ${p.elapsedMs.toLocaleString()} ms`:null})]}),p?.error?jsx("pre",{className:"fk:m-3 fk:mt-0 fk:max-h-40 fk:shrink-0 fk:overflow-auto fk:whitespace-pre-wrap fk:rounded-md fk:border fk:border-destructive/40 fk:bg-destructive/5 fk:p-2 fk:text-xs fk:text-destructive","data-testid":"graph-query-error",children:p.error}):null,jsxs("div",{className:"fk:min-h-0 fk:overflow-auto",children:[jsxs(ka,{className:"fk:flex fk:flex-col fk:gap-3 fk:px-3 fk:pb-3 fk:text-xs fk:text-muted-foreground",value:"graph",children:[jsxs("span",{children:["Every object with an ",jsx("code",{className:"fk:font-mono",children:"_id"})," under an entity field becomes a node; a nested relationship selection becomes a line between them."]}),jsxs("div",{className:"fk:flex fk:items-center fk:gap-2",children:[jsx(o,{checked:N,id:"graph-query-append",onCheckedChange:E=>f(E===true)}),jsx(e$4,{className:"fk:text-xs fk:font-normal",htmlFor:"graph-query-append",children:"Add to the current canvas instead of replacing it"})]})]}),jsx(ka,{className:"fk:px-3 fk:pb-3",value:"table",children:w&&w.columns.length>0?jsxs("div",{className:"fk:flex fk:flex-col fk:gap-1",children:[jsx("div",{className:"fk:overflow-x-auto fk:rounded-md fk:border",children:jsxs($,{children:[jsx(aa,{children:jsx(da,{children:w.columns.map(E=>jsx(ea,{className:"fk:h-8 fk:text-xs",children:E},E))})}),jsx(ba,{children:w.rows.map((E,P)=>jsx(da,{children:w.columns.map($=>jsx(fa,{className:"fk:max-w-56 fk:truncate fk:py-1.5 fk:text-xs",title:E[$],children:E[$]},$))},`${E._id??""}-${P}`))})]})}),w.total>Me?jsxs("span",{className:"fk:text-xs fk:text-muted-foreground",children:["First ",Me.toLocaleString()," of ",w.total.toLocaleString()," records."]}):null]}):jsx("span",{className:"fk:text-xs fk:text-muted-foreground",children:p?.data?"The response has no rows to show.":"Run a query to see its records."})}),jsx(ka,{className:"fk:px-3 fk:pb-3",value:"json",children:F?jsx("pre",{className:"fk:overflow-auto fk:rounded-md fk:border fk:bg-muted/40 fk:p-2 fk:font-mono fk:text-xs",children:F}):jsx("span",{className:"fk:text-xs fk:text-muted-foreground",children:"Run a query to see its response."})})]})]})]})}var Wr=250,Zr=5;function eo(e,t){let n=t.trim();return !n||e.length===0?null:{searchRequests:{searches:e.map(r=>({collection:r.plural}))},commonParams:{q:n,limit:Zr}}}function to(e){let t=useMemo(()=>q$1(e),[e]),n=useMemo(()=>gql(t.length>0?r$1(t):"query GraphTotals { __typename }"),[t]),{data:r}=useQuery(n,{skip:t.length===0});return useMemo(()=>Object.fromEntries(t.map(i=>[i.plural,r?.[`${i.plural}Total`]]).filter(i=>typeof i[1]=="number")),[t,r])}function wn({projectId:e,entities:t,colors:n,onCanvas:r,hiddenEntities:i,onStart:s$1,onHit:o$1,onToggleEntity:d}){let[S$1,T$1]=useState(""),[y]=useDebounce(S$1,Wr),c=useMemo(()=>t.filter(l=>l.attributes.some(p=>p.searchable)),[t]),a=useMemo(()=>eo(c,y),[c,y]),{results:h$1,isLoading:g}=a$1(e,a),N$1=to(t),f=useMemo(()=>new Map(t.map(l=>[l.name,l])),[t]),u=Object.keys(r).sort();return jsxs(N,{collapsible:"icon",variant:"inset",children:[jsxs(R,{children:[jsxs(S,{className:"fk:group-data-[collapsible=icon]:hidden",children:[jsxs("div",{className:"fk:relative",children:[jsx(SearchIcon,{className:"fk:pointer-events-none fk:absolute fk:left-2 fk:top-1/2 fk:size-4 fk:-translate-y-1/2 fk:text-muted-foreground"}),jsx(s,{"aria-label":"Search records to add to the canvas",className:"fk:h-8 fk:bg-background fk:pl-8 fk:shadow-none",onChange:l=>T$1(l.target.value),placeholder:c.length>0?"Search records\u2026":"No searchable entity",disabled:c.length===0,value:S$1})]}),a?jsxs("ul",{className:"fk:mt-2 fk:flex fk:flex-col fk:gap-0.5","data-testid":"graph-search-results",children:[h$1.map(l=>{let p=f.get(l._entityName),M=l[a$2(p)?.name??""];return jsx("li",{children:jsxs("button",{className:"fk:flex fk:w-full fk:items-center fk:gap-2 fk:rounded-md fk:px-2 fk:py-1.5 fk:text-left fk:text-sm fk:hover:bg-sidebar-accent",onClick:()=>o$1(l._entityName,l._id),type:"button",children:[jsx("span",{"aria-hidden":"true",className:"fk:size-2.5 fk:shrink-0 fk:rounded-full",style:{backgroundColor:n[l._entityName]??"#71717a"}}),jsx("span",{className:"fk:min-w-0 fk:flex-1 fk:truncate",children:String(M??l._id)})]})},`${l._entityName}:${l._id}`)}),!g&&h$1.length===0?jsx("li",{className:"fk:px-2 fk:py-1.5 fk:text-sm fk:text-muted-foreground",children:"Nothing found"}):null]}):null]}),jsxs(S,{children:[jsx(T,{children:"Nodes"}),jsx(V,{children:t.map(l=>jsx(W,{children:jsxs(X,{onClick:()=>s$1(l),tooltip:h(l),children:[jsx("span",{"aria-hidden":"true",className:"fk:size-2.5 fk:shrink-0 fk:rounded-full",style:{backgroundColor:n[l.name]??"#71717a"}}),jsx("span",{className:"fk:truncate",children:h(l)}),N$1[l.plural]!==void 0?jsx("span",{className:"fk:ml-auto fk:text-xs fk:text-muted-foreground",children:N$1[l.plural]?.toLocaleString()}):null]})},l.name))})]}),u.length>0?jsxs(S,{className:"fk:group-data-[collapsible=icon]:hidden",children:[jsx(T,{children:"On canvas"}),jsx("ul",{className:"fk:flex fk:flex-col","data-testid":"graph-legend",children:u.map(l=>{let p=f.get(l),M=!i.includes(l),w=`graph-legend-${l}`;return jsxs("li",{className:"fk:flex fk:h-8 fk:items-center fk:gap-2 fk:px-2 fk:text-sm",children:[jsx("span",{"aria-hidden":"true",className:"fk:size-2.5 fk:shrink-0 fk:rounded-full",style:{backgroundColor:n[l]??"#71717a",opacity:M?1:.35}}),jsx("label",{className:"fk:min-w-0 fk:flex-1 fk:cursor-pointer fk:truncate",htmlFor:w,children:p?h(p):l}),jsx("span",{className:"fk:text-xs fk:text-muted-foreground",children:r[l]?.toLocaleString()}),jsx(o,{"aria-label":`Show ${p?h(p):l}`,checked:M,id:w,onCheckedChange:()=>d(l)})]},l)})})]}):null]}),jsx(P,{})]})}function Le({label:e,icon:t,disabled:n,onClick:r}){return jsxs(b$2,{children:[jsx(c$2,{asChild:true,children:jsxs(b$3,{className:"fk:h-8 fk:gap-1.5 fk:px-2.5",disabled:n,onClick:r,size:"sm",variant:"ghost",children:[t,jsx("span",{className:"fk:text-xs",children:e})]})}),jsx(e$1,{children:e})]})}function An({hasSelection:e,hasNodes:t,isLoading:n,onFit:r,onExpand:i,onHide:s,onClear:o}){return jsxs("div",{className:"fk:flex fk:items-center fk:gap-0.5 fk:rounded-lg fk:border fk:bg-background fk:p-1 fk:shadow-xs","data-testid":"graph-toolbar",children:[jsx(Le,{disabled:!t,icon:jsx(ScanIcon,{className:"fk:size-3.5"}),label:"Fit",onClick:r}),jsx(v$1,{className:"fk:mx-0.5 fk:h-4",orientation:"vertical"}),jsx(Le,{disabled:!e||n,icon:n?jsx(LoaderCircleIcon,{className:"fk:size-3.5 fk:animate-spin"}):jsx(ExpandIcon,{className:"fk:size-3.5"}),label:"Expand",onClick:i}),jsx(Le,{disabled:!e,icon:jsx(EyeOffIcon,{className:"fk:size-3.5"}),label:"Hide",onClick:s}),jsx(v$1,{className:"fk:mx-0.5 fk:h-4",orientation:"vertical"}),jsx(Le,{disabled:!t,icon:jsx(EraserIcon,{className:"fk:size-3.5"}),label:"Clear",onClick:o})]})}function Ie(e,t="The records could not be loaded."){return e instanceof Error?e.message:t}function Cn({schema:e,scope:t}){let n=useApolloClient(),[r,i]=useReducer(un,Ve),[s,o]=useState(0),d$1=useRef(0),S=useCallback(async(a,h)=>{let g="ids"in h?h.ids:void 0,N="ids"in h?h.expand:false,f="limit"in h?h.limit:g?.length;o(u=>u+1);try{let l$1=(await n.query({query:gql(l({entity:a,schema:e,scope:t,expand:N})),variables:{where:g?{_id:{in:g}}:void 0,limit:f},fetchPolicy:"network-only"})).data?.[a.plural]??[];return d$1.current+=1,i({type:"merge",data:v({records:l$1,entity:a,schema:e,scope:t}),fetched:w(l$1,a)}),l$1.map(p=>d(a.name,p._id))}catch(u){return qa.error(Ie(u)),[]}finally{o(u=>u-1);}},[n,e,t]),T=useCallback(async a=>{let h=r.nodes[a],g=h?g$1(e,h.entity):void 0;!h||!g||await S(g,{ids:[h.id],expand:true});},[S,e,r.nodes]),y=useCallback(async(a$1,h)=>{let g=r.nodes[a$1],N=g?g$1(e,g.entity):void 0;if(!g||!N)return;let f=r.fetched[a$1]?.[h.name]??0;o(u=>u+1);try{let l=(await n.query({query:gql(m({entity:N,schema:e,scope:t,attribute:h})),variables:{id:g.id,offset:f,limit:a},fetchPolicy:"network-only"})).data?.[N.plural]??[];d$1.current+=1;let p=l.reduce((M,w)=>{let F=w[h.name];return M+(Array.isArray(F)?F.length:0)},0);i({type:"merge",data:v({records:l,entity:N,schema:e,scope:t}),fetched:{[a$1]:{[h.name]:f+p}}});}catch(u){qa.error(Ie(u));}finally{o(u=>u-1);}},[n,e,t,r.fetched,r.nodes]),c=useCallback(async(a,{append:h})=>{let g=performance.now(),N;try{N=gql(a);}catch(u){return {data:null,error:Ie(u,"The query could not be parsed."),elapsedMs:0,nodes:0,edges:0}}let f=d$1.current;o(u=>u+1);try{let u=await n.query({query:N,fetchPolicy:"no-cache",errorPolicy:"all",context:f$2}),l=u.data??null,p=xn({data:l,schema:e,scope:t});return p.nodes.length>0&&(!h&&!u.error&&d$1.current===f&&i({type:"clear"}),d$1.current+=1,i({type:"merge",data:p})),{data:l,error:u.error?u.error.message:null,elapsedMs:Math.round(performance.now()-g),nodes:p.nodes.length,edges:p.edges.length}}catch(u){return {data:null,error:Ie(u,"The query failed."),elapsedMs:Math.round(performance.now()-g),nodes:0,edges:0}}finally{o(u=>u-1);}},[n,e,t]);return {state:r,dispatch:i,isLoading:s>0,loadRecords:S,expandAll:T,expandAttribute:y,runQuery:c}}function Zi(){let{currentProjectId:e$3,currentProject:t,currentProjectSchema:n}=f();useEffect(()=>{e$3&&t&&e({event:"graph_opened",projectId:e$3});},[e$3,t]);let[,r]=g(),{scope:i$1}=c(),{resolvedTheme:s}=b(),o=useLocation(),d=j(),S=s==="dark"?"dark":"light",T=t?.scopes?.find(b=>b.isDefault)?.name??"default",y$1=i$1||T,c$3=r.user?.spaces,a=useMemo(()=>c$1(n,c$3),[n,c$3]),h=useMemo(()=>f$1(a),[a]),g$2=useMemo(()=>i(a,S),[a,S]),N=Cn({schema:a,scope:y$1}),{state:f$2,dispatch:u,isLoading:l,loadRecords:p,expandAll:M$1,expandAttribute:w,runQuery:F}=N,D=useRef(null),[E,P]=useState(null),[$,m]=useState(false),[x,v]=useState("explore"),A=useRef(null),G=useMemo(()=>cn(f$2),[f$2]),q=f$2.selected?f$2.nodes[f$2.selected]:void 0,Y=E?f$2.nodes[E.key]:void 0,V=Y?g$1(a,Y.entity):void 0,K$1=Object.keys(f$2.nodes).length,k$1=Object.keys(f$2.edges).length,C=K(),L=useCallback(b=>u({type:"select",key:b}),[u]),oe=useCallback(b=>{let O=f$2.nodes[b],ie=O?g$1(a,O.entity):void 0;O&&ie&&d({type:"EditEntity",payload:{entityId:O.id,entityNamePlural:ie.plural}});},[d,a,f$2.nodes]),_e=useCallback(b=>u({type:"remove",keys:[b]}),[u]),Mn=useCallback(b=>u({type:"keepOnly",keys:[b,...fn(f$2,b)]}),[u,f$2]),Gn=useCallback(b=>u({type:"togglePin",key:b}),[u]),Ln=useCallback(b=>{f$2.pinned[b]||u({type:"togglePin",key:b});},[u,f$2.pinned]),Dn=useCallback(async(b,O)=>{let ie=g$1(a,b);if(!ie)return;let[de]=await p(ie,{ids:[O],expand:true});de&&L(de);},[p,a,L]),In=useCallback((b,O)=>{P(null),w(b,O);},[w]);return useEffect(()=>{let b=y(o.search);if(!b||A.current===o.key)return;let O=g$1(a,b.entity);if(!O||a.length===0)return;A.current=o.key;let ie=b.ids.length>0?{ids:b.ids,expand:b.ids.length<=k}:{limit:b$1};p(O,ie).then(de=>{b.ids.length===1&&de[0]&&L(de[0]);});},[o.key,o.search,a,p,L]),e$3?jsxs(M,{className:"fk:h-full",defaultOpen:C,children:[jsx(wn,{colors:g$2,entities:h,hiddenEntities:f$2.hiddenEntities,onCanvas:G,onHit:(b,O)=>{Dn(b,O);},onStart:b=>{p(b,{limit:b$1});},onToggleEntity:b=>u({type:"toggleEntity",entity:b}),projectId:e$3}),jsx(Q,{className:"fk:min-w-0",children:jsxs("div",{className:"fk:flex fk:h-full fk:min-h-0 fk:min-w-0","data-testid":"graph-app",children:[jsx(vn,{hidden:x!=="query",isRunning:l,onRun:F,projectId:e$3,schema:a,schemaHash:t?.schemaHash??null,scope:y$1,theme:S},e$3),jsxs("div",{className:"fk:relative fk:min-w-0 fk:flex-1 fk:overflow-hidden fk:bg-background",children:[jsxs("div",{className:"fk:pointer-events-none fk:absolute fk:left-3 fk:right-3 fk:top-3 fk:z-10 fk:flex fk:flex-wrap fk:items-start fk:justify-between fk:gap-2",children:[jsxs("div",{className:"fk:pointer-events-auto fk:flex fk:items-center fk:gap-2",children:[jsxs(b$2,{children:[jsx(c$2,{asChild:true,children:jsx(O,{className:"fk:h-8 fk:w-8 fk:rounded-lg fk:hover:bg-transparent fk:dark:hover:bg-transparent"})}),jsx(e$1,{children:"Toggle Sidebar"})]}),jsx(An,{hasNodes:K$1>0,hasSelection:q!==void 0,isLoading:l,onClear:()=>u({type:"clear"}),onExpand:()=>{f$2.selected&&M$1(f$2.selected);},onFit:()=>D.current?.fit(),onHide:()=>{f$2.selected&&_e(f$2.selected);}})]}),jsxs("div",{"aria-label":"View",className:"fk:pointer-events-auto fk:flex fk:items-center fk:gap-0.5 fk:rounded-lg fk:border fk:bg-background fk:p-0.5 fk:shadow-xs","data-testid":"graph-mode",role:"group",children:[jsx(b$3,{"aria-pressed":x==="explore",className:"fk:h-7 fk:px-3 fk:text-xs",onClick:()=>v("explore"),size:"sm",variant:x==="explore"?"default":"ghost",children:"Explore"}),jsx(b$3,{"aria-pressed":x==="query",className:"fk:h-7 fk:px-3 fk:text-xs",onClick:()=>v("query"),size:"sm",variant:x==="query"?"default":"ghost",children:"Query"})]})]}),K$1>0?null:jsx("div",{className:"fk:pointer-events-none fk:absolute fk:inset-0 fk:flex fk:items-center fk:justify-center fk:p-8 fk:text-center fk:text-sm fk:text-muted-foreground",children:l?"Loading records\u2026":x==="query"?"Run a query to draw its result.":"Search a record or start from an entity to draw its graph."}),jsx(sn,{apiRef:D,colors:g$2,onContextMenu:(b,O)=>P({key:b,...O}),onExpand:b=>{M$1(b);},onLayoutChange:m,onPin:Ln,onSelect:L,scene:f$2,theme:S}),jsxs("div",{className:"fk:absolute fk:bottom-3 fk:left-3 fk:flex fk:max-w-[calc(100%-1.5rem)] fk:items-center fk:gap-2 fk:rounded-lg fk:border fk:bg-background fk:px-2.5 fk:py-1.5 fk:text-xs fk:text-muted-foreground fk:shadow-xs","data-testid":"graph-status",children:[jsxs("span",{children:[K$1.toLocaleString()," ",K$1===1?"node":"nodes"," \xB7 ",k$1.toLocaleString()," ",k$1===1?"relationship":"relationships"]}),$?jsx("span",{children:"\xB7 laying out\u2026"}):null,f$2.notice?jsxs("span",{className:"fk:truncate fk:text-foreground",children:["\xB7 ",f$2.notice]}):null]}),jsx(an,{isPinned:E?f$2.pinned[E.key]===true:false,menu:E,onClose:()=>P(null),onExpandAll:b=>{M$1(b);},onExpandAttribute:In,onHide:_e,onHideOthers:Mn,onOpenRecord:oe,onTogglePin:Gn,relationships:V?e$2(V):[]})]}),q?jsx(gn,{colors:g$2,isLoading:l,node:q,onClose:()=>L(null),onExpandAll:b=>{M$1(b);},onExpandAttribute:(b,O)=>{w(b,O);},onHide:_e,onOpenRecord:oe,scene:f$2,schema:a,scope:y$1}):null]})})]}):jsx("main",{className:"fk:flex fk:h-full fk:flex-1 fk:items-center fk:justify-center fk:p-8 fk:text-sm fk:text-muted-foreground",children:"Select a project to explore its graph."})}export{Zi as Root};//# sourceMappingURL=root-LFJ5BQSY.js.map
14
- //# sourceMappingURL=root-LFJ5BQSY.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {b,c}from'./chunk-JWJJZVP3.js';import'./chunk-JAPZBEBZ.js';import {a}from'./chunk-ERCVR23U.js';import'./chunk-QSTWBKPN.js';import'./chunk-5LGIALCK.js';import {g,f as f$1}from'./chunk-U6VZY3V2.js';import'./chunk-GSGPULRL.js';import'./chunk-2NXQF2F7.js';import'./chunk-V7C4EHK3.js';import'./chunk-7KLXWCDS.js';import'./chunk-HKN6BX5U.js';import {f}from'./chunk-HZOD2HOF.js';import'./chunk-WPCPL2TQ.js';import'./chunk-5CVDMZUI.js';import {K,M,Q,N,S,U as U$1,s as s$1,R,V as V$1,W,X,P}from'./chunk-DGIY4SKN.js';import'./chunk-SZEGGBOC.js';import {b as b$1}from'./chunk-32ZU4MLE.js';import'./chunk-U45E5X3H.js';import'./chunk-HDOIOXMP.js';import'./chunk-USNXQOMJ.js';import'./chunk-6NRQMG26.js';import'./chunk-O2QMYUPS.js';import {Outlet,useLocation,NavLink}from'react-router-dom';import {useState}from'react';import {SearchIcon,XIcon,SquarePenIcon,BellIcon,BotIcon,HistoryIcon,InboxIcon,PlugIcon}from'lucide-react';import T from'swr';import {jsxs,jsx}from'react/jsx-runtime';var U=300,s=NavLink;function V(){let{currentProjectId:a}=f(),{data:e}=T(a?g(a).approvalsCount:null,f$1,{refreshInterval:3e4}),n=e?.pendingCount??0;return n===0?null:jsx(b$1,{className:"fk:ml-auto fk:h-5 fk:min-w-5 fk:justify-center fk:rounded-full fk:bg-amber-500/20 fk:px-1.5 fk:text-[0.6875rem] fk:text-amber-600 fk:border-none fk:corner-squircle",children:n>99?"99+":n.toString()})}function F(){let{currentProjectId:a$1}=f(),e=a(a$1),n=e?.needsActionCount??0,l=n>0?n:e?.unreadCount??0;return l===0?null:jsx(b$1,{className:`fk:ml-auto fk:h-5 fk:min-w-5 fk:justify-center fk:rounded-full fk:px-1.5 fk:text-[0.6875rem] fk:border-none fk:corner-squircle ${n>0?"fk:bg-amber-500/20 fk:text-amber-600":"fk:bg-muted fk:text-muted-foreground"}`,children:l>99?"99+":l.toString()})}function B(){let e=useLocation().pathname.replace(/\/$/,""),n=e.endsWith("/ai/agent"),l=e.endsWith("/ai/runs"),P$1=e.endsWith("/ai/approvals"),R$1=e.endsWith("/ai/activity")||e.includes("/ai/activity/"),W$1=e.includes("/ai/plugins")||e.includes("/ai/skills"),L=e.includes("/ai/automations"),[d,k]=useState(""),E=b(d.trim(),U);return jsxs(N,{collapsible:"icon",variant:"inset",children:[jsx(S,{className:"fk:shrink-0 fk:pb-1.5 fk:group-data-[collapsible=icon]:hidden",children:jsxs(U$1,{className:"fk:relative",children:[jsx(SearchIcon,{className:"fk:absolute fk:left-2 fk:top-1/2 fk:size-3.5 fk:-translate-y-1/2 fk:text-muted-foreground"}),jsx(s$1,{className:"fk:h-8 fk:bg-background fk:pl-7 fk:pr-7 fk:text-sm",placeholder:"Search chats...",value:d,onChange:G=>k(G.target.value)}),d?jsx("button",{"aria-label":"Clear search",className:"fk:absolute fk:right-2 fk:top-1/2 fk:-translate-y-1/2 fk:cursor-pointer fk:text-muted-foreground fk:hover:text-foreground",type:"button",onClick:()=>k(""),children:jsx(XIcon,{className:"fk:size-3.5"})}):null]})}),jsxs(R,{children:[jsx(S,{children:jsxs(V$1,{children:[jsx(W,{children:jsx(X,{asChild:true,isActive:n,tooltip:"New chat",children:jsxs(s,{to:"agent",children:[jsx(SquarePenIcon,{className:"fk:h-4 fk:w-4",strokeWidth:2}),jsx("span",{children:"New chat"})]})})}),jsx(W,{children:jsx(X,{asChild:true,isActive:R$1,tooltip:"Activity",children:jsxs(s,{to:"activity",children:[jsx(BellIcon,{className:"fk:h-4 fk:w-4",strokeWidth:2}),jsx("span",{children:"Activity"}),jsx(F,{})]})})}),jsx(W,{children:jsx(X,{asChild:true,isActive:L,tooltip:"Automations",children:jsxs(s,{to:"automations",children:[jsx(BotIcon,{className:"fk:h-4 fk:w-4",strokeWidth:2}),jsx("span",{children:"Automations"})]})})}),jsx(W,{children:jsx(X,{asChild:true,isActive:l,tooltip:"Run History",children:jsxs(s,{to:"runs",children:[jsx(HistoryIcon,{className:"fk:h-4 fk:w-4",strokeWidth:2}),jsx("span",{children:"Run History"})]})})}),jsx(W,{children:jsx(X,{asChild:true,isActive:P$1,tooltip:"Approvals",children:jsxs(s,{to:"approvals",children:[jsx(InboxIcon,{className:"fk:h-4 fk:w-4",strokeWidth:2}),jsx("span",{children:"Approvals"}),jsx(V,{})]})})}),jsx(W,{children:jsx(X,{asChild:true,isActive:W$1,tooltip:"Plugins",children:jsxs(s,{to:"plugins",children:[jsx(PlugIcon,{className:"fk:size-4"}),jsx("span",{children:"Plugins"})]})})})]})}),jsx(S,{className:"fk:mt-4 fk:group-data-[collapsible=icon]:hidden",children:jsx(U$1,{children:jsx(c,{query:E})})})]}),jsx(P,{})]})}function pt(){let{currentProjectId:a}=f(),e=K();return a?jsxs(M,{className:"fk:h-full",defaultOpen:e,children:[jsx(B,{}),jsx(Q,{className:"fk:min-w-0",children:jsx("div",{className:"fk:flex fk:h-full fk:min-h-0 fk:min-w-0 fk:flex-col fk:overflow-hidden fk:pl-4 fk:pt-3",children:jsx("div",{className:"fk:flex fk:min-h-0 fk:min-w-0 fk:flex-1 fk:flex-col",children:jsx(Outlet,{})})})})]}):jsx("main",{className:"fk:flex fk:h-full fk:flex-1 fk:items-center fk:justify-center fk:p-8 fk:text-sm fk:text-muted-foreground",children:"Select a project to manage automations and skills."})}export{pt as Root};//# sourceMappingURL=root-OXS3QQX6.js.map
2
- //# sourceMappingURL=root-OXS3QQX6.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {a}from'./chunk-AY2RXJWS.js';import'./chunk-XMOSCJOI.js';import'./chunk-ERDARDGB.js';import'./chunk-HZOD2HOF.js';import'./chunk-WPCPL2TQ.js';import'./chunk-5CVDMZUI.js';import {z,m,w,q,p,r,t,b as b$1}from'./chunk-32ZU4MLE.js';import'./chunk-U45E5X3H.js';import {a as a$1,d,c,e,g}from'./chunk-HDOIOXMP.js';import {b}from'./chunk-6NRQMG26.js';import {a as a$2}from'./chunk-O2QMYUPS.js';import {useState,useMemo,useRef}from'react';import {useDebounce}from'use-debounce';import {LoaderCircle,Search,X}from'lucide-react';import {Command}from'cmdk';import {useNavigate}from'react-router-dom';import {jsxs,jsx}from'react/jsx-runtime';var s="all",ne=200,oe=2,ae=8,le=25;function se(t){let n=t.replace(/([A-Z])/g," $1");return n.charAt(0).toUpperCase()+n.slice(1).trim()}function ie(t){return t.filter(n=>n.attributes.some(o=>o.searchable))}function fe(t,n){return n===s?t.map(o=>o.plural):t.filter(o=>o.plural===n).map(o=>o.plural)}function ce(t,n){return n===s?s:t.some(o=>o.plural===n)?n:s}function ue(t,n){let o=n.trim();return o.length<oe?null:{searchRequests:{searches:t.map(m=>({collection:m}))},commonParams:{q:o,limit:t.length>1?ae:le}}}function me(t){return t.menu?.label??se(t.plural)}function Ee({onSelect:t$1,searchPlaceholder:n="Search...",noResultsMsg:o="Nothing found",className:m$1,onSearchChange:S,projectId:G,schema:C}){let[V,l]=useState(false),[i,N]=useState(""),[U,X$1]=useState(s),f=useMemo(()=>ie(C),[C]),k=ce(f,U),I=useMemo(()=>fe(f,k),[f,k]),[d$1]=useDebounce(i,ne),w$1=useMemo(()=>ue(I,d$1),[I,d$1]),c$1=useRef(null),{results:p$1,isLoading:j}=a(G,w$1),h=j||d$1!==i,z$1=V&&w$1!==null&&(p$1.length>0||!h),H=useNavigate();function F(e){N(e),e.length>0&&l(true),e.length===0&&l(false),S&&S(e);}function J(e){X$1(e),i.length>0&&l(true);}function Q(){N(""),l(false),c$1.current&&(c$1.current.value="");let e=new URL(window.location.href);e.searchParams.has("id")&&(e.searchParams.delete("id"),H(e.pathname+e.search));}return jsxs(z,{children:[jsxs(a$1,{onValueChange:J,value:k,children:[jsx(d,{"aria-label":"Filter search by entity",className:"fk:w-36 fk:h-9 fk:py-1 fk:rounded-r-none fk:border-border fk:shadow-none fk:corner-squircle",children:jsx(c,{})}),jsxs(e,{children:[jsx(g,{value:s,children:"All"}),f.map(e=>jsx(g,{value:e.plural,children:me(e)},e.plural))]})]}),jsxs(m,{className:"fk:relative fk:overflow-visible fk:h-auto fk:justify-center fk:rounded-none fk:bg-transparent fk:corner-squircle",onBlur:()=>{setTimeout(()=>{l(false);},300);},onKeyDown:e=>{e.key==="Escape"&&(e.preventDefault(),l(false));},shouldFilter:false,children:[jsxs("div",{className:a$2("fk:flex fk:items-center fk:border-y fk:border-r fk:border-border fk:rounded-r-md fk:bg-background fk:pl-3 fk:pr-2 fk:h-9 fk:md:w-25 fk:lg:w-75 fk:corner-squircle","fk:outline-none fk:transition-[color,box-shadow] fk:has-[input:focus-visible]:border-ring fk:has-[input:focus-visible]:ring-[3px] fk:has-[input:focus-visible]:ring-ring/50"),children:[h?jsx(LoaderCircle,{className:"fk:mr-2 fk:h-4 fk:w-4 fk:shrink-0 fk:opacity-50 fk:animate-spin"}):jsx(Search,{className:"fk:mr-2 fk:h-4 fk:w-4 fk:shrink-0 fk:opacity-50"}),jsx(Command.Input,{className:a$2("fk:flex fk:h-9 fk:w-full fk:rounded-none fk:bg-transparent fk:py-1 fk:text-sm fk:outline-hidden fk:placeholder:text-muted-foreground fk:disabled:cursor-not-allowed fk:disabled:opacity-50 fk:corner-squircle",m$1),placeholder:n,onMouseDown:()=>{(c$1.current?.value.length??0)>0&&l(true);},onValueChange:F,ref:c$1,value:i}),i&&jsx(b,{"aria-label":"Clear search",className:"fk:flex fk:items-center fk:justify-center fk:ml-2 fk:h-6 fk:w-6 fk:text-muted-foreground fk:hover:text-foreground fk:hover:bg-foreground/10 fk:cursor-pointer fk:rounded-full fk:bg-transparent fk:corner-squircle",onClick:Q,type:"button",children:jsx(X,{className:"fk:h-4 fk:w-4"})})]}),jsx("div",{className:"fk:relative fk:max-w-150",children:jsx("div",{className:a$2("fk:mt-1 fk:animate-in fk:fade-in-0 fk:zoom-in-95 fk:absolute fk:top-0 fk:z-50 fk:w-full fk:rounded-md fk:bg-popover fk:outline-hidden fk:drop-shadow-md fk:border fk:border-border fk:corner-squircle",z$1?"fk:block":"fk:hidden"),children:jsxs(w,{className:"fk:max-h-55 fk:overflow-auto",children:[!h&&jsx(q,{children:o}),jsx(p,{children:jsxs(r,{children:[p$1.length>0&&jsx(t,{"aria-hidden":"true",className:"fk:hidden!",value:"-"}),p$1.map(e=>jsxs(t,{className:"fk:flex",value:e._id,onSelect:K=>{t$1({entityName:e._entityName,entityNamePlural:e._entityNamePlural,entityId:K});},children:[jsx("span",{className:"fk:basis-full",children:e[Object.keys(e)[3]]}),jsx(b$1,{className:"fk:py-px fk:text-[0.6875rem] fk:leading-3 fk:bg-teal-400",children:e._entityName})]},e._id))]})})]})})})]})]})}export{Ee as Search};//# sourceMappingURL=search-AZK3Q2KX.js.map
2
- //# sourceMappingURL=search-AZK3Q2KX.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {b as b$4,a as a$2}from'./chunk-MLHXPTBT.js';import {b as b$1}from'./chunk-5AJXR47U.js';import {a as a$1}from'./chunk-QSTWBKPN.js';import'./chunk-5LGIALCK.js';import {f,g,d as d$1}from'./chunk-U6VZY3V2.js';import {b}from'./chunk-V7C4EHK3.js';import'./chunk-7KLXWCDS.js';import'./chunk-HKN6BX5U.js';import {f as f$1}from'./chunk-HZOD2HOF.js';import {g as g$1}from'./chunk-WPCPL2TQ.js';import'./chunk-5CVDMZUI.js';import {Tc,Vc,s,na,e,ha,ia,ja,qa,O}from'./chunk-DGIY4SKN.js';import {t}from'./chunk-SZEGGBOC.js';import {w,v,b as b$5}from'./chunk-32ZU4MLE.js';import'./chunk-U45E5X3H.js';import {a,d,c as c$1,e as e$2,g as g$2}from'./chunk-HDOIOXMP.js';import {b as b$3,c,e as e$1}from'./chunk-USNXQOMJ.js';import {b as b$2}from'./chunk-6NRQMG26.js';import'./chunk-O2QMYUPS.js';import {useState,useId,useRef,useMemo,useEffect}from'react';import {Plus,LoaderCircle,Info,PenLine,Eye,Trash2,GraduationCapIcon,ArrowLeft}from'lucide-react';import Lt from'react-markdown';import {useNavigate,Link,useParams}from'react-router-dom';import pe from'swr';import Et from'swr/infinite';import {history,defaultKeymap,historyKeymap,indentWithTab}from'@codemirror/commands';import {markdown}from'@codemirror/lang-markdown';import {languages}from'@codemirror/language-data';import {foldGutter,indentOnInput,bracketMatching,foldKeymap}from'@codemirror/language';import {highlightSelectionMatches,searchKeymap}from'@codemirror/search';import {Compartment,EditorState,Prec}from'@codemirror/state';import {EditorView,lineNumbers,highlightActiveLineGutter,highlightSpecialChars,drawSelection,dropCursor,highlightActiveLine,keymap,placeholder}from'@codemirror/view';import {jsx,jsxs,Fragment}from'react/jsx-runtime';function ce(){let t=document.documentElement;return t.getAttribute("data-theme")==="dark"||t.classList.contains("dark")||t.style.colorScheme==="dark"}var pt=EditorView.theme({"&":{fontSize:"13px",height:"100%",maxHeight:"100%",maxWidth:"100%",minHeight:"0",minWidth:"0",width:"100%"},"&.cm-focused":{outline:"none"},".cm-scroller":{height:"100%",lineHeight:"1.6",minHeight:"0",minWidth:"0",overflow:"auto",width:"100%"},".cm-content":{fontSize:"13px",fontStyle:"normal",fontWeight:"400",minWidth:"0 !important",padding:"12px 0"},".cm-line, .cm-line span":{fontSize:"inherit",fontStyle:"inherit",fontWeight:"inherit",lineHeight:"inherit"},".cm-gutters":{borderRight:"1px solid transparent"},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none"}});function de(t){return [t?a$2:b$4,pt]}function je(t){return [EditorState.readOnly.of(t),EditorView.editable.of(!t)]}function Be(t){let i={"aria-multiline":"true",role:"textbox"};return t.ariaLabel&&(i["aria-label"]=t.ariaLabel),t.ariaLabelledBy&&(i["aria-labelledby"]=t.ariaLabelledBy),t.ariaDescribedBy&&(i["aria-describedby"]=t.ariaDescribedBy),t.ariaInvalid&&(i["aria-invalid"]="true"),t.readOnly&&(i["aria-readonly"]="true"),i}function Re({ariaDescribedBy:t,ariaInvalid:i,ariaLabel:f,ariaLabelledBy:a,className:l,onBlur:c,onChange:d,onSave:m,placeholder:k,readOnly:o=false,value:u}){let p=useRef(null),h=useRef(null),T=useRef(new Compartment),M=useRef(new Compartment),y=useRef(new Compartment),N=useRef(c),w=useRef(d),E=useRef(m),v=useRef(u);return N.current=c,w.current=d,E.current=m,v.current=u,useEffect(()=>{let s=p.current;if(!s)return;let g=new EditorView({parent:s,state:EditorState.create({doc:v.current,extensions:[lineNumbers(),highlightActiveLineGutter(),highlightSpecialChars(),history(),foldGutter(),drawSelection(),dropCursor(),EditorState.allowMultipleSelections.of(true),indentOnInput(),bracketMatching(),highlightActiveLine(),highlightSelectionMatches(),EditorView.lineWrapping,markdown({codeLanguages:languages}),keymap.of([...defaultKeymap,...historyKeymap,...searchKeymap,...foldKeymap,indentWithTab]),Prec.highest(keymap.of([{key:"Mod-s",run:()=>(E.current?.(),true)}])),EditorView.updateListener.of(F=>{F.docChanged&&w.current?.(F.state.doc.toString()),F.focusChanged&&!F.view.hasFocus&&N.current?.();}),T.current.of(de(ce())),M.current.of(je(o)),y.current.of(EditorView.contentAttributes.of(Be({ariaDescribedBy:t,ariaInvalid:i,ariaLabel:f,ariaLabelledBy:a,readOnly:o}))),...k?[placeholder(k)]:[]]})});h.current=g;let q=new ResizeObserver(()=>{g.requestMeasure();});q.observe(s);let $=new MutationObserver(()=>{g.dispatch({effects:T.current.reconfigure(de(ce()))});});return $.observe(document.documentElement,{attributeFilter:["class","data-theme","style"],attributes:true}),()=>{q.disconnect(),$.disconnect(),g.destroy(),h.current=null;}},[]),useEffect(()=>{let s=h.current;s&&s.dispatch({effects:T.current.reconfigure(de(ce()))});},[b$4,a$2]),useEffect(()=>{let s=h.current;if(!s)return;let g=s.state.doc.toString();g!==u&&s.dispatch({changes:{from:0,to:g.length,insert:u}});},[u]),useEffect(()=>{let s=h.current;s&&s.dispatch({effects:[M.current.reconfigure(je(o)),y.current.reconfigure(EditorView.contentAttributes.of(Be({ariaDescribedBy:t,ariaInvalid:i,ariaLabel:f,ariaLabelledBy:a,readOnly:o})))]});},[t,i,f,a,o]),jsx("div",{className:l??"fk:h-full fk:min-h-0 fk:min-w-0 fk:w-full fk:overflow-hidden",ref:p})}var Xe=25,It=[{descriptionWidth:"fk:w-44",id:"skill-a",nameWidth:"fk:w-28"},{descriptionWidth:"fk:w-52",id:"skill-b",nameWidth:"fk:w-20"},{descriptionWidth:"fk:w-40",id:"skill-c",nameWidth:"fk:w-36"},{descriptionWidth:"fk:w-48",id:"skill-d",nameWidth:"fk:w-24"},{descriptionWidth:"fk:w-36",id:"skill-e",nameWidth:"fk:w-32"},{descriptionWidth:"fk:w-56",id:"skill-f",nameWidth:"fk:w-16"}];function Mt(){return jsxs("div",{"aria-busy":"true",className:"fk:grid fk:grid-cols-1 fk:gap-x-16 fk:gap-y-1 fk:lg:grid-cols-2",children:[jsx("span",{className:"fk:sr-only",children:"Loading skills"}),It.map(t$1=>jsxs("div",{className:"fk:-mx-3 fk:flex fk:min-w-0 fk:items-center fk:gap-3 fk:px-3 fk:py-2",children:[jsx(t,{className:"fk:size-10 fk:shrink-0 fk:rounded-lg"}),jsxs("span",{className:"fk:flex fk:min-w-0 fk:flex-1 fk:flex-col fk:gap-1.5",children:[jsx(t,{className:`fk:h-4 ${t$1.nameWidth}`}),jsx(t,{className:`fk:h-4 ${t$1.descriptionWidth}`})]})]},t$1.id))]})}var Pt={code({children:t,className:i,node:f,...a}){return typeof i=="string"&&i.split(" ").some(c=>c.startsWith("language-"))?jsx("code",{className:i,...a,children:t}):jsx("code",{className:"fk:rounded fk:bg-muted fk:px-1.5 fk:py-0.5 fk:font-mono fk:text-[0.875em] fk:font-medium fk:before:content-none fk:after:content-none fk:corner-squircle",...a,children:t})}};function ge(){let{currentProjectId:t}=f$1();return {api:useMemo(()=>t?d$1(t):null,[t]),projectId:t}}function Y({children:t}){return jsx("div",{className:"fk:rounded-md fk:border fk:border-dashed fk:p-8 fk:text-center fk:text-sm fk:text-muted-foreground fk:corner-squircle",children:t})}function At({onVisible:t}){let i=useRef(null),f=useRef(t);return f.current=t,useEffect(()=>{let a=i.current;if(!a)return;let l=new IntersectionObserver(c=>{c.some(d=>d.isIntersecting)&&f.current();});return l.observe(a),()=>{l.disconnect();}},[]),jsx("div",{"aria-hidden":true,className:"fk:h-px",ref:i})}function Ft(t,i){return t.visibility==="space"?(t.spaceId?i.get(t.spaceId):void 0)??"Space":t.visibility==="personal"?"Personal":"Project"}function Wt({skill:t}){return t.logoUrl?jsx(a$1,{className:"fk:size-10 fk:rounded-lg",src:t.logoUrl}):jsx("span",{className:"fk:flex fk:size-10 fk:shrink-0 fk:items-center fk:justify-center fk:rounded-lg fk:bg-muted fk:text-muted-foreground fk:corner-squircle",children:jsx(GraduationCapIcon,{className:"fk:size-5"})})}function fi(){let{api:t,projectId:i}=ge(),f$1=useNavigate(),[a,l]=useState(""),c=b(),d=a.trim().length>0,m=(s,g$1)=>!i||g$1&&!g$1.hasMore?null:g(i).skills({limit:Xe,offset:s*Xe,search:a.trim()||void 0}),{data:k,isLoading:o,setSize:u,size:p}=Et(m,f),h=k?.flatMap(s=>s.skills)??[],M=k?.[k.length-1]?.hasMore??false,y=k!==void 0&&p>k.length,N=o&&h.length===0;if(!i||!t)return jsx(Y,{children:"Select a project to view skills."});function w(){u(s=>s+1);}let E="No skills yet.";d&&(E="No skills match your search.");let v=jsx("div",{className:"fk:grid fk:grid-cols-1 fk:gap-x-16 fk:gap-y-1 fk:lg:grid-cols-2",children:h.map(s=>jsxs("button",{type:"button",onClick:()=>f$1(s.id),className:"fk:-mx-3 fk:flex fk:min-w-0 fk:items-center fk:gap-3 fk:rounded-lg fk:px-3 fk:py-2 fk:text-left fk:transition-colors fk:hover:bg-accent fk:focus-visible:bg-accent fk:focus-visible:outline-none fk:corner-squircle",children:[jsx(Wt,{skill:s}),jsxs("span",{className:"fk:min-w-0 fk:flex-1",children:[jsx("span",{className:"fk:block fk:truncate fk:text-sm fk:font-medium",children:s.name}),jsx("span",{className:"fk:block fk:truncate fk:text-sm fk:text-muted-foreground",children:s.description})]})]},s.id))});return N?v=jsx(Mt,{}):h.length===0&&(v=jsx(Tc,{children:jsx(Vc,{children:E})})),jsxs("main",{className:"fk:flex fk:min-h-0 fk:flex-1 fk:flex-col",children:[jsx(b$1,{}),jsx("div",{className:"fk:min-h-0 fk:flex-1 fk:overflow-auto",children:jsxs("div",{className:"fk:mx-auto fk:flex fk:w-full fk:max-w-4xl fk:flex-col fk:gap-8 fk:py-6 fk:pl-4 fk:pr-6",children:[jsxs("div",{children:[jsx("h2",{className:"fk:text-2xl fk:font-semibold",children:"Skills for your agents"}),jsx("p",{className:"fk:mt-2 fk:text-muted-foreground",children:"Reusable Markdown instructions that agents load when relevant, or always when attached to an automation."})]}),jsxs("div",{className:"fk:flex fk:flex-wrap fk:items-center fk:gap-3",children:[jsx(s,{"aria-label":"Search skills",className:"fk:w-full fk:max-w-xs",placeholder:"Search skills\u2026",value:a,onChange:s=>{u(1),l(s.target.value);}}),c?jsx(b$2,{asChild:true,className:"fk:ml-auto",size:"sm",children:jsxs(Link,{to:"new",children:[jsx(Plus,{}),"New Skill"]})}):jsx(na,{disabled:true,children:jsxs(b$2,{className:"fk:ml-auto",disabled:true,size:"sm",children:[jsx(Plus,{}),"New Skill"]})})]}),v,M&&!y?jsx(At,{onVisible:w}):null,y?jsxs("div",{className:"fk:flex fk:items-center fk:justify-center fk:gap-2 fk:py-4 fk:text-sm fk:text-muted-foreground",children:[jsx(LoaderCircle,{className:"fk:size-4 fk:animate-spin"}),jsx("span",{children:"Loading more skills..."})]}):null]})})]})}function Q({className:t,id:i,message:f}){return jsx("p",{className:`fk:text-sm fk:text-destructive ${t??""}`,id:i,children:f})}function z({children:t,hint:i,htmlFor:f,id:a}){return jsxs("div",{className:"fk:mb-1.5 fk:pl-2.5 fk:flex fk:items-center fk:gap-1",children:[jsx(e,{htmlFor:f,id:a,children:t}),jsxs(b$3,{children:[jsx(c,{asChild:true,children:jsx("button",{"aria-label":`About ${t.toLowerCase()}`,className:"fk:rounded-sm fk:text-muted-foreground hover:fk:text-foreground fk:corner-squircle",type:"button",children:jsx(Info,{className:"fk:size-3.5"})})}),jsx(e$1,{className:"fk:max-w-xs",children:i})]})]})}function he({actions:t,title:i}){return jsxs(Fragment,{children:[jsxs("div",{className:"fk:flex fk:shrink-0 fk:items-center fk:gap-2 fk:pr-4",children:[jsxs(b$3,{children:[jsx(c,{asChild:true,children:jsx(O,{className:"fk:-ml-1 fk:h-4 fk:w-4"})}),jsx(e$1,{children:"Toggle Sidebar"})]}),jsx(v,{orientation:"vertical",className:"fk:h-4"}),jsx("h1",{className:"fk:min-w-0 fk:flex-1 fk:truncate fk:text-lg fk:font-semibold fk:leading-none fk:tracking-tight",children:i}),t]}),jsx(b$2,{asChild:true,className:"fk:shrink-0 fk:w-fit",size:"sm",variant:"ghost",children:jsxs(Link,{relative:"path",to:"..",children:[jsx(ArrowLeft,{className:"fk:mr-2 fk:size-4"}),"Skills"]})})]})}function jt(){return jsxs("div",{"aria-busy":"true",className:"fk:flex fk:h-full fk:min-h-0 fk:min-w-0 fk:flex-col fk:gap-3 fk:overflow-hidden fk:pb-3",children:[jsx("span",{className:"fk:sr-only",children:"Loading skill"}),jsx(he,{actions:jsx(t,{className:"fk:h-8 fk:w-24"}),title:jsx(t,{className:"fk:h-5 fk:w-40"})}),jsxs("div",{className:"fk:m-auto fk:flex fk:min-h-0 fk:w-full fk:max-w-6xl fk:flex-1 fk:flex-col fk:gap-8 fk:px-6",children:[jsxs("div",{className:"fk:grid fk:shrink-0 fk:gap-3 fk:lg:grid-cols-[minmax(0,1fr)_minmax(0,1.6fr)_auto]",children:[["name","description"].map(t$1=>jsxs("div",{className:"fk:flex fk:flex-col fk:gap-2",children:[jsx(t,{className:"fk:h-4 fk:w-20"}),jsx(t,{className:"fk:h-9 fk:w-full"})]},t$1)),jsxs("div",{className:"fk:flex fk:flex-col fk:gap-2",children:[jsx(t,{className:"fk:h-4 fk:w-20"}),jsx(t,{className:"fk:h-9 fk:w-32"})]})]}),jsxs("div",{className:"fk:flex fk:min-h-0 fk:flex-1 fk:flex-col fk:gap-1.5",children:[jsx(t,{className:"fk:h-4 fk:w-16"}),jsx(t,{className:"fk:min-h-48 fk:flex-1 fk:rounded-md"})]})]})]})}function Ve({content:t,onBlur:i,onChange:f,onSave:a,readOnly:l=false,showContentError:c$1,validationMessage:d}){let[m,k]=useState("write"),o=useId(),u=t.length>5e4,p;return t.trim()?p=jsx(Lt,{components:Pt,children:t}):p=jsx("p",{className:"fk:text-muted-foreground",children:"Nothing to preview."}),jsxs("div",{className:"fk:flex fk:min-h-0 fk:min-w-0 fk:flex-1 fk:flex-col fk:gap-1.5",children:[jsxs("div",{className:"fk:pl-3.25 fk:flex fk:shrink-0 fk:items-center fk:gap-1",children:[jsx(e,{htmlFor:o,id:`${o}-label`,children:"Content"}),jsxs(b$3,{children:[jsx(c,{asChild:true,children:jsx("button",{"aria-label":"About skill content",className:"fk:rounded-sm fk:text-muted-foreground hover:fk:text-foreground fk:corner-squircle",type:"button",children:jsx(Info,{className:"fk:size-3.5"})})}),jsx(e$1,{className:"fk:max-w-sm",children:"The skill itself, in Markdown. Write it like instructions for a capable colleague: procedures, rules, examples, and edge cases. Attached skills are always loaded; other visible skills are loaded on demand."})]})]}),jsxs("div",{className:`fk:flex fk:min-h-0 fk:min-w-0 fk:flex-1 fk:flex-col fk:ml-0.75 fk:overflow-hidden fk:rounded-md fk:border ${c$1?"fk:border-destructive":""} fk:corner-squircle`,children:[jsxs("div",{className:"fk:flex fk:shrink-0 fk:items-center fk:justify-between fk:gap-2 fk:border-b fk:px-2.5 fk:py-1",children:[jsx(ha,{value:m,onValueChange:h=>{k(h==="preview"?"preview":"write");},children:jsxs(ia,{children:[jsxs(b$3,{children:[jsx(c,{asChild:true,children:jsx("span",{className:"fk:inline-flex",children:jsx(ja,{"aria-label":"Write",className:"fk:px-2.5",value:"write",children:jsx(PenLine,{className:"fk:size-3.5"})})})}),jsx(e$1,{children:"Write"})]}),jsxs(b$3,{children:[jsx(c,{asChild:true,children:jsx("span",{className:"fk:inline-flex",children:jsx(ja,{"aria-label":"Preview",className:"fk:px-2.5",value:"preview",children:jsx(Eye,{className:"fk:size-3.5"})})})}),jsx(e$1,{children:"Preview"})]})]})}),jsxs("span",{className:u?"fk:text-xs fk:text-destructive":"fk:text-xs fk:text-muted-foreground",children:[t.length.toLocaleString()," / ",5e4.toLocaleString()]})]}),jsx("div",{className:"fk:min-h-0 fk:min-w-0 fk:flex-1 fk:overflow-hidden",hidden:m!=="write",children:jsx(Re,{ariaDescribedBy:c$1?`${o}-error`:void 0,ariaInvalid:c$1,ariaLabelledBy:`${o}-label`,className:"fk:h-full fk:min-h-0 fk:min-w-0 fk:w-full fk:overflow-hidden",readOnly:l,value:t,onBlur:i,onChange:f,onSave:a})}),m==="preview"?jsx(w,{className:"fk:min-h-0 fk:flex-1",children:jsx("div",{className:"fk:prose fk:prose-sm fk:dark:prose-invert fk:max-w-none fk:px-4 fk:py-3",children:p})}):null,c$1&&d?jsx(Q,{className:"fk:border-t fk:px-3 fk:py-2",id:`${o}-error`,message:d}):null]})]})}function He({api:t,mode:i,onSaved:f$1,projectId:a$1,skill:l}){let[c,d$1]=useState(l?.name??""),[m,k]=useState(l?.description??""),[o,u]=useState(l?.content??""),[p,h]=useState(l?.visibility??"project"),[T,M]=useState(l?.spaceId??null),[y,N]=useState(false),w=useRef(false),[E,v]=useState(""),[s$1,g$3]=useState({content:false,description:false,name:false}),q=useNavigate(),{data:$}=pe(g(a$1).spaces,f),[,F]=g$1(),X=b(),Oe=F.user?.spaces??[],ve=($?.spaces??[]).filter(r=>Oe.includes(r.code)),te="";o.trim()?o.length>5e4&&(te=`Content must be at most ${String(5e4)} characters`):te="Content is required";let b$1={content:te,description:m.trim()?"":"Description is required",name:c.trim()?"":"Name is required",space:p==="space"&&!T?"Select a space":""},ie=!b$1.content&&!b$1.description&&!b$1.name&&!b$1.space,K=s$1.name&&!!b$1.name,G=s$1.description&&!!b$1.description,_e=s$1.content&&!!b$1.content,qe=i==="create"?"New Skill":l?.name??"Skill",ne="Update skill";y?ne="Saving...":i==="create"&&(ne="Create skill");async function be(){if(!X||w.current)return;if(!ie){g$3({content:true,description:true,name:true});return}w.current=true,N(true),v("");let r={content:o,description:m,name:c,spaceId:p==="space"?T:null,visibility:p};try{let I=i==="create"||!l?await t.createSkill(r):await t.updateSkill(l.id,r);if(!I.success){v(Array.isArray(I.errorMessage)?I.errorMessage.join(", "):I.errorMessage);return}qa.success(i==="create"||!l?"Skill created.":"Skill saved."),f$1(I.skill);}catch(I){v(I instanceof Error?I.message:"Failed to save skill.");}finally{w.current=false,N(false);}}async function $e(r){r.preventDefault(),await be();}async function Ke(){if(!(!l||!X||w.current)){w.current=true,N(true),v("");try{let r=await t.deleteSkill(l.id);if(!r.success){v(Array.isArray(r.errorMessage)?r.errorMessage.join(", "):r.errorMessage);return}q("..",{relative:"path"});}catch(r){v(r instanceof Error?r.message:"Failed to delete skill.");}finally{w.current=false,N(false);}}}return jsxs("div",{className:"fk:flex fk:h-full fk:min-h-0 fk:min-w-0 fk:flex-col fk:gap-3 fk:pb-3",children:[jsx(he,{actions:jsxs("div",{className:"fk:flex fk:items-center fk:gap-3",children:[ie?null:jsx("span",{className:"fk:text-xs fk:text-muted-foreground",children:"Complete the required fields to save"}),i==="edit"&&l?jsxs(b$2,{disabled:y||!X,size:"sm",type:"button",variant:"outline",onClick:()=>{Ke();},children:[jsx(Trash2,{}),"Delete"]}):null,jsx(na,{disabled:!X,children:jsx(b$2,{disabled:y||!ie||!X,form:"skill-editor-form",size:"sm",type:"submit",children:ne})})]}),title:qe}),E?jsx("div",{className:"fk:shrink-0 fk:rounded-md fk:border fk:border-destructive/30 fk:bg-destructive/5 fk:p-3 fk:text-sm fk:text-destructive fk:corner-squircle",children:E}):null,jsxs("form",{className:"fk:flex fk:min-h-0 fk:min-w-0 fk:flex-1 fk:flex-col fk:gap-6 fk:w-full fk:max-w-6xl fk:m-auto fk:gap-8 fk:px-4",id:"skill-editor-form",onSubmit:r=>{$e(r);},children:[jsxs("div",{className:"fk:grid fk:min-w-0 fk:shrink-0 fk:gap-3 fk:px-0.75 fk:lg:grid-cols-[minmax(0,1fr)_minmax(0,1.6fr)_auto]",children:[jsxs("div",{children:[jsx(z,{hint:"Identifying label for this skill",htmlFor:"skill-name",children:"Name"}),jsx(s,{"aria-describedby":K?"skill-name-error":void 0,"aria-invalid":K,className:K?"fk:border-destructive focus-visible:fk:ring-destructive":"",id:"skill-name",value:c,onBlur:()=>g$3(r=>({...r,name:true})),onChange:r=>d$1(r.target.value)}),K?jsx(Q,{id:"skill-name-error",message:b$1.name}):null]}),jsxs("div",{children:[jsx(z,{hint:"One or two sentences describing when to use this skill. Agents rely on it to decide whether the skill applies to their current task.",htmlFor:"skill-description",children:"Description"}),jsx(s,{"aria-describedby":G?"skill-description-error":void 0,"aria-invalid":G,className:G?"fk:border-destructive focus-visible:fk:ring-destructive":"",id:"skill-description",placeholder:"e.g. Rules for writing product descriptions in our brand voice",value:m,onBlur:()=>g$3(r=>({...r,description:true})),onChange:r=>k(r.target.value)}),G?jsx(Q,{id:"skill-description-error",message:b$1.description}):null]}),jsxs("div",{children:[jsx(z,{hint:"Who can see and use this skill. Space skills are only visible to members of the selected space and only usable by automations in that space; personal skills are private to you.",htmlFor:"skill-visibility",children:"Visibility"}),jsxs("div",{className:"fk:flex fk:items-center fk:gap-2",children:[jsxs(a,{value:p,onValueChange:r=>{h(r==="space"||r==="personal"?r:"project"),r!=="space"&&M(null);},children:[jsx(d,{"aria-label":"Visibility",className:"fk:w-fit fk:min-w-26",id:"skill-visibility",children:jsx(c$1,{})}),jsxs(e$2,{align:"start",children:[jsx(g$2,{value:"project",children:"Project"}),jsx(g$2,{disabled:ve.length===0,value:"space",children:"Space"}),jsx(g$2,{value:"personal",children:"Personal"})]})]}),p==="space"?jsxs(a,{value:T??"",onValueChange:r=>{M(r||null);},children:[jsx(d,{"aria-label":"Space",className:"fk:w-fit fk:min-w-34",children:jsx(c$1,{placeholder:"Select a space"})}),jsx(e$2,{align:"start",children:ve.map(r=>jsx(g$2,{value:r.id,children:r.label},r.id))})]}):null]}),p==="space"&&b$1.space?jsx(Q,{message:b$1.space}):null]})]}),jsx(Ve,{content:o,showContentError:_e,validationMessage:b$1.content,onBlur:()=>g$3(r=>({...r,content:true})),onChange:u,onSave:()=>{be();}})]})]})}function Bt({projectId:t,skill:i,spaceLabelById:f}){let a$1=b(),l=useNavigate(),[c,d$1]=useState(false),[m,k]=useState("");async function o(){d$1(true),k("");let u;try{u=await fetch(`/api/flexkit/${t}/skills/${i.id}/fork`,{method:"POST",credentials:"include"});}catch{k("Unable to create a copy. Try again."),d$1(false);return}if(d$1(false),!u.ok){k("Unable to create a copy. Check your permissions.");return}l("..",{relative:"path"});}return jsxs("div",{className:"fk:flex fk:h-full fk:min-h-0 fk:min-w-0 fk:flex-col fk:gap-3 fk:pb-3",children:[jsx(he,{actions:jsxs("div",{className:"fk:flex fk:items-center fk:gap-2",children:[jsx(b$5,{variant:"secondary",children:i.source==="plugin"?"Plugin":"Code"}),i.source==="plugin"&&jsx(b$2,{type:"button",disabled:c||!a$1,onClick:()=>{o();},size:"sm",children:"Edit a copy"})]}),title:i.name}),jsxs("div",{className:"fk:flex fk:flex-col fk:h-full fk:px-4 fk:gap-3 fk:max-w-6xl fk:m-auto",children:[jsxs("div",{className:"fk:shrink-0 fk:rounded-md fk:border fk:bg-muted/30 fk:px-3 fk:py-2 fk:corner-squircle",children:[jsx("p",{className:"fk:text-sm fk:font-medium",children:"Version-controlled skill"}),jsx("p",{className:"fk:text-sm fk:text-muted-foreground",children:i.source==="plugin"?"This skill is managed by its plugin. Edit a copy to create a personal Studio skill.":"Edit this skill in your repository and re-sync it from the Custom Tools settings."})]}),jsxs("div",{className:"fk:grid fk:min-w-0 fk:shrink-0 fk:gap-3 fk:lg:grid-cols-[minmax(0,1fr)_minmax(0,1.6fr)_auto]",children:[jsxs("div",{children:[jsx(z,{hint:"Identifying label for this skill",htmlFor:"skill-name",children:"Name"}),jsx(s,{className:"fk:opacity-100!",disabled:true,id:"skill-name",value:i.name})]}),jsxs("div",{children:[jsx(z,{hint:"One or two sentences describing when to use this skill. Agents rely on it to decide whether the skill applies to their current task.",htmlFor:"skill-description",children:"Description"}),jsx(s,{className:"fk:opacity-100!",disabled:true,id:"skill-description",placeholder:"e.g. Rules for writing product descriptions in our brand voice",value:i.description})]}),jsxs("div",{children:[jsx(z,{hint:"Who can see and use this skill. Space skills are only visible to members of the selected space and only usable by automations in that space; personal skills are private to you.",htmlFor:"skill-visibility",children:"Visibility"}),jsxs("div",{className:"fk:flex fk:items-center fk:gap-2",children:[jsxs(a,{disabled:true,value:i.visibility,children:[jsx(d,{"aria-label":"Visibility",className:"fk:w-fit fk:min-w-26 fk:opacity-100!",id:"skill-visibility",children:jsx(c$1,{})}),jsxs(e$2,{align:"start",children:[jsx(g$2,{value:"project",children:"Project"}),jsx(g$2,{disabled:!i.spaceId,value:"space",children:"Space"}),jsx(g$2,{value:"personal",children:"Personal"})]})]}),i.visibility==="space"?jsxs(a,{disabled:true,value:i.spaceId??"",children:[jsx(d,{"aria-label":"Space",className:"fk:w-fit fk:min-w-34 fk:opacity-100!",children:jsx(c$1,{placeholder:"Select a space"})}),jsx(e$2,{align:"start",children:jsx(g$2,{value:i.spaceId??"",children:Ft(i,f)})})]}):null]})]})]}),m&&jsx("p",{role:"alert",children:m}),jsx(Ve,{content:i.content,readOnly:true})]})]})}function ci(){let{api:t,projectId:i}=ge(),f=useNavigate();return !i||!t?jsx(Y,{children:"Select a project to create skills."}):jsx(He,{api:t,mode:"create",projectId:i,onSaved:()=>f("..",{relative:"path"})})}function di(){let{api:t,projectId:i}=ge(),{skillId:f$1}=useParams(),{data:a,error:l,isLoading:c,mutate:d}=pe(i&&f$1?g(i).skill(f$1):null,f),{data:m}=pe(i?g(i).spaces:null,f);if(!i||!t||!f$1)return jsx(Y,{children:"Select a skill."});if(l)return jsx(Y,{children:"Failed to load skill."});if(c||!a?.skill)return jsx(jt,{});let k=new Map((m?.spaces??[]).map(o=>[o.id,o.label]));return a.skill.source!=="studio"?jsx(Bt,{projectId:i,skill:a.skill,spaceLabelById:k}):jsx(He,{api:t,mode:"edit",projectId:i,skill:a.skill,onSaved:o=>{o?d({skill:o},{revalidate:false}):d();}})}export{ci as CreateSkillPage,Ve as SkillContentPane,di as SkillDetailPage,He as SkillForm,fi as SkillsPage};//# sourceMappingURL=skills-pages-7IYBJ4QI.js.map
2
- //# sourceMappingURL=skills-pages-7IYBJ4QI.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {c as c$2}from'./chunk-MRHZN4G4.js';import {e,c as c$1,b as b$1,j as j$1,o,m,k as k$1,h,f as f$1}from'./chunk-GSGPULRL.js';import'./chunk-2NXQF2F7.js';import {c}from'./chunk-CAZ6EUR2.js';import'./chunk-KR27GOH6.js';import {b}from'./chunk-V7C4EHK3.js';import'./chunk-XV7U33XQ.js';import'./chunk-XMOSCJOI.js';import {j,k,i,f,m as m$1,a,n,l,b as b$4}from'./chunk-7KLXWCDS.js';import'./chunk-HKN6BX5U.js';import'./chunk-YDVO6XWD.js';import'./chunk-ERDARDGB.js';import'./chunk-HZOD2HOF.js';import {g}from'./chunk-WPCPL2TQ.js';import'./chunk-5CVDMZUI.js';import {na,Tc,Vc,qa,O,e as e$2,s,_,o as o$1}from'./chunk-DGIY4SKN.js';import {t}from'./chunk-SZEGGBOC.js';import {v}from'./chunk-32ZU4MLE.js';import'./chunk-U45E5X3H.js';import'./chunk-HDOIOXMP.js';import {b as b$3,c as c$3,e as e$1}from'./chunk-USNXQOMJ.js';import {b as b$2}from'./chunk-6NRQMG26.js';import'./chunk-O2QMYUPS.js';import {useState,useEffect}from'react';import {formatDistance}from'date-fns';import {ExternalLinkIcon,LoaderCircle,RefreshCwIcon,BookOpenIcon,ArrowLeft}from'lucide-react';import {useParams,useNavigate,Link}from'react-router-dom';import me from'swr';import Se from'swr/infinite';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var Ne=2e3;function be({actions:f,title:i}){return jsxs(Fragment,{children:[jsxs("div",{className:"fk:flex fk:shrink-0 fk:items-center fk:gap-2 fk:pr-4",children:[jsxs(b$3,{children:[jsx(c$3,{asChild:true,children:jsx(O,{className:"fk:-ml-1 fk:h-4 fk:w-4"})}),jsx(e$1,{children:"Toggle Sidebar"})]}),jsx(v,{orientation:"vertical",className:"fk:h-4"}),jsx("h1",{className:"fk:min-w-0 fk:flex-1 fk:truncate fk:text-lg fk:font-semibold fk:leading-none fk:tracking-tight",children:i}),f]}),jsx(b$2,{asChild:true,className:"fk:w-fit fk:shrink-0",size:"sm",variant:"ghost",children:jsxs(Link,{relative:"path",to:"..",children:[jsx(ArrowLeft,{className:"fk:mr-2 fk:size-4"}),"All documents"]})})]})}function we(){return jsxs("div",{"aria-busy":"true",className:"fk:flex fk:flex-col fk:gap-6 fk:py-6 fk:pl-4 fk:pr-6",children:[jsx("span",{className:"fk:sr-only",children:"Loading document"}),jsx(t,{className:"fk:h-6 fk:w-64"}),jsx(t,{className:"fk:h-4 fk:w-96"}),jsx(t,{className:"fk:h-32 fk:w-full"})]})}function ce({children:f}){return jsx("h3",{className:"fk:text-sm fk:font-semibold fk:tracking-tight",children:f})}function ye({projectId:f,source:i}){let h=i.currentVersion?.status==="published"?i.currentVersion:null,n=h?.passageCount??0,u=h?.id??null,N=o=>{if(!u||o*b$4>=n)return null;let l=o*b$4;return `${c$1(f).passages(i.id,{from:l,to:Math.min(l+b$4-1,n-1)})}&version=${encodeURIComponent(u)}`},{data:b,error:S,isLoading:x,setSize:p,size:r}=Se(N,b$1,{revalidateFirstPage:false}),d=b?.flatMap(o=>o.passages)??[],v=d.length;return useEffect(()=>{p(1);},[p,u]),n===0?jsx("p",{className:"fk:text-sm fk:text-muted-foreground",children:"Passages appear here once the document is indexed."}):S?jsx("p",{className:"fk:text-sm fk:text-destructive",children:"The passages could not be loaded."}):jsxs("div",{className:"fk:flex fk:flex-col fk:gap-3",children:[d.map(o=>{let l$1=l(o.locator);return jsxs("article",{className:"fk:rounded-lg fk:border fk:bg-background fk:px-4 fk:py-3 fk:corner-squircle",children:[jsxs("header",{className:"fk:mb-1.5 fk:flex fk:items-center fk:gap-2 fk:text-xs fk:text-muted-foreground",children:[jsxs("span",{className:"fk:font-medium",children:["#",String(o.order+1)]}),l$1?jsx("span",{className:"fk:truncate",children:l$1}):null]}),jsx("p",{className:"fk:whitespace-pre-wrap fk:text-sm fk:leading-relaxed",children:o.text})]},o.id)}),x?jsxs("div",{className:"fk:flex fk:items-center fk:gap-2 fk:py-2 fk:text-sm fk:text-muted-foreground",children:[jsx(LoaderCircle,{className:"fk:size-4 fk:animate-spin"}),"Loading passages\u2026"]}):null,v<n&&!x?jsxs(b$2,{className:"fk:w-fit",size:"sm",variant:"outline",onClick:()=>{p(r+1);},children:["Show more (",String(v)," of ",String(n),")"]}):null]})}function Te({api:f,onSaved:i,projectId:h$1,source:n$1}){let u=b(),[,N]=g(),{data:b$3}=me(c$1(h$1).spaces,b$1),S=N.user?.spaces??[],x=b$3?.spaces??[],p=x.filter(a=>S.includes(a.code)),r=n$1.spaces.filter(a=>!S.includes(a)),[d,v]=useState(n$1.title),[o,l]=useState(false),s$1=d.trim()!==n$1.title&&d.trim().length>0;useEffect(()=>{v(n$1.title);},[n$1.title]);async function m(a){if(u){l(true);try{let g=await f.updateSource(n$1.id,a);i(g.source),f$1();}catch(g){qa.error(h(g,"The document could not be updated."));}finally{l(false);}}}let k=!u||o||r.length>0,w="This project has no spaces yet, so every member can read it.";return x.length>0&&(w="You are not a member of any space in this project."),jsxs("div",{className:"fk:flex fk:flex-col fk:gap-5",children:[r.length>0?jsx(Tc,{children:jsxs(Vc,{children:["This document is shared with spaces you are not a member of (",r.join(", "),"), so only an owner or a member of all of them can change it."]})}):null,jsxs("div",{className:"fk:flex fk:flex-col fk:gap-1.5",children:[jsx(e$2,{htmlFor:"knowledge-title",children:"Title"}),jsxs("div",{className:"fk:flex fk:items-center fk:gap-2",children:[jsx(s,{className:"fk:max-w-md",disabled:k,id:"knowledge-title",maxLength:a,value:d,onChange:a=>v(a.target.value),onKeyDown:a=>{a.key==="Enter"&&s$1&&(a.preventDefault(),m({title:d.trim()}));}}),s$1?jsx(b$2,{disabled:k,size:"sm",variant:"outline",onClick:()=>{m({title:d.trim()});},children:"Save"}):null]}),jsx("p",{className:"fk:text-xs fk:text-muted-foreground",children:"The agent cites the document by this title."})]}),jsxs("label",{className:"fk:flex fk:w-fit fk:cursor-pointer fk:items-center fk:gap-3",children:[jsx(_,{checked:n$1.agentVisible,disabled:k,onCheckedChange:a=>{m({agentVisible:a});}}),jsxs("span",{className:"fk:flex fk:flex-col",children:[jsx("span",{className:"fk:text-sm fk:font-medium",children:"Visible to the agent"}),jsx("span",{className:"fk:text-xs fk:text-muted-foreground",children:"Off keeps the document in the list for people but out of the agent's searches."})]})]}),jsxs("div",{className:"fk:flex fk:flex-col fk:gap-2",children:[jsx("span",{className:"fk:text-sm fk:font-medium",children:"Spaces"}),jsx("p",{className:"fk:text-xs fk:text-muted-foreground",children:n$1.spaces.length===0?"Every project member can read this document. Pick spaces to limit it to their members.":"Only members of the selected spaces (and the agent working for them) can read this document."}),p.length===0?jsx("p",{className:"fk:text-sm fk:text-muted-foreground",children:w}):jsx("div",{className:"fk:flex fk:flex-wrap fk:gap-x-6 fk:gap-y-2",children:p.map(a=>jsxs("label",{className:"fk:flex fk:cursor-pointer fk:items-center fk:gap-2 fk:text-sm",children:[jsx(o$1,{checked:n$1.spaces.includes(a.code),disabled:k,onCheckedChange:()=>{m({spaces:n(n$1.spaces,a.code)});}}),a.label]},a.id))})]})]})}function Xe(){let{api:f$1,projectId:i$1}=e(),{sourceId:h$1}=useParams(),n=useNavigate(),u=b(),N=c(),[b$3,S]=useState(false),[x,p]=useState(false),{data:r,error:d,isLoading:v$1,mutate:o$1}=me(i$1&&h$1?c$1(i$1).source(h$1):null,b$1,{refreshInterval:N&&b$3?Ne:0});if(useEffect(()=>{S(r?j(r.source,r.job):false);},[r]),!i$1||!f$1||!h$1)return jsx(j$1,{children:"Select a document."});if(d&&!r)return jsx(j$1,{children:"This document does not exist or is not shared with you."});if(v$1||!r)return jsx(we,{});let{job:l,source:s}=r,m$2=k(s,l),k$2=s.currentVersion,w=x;async function a(){p(true);try{let c=await f$1.reingestSource(s.id);qa.success("Re-indexing started."),await o$1({job:c.job,source:{...s,status:"processing"}},{revalidate:!0});}catch(c){qa.error(h(c,"The document could not be re-indexed."));}finally{p(false);}}let g=[{label:"Type",value:i(s)}];return s.originUrl&&g.push({label:"Address",value:jsxs("a",{className:"fk:inline-flex fk:items-center fk:gap-1 fk:underline fk:underline-offset-2",href:s.originUrl,rel:"noreferrer",target:"_blank",children:[jsx("span",{className:"fk:truncate",children:s.originUrl}),jsx(ExternalLinkIcon,{className:"fk:size-3.5 fk:shrink-0"})]})}),s.size!==null&&g.push({label:"Size",value:f(s.size)}),g.push({label:"Added",value:formatDistance(new Date(s.createdAt),new Date,{addSuffix:true})}),k$2?.publishedAt&&g.push({label:"Indexed",value:formatDistance(new Date(k$2.publishedAt),new Date,{addSuffix:true})}),jsxs("div",{className:"fk:flex fk:h-full fk:min-h-0 fk:min-w-0 fk:flex-col fk:gap-3 fk:pb-3",children:[jsx(be,{actions:jsxs("div",{className:"fk:flex fk:items-center fk:gap-2",children:[jsx(na,{disabled:!u,children:jsxs(b$2,{disabled:!u||w||m$2.tone==="busy",size:"sm",variant:"outline",onClick:()=>{a();},children:[x?jsx(LoaderCircle,{className:"fk:animate-spin"}):jsx(RefreshCwIcon,{}),"Re-index"]})}),jsx(o,{isBusy:w,source:s,trigger:"page",onRemoved:()=>n("..",{relative:"path"})})]}),title:s.title}),jsx("div",{className:"fk:min-h-0 fk:flex-1 fk:overflow-auto",children:jsxs("div",{className:"fk:mx-auto fk:flex fk:w-full fk:max-w-4xl fk:flex-col fk:gap-8 fk:py-2 fk:pl-4 fk:pr-6",children:[jsxs("section",{className:"fk:flex fk:items-start fk:gap-4",children:[jsx(m,{source:s}),jsxs("div",{className:"fk:flex fk:min-w-0 fk:flex-1 fk:flex-col fk:gap-2",children:[jsxs("div",{className:"fk:flex fk:flex-wrap fk:items-center fk:gap-2",children:[jsx(k$1,{label:m$2.label,tone:m$2.tone}),jsx("span",{className:"fk:text-sm fk:text-muted-foreground",children:m$2.detail})]}),l?.error?.hint&&(m$2.tone==="error"||l.state==="failed")?jsx("p",{className:"fk:text-sm fk:text-muted-foreground",children:l.error.hint}):null,jsx("dl",{className:"fk:grid fk:grid-cols-[auto_1fr] fk:gap-x-4 fk:gap-y-1 fk:text-sm",children:g.map(c=>jsxs("div",{className:"fk:contents",children:[jsx("dt",{className:"fk:text-muted-foreground",children:c.label}),jsx("dd",{className:"fk:min-w-0 fk:truncate",children:c.value})]},c.label))}),k$2&&k$2.warnings.length>0?jsx(Tc,{children:jsx(Vc,{children:jsx("ul",{className:"fk:list-disc fk:pl-4",children:k$2.warnings.map(c=>jsx("li",{children:m$1(c)},c))})})}):null]})]}),jsx(v,{}),jsxs("section",{className:"fk:flex fk:flex-col fk:gap-4",children:[jsx(ce,{children:"Settings"}),jsx(Te,{api:f$1,projectId:i$1,source:s,onSaved:c=>{o$1({job:l,source:c},{revalidate:false});}})]}),jsx(v,{}),jsx("section",{className:"fk:flex fk:flex-col fk:gap-4",children:jsx(c$2,{api:f$1,projectId:i$1,source:s})}),jsx(v,{}),jsxs("section",{className:"fk:flex fk:flex-col fk:gap-4",children:[jsxs("div",{className:"fk:flex fk:items-center fk:gap-2",children:[jsx(BookOpenIcon,{className:"fk:size-4 fk:text-muted-foreground"}),jsx(ce,{children:"Passages"})]}),jsx("p",{className:"fk:text-sm fk:text-muted-foreground",children:"The document is split into passages the agent searches and cites. Each one keeps its page, slide or section so a citation points back to the right place."}),jsx(ye,{projectId:i$1,source:s})]})]})})]})}export{Xe as Source};//# sourceMappingURL=source-4BP5PJ2N.js.map
2
- //# sourceMappingURL=source-4BP5PJ2N.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {ha,ia,ja,$,ga,aa,da,ea,ba,fa,ka,f}from'./chunk-DGIY4SKN.js';import {t}from'./chunk-SZEGGBOC.js';import {v as v$1,b as b$1}from'./chunk-32ZU4MLE.js';import'./chunk-U45E5X3H.js';import'./chunk-HDOIOXMP.js';import'./chunk-USNXQOMJ.js';import'./chunk-6NRQMG26.js';import'./chunk-O2QMYUPS.js';import {useMemo,useId,useState,useEffect}from'react';import {buildSpecFromParts,StateProvider,VisibilityProvider,ActionProvider,Renderer}from'@json-render/react';import {TrendingUpIcon,TrendingDownIcon,MinusIcon,InfoIcon,OctagonAlertIcon,AlertTriangleIcon,LightbulbIcon,XCircleIcon,CheckCircle2Icon}from'lucide-react';import {PieChart,Tooltip,Pie,Cell,LineChart,CartesianGrid,XAxis,YAxis,Line,BarChart,Bar,ResponsiveContainer}from'recharts';import {jsx,jsxs}from'react/jsx-runtime';var ke={sm:"fk:max-w-sm",md:"fk:max-w-md",lg:"fk:max-w-lg",full:"fk:max-w-full"},pe=({children:e,element:t})=>{let{props:n}=t,s=n.maxWidth?ke[n.maxWidth]:"",a=n.centered?"fk:mx-auto":"";return jsxs("div",{className:`fk:w-full fk:rounded-lg fk:border fk:border-border fk:bg-card fk:p-4 fk:gap-2 fk:flex fk:flex-col ${s} ${a} ${n.className??""} fk:corner-squircle`,children:[n.title&&jsx("div",{className:"fk:text-sm fk:font-medium",children:n.title}),n.description&&jsx("div",{className:"fk:mt-0.5 fk:text-xs fk:text-muted-foreground",children:n.description}),(n.title??n.description)&&e?jsx("div",{className:"fk:mt-3"}):null,e]})},me={none:"fk:gap-0",sm:"fk:gap-2",md:"fk:gap-3",lg:"fk:gap-4",xl:"fk:gap-6"},ge={start:"fk:items-start",center:"fk:items-center",end:"fk:items-end",stretch:"fk:items-stretch"},he={start:"fk:justify-start",center:"fk:justify-center",end:"fk:justify-end",between:"fk:justify-between",around:"fk:justify-around"},be=({children:e,element:t})=>{let{props:n}=t,s=n.direction==="horizontal"?"fk:flex-row fk:flex-wrap":"fk:flex-col",a=me[n.gap??"md"],i=n.align?ge[n.align]:"",l=n.justify?he[n.justify]:"";return jsx("div",{className:`fk:flex fk:w-full ${s} ${a} ${i} ${l} ${n.className??""}`,children:e})},ve={1:"fk:grid-cols-1",2:"fk:grid-cols-2",3:"fk:grid-cols-3",4:"fk:grid-cols-4",5:"fk:grid-cols-5",6:"fk:grid-cols-6"},ye={sm:"fk:gap-2",md:"fk:gap-3",lg:"fk:gap-4",xl:"fk:gap-6"},xe=({children:e,element:t})=>{let{props:n}=t,s=ve[n.columns??1]??"fk:grid-cols-1",a=ye[n.gap??"md"];return jsx("div",{className:`fk:grid fk:w-full ${s} ${a} ${n.className??""}`,children:e})},Ce=({element:e})=>jsx(v$1,{orientation:e.props.orientation??"horizontal"}),Pe={h1:"fk:text-xl fk:font-semibold fk:tracking-tight",h2:"fk:text-lg fk:font-semibold fk:tracking-tight",h3:"fk:text-base fk:font-medium",h4:"fk:text-sm fk:font-medium"},we=({element:e})=>{let t=e.props.level??"h2";return jsx(t,{className:Pe[t],children:e.props.text})},Ne={body:"fk:text-sm",muted:"fk:text-sm fk:text-muted-foreground",caption:"fk:text-xs fk:text-muted-foreground",lead:"fk:text-base",code:"fk:rounded fk:bg-muted fk:px-1 fk:py-0.5 fk:font-mono fk:text-xs fk:corner-squircle"},Se=({element:e})=>jsx("p",{className:Ne[e.props.variant??"body"],children:e.props.text}),Te=({element:e})=>jsx(b$1,{variant:e.props.variant??"default",children:e.props.text});function Re({type:e}){switch(e){case "success":return jsx(CheckCircle2Icon,{className:"fk:size-4 fk:translate-y-0.5"});case "warning":return jsx(AlertTriangleIcon,{className:"fk:size-4 fk:translate-y-0.5"});case "error":return jsx(XCircleIcon,{className:"fk:size-4 fk:translate-y-0.5"});default:return jsx(InfoIcon,{className:"fk:size-4 fk:translate-y-0.5"})}}var Ae=({element:e})=>{let{props:t}=e,n=t.type==="error"?"fk:border-destructive/50 fk:text-destructive":"fk:text-foreground";return jsxs("div",{className:`fk:flex fk:w-full fk:gap-3 fk:rounded-lg fk:border fk:bg-card fk:px-4 fk:py-3 fk:text-sm ${n} fk:corner-squircle`,role:"alert",children:[jsx(Re,{type:t.type}),jsxs("div",{className:"fk:min-w-0",children:[jsx("div",{className:"fk:font-medium",children:t.title}),t.message&&jsx("div",{className:"fk:text-muted-foreground",children:t.message})]})]})},Le=({element:e})=>{let t=e.props.columns??[],n=(e.props.rows??[]).map(s=>s.map(String));return jsx("div",{className:"fk:w-full fk:overflow-hidden fk:rounded-md fk:mt-2 fk:corner-squircle",children:jsxs($,{children:[e.props.caption&&jsx(ga,{children:e.props.caption}),jsx(aa,{children:jsx(da,{children:t.map((s,a)=>jsx(ea,{children:s},`${a.toString()}-${s}`))})}),jsx(ba,{children:n.map((s,a)=>jsx(da,{children:s.map((i,l)=>jsx(fa,{children:i},l))},a))})]})})},ze=({element:e})=>{let{props:t}=e,n=t.max??100,s=n>0?Math.min(100,Math.max(0,t.value/n*100)):0;return jsxs("div",{className:"fk:w-full",children:[t.label&&jsxs("div",{className:"fk:mb-1 fk:flex fk:items-center fk:justify-between fk:text-xs fk:text-muted-foreground",children:[jsx("span",{children:t.label}),jsxs("span",{className:"fk:tabular-nums",children:[Math.round(s),"%"]})]}),jsx("div",{className:"fk:h-2 fk:w-full fk:overflow-hidden fk:rounded-full fk:bg-secondary fk:corner-squircle",children:jsx("div",{className:"fk:h-full fk:rounded-full fk:bg-primary fk:corner-squircle",style:{width:`${s.toString()}%`}})})]})},Ke=({element:e})=>jsx(t,{className:e.props.rounded?"fk:rounded-full fk:corner-squircle":"",style:{height:e.props.height??"1rem",width:e.props.width??"100%"}}),Me=({element:e})=>jsx(f,{href:e.props.href,children:e.props.label}),$e=({element:e})=>e.props.src?jsx("img",{alt:e.props.alt,className:"fk:max-w-full fk:rounded-md fk:corner-squircle",height:e.props.height??void 0,src:e.props.src,width:e.props.width??void 0}):null,Ie=({element:e})=>jsx("div",{className:"fk:w-full fk:divide-y fk:divide-border fk:rounded-md fk:border fk:border-border fk:corner-squircle",children:(e.props.items??[]).map((t,n)=>jsxs("details",{className:"fk:group fk:px-4 fk:py-3",children:[jsx("summary",{className:"fk:cursor-pointer fk:list-none fk:text-sm fk:font-medium",children:t.title}),jsx("p",{className:"fk:mt-2 fk:text-sm fk:text-muted-foreground",children:t.content})]},n))}),Ee=({children:e,element:t})=>{let n=t.props.tabs??[];return jsxs(ha,{defaultValue:t.props.value??t.props.defaultValue??n[0]?.value,children:[jsx(ia,{children:n.map(s=>jsx(ja,{value:s.value,children:s.label},s.value))}),e]})},qe=({children:e,element:t})=>jsx(ka,{value:t.props.value,children:e}),je={up:"fk:text-success",down:"fk:text-destructive",neutral:"fk:text-muted-foreground"};function Be({trend:e}){return e==="up"?jsx(TrendingUpIcon,{className:"fk:size-4"}):e==="down"?jsx(TrendingDownIcon,{className:"fk:size-4"}):jsx(MinusIcon,{className:"fk:size-4"})}var He=({element:e})=>{let{props:t}=e;return jsxs("div",{className:"fk:w-full fk:rounded-lg fk:border fk:border-border fk:bg-card fk:p-4 fk:corner-squircle",children:[jsx("div",{className:"fk:text-xs fk:font-medium fk:text-muted-foreground",children:t.label}),jsxs("div",{className:"fk:mt-1 fk:flex fk:items-center fk:gap-2",children:[jsx("span",{className:"fk:text-2xl fk:font-semibold fk:tabular-nums fk:tracking-tight",children:t.value}),t.trend&&jsx("span",{className:je[t.trend],children:jsx(Be,{trend:t.trend})})]}),t.detail&&jsx("div",{className:"fk:mt-1 fk:text-xs fk:text-muted-foreground",children:t.detail})]})},Je={info:"fk:border-blue-500/30 fk:bg-blue-500/5 fk:text-blue-700 fk:dark:text-blue-400",tip:"fk:border-emerald-500/30 fk:bg-emerald-500/5 fk:text-emerald-700 fk:dark:text-emerald-400",warning:"fk:border-amber-500/30 fk:bg-amber-500/5 fk:text-amber-700 fk:dark:text-amber-400",important:"fk:border-red-500/30 fk:bg-red-500/5 fk:text-red-700 fk:dark:text-red-400"};function Xe({type:e}){switch(e){case "tip":return jsx(LightbulbIcon,{className:"fk:size-4 fk:shrink-0 fk:translate-y-0.5"});case "warning":return jsx(AlertTriangleIcon,{className:"fk:size-4 fk:shrink-0 fk:translate-y-0.5"});case "important":return jsx(OctagonAlertIcon,{className:"fk:size-4 fk:shrink-0 fk:translate-y-0.5"});default:return jsx(InfoIcon,{className:"fk:size-4 fk:shrink-0 fk:translate-y-0.5"})}}var Fe=({element:e})=>{let{props:t}=e,n=t.type??"info";return jsxs("div",{className:`fk:flex fk:w-full fk:gap-3 fk:rounded-lg fk:border fk:px-4 fk:py-3 fk:text-sm ${Je[n]} fk:corner-squircle`,children:[jsx(Xe,{type:n}),jsxs("div",{className:"fk:min-w-0",children:[t.title&&jsx("div",{className:"fk:font-medium",children:t.title}),jsx("div",{className:"fk:text-foreground",children:t.content})]})]})},Oe={completed:"fk:border-success fk:bg-success",current:"fk:border-primary fk:bg-primary",upcoming:"fk:border-border fk:bg-background"},Ge=({element:e})=>jsx("div",{className:"fk:w-full",children:(e.props.items??[]).map((t,n,s)=>jsxs("div",{className:"fk:relative fk:flex fk:gap-3 fk:pb-4 fk:last:pb-0",children:[n<s.length-1&&jsx("div",{className:"fk:absolute fk:left-[5px] fk:top-4 fk:h-full fk:w-px fk:bg-border"}),jsx("div",{className:`fk:mt-1 fk:size-[11px] fk:shrink-0 fk:rounded-full fk:border-2 ${Oe[t.status??"upcoming"]} fk:corner-squircle`}),jsxs("div",{className:"fk:min-w-0",children:[jsxs("div",{className:"fk:flex fk:flex-wrap fk:items-baseline fk:gap-x-2",children:[jsx("span",{className:"fk:text-sm fk:font-medium",children:t.title}),t.date&&jsx("span",{className:"fk:text-xs fk:text-muted-foreground",children:t.date})]}),t.description&&jsx("div",{className:"fk:text-sm fk:text-muted-foreground",children:t.description})]})]},n))}),c=["#6366f1","#10b981","#f59e0b","#ef4444","#06b6d4"],b={background:"hsl(var(--background))",border:"1px solid hsl(var(--border))",borderRadius:6,color:"hsl(var(--foreground))",fontSize:12},v={color:"hsl(var(--foreground))"},y={color:"hsl(var(--foreground))"},u={fill:"hsl(var(--muted-foreground))",fontSize:11};function g(e){let t=typeof e=="number"?e:Number(e);return Number.isFinite(t)?t:0}function X(e){let t=e.data??[];if(!e.aggregate)return t.map(s=>({x:String(s[e.xKey]??""),y:g(s[e.yKey])}));let n=new Map;for(let s of t){let a=String(s[e.xKey]??""),i=n.get(a)??{count:0,sum:0};i.count+=1,i.sum+=g(s[e.yKey]),n.set(a,i);}return Array.from(n.entries()).map(([s,a])=>e.aggregate==="count"?{x:s,y:a.count}:e.aggregate==="avg"?{x:s,y:a.count===0?0:a.sum/a.count}:{x:s,y:a.sum})}function x({children:e,height:t,title:n}){return jsxs("div",{className:"fk:w-full",children:[n&&jsx("div",{className:"fk:mb-2 fk:text-sm fk:font-medium",children:n}),jsx("div",{style:{height:t??256},children:jsx(ResponsiveContainer,{height:"100%",width:"100%",children:e})})]})}var We=({element:e})=>{let t=X(e.props),n=e.props.color??c[0];return jsx(x,{height:e.props.height,title:e.props.title,children:jsxs(BarChart,{data:t,children:[jsx(CartesianGrid,{stroke:"hsl(var(--border))",vertical:false}),jsx(XAxis,{axisLine:false,dataKey:"x",tick:u,tickLine:false,tickMargin:8}),jsx(YAxis,{axisLine:false,tick:u,tickLine:false,width:40}),jsx(Tooltip,{contentStyle:b,cursor:{fill:"hsl(var(--muted))"},itemStyle:v,labelStyle:y}),jsx(Bar,{dataKey:"y",fill:n,isAnimationActive:false,name:e.props.yKey,radius:4})]})})},_e=({element:e})=>{let t=X(e.props),n=e.props.color??c[0];return jsx(x,{height:e.props.height,title:e.props.title,children:jsxs(LineChart,{data:t,children:[jsx(CartesianGrid,{stroke:"hsl(var(--border))",vertical:false}),jsx(XAxis,{axisLine:false,dataKey:"x",tick:u,tickLine:false,tickMargin:8}),jsx(YAxis,{axisLine:false,tick:u,tickLine:false,width:40}),jsx(Tooltip,{contentStyle:b,itemStyle:v,labelStyle:y}),jsx(Line,{dataKey:"y",dot:false,isAnimationActive:false,name:e.props.yKey,stroke:n,strokeWidth:2,type:"monotone"})]})})},Ve=({element:e})=>{let t=(e.props.data??[]).map(n=>({name:String(n[e.props.nameKey]??""),value:g(n[e.props.valueKey])}));return jsx(x,{height:e.props.height,title:e.props.title,children:jsxs(PieChart,{children:[jsx(Tooltip,{contentStyle:b,itemStyle:v,labelStyle:y}),jsx(Pie,{data:t,dataKey:"value",innerRadius:"45%",isAnimationActive:false,nameKey:"name",children:t.map((n,s)=>jsx(Cell,{fill:c[s%c.length]},`${n.name}-${s.toString()}`))})]})})},De=({element:e})=>{let{chart:t$1,title:n}=e.props,s=useId().replace(/[^a-zA-Z0-9]/g,""),[a,i]=useState(null),[l,f]=useState(null);return useEffect(()=>{let k=false;return (async()=>{try{let{default:d}=await import('mermaid'),F=document.documentElement.classList.contains("dark");d.initialize({securityLevel:"strict",startOnLoad:!1,theme:F?"dark":"default"});let O=await d.render(`fk-mermaid-${s}`,t$1);k||(i(O.svg),f(null));}catch(d){k||f(d instanceof Error?d.message:"Failed to render the diagram.");}})(),()=>{k=true;}},[t$1,s]),jsxs("div",{className:"fk:w-full fk:rounded-lg fk:border fk:border-border fk:bg-card fk:p-4 fk:corner-squircle",children:[n&&jsx("div",{className:"fk:mb-2 fk:text-sm fk:font-medium",children:n}),l?jsx("pre",{className:"fk:overflow-x-auto fk:whitespace-pre-wrap fk:text-xs fk:text-muted-foreground",children:t$1}):null,!l&&a?jsx("div",{className:"fk:flex fk:justify-center fk:overflow-x-auto",dangerouslySetInnerHTML:{__html:a}}):null,!l&&!a?jsx(t,{className:"fk:h-40 fk:w-full"}):null]})},Ue={Accordion:Ie,Alert:Ae,Badge:Te,BarChart:We,Callout:Fe,Card:pe,Grid:xe,Heading:we,Image:$e,LineChart:_e,Link:Me,Mermaid:De,Metric:He,PieChart:Ve,Progress:ze,Separator:Ce,Skeleton:Ke,Stack:be,TabContent:qe,Table:Le,Tabs:Ee,Text:Se,Timeline:Ge},Ye=({element:e})=>jsxs("div",{className:"fk:rounded-md fk:border fk:border-dashed fk:border-border fk:p-3 fk:text-sm fk:text-muted-foreground fk:corner-squircle",children:["Unsupported component: ",e.type]});function Ze(e,t){let n=new Set,s=[];for(let a of e??[]){let i=String(a);n.has(i)||!t[i]||(n.add(i),s.push(i));}return s}function Qe(e,t){return e.length!==t.length?true:t.some((n,s)=>n!==e[s])}function et(e){if(!e.elements[e.root])return null;let t=false,n={};for(let s of Object.keys(e.elements)){let a=e.elements[s];if(!a)continue;let i=a.children??[],l=Ze(i,e.elements),f=Qe(i,l);f&&(t=true),n[s]=f?{...a,children:l}:a;}return t?{...e,elements:n}:e}var tt="data-spec";function rt(e){let t=new Set,n=[];for(let s of e){if(s.type!==tt)continue;let a=s.data;if(a&&typeof a=="object"&&"type"in a&&a.type==="patch"&&"patch"in a){let i=JSON.stringify(a.patch);if(t.has(i))continue;t.add(i);}n.push(s);}return n}function ft({parts:e}){let t=useMemo(()=>{let s=buildSpecFromParts(rt(e));return s?et(s):null},[e]),n=useMemo(()=>JSON.stringify(t?.state??{}),[t]);return t?jsx(StateProvider,{initialState:t.state,children:jsx(VisibilityProvider,{children:jsx(ActionProvider,{children:jsx(Renderer,{fallback:Ye,registry:Ue,spec:t})})})},n):null}export{ft as RunSpecPart};//# sourceMappingURL=spec-renderer-3GAVSV52.js.map
2
- //# sourceMappingURL=spec-renderer-3GAVSV52.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {g}from'./chunk-WPCPL2TQ.js';import'./chunk-5CVDMZUI.js';import {t,e,g as g$1,a,b as b$2,c,h,n,o,k,j,p}from'./chunk-SZEGGBOC.js';import {b}from'./chunk-U45E5X3H.js';import {b as b$1}from'./chunk-6NRQMG26.js';import'./chunk-O2QMYUPS.js';import v from'boring-avatars';import {Monitor,Moon,Sun}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';var A=["#06d9b6","#a4f479","#d4d323","#fb468f","#0ec4f1"];function F({projectId:D}){let{theme:r,setTheme:t$1}=b(),[C,n$1]=g();return C?jsx(t,{className:"fk:h-8 fk:w-8 fk:rounded-full"}):jsxs(e,{children:[jsx(g$1,{asChild:true,children:jsx(b$1,{className:"fk:relative fk:h-8 fk:w-8 fk:rounded-full",variant:"ghost",children:jsxs(a,{className:"fk:h-8 fk:w-8",children:[n$1.user?.avatar_url?jsx(b$2,{alt:n$1.user.display_name,src:n$1.user.avatar_url}):null,jsx(c,{className:"fk:bg-transparent",children:jsx(v,{className:"fk:size-8",colors:A,name:n$1.user?.id??"user",size:32,variant:"marble"})})]})})}),jsxs(h,{align:"end",className:"fk:w-56",forceMount:true,children:[jsx(n,{className:"font-normal",children:jsxs("div",{className:"fk:flex fk:flex-col fk:space-y-1",children:[jsx("p",{className:"fk:text-sm fk:font-medium fk:leading-none",children:n$1.user?.display_name}),jsx("p",{className:"fk:text-xs fk:leading-none fk:text-muted-foreground",children:n$1.user?.email})]})}),jsx(o,{}),jsx(n,{children:"Theme"}),jsxs(k,{checked:r==="system",onCheckedChange:()=>{t$1("system");},children:[jsx(Monitor,{className:"fk:mr-2 fk:h-4 fk:w-4"}),jsx("span",{children:"System"})]}),jsxs(k,{checked:r==="dark",onCheckedChange:()=>{t$1("dark");},children:[jsx(Moon,{className:"fk:mr-2 fk:h-4 fk:w-4"}),jsx("span",{children:"Dark"})]}),jsxs(k,{checked:r==="light",onCheckedChange:()=>{t$1("light");},children:[jsx(Sun,{className:"fk:mr-2 fk:h-4 fk:w-4"}),jsx("span",{children:"Light"})]}),jsx(o,{}),jsxs(j,{onClick:()=>{n$1.logout(D).then(()=>{}).catch(()=>{});},children:["Log out",jsx(p,{children:"\u21E7\u2318Q"})]})]})]})}export{F as UserNav};//# sourceMappingURL=user-nav-OWTTAXZS.js.map
2
- //# sourceMappingURL=user-nav-OWTTAXZS.js.map