@flexkit/studio 0.2.28 → 0.2.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat-page-UT5M3PM3.js +4 -0
- package/dist/{chat-page-SLY7JDT3.js.map → chat-page-UT5M3PM3.js.map} +1 -1
- package/dist/{chunk-O45E7U6A.js → chunk-6A6NT3H3.js} +3 -3
- package/dist/{chunk-O45E7U6A.js.map → chunk-6A6NT3H3.js.map} +1 -1
- package/dist/{chunk-JL7F6DNM.js → chunk-7AN2E6TU.js} +2 -2
- package/dist/{chunk-JL7F6DNM.js.map → chunk-7AN2E6TU.js.map} +1 -1
- package/dist/{chunk-KOPI2BA6.js → chunk-AZG72R2F.js} +3 -3
- package/dist/{chunk-KOPI2BA6.js.map → chunk-AZG72R2F.js.map} +1 -1
- package/dist/{chunk-T2F2LSKT.js → chunk-BIFQCOZD.js} +2 -2
- package/dist/{chunk-T2F2LSKT.js.map → chunk-BIFQCOZD.js.map} +1 -1
- package/dist/{chunk-GELQFNMW.js → chunk-BRGTUEFL.js} +2 -2
- package/dist/{chunk-GELQFNMW.js.map → chunk-BRGTUEFL.js.map} +1 -1
- package/dist/{chunk-VFORIVVT.js → chunk-BSUCDQYM.js} +3 -3
- package/dist/{chunk-VFORIVVT.js.map → chunk-BSUCDQYM.js.map} +1 -1
- package/dist/{chunk-52RJAZXC.js → chunk-D3TJCUTA.js} +2 -2
- package/dist/{chunk-52RJAZXC.js.map → chunk-D3TJCUTA.js.map} +1 -1
- package/dist/{chunk-OVV3SPEI.js → chunk-FRTHKTAS.js} +2 -2
- package/dist/{chunk-OVV3SPEI.js.map → chunk-FRTHKTAS.js.map} +1 -1
- package/dist/{chunk-XYLLG7TG.js → chunk-H534S4KD.js} +3 -3
- package/dist/{chunk-XYLLG7TG.js.map → chunk-H534S4KD.js.map} +1 -1
- package/dist/{chunk-5JQ4T6EJ.js → chunk-RZZOOPEF.js} +3 -3
- package/dist/{chunk-5JQ4T6EJ.js.map → chunk-RZZOOPEF.js.map} +1 -1
- package/dist/{chunk-AHYUN6BW.js → chunk-T44KNWQD.js} +5 -5
- package/dist/{chunk-AHYUN6BW.js.map → chunk-T44KNWQD.js.map} +1 -1
- package/dist/{chunk-DUH7EUOQ.js → chunk-UET5IDEW.js} +3 -3
- package/dist/{chunk-DUH7EUOQ.js.map → chunk-UET5IDEW.js.map} +1 -1
- package/dist/{chunk-TZQIYXV6.js → chunk-ZUGTNE5M.js} +2 -2
- package/dist/{chunk-TZQIYXV6.js.map → chunk-ZUGTNE5M.js.map} +1 -1
- package/dist/{entry-MWNECEGJ.js → entry-QGRB2B7V.js} +2 -2
- package/dist/{entry-MWNECEGJ.js.map → entry-QGRB2B7V.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/{list-L2ZOEIPM.js → list-L6YZSBWF.js} +3 -3
- package/dist/{list-L2ZOEIPM.js.map → list-L6YZSBWF.js.map} +1 -1
- package/dist/{list-IB75TGDL.js → list-OPL5OO32.js} +2 -2
- package/dist/{list-IB75TGDL.js.map → list-OPL5OO32.js.map} +1 -1
- package/dist/{pages-EMWNEUIL.js → pages-K4XZAMXY.js} +3 -3
- package/dist/{pages-EMWNEUIL.js.map → pages-K4XZAMXY.js.map} +1 -1
- package/dist/{plugin-pages-FCCI6LUM.js → plugin-pages-RCWAF6VC.js} +2 -2
- package/dist/{plugin-pages-FCCI6LUM.js.map → plugin-pages-RCWAF6VC.js.map} +1 -1
- package/dist/record-links-R7OV4VVH.js +2 -0
- package/dist/{record-links-MQVSKVHN.js.map → record-links-R7OV4VVH.js.map} +1 -1
- package/dist/{root-NJZRHKIE.js → root-36COMEVE.js} +2 -2
- package/dist/{root-NJZRHKIE.js.map → root-36COMEVE.js.map} +1 -1
- package/dist/{root-JEOBPU7A.js → root-3M4DIRWC.js} +2 -2
- package/dist/{root-JEOBPU7A.js.map → root-3M4DIRWC.js.map} +1 -1
- package/dist/{root-EFNWUWPN.js → root-HETKL6EN.js} +2 -2
- package/dist/{root-EFNWUWPN.js.map → root-HETKL6EN.js.map} +1 -1
- package/dist/{root-WQ46J72W.js → root-L6Y4PSSA.js} +3 -3
- package/dist/{root-WQ46J72W.js.map → root-L6Y4PSSA.js.map} +1 -1
- package/dist/{root-LQAVWIY3.js → root-R4Y6L62R.js} +3 -3
- package/dist/{root-LQAVWIY3.js.map → root-R4Y6L62R.js.map} +1 -1
- package/dist/{root-NU5FDZDZ.js → root-XMZYVO37.js} +3 -3
- package/dist/{root-NU5FDZDZ.js.map → root-XMZYVO37.js.map} +1 -1
- package/dist/{search-X5IUEVYF.js → search-UXL3U2EH.js} +2 -2
- package/dist/{search-X5IUEVYF.js.map → search-UXL3U2EH.js.map} +1 -1
- package/dist/{skills-pages-LHPLYVNU.js → skills-pages-KEXNO6DN.js} +2 -2
- package/dist/{skills-pages-LHPLYVNU.js.map → skills-pages-KEXNO6DN.js.map} +1 -1
- package/dist/{source-2KGHPYXB.js → source-CWVJGMEZ.js} +2 -2
- package/dist/{source-2KGHPYXB.js.map → source-CWVJGMEZ.js.map} +1 -1
- package/package.json +2 -2
- package/dist/chat-page-SLY7JDT3.js +0 -4
- package/dist/record-links-MQVSKVHN.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import'./index.css';export{b as CatalogHeader,d as InstalledPluginsPage,a as PluginConnectControl,e as PluginDetailPage,c as PluginsPage}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=plugin-pages-
|
|
1
|
+
import'./index.css';export{b as CatalogHeader,d as InstalledPluginsPage,a as PluginConnectControl,e as PluginDetailPage,c as PluginsPage}from'./chunk-FRTHKTAS.js';import'./chunk-QSTWBKPN.js';import'./chunk-5LGIALCK.js';import'./chunk-U6VZY3V2.js';import'./chunk-7KLXWCDS.js';import'./chunk-HKN6BX5U.js';import'./chunk-H534S4KD.js';import'./chunk-WPCPL2TQ.js';import'./chunk-5CVDMZUI.js';import'./chunk-DGIY4SKN.js';import'./chunk-SZEGGBOC.js';import'./chunk-32ZU4MLE.js';import'./chunk-U45E5X3H.js';import'./chunk-HDOIOXMP.js';import'./chunk-USNXQOMJ.js';import'./chunk-6NRQMG26.js';import'./chunk-O2QMYUPS.js';//# sourceMappingURL=plugin-pages-RCWAF6VC.js.map
|
|
2
|
+
//# sourceMappingURL=plugin-pages-RCWAF6VC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"plugin-pages-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"plugin-pages-RCWAF6VC.js"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import'./index.css';export{a as EntityKnowledgeButton,c as LinkedRecordsSection,b as RecordKnowledgePanel}from'./chunk-7AN2E6TU.js';import'./chunk-D3TJCUTA.js';import'./chunk-2NXQF2F7.js';import'./chunk-RZZOOPEF.js';import'./chunk-V7C4EHK3.js';import'./chunk-6A6NT3H3.js';import'./chunk-XMOSCJOI.js';import'./chunk-7KLXWCDS.js';import'./chunk-HKN6BX5U.js';import'./chunk-YDVO6XWD.js';import'./chunk-ERDARDGB.js';import'./chunk-H534S4KD.js';import'./chunk-WPCPL2TQ.js';import'./chunk-5CVDMZUI.js';import'./chunk-DGIY4SKN.js';import'./chunk-SZEGGBOC.js';import'./chunk-32ZU4MLE.js';import'./chunk-U45E5X3H.js';import'./chunk-HDOIOXMP.js';import'./chunk-USNXQOMJ.js';import'./chunk-6NRQMG26.js';import'./chunk-O2QMYUPS.js';//# sourceMappingURL=record-links-R7OV4VVH.js.map
|
|
2
|
+
//# sourceMappingURL=record-links-R7OV4VVH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"record-links-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"record-links-R7OV4VVH.js"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import'./index.css';import {c}from'./chunk-2DXR5NJV.js';import {f}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=root-
|
|
1
|
+
import'./index.css';import {c}from'./chunk-2DXR5NJV.js';import {f}from'./chunk-H534S4KD.js';import {g}from'./chunk-WPCPL2TQ.js';import'./chunk-5CVDMZUI.js';import {K,M,Z,Q}from'./chunk-DGIY4SKN.js';import'./chunk-SZEGGBOC.js';import'./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}from'react-router-dom';import {jsxs,jsx}from'react/jsx-runtime';function P(){let[,u]=g(),{currentProject:r}=f(),c$1=r?.schema??[],p=r?.menuGroups??[],d=c(c$1,u.user?.spaces),f$1=K();return jsxs(M,{defaultOpen:f$1,children:[jsx(Z,{schema:d,menuGroups:p}),jsx(Q,{children:jsx(Outlet,{})})]})}export{P as Root};//# sourceMappingURL=root-36COMEVE.js.map
|
|
2
|
+
//# sourceMappingURL=root-36COMEVE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/apps/desk/root.tsx"],"names":["Root","auth","useAuth","currentProject","useConfig","schema","menuGroups","visibleSchema","filterEntitiesForSpaces","defaultOpen","readSidebarCookieState","jsxs","SidebarProvider","jsx","Sidebar","SidebarInset","Outlet"],"mappings":"ydAOO,SAASA,CAAAA,EAAoB,CAClC,GAAM,EAAGC,CAAI,CAAA,CAAIC,CAAAA,EAAQ,CACnB,CAAE,cAAA,CAAAC,CAAe,EAAIC,CAAAA,EAAU,CAC/BC,GAAAA,CAASF,CAAAA,EAAgB,MAAA,EAAU,EAAC,CACpCG,CAAAA,CAAaH,GAAgB,UAAA,EAAc,EAAC,CAG5CI,CAAAA,CAAgBC,CAAAA,CAAwBH,GAAAA,CAAQJ,CAAAA,CAAK,IAAA,EAAM,MAAM,CAAA,CACjEQ,GAAAA,CAAcC,CAAAA,EAAuB,CAE3C,OACEC,IAAAA,CAACC,CAAAA,CAAA,CAAgB,YAAaH,GAAAA,CAC5B,QAAA,CAAA,CAAAI,GAAAA,CAACC,CAAAA,CAAA,CAAQ,MAAA,CAAQP,CAAAA,CAAe,UAAA,CAAYD,EAAY,CAAA,CACxDO,GAAAA,CAACE,CAAAA,CAAA,CACC,SAAAF,GAAAA,CAACG,MAAAA,CAAA,EAAO,CAAA,CACV,GACF,CAEJ","file":"root-
|
|
1
|
+
{"version":3,"sources":["../src/apps/desk/root.tsx"],"names":["Root","auth","useAuth","currentProject","useConfig","schema","menuGroups","visibleSchema","filterEntitiesForSpaces","defaultOpen","readSidebarCookieState","jsxs","SidebarProvider","jsx","Sidebar","SidebarInset","Outlet"],"mappings":"ydAOO,SAASA,CAAAA,EAAoB,CAClC,GAAM,EAAGC,CAAI,CAAA,CAAIC,CAAAA,EAAQ,CACnB,CAAE,cAAA,CAAAC,CAAe,EAAIC,CAAAA,EAAU,CAC/BC,GAAAA,CAASF,CAAAA,EAAgB,MAAA,EAAU,EAAC,CACpCG,CAAAA,CAAaH,GAAgB,UAAA,EAAc,EAAC,CAG5CI,CAAAA,CAAgBC,CAAAA,CAAwBH,GAAAA,CAAQJ,CAAAA,CAAK,IAAA,EAAM,MAAM,CAAA,CACjEQ,GAAAA,CAAcC,CAAAA,EAAuB,CAE3C,OACEC,IAAAA,CAACC,CAAAA,CAAA,CAAgB,YAAaH,GAAAA,CAC5B,QAAA,CAAA,CAAAI,GAAAA,CAACC,CAAAA,CAAA,CAAQ,MAAA,CAAQP,CAAAA,CAAe,UAAA,CAAYD,EAAY,CAAA,CACxDO,GAAAA,CAACE,CAAAA,CAAA,CACC,SAAAF,GAAAA,CAACG,MAAAA,CAAA,EAAO,CAAA,CACV,GACF,CAEJ","file":"root-36COMEVE.js","sourcesContent":["import { JSX } from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { filterEntitiesForSpaces } from '../../core/spaces';\nimport { useAuth } from '../../auth/auth-context';\nimport { useConfig } from '../../core/config/config-context';\nimport { readSidebarCookieState, Sidebar, SidebarInset, SidebarProvider } from '../../ui';\n\nexport function Root(): JSX.Element {\n const [, auth] = useAuth();\n const { currentProject } = useConfig();\n const schema = currentProject?.schema ?? [];\n const menuGroups = currentProject?.menuGroups ?? [];\n // Space-bound entities are hidden from non-members; the generated\n // @authorization rules block their data server-side either way.\n const visibleSchema = filterEntitiesForSpaces(schema, auth.user?.spaces);\n const defaultOpen = readSidebarCookieState();\n\n return (\n <SidebarProvider defaultOpen={defaultOpen}>\n <Sidebar schema={visibleSchema} menuGroups={menuGroups} />\n <SidebarInset>\n <Outlet />\n </SidebarInset>\n </SidebarProvider>\n );\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import'./index.css';import {b,c}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=root-
|
|
1
|
+
import'./index.css';import {b,c}from'./chunk-ZUGTNE5M.js';import'./chunk-T44KNWQD.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-D3TJCUTA.js';import'./chunk-2NXQF2F7.js';import'./chunk-V7C4EHK3.js';import'./chunk-7KLXWCDS.js';import'./chunk-HKN6BX5U.js';import {f}from'./chunk-H534S4KD.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-3M4DIRWC.js.map
|
|
2
|
+
//# sourceMappingURL=root-3M4DIRWC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/apps/ai/sidebar.tsx","../src/apps/ai/root.tsx"],"names":["SEARCH_DEBOUNCE_MS","NavLinkCompat","NavLink","PendingApprovalsBadge","currentProjectId","useConfig","data","useSWR","paths","fetcher","pendingCount","jsx","Badge","ActivityBadge","useActivitySummary","needsAction","count","AutomationsSidebar","pathname","useLocation","isNewChat","isRunHistory","isApprovals","isActivity","isPlugins","isAutomations","query","setQuery","useState","debouncedQuery","useDebouncedValue","jsxs","Sidebar","SidebarGroup","SidebarGroupContent","SearchIcon","Input","event","XIcon","SidebarContent","SidebarMenu","SidebarMenuItem","SidebarMenuButton","SquarePenIcon","BellIcon","BotIcon","HistoryIcon","InboxIcon","PlugIcon","AgentChatsSection","SidebarRail","Root","defaultOpen","readSidebarCookieState","SidebarProvider","SidebarInset","Outlet"],"mappings":"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","file":"root-JEOBPU7A.js","sourcesContent":["import type { JSX } from 'react';\nimport { useState } from 'react';\nimport { BellIcon, BotIcon, PlugIcon, HistoryIcon, InboxIcon, SearchIcon, SquarePenIcon, XIcon } from 'lucide-react';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport useSWR from 'swr';\nimport { useConfig } from '../../core/config/config-context';\nimport {\n Badge,\n Input,\n SidebarContent,\n SidebarGroup,\n SidebarGroupContent,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarPanel,\n SidebarRail,\n} from '../../ui';\nimport { fetcher, paths } from './api';\nimport { useActivitySummary } from './activity-nav-button';\nimport { AgentChatsSection, useDebouncedValue } from './agent/chat-list';\nimport type { AutomationApprovals } from './types';\n\nconst SEARCH_DEBOUNCE_MS = 300;\n\nconst NavLinkCompat = NavLink as unknown as React.ComponentType<{\n children?: React.ReactNode;\n to: string;\n}>;\n\nfunction PendingApprovalsBadge(): JSX.Element | null {\n const { currentProjectId } = useConfig();\n const { data } = useSWR<AutomationApprovals>(\n currentProjectId ? paths(currentProjectId).approvalsCount : null,\n fetcher,\n { refreshInterval: 30_000 }\n );\n const pendingCount = data?.pendingCount ?? 0;\n\n if (pendingCount === 0) {\n return null;\n }\n\n return (\n <Badge 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\">\n {pendingCount > 99 ? '99+' : pendingCount.toString()}\n </Badge>\n );\n}\n\n/** Open items that wait on the viewer; falls back to the unread count when nothing waits. */\nfunction ActivityBadge(): JSX.Element | null {\n const { currentProjectId } = useConfig();\n const data = useActivitySummary(currentProjectId);\n const needsAction = data?.needsActionCount ?? 0;\n const count = needsAction > 0 ? needsAction : (data?.unreadCount ?? 0);\n\n if (count === 0) {\n return null;\n }\n\n return (\n <Badge\n 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 needsAction > 0 ? 'fk:bg-amber-500/20 fk:text-amber-600' : 'fk:bg-muted fk:text-muted-foreground'\n }`}\n >\n {count > 99 ? '99+' : count.toString()}\n </Badge>\n );\n}\n\nexport function AutomationsSidebar(): JSX.Element {\n const location = useLocation();\n const pathname = location.pathname.replace(/\\/$/, '');\n const isNewChat = pathname.endsWith('/ai/agent');\n const isRunHistory = pathname.endsWith('/ai/runs');\n const isApprovals = pathname.endsWith('/ai/approvals');\n const isActivity = pathname.endsWith('/ai/activity') || pathname.includes('/ai/activity/');\n const isPlugins = pathname.includes('/ai/plugins') || pathname.includes('/ai/skills');\n const isAutomations = pathname.includes('/ai/automations');\n const [query, setQuery] = useState('');\n const debouncedQuery = useDebouncedValue(query.trim(), SEARCH_DEBOUNCE_MS);\n\n return (\n <SidebarPanel collapsible=\"icon\" variant=\"inset\">\n <SidebarGroup className=\"fk:shrink-0 fk:pb-1.5 fk:group-data-[collapsible=icon]:hidden\">\n <SidebarGroupContent className=\"fk:relative\">\n <SearchIcon className=\"fk:absolute fk:left-2 fk:top-1/2 fk:size-3.5 fk:-translate-y-1/2 fk:text-muted-foreground\" />\n <Input\n className=\"fk:h-8 fk:bg-background fk:pl-7 fk:pr-7 fk:text-sm\"\n placeholder=\"Search chats...\"\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n />\n {query ? (\n <button\n aria-label=\"Clear search\"\n 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\"\n type=\"button\"\n onClick={() => setQuery('')}\n >\n <XIcon className=\"fk:size-3.5\" />\n </button>\n ) : null}\n </SidebarGroupContent>\n </SidebarGroup>\n <SidebarContent>\n <SidebarGroup>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton asChild isActive={isNewChat} tooltip=\"New chat\">\n <NavLinkCompat to=\"agent\">\n <SquarePenIcon className=\"fk:h-4 fk:w-4\" strokeWidth={2} />\n <span>New chat</span>\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n <SidebarMenuItem>\n <SidebarMenuButton asChild isActive={isActivity} tooltip=\"Activity\">\n <NavLinkCompat to=\"activity\">\n <BellIcon className=\"fk:h-4 fk:w-4\" strokeWidth={2} />\n <span>Activity</span>\n <ActivityBadge />\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n <SidebarMenuItem>\n <SidebarMenuButton asChild isActive={isAutomations} tooltip=\"Automations\">\n <NavLinkCompat to=\"automations\">\n <BotIcon className=\"fk:h-4 fk:w-4\" strokeWidth={2} />\n <span>Automations</span>\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n <SidebarMenuItem>\n <SidebarMenuButton asChild isActive={isRunHistory} tooltip=\"Run History\">\n <NavLinkCompat to=\"runs\">\n <HistoryIcon className=\"fk:h-4 fk:w-4\" strokeWidth={2} />\n <span>Run History</span>\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n <SidebarMenuItem>\n <SidebarMenuButton asChild isActive={isApprovals} tooltip=\"Approvals\">\n <NavLinkCompat to=\"approvals\">\n <InboxIcon className=\"fk:h-4 fk:w-4\" strokeWidth={2} />\n <span>Approvals</span>\n <PendingApprovalsBadge />\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n <SidebarMenuItem>\n <SidebarMenuButton asChild isActive={isPlugins} tooltip=\"Plugins\">\n <NavLinkCompat to=\"plugins\">\n <PlugIcon className=\"fk:size-4\" />\n <span>Plugins</span>\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarGroup>\n <SidebarGroup className=\"fk:mt-4 fk:group-data-[collapsible=icon]:hidden\">\n <SidebarGroupContent>\n <AgentChatsSection query={debouncedQuery} />\n </SidebarGroupContent>\n </SidebarGroup>\n </SidebarContent>\n <SidebarRail />\n </SidebarPanel>\n );\n}\n","import type { JSX } from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { useConfig } from '../../core/config/config-context';\nimport { readSidebarCookieState, SidebarInset, SidebarProvider } from '../../ui';\nimport { AutomationsSidebar } from './sidebar';\n\nexport function Root(): JSX.Element {\n const { currentProjectId } = useConfig();\n const defaultOpen = readSidebarCookieState();\n\n if (!currentProjectId) {\n return (\n <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\">\n Select a project to manage automations and skills.\n </main>\n );\n }\n\n return (\n <SidebarProvider className=\"fk:h-full\" defaultOpen={defaultOpen}>\n <AutomationsSidebar />\n <SidebarInset className=\"fk:min-w-0\">\n <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\">\n <div className=\"fk:flex fk:min-h-0 fk:min-w-0 fk:flex-1 fk:flex-col\">\n <Outlet />\n </div>\n </div>\n </SidebarInset>\n </SidebarProvider>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/apps/ai/sidebar.tsx","../src/apps/ai/root.tsx"],"names":["SEARCH_DEBOUNCE_MS","NavLinkCompat","NavLink","PendingApprovalsBadge","currentProjectId","useConfig","data","useSWR","paths","fetcher","pendingCount","jsx","Badge","ActivityBadge","useActivitySummary","needsAction","count","AutomationsSidebar","pathname","useLocation","isNewChat","isRunHistory","isApprovals","isActivity","isPlugins","isAutomations","query","setQuery","useState","debouncedQuery","useDebouncedValue","jsxs","Sidebar","SidebarGroup","SidebarGroupContent","SearchIcon","Input","event","XIcon","SidebarContent","SidebarMenu","SidebarMenuItem","SidebarMenuButton","SquarePenIcon","BellIcon","BotIcon","HistoryIcon","InboxIcon","PlugIcon","AgentChatsSection","SidebarRail","Root","defaultOpen","readSidebarCookieState","SidebarProvider","SidebarInset","Outlet"],"mappings":"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","file":"root-3M4DIRWC.js","sourcesContent":["import type { JSX } from 'react';\nimport { useState } from 'react';\nimport { BellIcon, BotIcon, PlugIcon, HistoryIcon, InboxIcon, SearchIcon, SquarePenIcon, XIcon } from 'lucide-react';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport useSWR from 'swr';\nimport { useConfig } from '../../core/config/config-context';\nimport {\n Badge,\n Input,\n SidebarContent,\n SidebarGroup,\n SidebarGroupContent,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarPanel,\n SidebarRail,\n} from '../../ui';\nimport { fetcher, paths } from './api';\nimport { useActivitySummary } from './activity-nav-button';\nimport { AgentChatsSection, useDebouncedValue } from './agent/chat-list';\nimport type { AutomationApprovals } from './types';\n\nconst SEARCH_DEBOUNCE_MS = 300;\n\nconst NavLinkCompat = NavLink as unknown as React.ComponentType<{\n children?: React.ReactNode;\n to: string;\n}>;\n\nfunction PendingApprovalsBadge(): JSX.Element | null {\n const { currentProjectId } = useConfig();\n const { data } = useSWR<AutomationApprovals>(\n currentProjectId ? paths(currentProjectId).approvalsCount : null,\n fetcher,\n { refreshInterval: 30_000 }\n );\n const pendingCount = data?.pendingCount ?? 0;\n\n if (pendingCount === 0) {\n return null;\n }\n\n return (\n <Badge 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\">\n {pendingCount > 99 ? '99+' : pendingCount.toString()}\n </Badge>\n );\n}\n\n/** Open items that wait on the viewer; falls back to the unread count when nothing waits. */\nfunction ActivityBadge(): JSX.Element | null {\n const { currentProjectId } = useConfig();\n const data = useActivitySummary(currentProjectId);\n const needsAction = data?.needsActionCount ?? 0;\n const count = needsAction > 0 ? needsAction : (data?.unreadCount ?? 0);\n\n if (count === 0) {\n return null;\n }\n\n return (\n <Badge\n 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 needsAction > 0 ? 'fk:bg-amber-500/20 fk:text-amber-600' : 'fk:bg-muted fk:text-muted-foreground'\n }`}\n >\n {count > 99 ? '99+' : count.toString()}\n </Badge>\n );\n}\n\nexport function AutomationsSidebar(): JSX.Element {\n const location = useLocation();\n const pathname = location.pathname.replace(/\\/$/, '');\n const isNewChat = pathname.endsWith('/ai/agent');\n const isRunHistory = pathname.endsWith('/ai/runs');\n const isApprovals = pathname.endsWith('/ai/approvals');\n const isActivity = pathname.endsWith('/ai/activity') || pathname.includes('/ai/activity/');\n const isPlugins = pathname.includes('/ai/plugins') || pathname.includes('/ai/skills');\n const isAutomations = pathname.includes('/ai/automations');\n const [query, setQuery] = useState('');\n const debouncedQuery = useDebouncedValue(query.trim(), SEARCH_DEBOUNCE_MS);\n\n return (\n <SidebarPanel collapsible=\"icon\" variant=\"inset\">\n <SidebarGroup className=\"fk:shrink-0 fk:pb-1.5 fk:group-data-[collapsible=icon]:hidden\">\n <SidebarGroupContent className=\"fk:relative\">\n <SearchIcon className=\"fk:absolute fk:left-2 fk:top-1/2 fk:size-3.5 fk:-translate-y-1/2 fk:text-muted-foreground\" />\n <Input\n className=\"fk:h-8 fk:bg-background fk:pl-7 fk:pr-7 fk:text-sm\"\n placeholder=\"Search chats...\"\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n />\n {query ? (\n <button\n aria-label=\"Clear search\"\n 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\"\n type=\"button\"\n onClick={() => setQuery('')}\n >\n <XIcon className=\"fk:size-3.5\" />\n </button>\n ) : null}\n </SidebarGroupContent>\n </SidebarGroup>\n <SidebarContent>\n <SidebarGroup>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton asChild isActive={isNewChat} tooltip=\"New chat\">\n <NavLinkCompat to=\"agent\">\n <SquarePenIcon className=\"fk:h-4 fk:w-4\" strokeWidth={2} />\n <span>New chat</span>\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n <SidebarMenuItem>\n <SidebarMenuButton asChild isActive={isActivity} tooltip=\"Activity\">\n <NavLinkCompat to=\"activity\">\n <BellIcon className=\"fk:h-4 fk:w-4\" strokeWidth={2} />\n <span>Activity</span>\n <ActivityBadge />\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n <SidebarMenuItem>\n <SidebarMenuButton asChild isActive={isAutomations} tooltip=\"Automations\">\n <NavLinkCompat to=\"automations\">\n <BotIcon className=\"fk:h-4 fk:w-4\" strokeWidth={2} />\n <span>Automations</span>\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n <SidebarMenuItem>\n <SidebarMenuButton asChild isActive={isRunHistory} tooltip=\"Run History\">\n <NavLinkCompat to=\"runs\">\n <HistoryIcon className=\"fk:h-4 fk:w-4\" strokeWidth={2} />\n <span>Run History</span>\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n <SidebarMenuItem>\n <SidebarMenuButton asChild isActive={isApprovals} tooltip=\"Approvals\">\n <NavLinkCompat to=\"approvals\">\n <InboxIcon className=\"fk:h-4 fk:w-4\" strokeWidth={2} />\n <span>Approvals</span>\n <PendingApprovalsBadge />\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n <SidebarMenuItem>\n <SidebarMenuButton asChild isActive={isPlugins} tooltip=\"Plugins\">\n <NavLinkCompat to=\"plugins\">\n <PlugIcon className=\"fk:size-4\" />\n <span>Plugins</span>\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarGroup>\n <SidebarGroup className=\"fk:mt-4 fk:group-data-[collapsible=icon]:hidden\">\n <SidebarGroupContent>\n <AgentChatsSection query={debouncedQuery} />\n </SidebarGroupContent>\n </SidebarGroup>\n </SidebarContent>\n <SidebarRail />\n </SidebarPanel>\n );\n}\n","import type { JSX } from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { useConfig } from '../../core/config/config-context';\nimport { readSidebarCookieState, SidebarInset, SidebarProvider } from '../../ui';\nimport { AutomationsSidebar } from './sidebar';\n\nexport function Root(): JSX.Element {\n const { currentProjectId } = useConfig();\n const defaultOpen = readSidebarCookieState();\n\n if (!currentProjectId) {\n return (\n <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\">\n Select a project to manage automations and skills.\n </main>\n );\n }\n\n return (\n <SidebarProvider className=\"fk:h-full\" defaultOpen={defaultOpen}>\n <AutomationsSidebar />\n <SidebarInset className=\"fk:min-w-0\">\n <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\">\n <div className=\"fk:flex fk:min-h-0 fk:min-w-0 fk:flex-1 fk:flex-col\">\n <Outlet />\n </div>\n </div>\n </SidebarInset>\n </SidebarProvider>\n );\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import'./index.css';import {b}from'./chunk-EMFHKTAV.js';import {f}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=root-
|
|
1
|
+
import'./index.css';import {b}from'./chunk-EMFHKTAV.js';import {f}from'./chunk-H534S4KD.js';import'./chunk-WPCPL2TQ.js';import'./chunk-5CVDMZUI.js';import {K,M,Q}from'./chunk-DGIY4SKN.js';import'./chunk-SZEGGBOC.js';import'./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}from'react-router-dom';import {jsxs,jsx}from'react/jsx-runtime';function p(){let{currentProjectId:l}=f(),m=K();return l?jsxs(M,{className:"fk:h-full",defaultOpen:m,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 its knowledge."})}export{p as Root};//# sourceMappingURL=root-HETKL6EN.js.map
|
|
2
|
+
//# sourceMappingURL=root-HETKL6EN.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/apps/knowledge/root.tsx"],"names":["Root","currentProjectId","useConfig","defaultOpen","readSidebarCookieState","jsxs","SidebarProvider","jsx","KnowledgeSidebar","SidebarInset","Outlet"],"mappings":"+cAWO,SAASA,CAAAA,EAAoB,CAClC,GAAM,CAAE,gBAAA,CAAAC,CAAiB,CAAA,CAAIC,CAAAA,EAAU,CACjCC,CAAAA,CAAcC,CAAAA,EAAuB,CAE3C,OAAKH,CAAAA,CASHI,IAAAA,CAACC,CAAAA,CAAA,CAAgB,SAAA,CAAU,WAAA,CAAY,WAAA,CAAaH,EAClD,QAAA,CAAA,CAAAI,GAAAA,CAACC,CAAAA,CAAA,EAAiB,CAAA,CAClBD,GAAAA,CAACE,CAAAA,CAAA,CAAa,SAAA,CAAU,YAAA,CACtB,QAAA,CAAAF,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wFAAA,CACb,QAAA,CAAAA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qDAAA,CACb,QAAA,CAAAA,GAAAA,CAACG,MAAAA,CAAA,EAAO,CAAA,CACV,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAhBEH,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,0GAAA,CAA2G,qDAE3H,CAgBN","file":"root-
|
|
1
|
+
{"version":3,"sources":["../src/apps/knowledge/root.tsx"],"names":["Root","currentProjectId","useConfig","defaultOpen","readSidebarCookieState","jsxs","SidebarProvider","jsx","KnowledgeSidebar","SidebarInset","Outlet"],"mappings":"+cAWO,SAASA,CAAAA,EAAoB,CAClC,GAAM,CAAE,gBAAA,CAAAC,CAAiB,CAAA,CAAIC,CAAAA,EAAU,CACjCC,CAAAA,CAAcC,CAAAA,EAAuB,CAE3C,OAAKH,CAAAA,CASHI,IAAAA,CAACC,CAAAA,CAAA,CAAgB,SAAA,CAAU,WAAA,CAAY,WAAA,CAAaH,EAClD,QAAA,CAAA,CAAAI,GAAAA,CAACC,CAAAA,CAAA,EAAiB,CAAA,CAClBD,GAAAA,CAACE,CAAAA,CAAA,CAAa,SAAA,CAAU,YAAA,CACtB,QAAA,CAAAF,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wFAAA,CACb,QAAA,CAAAA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qDAAA,CACb,QAAA,CAAAA,GAAAA,CAACG,MAAAA,CAAA,EAAO,CAAA,CACV,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAhBEH,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,0GAAA,CAA2G,qDAE3H,CAgBN","file":"root-HETKL6EN.js","sourcesContent":["import type { JSX } from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { useConfig } from '../../core/config/config-context';\nimport { readSidebarCookieState, SidebarInset, SidebarProvider } from '../../ui';\nimport { KnowledgeSidebar } from './sidebar';\n\n/**\n * The Knowledge library: documents the team adds so people can read them and\n * the agent can search and cite them. The sidebar filters the list; the list\n * and the document pages render in the inset.\n */\nexport function Root(): JSX.Element {\n const { currentProjectId } = useConfig();\n const defaultOpen = readSidebarCookieState();\n\n if (!currentProjectId) {\n return (\n <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\">\n Select a project to manage its knowledge.\n </main>\n );\n }\n\n return (\n <SidebarProvider className=\"fk:h-full\" defaultOpen={defaultOpen}>\n <KnowledgeSidebar />\n <SidebarInset className=\"fk:min-w-0\">\n <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\">\n <div className=\"fk:flex fk:min-h-0 fk:min-w-0 fk:flex-1 fk:flex-col\">\n <Outlet />\n </div>\n </div>\n </SidebarInset>\n </SidebarProvider>\n );\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import'./index.css';import {a as a$1}from'./chunk-CLCIE5RF.js';import {c as c$3,a as a$5}from'./chunk-
|
|
1
|
+
import'./index.css';import {a as a$1}from'./chunk-CLCIE5RF.js';import {c as c$3,a as a$5}from'./chunk-BIFQCOZD.js';import {a as a$4}from'./chunk-54AXLGAK.js';import {a as a$3}from'./chunk-BRGTUEFL.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-BSUCDQYM.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-RZZOOPEF.js';import {b as b$2}from'./chunk-V7C4EHK3.js';import {e,j as j$3}from'./chunk-6A6NT3H3.js';import {c}from'./chunk-XMOSCJOI.js';import'./chunk-YDVO6XWD.js';import'./chunk-ERDARDGB.js';import {f,b}from'./chunk-H534S4KD.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
2
|
${j$1.query}
|
|
3
3
|
`;await new Promise(h=>{s$2(gql`
|
|
4
4
|
${F}
|
|
@@ -19,5 +19,5 @@ import'./index.css';import {a as a$1}from'./chunk-CLCIE5RF.js';import {c as c$3,
|
|
|
19
19
|
${w}
|
|
20
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
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-WQ46J72W.js.map
|
|
23
|
-
//# sourceMappingURL=root-
|
|
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-L6Y4PSSA.js.map
|
|
23
|
+
//# sourceMappingURL=root-L6Y4PSSA.js.map
|