@flexkit/studio 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/chat-page-ZFPMTRLD.js +2 -0
  2. package/dist/chat-page-ZFPMTRLD.js.map +1 -0
  3. package/dist/chunk-BKJ2DBRK.js +2 -0
  4. package/dist/{chunk-QQUNCDUB.js.map → chunk-BKJ2DBRK.js.map} +1 -1
  5. package/dist/chunk-DPCMOWK4.js +3 -0
  6. package/dist/chunk-DPCMOWK4.js.map +1 -0
  7. package/dist/chunk-DQ6Z333C.js +4 -0
  8. package/dist/{chunk-YINI2YKQ.js.map → chunk-DQ6Z333C.js.map} +1 -1
  9. package/dist/{chunk-OUSEULBR.js → chunk-LMVJWCOM.js} +4 -4
  10. package/dist/{chunk-OUSEULBR.js.map → chunk-LMVJWCOM.js.map} +1 -1
  11. package/dist/{chunk-7PDYCDX6.js → chunk-LX7Q56OS.js} +2 -2
  12. package/dist/{chunk-7PDYCDX6.js.map → chunk-LX7Q56OS.js.map} +1 -1
  13. package/dist/chunk-MKEIZ5ZQ.js +5 -0
  14. package/dist/chunk-MKEIZ5ZQ.js.map +1 -0
  15. package/dist/chunk-QJWY4XIM.js +2 -0
  16. package/dist/{chunk-GZIMMYLK.js.map → chunk-QJWY4XIM.js.map} +1 -1
  17. package/dist/{chunk-3CPWATOI.js → chunk-WBZKCRQK.js} +2 -2
  18. package/dist/{chunk-3CPWATOI.js.map → chunk-WBZKCRQK.js.map} +1 -1
  19. package/dist/index.css +6 -0
  20. package/dist/index.js +4 -4
  21. package/dist/list-GALFFS5F.js +2 -0
  22. package/dist/{list-SQCN7HA3.js.map → list-GALFFS5F.js.map} +1 -1
  23. package/dist/pages-IA7GOMMS.js +3 -0
  24. package/dist/pages-IA7GOMMS.js.map +1 -0
  25. package/dist/{plugin-pages-AHOA6YJE.js → plugin-pages-Q63UBSKH.js} +2 -2
  26. package/dist/{plugin-pages-AHOA6YJE.js.map → plugin-pages-Q63UBSKH.js.map} +1 -1
  27. package/dist/root-5TCUJI6Q.js +23 -0
  28. package/dist/{root-4FGNRGCD.js.map → root-5TCUJI6Q.js.map} +1 -1
  29. package/dist/{root-IIILTOJI.js → root-SMHRBFGW.js} +3 -3
  30. package/dist/{root-IIILTOJI.js.map → root-SMHRBFGW.js.map} +1 -1
  31. package/dist/root-VSTE2THV.js +2 -0
  32. package/dist/{root-5ZW536V7.js.map → root-VSTE2THV.js.map} +1 -1
  33. package/dist/{root-QPQQ3DFJ.js → root-VYZYDWIB.js} +2 -2
  34. package/dist/{root-QPQQ3DFJ.js.map → root-VYZYDWIB.js.map} +1 -1
  35. package/dist/{search-2K2BU4UU.js → search-K75Q65A6.js} +2 -2
  36. package/dist/{search-2K2BU4UU.js.map → search-K75Q65A6.js.map} +1 -1
  37. package/dist/{skills-pages-PSBRTFGK.js → skills-pages-KDG2NOQJ.js} +2 -2
  38. package/dist/{skills-pages-PSBRTFGK.js.map → skills-pages-KDG2NOQJ.js.map} +1 -1
  39. package/package.json +4 -4
  40. package/dist/chat-page-NWMI4XOE.js +0 -2
  41. package/dist/chat-page-NWMI4XOE.js.map +0 -1
  42. package/dist/chunk-GZIMMYLK.js +0 -2
  43. package/dist/chunk-NSYO57O3.js +0 -5
  44. package/dist/chunk-NSYO57O3.js.map +0 -1
  45. package/dist/chunk-QQUNCDUB.js +0 -2
  46. package/dist/chunk-W2EBZZAY.js +0 -3
  47. package/dist/chunk-W2EBZZAY.js.map +0 -1
  48. package/dist/chunk-YINI2YKQ.js +0 -4
  49. package/dist/list-SQCN7HA3.js +0 -2
  50. package/dist/pages-OIAPASPF.js +0 -3
  51. package/dist/pages-OIAPASPF.js.map +0 -1
  52. package/dist/root-4FGNRGCD.js +0 -23
  53. package/dist/root-5ZW536V7.js +0 -2
@@ -0,0 +1,4 @@
1
+ import'./index.css';import {A,C,B,p,o as o$1,h as h$1,i}from'./chunk-LMVJWCOM.js';import {b}from'./chunk-7SK5YPHT.js';import {d as d$1,c}from'./chunk-P6BZ4QP7.js';import {g as g$1}from'./chunk-DPCMOWK4.js';import {ra}from'./chunk-6LYEDKFY.js';import {e,g,h,j,o,n,k}from'./chunk-SZEGGBOC.js';import {d}from'./chunk-5DHOBLAE.js';import {a,d as d$2,c as c$1,e as e$1,g as g$2}from'./chunk-HDOIOXMP.js';import {PencilIcon,Trash2Icon,Ellipsis,Settings2,RefreshCw,Loader2,Trash2}from'lucide-react';import {jsxs,jsx}from'react/jsx-runtime';import {useState}from'react';import {find,propEq}from'ramda';import {gql}from'@apollo/client';import {useApolloClient}from'@apollo/client/react';import {toast}from'sonner';function Me({entityName:l,entityNamePlural:a,row:r,options:s={canDelete:true,canEdit:true}}){let f=A(),E=b(),c=r.original._id,D=(s.canDelete??true)&&E,p=s.canEdit??true;function h$1(){f({type:"EditEntity",payload:{entityId:c,entityNamePlural:a}});}function d$1(){f({type:"DeleteEntity",payload:{entityId:c,entityName:l}});}return jsxs("div",{className:"fk:flex",children:[p&&jsxs(d,{className:"fk:flex fk:h-7 fk:w-7 fk:p-0 fk:mr-1",onClick:h$1,variant:"ghost",children:[jsx(PencilIcon,{className:"fk:h-4 fk:w-4"}),jsx("span",{className:"fk:sr-only",children:"Edit"})]}),D&&!p&&jsxs(d,{className:"fk:flex fk:h-7 fk:w-7 fk:p-0 fk:mr-1",onClick:d$1,variant:"ghost",children:[jsx(Trash2Icon,{className:"fk:h-4 fk:w-4"}),jsx("span",{className:"fk:sr-only",children:"Delete"})]}),p&&D&&jsxs(e,{children:[jsx(g,{asChild:true,children:jsxs(d,{className:"fk:flex fk:h-7 fk:w-7 fk:p-0",variant:"ghost",children:[jsx(Ellipsis,{className:"fk:h-4 fk:w-4"}),jsx("span",{className:"fk:sr-only",children:"Additional actions"})]})}),jsxs(h,{align:"end",className:"w-[160px]",children:[jsxs(j,{onClick:h$1,children:[jsx(PencilIcon,{className:"fk:mr-2 fk:h-4 fk:w-4"}),"Edit"]}),jsx(o,{}),jsxs(j,{className:"fk:text-destructive",onClick:d$1,children:[jsx(Trash2Icon,{className:"fk:mr-2 fk:h-4 fk:w-4"}),"Delete"]})]})]})]})}function Y({table:l}){return jsxs(e,{children:[jsx(g,{asChild:true,children:jsxs(d,{className:"fk:hidden fk:h-8 fk:lg:flex",size:"sm",variant:"outline",children:[jsx(Settings2,{className:"fk:mr-2 fk:h-4 fk:w-4"}),"View"]})}),jsxs(h,{align:"end",className:"fk:w-[150px]",children:[jsx(n,{children:"Toggle columns"}),jsx(o,{}),l.getAllColumns().filter(a=>typeof a.accessorFn<"u"&&a.getCanHide()).map(a=>jsx(k,{checked:a.getIsVisible(),className:"capitalize",onCheckedChange:r=>{a.toggleVisibility(!!r);},children:a.id},a.id))]})]})}function Ue({entityName:l,isReloading:a$1=false,onReload:r,table:s}){let f=A(),E=d$1(),c$2=c(),D=useApolloClient(),{currentProject:p$1,currentProjectId:h}=g$1(),d$3=p$1?.schema??[],w=p$1?.scopes,[ee,te,ae]=C(),[b$1,B$1]=useState(false),y=b(),m=s.getSelectedRowModel().rows.map(e=>e.original._id);function oe(){f({type:"AddEntity",payload:{entityName:l}});}function ne(e){E({type:"setScope",payload:{projectId:h,scope:e}});}async function le(e){if(e.length===0)return;let u=h$1(l,d$3,e);await new Promise((se,re)=>{te(gql`
2
+ ${u}
3
+ `),ae({variables:{where:i(e)},update(x){for(let ce of e)x.evict({id:ce});},onCompleted:()=>{se();},onError:x=>{re(x);}}),ee(true);});}function ie(){let e=l==="_asset"?"asset":l.toLowerCase();f({type:"AlertDialog",payload:{options:{dialogTitle:`Delete ${m.length} ${e}${m.length>1?"s":""}`,dialogMessage:m.length>1?`Are you sure you want to delete the selected ${e}s? They will be deleted permanently.`:`Are you sure you want to delete the selected ${e}? The item will be deleted permanently.`,dialogCancelTitle:"Cancel",dialogActionLabel:"Delete",isDestructive:true,dialogActionSubmit:async()=>{B$1(true);try{let u=[...m];await le(u),s.resetRowSelection(),await p(D,o$1(l,d$3),u),toast.success(u.length>1?"Items successfully deleted.":"Item successfully deleted.");}catch{toast.error("Failed to delete selected items.");}finally{B$1(false);}},dialogActionCancel:()=>{}}}});}return jsxs("div",{className:"fk:flex fk:items-center fk:justify-between",children:[jsxs("div",{className:"fk:flex fk:flex-1 fk:items-center fk:space-x-2",children:[w&&w.length>0?jsxs(a,{defaultValue:c$2.scope,onValueChange:e=>{ne(e);},value:c$2.scope,children:[jsxs(d$2,{className:"fk:w-48!",id:"project",size:"sm",children:[jsx("span",{className:"fk:text-muted-foreground",children:"Scope:"}),jsx(c$1,{children:(find(propEq(c$2.scope??"","name"))(w)||null)?.label})]}),jsx(e$1,{children:w.map(e=>jsx(g$2,{value:e.name,children:e.label},e.name))})]}):null,jsx(Y,{table:s}),r?jsx(d,{"aria-label":"Reload",className:"fk:h-8",disabled:b$1||a$1,onClick:r,size:"icon-sm",variant:"outline",children:jsx(RefreshCw,{className:a$1?"fk:animate-spin":void 0})}):null,jsx(B,{table:s})]}),m.length>0?jsx(ra,{disabled:!y,children:jsxs(d,{className:"fk:h-8 fk:mr-2 fk:lg:flex",disabled:b$1||!y,onClick:ie,size:"sm",variant:"destructive",children:[b$1?jsx(Loader2,{className:"fk:mr-2 fk:h-4 fk:w-4 fk:animate-spin"}):jsx(Trash2,{className:"fk:mr-2 fk:h-4 fk:w-4"}),"Delete (",m.length,")"]})}):null,jsx(ra,{disabled:!y,children:jsx(d,{className:"fk:ml-auto fk:h-8 fk:lg:flex",disabled:b$1||!y,onClick:oe,size:"sm",variant:"default",children:"Create"})})]})}export{Me as a,Y as b,Ue as c};//# sourceMappingURL=chunk-DQ6Z333C.js.map
4
+ //# sourceMappingURL=chunk-DQ6Z333C.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data-grid/data-table-row-actions.tsx","../src/data-grid/data-table-view-options.tsx","../src/data-grid/data-table-toolbar.tsx"],"names":["DataTableRowActions","entityName","entityNamePlural","row","options","actionDispatch","useDispatch","canMutate","useCanMutate","entityId","canDelete","canEdit","handleEdit","handleDelete","jsxs","Button","jsx","PencilIcon","Trash2Icon","DropdownMenu","DropdownMenuTrigger","Ellipsis","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator","DataTableViewOptions","table","Settings2","DropdownMenuLabel","column","DropdownMenuCheckboxItem","value","DataTableToolbar","isReloading","onReload","appDispatch","useAppDispatch","appContext","useAppContext","apolloClient","useApolloClient","currentProject","currentProjectId","useConfig","schema","scopes","runMutation","setMutation","setOptions","useEntityMutation","isDeleting","setIsDeleting","useState","selectedIds","handleCreate","handleScopeChange","deleteSelected","ids","mutation","getEntityDeleteMutation","resolve","reject","gql","getEntityDeleteWhere","cache","id","error","handleBatchDelete","itemLabel","idsToDelete","scheduleEntityListRemoval","getEntityListQueryName","toast","Select","SelectTrigger","SelectValue","find","propEq","SelectContent","scopeItem","SelectItem","RefreshCw","DataTableSortedBy","PermissionTooltip","Loader2","Trash2"],"mappings":"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","file":"chunk-YINI2YKQ.js","sourcesContent":["'use client';\n\nimport type { JSX } from 'react';\nimport { Ellipsis, PencilIcon, Trash2Icon } from 'lucide-react';\nimport type { Row } from '@tanstack/react-table';\nimport { Button } from '../ui/primitives/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../ui/primitives/dropdown-menu';\nimport { useDispatch } from '../entities/actions-context';\nimport { useCanMutate } from '../core/permissions';\n\ninterface DataTableRowActionsProps<TData> {\n entityName: string;\n entityNamePlural: string;\n row: Row<TData>;\n options?: {\n canDelete?: boolean;\n canEdit?: boolean;\n };\n}\n\nexport function DataTableRowActions<TData>({\n entityName,\n entityNamePlural,\n row,\n options = { canDelete: true, canEdit: true },\n}: DataTableRowActionsProps<TData>): JSX.Element {\n const actionDispatch = useDispatch();\n const canMutate = useCanMutate();\n // @ts-expect-error -- the DataGrid's original type doesn't know about the _id property\n const entityId = row.original._id;\n // Read-only roles keep the pencil (the drawer doubles as their read view)\n // but lose the delete affordance entirely.\n const canDelete = (options.canDelete ?? true) && canMutate;\n const canEdit = options.canEdit ?? true;\n\n function handleEdit(): void {\n actionDispatch({ type: 'EditEntity', payload: { entityId, entityNamePlural } });\n }\n\n function handleDelete(): void {\n actionDispatch({ type: 'DeleteEntity', payload: { entityId, entityName } });\n }\n\n return (\n <div className=\"fk:flex\">\n {canEdit && (\n <Button className=\"fk:flex fk:h-7 fk:w-7 fk:p-0 fk:mr-1\" onClick={handleEdit} variant=\"ghost\">\n <PencilIcon className=\"fk:h-4 fk:w-4\" />\n <span className=\"fk:sr-only\">Edit</span>\n </Button>\n )}\n {canDelete && !canEdit && (\n <Button className=\"fk:flex fk:h-7 fk:w-7 fk:p-0 fk:mr-1\" onClick={handleDelete} variant=\"ghost\">\n <Trash2Icon className=\"fk:h-4 fk:w-4\" />\n <span className=\"fk:sr-only\">Delete</span>\n </Button>\n )}\n {canEdit && canDelete && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"fk:flex fk:h-7 fk:w-7 fk:p-0\" variant=\"ghost\">\n <Ellipsis className=\"fk:h-4 fk:w-4\" />\n <span className=\"fk:sr-only\">Additional actions</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[160px]\">\n <DropdownMenuItem onClick={handleEdit}>\n <PencilIcon className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n Edit\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem className=\"fk:text-destructive\" onClick={handleDelete}>\n <Trash2Icon className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n Delete\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n );\n}\n","'use client';\n\nimport type { JSX } from 'react';\nimport { Settings2 } from 'lucide-react';\nimport type { Table } from '@tanstack/react-table';\nimport { Button } from '../ui/primitives/button';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../ui/primitives/dropdown-menu';\n\ninterface DataTableViewOptionsProps<TData> {\n table: Table<TData>;\n}\n\nexport function DataTableViewOptions<TData>({ table }: DataTableViewOptionsProps<TData>): JSX.Element {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"fk:hidden fk:h-8 fk:lg:flex\" size=\"sm\" variant=\"outline\">\n <Settings2 className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n View\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"fk:w-[150px]\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n checked={column.getIsVisible()}\n className=\"capitalize\"\n key={column.id}\n onCheckedChange={(value) => {\n column.toggleVisibility(Boolean(value));\n }}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport type { JSX } from 'react';\nimport { find, propEq } from 'ramda';\nimport type { Table } from '@tanstack/react-table';\nimport { Loader2, RefreshCw, Trash2 } from 'lucide-react';\nimport { gql } from '@apollo/client';\nimport { useApolloClient } from '@apollo/client/react';\nimport { toast } from 'sonner';\nimport { Button } from '../ui/primitives/button';\nimport { PermissionTooltip } from '../ui/components/permission-tooltip';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../ui/primitives/select';\nimport { useDispatch } from '../entities/actions-context';\nimport { useAppContext, useAppDispatch } from '../core/app-context';\nimport { useCanMutate } from '../core/permissions';\nimport { useConfig } from '../core/config/config-context';\nimport { DataTableViewOptions } from './data-table-view-options';\nimport { DataTableSortedBy } from './data-table-sorted-by';\nimport { useEntityMutation } from '../graphql-client/use-entity-mutation';\nimport { getEntityDeleteMutation, getEntityDeleteWhere } from '../graphql-client/queries';\nimport { getEntityListQueryName, scheduleEntityListRemoval } from '../graphql-client/refetch-entity-lists';\n\ninterface DataTableToolbarProps<TData> {\n entityName: string;\n isReloading?: boolean;\n onReload?: () => void;\n table: Table<TData>;\n}\n\nexport function DataTableToolbar<TData>({\n entityName,\n isReloading = false,\n onReload,\n table,\n}: DataTableToolbarProps<TData>): JSX.Element {\n const actionDispatch = useDispatch();\n const appDispatch = useAppDispatch();\n const appContext = useAppContext();\n const apolloClient = useApolloClient();\n const { currentProject, currentProjectId } = useConfig();\n const schema = currentProject?.schema ?? [];\n const scopes = currentProject?.scopes;\n const [runMutation, setMutation, setOptions] = useEntityMutation();\n const [isDeleting, setIsDeleting] = useState(false);\n const canMutate = useCanMutate();\n\n // Collect selected entity ids from the table\n // @ts-expect-error -- the DataGrid's original type doesn't know about the _id property\n const selectedIds: string[] = table.getSelectedRowModel().rows.map((row) => row.original._id as string);\n\n function handleCreate(): void {\n actionDispatch({ type: 'AddEntity', payload: { entityName } });\n }\n\n function handleScopeChange(value: string): void {\n appDispatch({ type: 'setScope', payload: { projectId: currentProjectId, scope: value } });\n }\n\n async function deleteSelected(ids: string[]): Promise<void> {\n if (ids.length === 0) {\n return;\n }\n\n const mutation = getEntityDeleteMutation(entityName, schema, ids);\n\n await new Promise<void>((resolve, reject) => {\n setMutation(gql`\n ${mutation}\n `);\n\n setOptions({\n variables: { where: getEntityDeleteWhere(ids) },\n update(cache: { evict: (arg0: { id: string }) => void }) {\n for (const id of ids) {\n cache.evict({ id });\n }\n },\n onCompleted: () => {\n resolve();\n },\n onError: (error: Error) => {\n reject(error);\n },\n });\n\n runMutation(true);\n });\n }\n\n function handleBatchDelete(): void {\n const itemLabel = entityName === '_asset' ? 'asset' : entityName.toLowerCase();\n\n actionDispatch({\n type: 'AlertDialog',\n payload: {\n options: {\n dialogTitle: `Delete ${selectedIds.length} ${itemLabel}${selectedIds.length > 1 ? 's' : ''}`,\n dialogMessage:\n selectedIds.length > 1\n ? `Are you sure you want to delete the selected ${itemLabel}s? They will be deleted permanently.`\n : `Are you sure you want to delete the selected ${itemLabel}? The item will be deleted permanently.`,\n dialogCancelTitle: 'Cancel',\n dialogActionLabel: 'Delete',\n isDestructive: true,\n dialogActionSubmit: async () => {\n setIsDeleting(true);\n\n try {\n const idsToDelete = [...selectedIds];\n\n await deleteSelected(idsToDelete);\n\n table.resetRowSelection();\n // Drop rows immediately, then soft-refetch counts/pages.\n await scheduleEntityListRemoval(\n apolloClient,\n getEntityListQueryName(entityName, schema),\n idsToDelete\n );\n toast.success(idsToDelete.length > 1 ? 'Items successfully deleted.' : 'Item successfully deleted.');\n } catch {\n toast.error('Failed to delete selected items.');\n } finally {\n setIsDeleting(false);\n }\n },\n dialogActionCancel: () => {\n // no-op\n },\n },\n },\n });\n }\n\n return (\n <div className=\"fk:flex fk:items-center fk:justify-between\">\n <div className=\"fk:flex fk:flex-1 fk:items-center fk:space-x-2\">\n {scopes && scopes.length > 0 ? (\n <Select\n defaultValue={appContext.scope}\n onValueChange={(value) => {\n handleScopeChange(value);\n }}\n value={appContext.scope}\n >\n <SelectTrigger className=\"fk:w-48!\" id=\"project\" size=\"sm\">\n <span className=\"fk:text-muted-foreground\">Scope:</span>\n <SelectValue>\n {\n ((find(propEq(appContext.scope ?? '', 'name'))(scopes) as { name: string; label: string }) || null)\n ?.label\n }\n </SelectValue>\n </SelectTrigger>\n <SelectContent>\n {scopes.map((scopeItem) => (\n <SelectItem key={scopeItem.name} value={scopeItem.name}>\n {scopeItem.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : null}\n <DataTableViewOptions table={table} />\n {onReload ? (\n <Button\n aria-label=\"Reload\"\n className=\"fk:h-8\"\n disabled={isDeleting || isReloading}\n onClick={onReload}\n size=\"icon-sm\"\n variant=\"outline\"\n >\n <RefreshCw className={isReloading ? 'fk:animate-spin' : undefined} />\n </Button>\n ) : null}\n <DataTableSortedBy table={table} />\n </div>\n {selectedIds.length > 0 ? (\n <PermissionTooltip disabled={!canMutate}>\n <Button\n className=\"fk:h-8 fk:mr-2 fk:lg:flex\"\n disabled={isDeleting || !canMutate}\n onClick={handleBatchDelete}\n size=\"sm\"\n variant=\"destructive\"\n >\n {isDeleting ? (\n <Loader2 className=\"fk:mr-2 fk:h-4 fk:w-4 fk:animate-spin\" />\n ) : (\n <Trash2 className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n )}\n Delete ({selectedIds.length})\n </Button>\n </PermissionTooltip>\n ) : null}\n <PermissionTooltip disabled={!canMutate}>\n <Button\n className=\"fk:ml-auto fk:h-8 fk:lg:flex\"\n disabled={isDeleting || !canMutate}\n onClick={handleCreate}\n size=\"sm\"\n variant=\"default\"\n >\n Create\n </Button>\n </PermissionTooltip>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/data-grid/data-table-row-actions.tsx","../src/data-grid/data-table-view-options.tsx","../src/data-grid/data-table-toolbar.tsx"],"names":["DataTableRowActions","entityName","entityNamePlural","row","options","actionDispatch","useDispatch","canMutate","useCanMutate","entityId","canDelete","canEdit","handleEdit","handleDelete","jsxs","Button","jsx","PencilIcon","Trash2Icon","DropdownMenu","DropdownMenuTrigger","Ellipsis","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator","DataTableViewOptions","table","Settings2","DropdownMenuLabel","column","DropdownMenuCheckboxItem","value","DataTableToolbar","isReloading","onReload","appDispatch","useAppDispatch","appContext","useAppContext","apolloClient","useApolloClient","currentProject","currentProjectId","useConfig","schema","scopes","runMutation","setMutation","setOptions","useEntityMutation","isDeleting","setIsDeleting","useState","selectedIds","handleCreate","handleScopeChange","deleteSelected","ids","mutation","getEntityDeleteMutation","resolve","reject","gql","getEntityDeleteWhere","cache","id","error","handleBatchDelete","itemLabel","idsToDelete","scheduleEntityListRemoval","getEntityListQueryName","toast","Select","SelectTrigger","SelectValue","find","propEq","SelectContent","scopeItem","SelectItem","RefreshCw","DataTableSortedBy","PermissionTooltip","Loader2","Trash2"],"mappings":"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","file":"chunk-DQ6Z333C.js","sourcesContent":["'use client';\n\nimport type { JSX } from 'react';\nimport { Ellipsis, PencilIcon, Trash2Icon } from 'lucide-react';\nimport type { Row } from '@tanstack/react-table';\nimport { Button } from '../ui/primitives/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../ui/primitives/dropdown-menu';\nimport { useDispatch } from '../entities/actions-context';\nimport { useCanMutate } from '../core/permissions';\n\ninterface DataTableRowActionsProps<TData> {\n entityName: string;\n entityNamePlural: string;\n row: Row<TData>;\n options?: {\n canDelete?: boolean;\n canEdit?: boolean;\n };\n}\n\nexport function DataTableRowActions<TData>({\n entityName,\n entityNamePlural,\n row,\n options = { canDelete: true, canEdit: true },\n}: DataTableRowActionsProps<TData>): JSX.Element {\n const actionDispatch = useDispatch();\n const canMutate = useCanMutate();\n // @ts-expect-error -- the DataGrid's original type doesn't know about the _id property\n const entityId = row.original._id;\n // Read-only roles keep the pencil (the drawer doubles as their read view)\n // but lose the delete affordance entirely.\n const canDelete = (options.canDelete ?? true) && canMutate;\n const canEdit = options.canEdit ?? true;\n\n function handleEdit(): void {\n actionDispatch({ type: 'EditEntity', payload: { entityId, entityNamePlural } });\n }\n\n function handleDelete(): void {\n actionDispatch({ type: 'DeleteEntity', payload: { entityId, entityName } });\n }\n\n return (\n <div className=\"fk:flex\">\n {canEdit && (\n <Button className=\"fk:flex fk:h-7 fk:w-7 fk:p-0 fk:mr-1\" onClick={handleEdit} variant=\"ghost\">\n <PencilIcon className=\"fk:h-4 fk:w-4\" />\n <span className=\"fk:sr-only\">Edit</span>\n </Button>\n )}\n {canDelete && !canEdit && (\n <Button className=\"fk:flex fk:h-7 fk:w-7 fk:p-0 fk:mr-1\" onClick={handleDelete} variant=\"ghost\">\n <Trash2Icon className=\"fk:h-4 fk:w-4\" />\n <span className=\"fk:sr-only\">Delete</span>\n </Button>\n )}\n {canEdit && canDelete && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"fk:flex fk:h-7 fk:w-7 fk:p-0\" variant=\"ghost\">\n <Ellipsis className=\"fk:h-4 fk:w-4\" />\n <span className=\"fk:sr-only\">Additional actions</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[160px]\">\n <DropdownMenuItem onClick={handleEdit}>\n <PencilIcon className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n Edit\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem className=\"fk:text-destructive\" onClick={handleDelete}>\n <Trash2Icon className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n Delete\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n );\n}\n","'use client';\n\nimport type { JSX } from 'react';\nimport { Settings2 } from 'lucide-react';\nimport type { Table } from '@tanstack/react-table';\nimport { Button } from '../ui/primitives/button';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../ui/primitives/dropdown-menu';\n\ninterface DataTableViewOptionsProps<TData> {\n table: Table<TData>;\n}\n\nexport function DataTableViewOptions<TData>({ table }: DataTableViewOptionsProps<TData>): JSX.Element {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"fk:hidden fk:h-8 fk:lg:flex\" size=\"sm\" variant=\"outline\">\n <Settings2 className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n View\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"fk:w-[150px]\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n checked={column.getIsVisible()}\n className=\"capitalize\"\n key={column.id}\n onCheckedChange={(value) => {\n column.toggleVisibility(Boolean(value));\n }}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport type { JSX } from 'react';\nimport { find, propEq } from 'ramda';\nimport type { Table } from '@tanstack/react-table';\nimport { Loader2, RefreshCw, Trash2 } from 'lucide-react';\nimport { gql } from '@apollo/client';\nimport { useApolloClient } from '@apollo/client/react';\nimport { toast } from 'sonner';\nimport { Button } from '../ui/primitives/button';\nimport { PermissionTooltip } from '../ui/components/permission-tooltip';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../ui/primitives/select';\nimport { useDispatch } from '../entities/actions-context';\nimport { useAppContext, useAppDispatch } from '../core/app-context';\nimport { useCanMutate } from '../core/permissions';\nimport { useConfig } from '../core/config/config-context';\nimport { DataTableViewOptions } from './data-table-view-options';\nimport { DataTableSortedBy } from './data-table-sorted-by';\nimport { useEntityMutation } from '../graphql-client/use-entity-mutation';\nimport { getEntityDeleteMutation, getEntityDeleteWhere } from '../graphql-client/queries';\nimport { getEntityListQueryName, scheduleEntityListRemoval } from '../graphql-client/refetch-entity-lists';\n\ninterface DataTableToolbarProps<TData> {\n entityName: string;\n isReloading?: boolean;\n onReload?: () => void;\n table: Table<TData>;\n}\n\nexport function DataTableToolbar<TData>({\n entityName,\n isReloading = false,\n onReload,\n table,\n}: DataTableToolbarProps<TData>): JSX.Element {\n const actionDispatch = useDispatch();\n const appDispatch = useAppDispatch();\n const appContext = useAppContext();\n const apolloClient = useApolloClient();\n const { currentProject, currentProjectId } = useConfig();\n const schema = currentProject?.schema ?? [];\n const scopes = currentProject?.scopes;\n const [runMutation, setMutation, setOptions] = useEntityMutation();\n const [isDeleting, setIsDeleting] = useState(false);\n const canMutate = useCanMutate();\n\n // Collect selected entity ids from the table\n // @ts-expect-error -- the DataGrid's original type doesn't know about the _id property\n const selectedIds: string[] = table.getSelectedRowModel().rows.map((row) => row.original._id as string);\n\n function handleCreate(): void {\n actionDispatch({ type: 'AddEntity', payload: { entityName } });\n }\n\n function handleScopeChange(value: string): void {\n appDispatch({ type: 'setScope', payload: { projectId: currentProjectId, scope: value } });\n }\n\n async function deleteSelected(ids: string[]): Promise<void> {\n if (ids.length === 0) {\n return;\n }\n\n const mutation = getEntityDeleteMutation(entityName, schema, ids);\n\n await new Promise<void>((resolve, reject) => {\n setMutation(gql`\n ${mutation}\n `);\n\n setOptions({\n variables: { where: getEntityDeleteWhere(ids) },\n update(cache: { evict: (arg0: { id: string }) => void }) {\n for (const id of ids) {\n cache.evict({ id });\n }\n },\n onCompleted: () => {\n resolve();\n },\n onError: (error: Error) => {\n reject(error);\n },\n });\n\n runMutation(true);\n });\n }\n\n function handleBatchDelete(): void {\n const itemLabel = entityName === '_asset' ? 'asset' : entityName.toLowerCase();\n\n actionDispatch({\n type: 'AlertDialog',\n payload: {\n options: {\n dialogTitle: `Delete ${selectedIds.length} ${itemLabel}${selectedIds.length > 1 ? 's' : ''}`,\n dialogMessage:\n selectedIds.length > 1\n ? `Are you sure you want to delete the selected ${itemLabel}s? They will be deleted permanently.`\n : `Are you sure you want to delete the selected ${itemLabel}? The item will be deleted permanently.`,\n dialogCancelTitle: 'Cancel',\n dialogActionLabel: 'Delete',\n isDestructive: true,\n dialogActionSubmit: async () => {\n setIsDeleting(true);\n\n try {\n const idsToDelete = [...selectedIds];\n\n await deleteSelected(idsToDelete);\n\n table.resetRowSelection();\n // Drop rows immediately, then soft-refetch counts/pages.\n await scheduleEntityListRemoval(\n apolloClient,\n getEntityListQueryName(entityName, schema),\n idsToDelete\n );\n toast.success(idsToDelete.length > 1 ? 'Items successfully deleted.' : 'Item successfully deleted.');\n } catch {\n toast.error('Failed to delete selected items.');\n } finally {\n setIsDeleting(false);\n }\n },\n dialogActionCancel: () => {\n // no-op\n },\n },\n },\n });\n }\n\n return (\n <div className=\"fk:flex fk:items-center fk:justify-between\">\n <div className=\"fk:flex fk:flex-1 fk:items-center fk:space-x-2\">\n {scopes && scopes.length > 0 ? (\n <Select\n defaultValue={appContext.scope}\n onValueChange={(value) => {\n handleScopeChange(value);\n }}\n value={appContext.scope}\n >\n <SelectTrigger className=\"fk:w-48!\" id=\"project\" size=\"sm\">\n <span className=\"fk:text-muted-foreground\">Scope:</span>\n <SelectValue>\n {\n ((find(propEq(appContext.scope ?? '', 'name'))(scopes) as { name: string; label: string }) || null)\n ?.label\n }\n </SelectValue>\n </SelectTrigger>\n <SelectContent>\n {scopes.map((scopeItem) => (\n <SelectItem key={scopeItem.name} value={scopeItem.name}>\n {scopeItem.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : null}\n <DataTableViewOptions table={table} />\n {onReload ? (\n <Button\n aria-label=\"Reload\"\n className=\"fk:h-8\"\n disabled={isDeleting || isReloading}\n onClick={onReload}\n size=\"icon-sm\"\n variant=\"outline\"\n >\n <RefreshCw className={isReloading ? 'fk:animate-spin' : undefined} />\n </Button>\n ) : null}\n <DataTableSortedBy table={table} />\n </div>\n {selectedIds.length > 0 ? (\n <PermissionTooltip disabled={!canMutate}>\n <Button\n className=\"fk:h-8 fk:mr-2 fk:lg:flex\"\n disabled={isDeleting || !canMutate}\n onClick={handleBatchDelete}\n size=\"sm\"\n variant=\"destructive\"\n >\n {isDeleting ? (\n <Loader2 className=\"fk:mr-2 fk:h-4 fk:w-4 fk:animate-spin\" />\n ) : (\n <Trash2 className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n )}\n Delete ({selectedIds.length})\n </Button>\n </PermissionTooltip>\n ) : null}\n <PermissionTooltip disabled={!canMutate}>\n <Button\n className=\"fk:ml-auto fk:h-8 fk:lg:flex\"\n disabled={isDeleting || !canMutate}\n onClick={handleCreate}\n size=\"sm\"\n variant=\"default\"\n >\n Create\n </Button>\n </PermissionTooltip>\n </div>\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import'./index.css';import {e}from'./chunk-P6BZ4QP7.js';import {b as b$1}from'./chunk-2DXR5NJV.js';import {b,f,c}from'./chunk-W2EBZZAY.js';import {h as h$1,c as c$2}from'./chunk-NNA4MLFC.js';import {Oc,Pc,Qc,K,da,ea,ha,ia as ia$1,fa,ja,o,L,M as M$1,N,O}from'./chunk-6LYEDKFY.js';import {e as e$1,g,h,j}from'./chunk-SZEGGBOC.js';import {c as c$1,h as h$2,i,k,l,b as b$2}from'./chunk-ODORXGGY.js';import {d}from'./chunk-5DHOBLAE.js';import {a}from'./chunk-O2QMYUPS.js';import {find,propEq,omit,pick,toPairs,uniq,uniqBy,prop,props}from'ramda';import {gql,NetworkStatus,ApolloClient,InMemoryCache,defaultDataIdFromObject,from,HttpLink}from'@apollo/client';import {ApolloProvider,useQuery,useMutation}from'@apollo/client/react';import {ErrorLink}from'@apollo/client/link/error';import {ServerError,CombinedGraphQLErrors,CombinedProtocolErrors}from'@apollo/client/errors';import {createContext,useContext,useState,useMemo,useRef,useEffect,useCallback,useReducer}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {AlertCircle,X as X$1,ChevronDown,ArrowUp,ArrowDown,Star,CircleCheck,CircleX,Check,Copy}from'lucide-react';import {useReactTable,getSortedRowModel,getPaginationRowModel,getFilteredRowModel,getCoreRowModel,flexRender}from'@tanstack/react-table';import {useVirtualizer}from'@tanstack/react-virtual';import {getText,getSchema,getTextSerializersFromSchema}from'@tiptap/core';import {Node}from'@tiptap/pm/model';import {TiptapLink,TiptapImage,UploadImagesPlugin,TaskList,TaskItem,HorizontalRule,StarterKit,CodeBlockLowlight,Youtube,Twitter,Mathematics,CharacterCount,Placeholder,AIHighlight,TiptapUnderline,HighlightExtension,TextStyle,Color,CustomKeymap,GlobalDragHandle}from'novel';import {Markdown}from'tiptap-markdown';import {cx}from'class-variance-authority';import {createLowlight,common}from'lowlight';import {defaultStyles,FileIcon}from'react-file-icon';import {isValid,format}from'date-fns';function R(e){return e.dataType==="asset"?"global":e.scope}var ln=25,Ar=3,un=3,Er=["id","string"],Tr=["date","datetime","duration","time"],yt=`_id
1
+ import'./index.css';import {e}from'./chunk-P6BZ4QP7.js';import {b as b$1}from'./chunk-2DXR5NJV.js';import {b,g,c}from'./chunk-DPCMOWK4.js';import {h as h$1,c as c$2}from'./chunk-NNA4MLFC.js';import {Oc,Pc,Qc,K,da,ea,ha,ia as ia$1,fa,ja,o,L,M as M$1,N,O}from'./chunk-6LYEDKFY.js';import {e as e$1,g as g$1,h,j}from'./chunk-SZEGGBOC.js';import {c as c$1,h as h$2,i,k,l,b as b$2}from'./chunk-ODORXGGY.js';import {d}from'./chunk-5DHOBLAE.js';import {a}from'./chunk-O2QMYUPS.js';import {find,propEq,omit,pick,toPairs,uniq,uniqBy,prop,props}from'ramda';import {gql,NetworkStatus,ApolloClient,InMemoryCache,defaultDataIdFromObject,from,HttpLink}from'@apollo/client';import {ApolloProvider,useQuery,useMutation}from'@apollo/client/react';import {ErrorLink}from'@apollo/client/link/error';import {ServerError,CombinedGraphQLErrors,CombinedProtocolErrors}from'@apollo/client/errors';import {createContext,useContext,useState,useMemo,useRef,useEffect,useCallback,useReducer}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {AlertCircle,X as X$1,ChevronDown,ArrowUp,ArrowDown,Star,CircleCheck,CircleX,Check,Copy}from'lucide-react';import {useReactTable,getSortedRowModel,getPaginationRowModel,getFilteredRowModel,getCoreRowModel,flexRender}from'@tanstack/react-table';import {useVirtualizer}from'@tanstack/react-virtual';import {getText,getSchema,getTextSerializersFromSchema}from'@tiptap/core';import {Node}from'@tiptap/pm/model';import {TiptapLink,TiptapImage,UploadImagesPlugin,TaskList,TaskItem,HorizontalRule,StarterKit,CodeBlockLowlight,Youtube,Twitter,Mathematics,CharacterCount,Placeholder,AIHighlight,TiptapUnderline,HighlightExtension,TextStyle,Color,CustomKeymap,GlobalDragHandle}from'novel';import {Markdown}from'tiptap-markdown';import {cx}from'class-variance-authority';import {createLowlight,common}from'lowlight';import {defaultStyles,FileIcon}from'react-file-icon';import {isValid,format}from'date-fns';function R(e){return e.dataType==="asset"?"global":e.scope}var ln=25,Ar=3,un=3,Er=["id","string"],Tr=["date","datetime","duration","time"],yt=`_id
2
2
  originalFilename
3
3
  mimeType
4
4
  path
@@ -375,10 +375,10 @@ ${A} ]
375
375
  }
376
376
  }
377
377
  `}}var Fe=e=>e.charAt(0).toUpperCase()+e.slice(1);function J(e){let t=e.split(/[^0-9A-Za-z]+/).filter(Boolean).map(Fe).join("");return t?/^[A-Za-z_]/.test(t)?t:`Entity${t}`:"Entity"}function te(e,t){return t==="_assets"?b:find(propEq(t,"plural"))(e)}function Ss(e,t,n){if(!e||typeof e!="object")return {};let r=te(n,t);if(!r)return {};let o=`update${Fe(t)}`,i=e[o];if(!i||typeof i!="object")return {};let s=i[t],u=Array.isArray(s)?s[0]:void 0;return !u||typeof u!="object"?{}:r.attributes.reduce((a,l)=>{if(R(l)!=="local")return a;let p=ae(u[l.name])?._id;return typeof p!="string"||p.length===0?a:{...a,[l.name]:p}},{})}function En(e){return e?"cause"in e:false}function ke(e){if(!e)return null;if(ServerError.is(e))return e;if(En(e)){let t=e.cause;if(ServerError.is(t))return t}return null}function Tn(e){if(!e||typeof e!="object")return null;let{message:t}=e;return typeof t=="string"?t:null}function be(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function nt(e){if(!e)return null;let t=$n(e).filter(n=>!Gr(n));return t.length===0?null:["The deployed schema is out of sync with your local Flexkit schema.","Run `flexkit deploy` using the CLI to apply your latest schema changes.",...t.map(n=>`- ${n}`)].join(`
378
- `)}function wn(e,t){return e?$n(e).some(n=>n.includes(`Cannot query field "${t}"`)):false}function $n(e){if(CombinedGraphQLErrors.is(e))return e.errors.filter(An).map(({message:o})=>o);let t=Tn(e);if(t&&Oe(t))return [t];let n=ke(e);if(n?.statusCode!==400)return [];let r=be(n.bodyText)??zr(n)??Hr(e);return r?Array.isArray(r.errors)?r.errors.filter(An).map(o=>o.message):typeof r.message=="string"&&Oe(r.message)?[r.message]:typeof r.error=="string"&&Oe(r.error)?[r.error]:[]:[]}function zr(e){let{result:t}=e;return !t||typeof t!="object"?null:t}function Hr(e){if(!En(e))return null;let{cause:t}=e,n=Tn(t);if(n&&Oe(n))return {message:n};if(!t||typeof t!="object")return null;let{result:r}=t;return r&&typeof r=="object"?r:null}function An(e){if(!e||typeof e!="object")return false;let{extensions:t,message:n}=e;return t?.code==="GRAPHQL_VALIDATION_FAILED"&&typeof n=="string"?true:typeof n=="string"&&Oe(n)}function Oe(e){return e.startsWith("Cannot query field ")||e.startsWith("Unknown type ")||e.startsWith('Cannot query field "')||e.includes("GRAPHQL_VALIDATION_FAILED")}function Gr(e){return /Cannot query field "[_A-Za-z][_0-9A-Za-z]*Total" on type "Query"/.test(e)}var so=ApolloProvider,vn=createContext(void 0);function $e(){let e=useContext(vn);if(!e)throw new Error("useGraphQLError must be used within GraphQLProvider");return e}function ao(e){return new ErrorLink(({error:t})=>{let n=nt(t);if(n){e(n);return}CombinedGraphQLErrors.is(t)?t.errors.forEach(({message:o,locations:i,path:s})=>{console.warn(`[GraphQL error]: Message: ${o}, Location: ${i}, Path: ${s}`);}):CombinedProtocolErrors.is(t)&&t.errors.forEach(({message:o,extensions:i})=>{console.warn(`[Protocol error]: Message: ${o}, Extensions: ${JSON.stringify(i)}`);});let r=ke(t);if(r?.statusCode===400){let o=be(r.bodyText),i=null;if(o&&typeof o=="object"){let{error:s,errors:u,message:a}=o;if(typeof a=="string")i=a;else if(Array.isArray(u)){let[l]=u;if(l&&typeof l.message=="string"){let{message:d}=l;i=d;}}else typeof s=="string"?i=s:i=JSON.stringify(o);}else i=r.bodyText;e(i??"There is an error in the deployed Flexkit schema. Fix flexkit.config.ts and run flexkit deploy.");}if(r){console.warn(`[Network error]: ${r.message}`);return}t&&console.warn(`[Network error]: ${t.message}`);})}function lo(e,t){return from([ao(t),new HttpLink({uri:`/api/flexkit/${e}/graphql`})])}function uo(e,t){return new ApolloClient({link:lo(e??"",t),cache:new InMemoryCache({dataIdFromObject:n=>n._id?n._id:defaultDataIdFromObject(n)})})}function Ms({children:e}){let{currentProjectId:t}=f(),[n,r]=useState(null),o=useMemo(()=>({schemaErrorMessage:n,setSchemaErrorMessage:r}),[n]),i=useMemo(()=>uo(t,r),[t]);return jsx(vn.Provider,{value:o,children:jsx(so,{client:i,children:e})})}var rt=null,Et=new Set,Rn=[],Tt=new Set,wt=new Set,$t=new Set;function Ps(e,t){if(e==="_asset"||e==="_assets")return `Get${J(b.plural)}`;let n=t.find(i=>i.plural===e),r=t.find(i=>i.name===e),o=n?.plural??r?.plural??e;return `Get${J(o)}`}function _n(e){return Tt.add(e),()=>{Tt.delete(e);}}function Ln(e){return wt.add(e),()=>{wt.delete(e);}}function Mn(e){return $t.add(e),()=>{$t.delete(e);}}function Ns(e,t,n){let r=new Set(n.filter(Boolean));if(r.size>0)for(let o of wt)o(t,r);return co(e,t)}function Vs(e,t){let n=t.filter(r=>!!r._id);if(n.length!==0)for(let r of $t)r(e,n);}function co(e,t){return Et.add(t),new Promise((n,r)=>{Rn.push({resolve:n,reject:r}),rt&&clearTimeout(rt),rt=setTimeout(()=>{let o=new Set(Et),i=Rn.splice(0);Et.clear(),rt=null,Promise.all([...Tt].map(s=>Promise.resolve(s(o)))).then(()=>{for(let{resolve:s}of i)s();}).catch(s=>{console.error("Error refreshing entity lists:",s);for(let{reject:u}of i)u(s);});},50);})}function Xs({entityNamePlural:e,schema:t,scope:n,variables:r,isForm:o,selection:i="full",includeCount:s=true}){let[u,a]=useState({count:0,results:[]}),[l,d]=useState(false),[p,f]=useState(false),[c,h]=useState(null),k=useRef(false),A=useRef(false),m=useRef(0),g=useRef(null),S=useRef(null),v=`${e}Total`,L=te(t,e),q=r?.where===void 0&&(L?.spaces?.length??0)===0&&(c?.field!==v||c.schema!==t)?"total":"aggregate",oe=useMemo(()=>gql(tt(e,n,t,{selection:i,countMode:q,includeCount:s}).query),[e,n,t,i,q,s]),K=useMemo(()=>gql(tt(e,n,t,{selection:i,includeCount:false}).query),[e,n,t,i]),{schemaErrorMessage:E,setSchemaErrorMessage:w}=$e(),{loading:j,data:z,fetchMore:G,refetch:Y,error:pe,networkStatus:me}=useQuery(oe,{variables:r,notifyOnNetworkStatusChange:true}),ve=useRef(G),Z=useRef(Y),Re=useRef(K),ee=useRef(me),ge=useRef(r);ve.current=G,Z.current=Y,Re.current=K,ge.current=r;let _e=s&&wn(pe,v),ie=q==="total"&&_e,B=_e?void 0:pe,le=_e&&!z?.[e],he=ke(B),H=nt(B),{isProjectDisabled:je,isProjectReadOnly:Be}=(()=>{if(he?.statusCode===403){let $=be(he.bodyText);if($&&typeof $.code=="string"){if($.code==="PROJECT_PAUSED")return {isProjectDisabled:true,isProjectReadOnly:false};if($.code==="READ_ONLY_MODE")return {isProjectDisabled:false,isProjectReadOnly:true}}return {isProjectDisabled:true,isProjectReadOnly:false}}return {isProjectDisabled:false,isProjectReadOnly:false}})();useEffect(()=>{ie&&h({field:v,schema:t});},[t,ie,v]);let ze=useCallback($=>{if(k.current||A.current)return;k.current=true,d(true);let{limit:N}=$.variables,V=m.current;ve.current({...$,query:Re.current,variables:{...ge.current,...$.variables,offset:V,limit:N}}).then(({data:se})=>{let Q=Ne({data:se,entityNamePlural:e,isForm:o,schema:t,scope:n}),y=Q.results.length;m.current=V+(y===0?0:Math.min(y,N)),a(b=>{let O=uniqBy(prop("_id"),[...b.results,...Q.results]);return O.length===b.results.length?{count:b.results.length,results:b.results}:{count:Q.count||b.count,results:O}});}).catch(se=>{console.error("Error fetching more data:",se);}).finally(()=>{k.current=false,d(false);});},[e,o,t,n]),Le=useCallback($=>{if(A.current)return Promise.resolve();let N=$?.preserve===true;return A.current=true,k.current=false,d(false),N||(g.current=null,S.current=null,m.current=0,f(true),a({count:0,results:[]})),Z.current().then(({data:V})=>{let se=JSON.stringify({entityNamePlural:e,scope:n,selection:i,includeCount:s,variables:r}),Q=Ne({data:V,entityNamePlural:e,isForm:o,schema:t,scope:n});g.current=se,S.current=null,m.current=it(r)+Q.results.length,a(Q);}).catch(V=>{console.error("Error reloading data:",V);}).finally(()=>{A.current=false,f(false);})},[e,o,t,n,i,s,r]);return useEffect(()=>{if(H){w(H);return}z&&E&&!B&&w(null);},[z,B,E,H,w]),useEffect(()=>{if(B||H||le)return;let $=JSON.stringify({entityNamePlural:e,scope:n,selection:i,includeCount:s,variables:r});if(g.current===$)return;if(j&&S.current!==$){S.current=$,m.current=0,a({count:0,results:[]});return}if(j)return;let N=Ne({data:z,entityNamePlural:e,isForm:o,schema:t,scope:n});g.current=$,S.current=null,m.current=it(r)+N.results.length,a(N);},[z,B,e,o,j,le,t,H,n,i,s,r]),useEffect(()=>{let $=ee.current;if(ee.current=me,B||H||A.current||le||$!==NetworkStatus.refetch||me!==NetworkStatus.ready||!z)return;let N=JSON.stringify({entityNamePlural:e,scope:n,selection:i,includeCount:s,variables:r}),V=Ne({data:z,entityNamePlural:e,isForm:o,schema:t,scope:n});g.current=N,S.current=null,m.current=it(r)+V.results.length,a(V);},[z,B,e,o,le,me,t,H,n,i,s,r]),useEffect(()=>{if(o)return;let $=`Get${J(e)}`,N=_n(Q=>{if(!(!Q.has($)||k.current||A.current))return Z.current().then(({data:y})=>{let b=JSON.stringify({entityNamePlural:e,scope:n,selection:i,includeCount:s,variables:r}),O=Ne({data:y,entityNamePlural:e,isForm:o,schema:t,scope:n});g.current=b,S.current=null,m.current=it(r)+O.results.length,a(O);}).catch(y=>{console.error("Error soft-refreshing entity list:",y);})}),V=Ln((Q,y)=>{Q===$&&a(b=>{let O=b.results.filter(Qt=>{let Ut=typeof Qt._id=="string"?Qt._id:void 0;return !Ut||!y.has(Ut)}),He=b.results.length-O.length;return He===0?b:{count:Math.max(0,b.count-He),results:O}});}),se=Mn((Q,y)=>{Q===$&&a(b=>go(b,y,r?.sort));});return ()=>{N(),V(),se();}},[e,o,t,n,i,s,r]),{isLoading:j&&me!==NetworkStatus.refetch||p||le,isLoadingMore:l,fetchMore:ze,reload:Le,count:u.count,data:u.results,isProjectDisabled:je,isProjectReadOnly:Be,schemaErrorMessage:E}}function it(e){let t=e?.offset;return typeof t=="number"&&Number.isFinite(t)?t:0}function Ne(e){let t=e.entityNamePlural;return e.data?.[t]?e.isForm?gn(e.entityNamePlural,e.scope,e.data,e.schema):mn(e.entityNamePlural,e.scope,e.data,e.schema):{count:0,results:[]}}function go(e,t,n){let r=new Map(t.map(s=>[s._id,s])),o=false,i=e.results.map(s=>{let u=typeof s._id=="string"?s._id:void 0;if(!u)return s;let a=r.get(u);return a?(o=true,{...s,...a.attributes}):s});return o?{count:e.count,results:ho(i,n)}:e}function ho(e,t){if(!Array.isArray(t)||t.length===0)return e;let[n]=t;if(!n||typeof n!="object")return e;let[r]=Object.entries(n),[o,i]=r??[];if(!o||i!=="ASC"&&i!=="DESC")return e;let s=i==="DESC"?-1:1;return [...e].sort((u,a)=>{let l=u[o],d=a[o],p=typeof l=="string"?l:"",f=typeof d=="string"?d:"";return p.localeCompare(f)*s})}function Zs(){return jsxs(Oc,{variant:"destructive",children:[jsx(AlertCircle,{className:"fk:h-4 fk:w-4"}),jsx(Pc,{children:"Project Paused"}),jsxs(Qc,{children:["This project has been paused. To troubleshoot this error, please"," ",jsx("a",{className:"fk:text-blue-500 fk:underline",href:"https://flexkit.io/docs/errors/project-paused",target:"_blank",rel:"noopener noreferrer",children:"follow these steps"}),"."]})]})}function ia(){let{schemaErrorMessage:e}=$e();if(!e)return jsx(Fragment,{});let[t,n,...r]=e.split(`
378
+ `)}function wn(e,t){return e?$n(e).some(n=>n.includes(`Cannot query field "${t}"`)):false}function $n(e){if(CombinedGraphQLErrors.is(e))return e.errors.filter(An).map(({message:o})=>o);let t=Tn(e);if(t&&Oe(t))return [t];let n=ke(e);if(n?.statusCode!==400)return [];let r=be(n.bodyText)??zr(n)??Hr(e);return r?Array.isArray(r.errors)?r.errors.filter(An).map(o=>o.message):typeof r.message=="string"&&Oe(r.message)?[r.message]:typeof r.error=="string"&&Oe(r.error)?[r.error]:[]:[]}function zr(e){let{result:t}=e;return !t||typeof t!="object"?null:t}function Hr(e){if(!En(e))return null;let{cause:t}=e,n=Tn(t);if(n&&Oe(n))return {message:n};if(!t||typeof t!="object")return null;let{result:r}=t;return r&&typeof r=="object"?r:null}function An(e){if(!e||typeof e!="object")return false;let{extensions:t,message:n}=e;return t?.code==="GRAPHQL_VALIDATION_FAILED"&&typeof n=="string"?true:typeof n=="string"&&Oe(n)}function Oe(e){return e.startsWith("Cannot query field ")||e.startsWith("Unknown type ")||e.startsWith('Cannot query field "')||e.includes("GRAPHQL_VALIDATION_FAILED")}function Gr(e){return /Cannot query field "[_A-Za-z][_0-9A-Za-z]*Total" on type "Query"/.test(e)}var so=ApolloProvider,vn=createContext(void 0);function $e(){let e=useContext(vn);if(!e)throw new Error("useGraphQLError must be used within GraphQLProvider");return e}function ao(e){return new ErrorLink(({error:t})=>{let n=nt(t);if(n){e(n);return}CombinedGraphQLErrors.is(t)?t.errors.forEach(({message:o,locations:i,path:s})=>{console.warn(`[GraphQL error]: Message: ${o}, Location: ${i}, Path: ${s}`);}):CombinedProtocolErrors.is(t)&&t.errors.forEach(({message:o,extensions:i})=>{console.warn(`[Protocol error]: Message: ${o}, Extensions: ${JSON.stringify(i)}`);});let r=ke(t);if(r?.statusCode===400){let o=be(r.bodyText),i=null;if(o&&typeof o=="object"){let{error:s,errors:u,message:a}=o;if(typeof a=="string")i=a;else if(Array.isArray(u)){let[l]=u;if(l&&typeof l.message=="string"){let{message:d}=l;i=d;}}else typeof s=="string"?i=s:i=JSON.stringify(o);}else i=r.bodyText;e(i??"There is an error in the deployed Flexkit schema. Fix flexkit.config.ts and run flexkit deploy.");}if(r){console.warn(`[Network error]: ${r.message}`);return}t&&console.warn(`[Network error]: ${t.message}`);})}function lo(e,t){return from([ao(t),new HttpLink({uri:`/api/flexkit/${e}/graphql`})])}function uo(e,t){return new ApolloClient({link:lo(e??"",t),cache:new InMemoryCache({dataIdFromObject:n=>n._id?n._id:defaultDataIdFromObject(n)})})}function Ms({children:e}){let{currentProjectId:t}=g(),[n,r]=useState(null),o=useMemo(()=>({schemaErrorMessage:n,setSchemaErrorMessage:r}),[n]),i=useMemo(()=>uo(t,r),[t]);return jsx(vn.Provider,{value:o,children:jsx(so,{client:i,children:e})})}var rt=null,Et=new Set,Rn=[],Tt=new Set,wt=new Set,$t=new Set;function Ps(e,t){if(e==="_asset"||e==="_assets")return `Get${J(b.plural)}`;let n=t.find(i=>i.plural===e),r=t.find(i=>i.name===e),o=n?.plural??r?.plural??e;return `Get${J(o)}`}function _n(e){return Tt.add(e),()=>{Tt.delete(e);}}function Ln(e){return wt.add(e),()=>{wt.delete(e);}}function Mn(e){return $t.add(e),()=>{$t.delete(e);}}function Ns(e,t,n){let r=new Set(n.filter(Boolean));if(r.size>0)for(let o of wt)o(t,r);return co(e,t)}function Vs(e,t){let n=t.filter(r=>!!r._id);if(n.length!==0)for(let r of $t)r(e,n);}function co(e,t){return Et.add(t),new Promise((n,r)=>{Rn.push({resolve:n,reject:r}),rt&&clearTimeout(rt),rt=setTimeout(()=>{let o=new Set(Et),i=Rn.splice(0);Et.clear(),rt=null,Promise.all([...Tt].map(s=>Promise.resolve(s(o)))).then(()=>{for(let{resolve:s}of i)s();}).catch(s=>{console.error("Error refreshing entity lists:",s);for(let{reject:u}of i)u(s);});},50);})}function Xs({entityNamePlural:e,schema:t,scope:n,variables:r,isForm:o,selection:i="full",includeCount:s=true}){let[u,a]=useState({count:0,results:[]}),[l,d]=useState(false),[p,f]=useState(false),[c,h]=useState(null),k=useRef(false),A=useRef(false),m=useRef(0),g=useRef(null),S=useRef(null),v=`${e}Total`,L=te(t,e),q=r?.where===void 0&&(L?.spaces?.length??0)===0&&(c?.field!==v||c.schema!==t)?"total":"aggregate",oe=useMemo(()=>gql(tt(e,n,t,{selection:i,countMode:q,includeCount:s}).query),[e,n,t,i,q,s]),K=useMemo(()=>gql(tt(e,n,t,{selection:i,includeCount:false}).query),[e,n,t,i]),{schemaErrorMessage:E,setSchemaErrorMessage:w}=$e(),{loading:j,data:z,fetchMore:G,refetch:Y,error:pe,networkStatus:me}=useQuery(oe,{variables:r,notifyOnNetworkStatusChange:true}),ve=useRef(G),Z=useRef(Y),Re=useRef(K),ee=useRef(me),ge=useRef(r);ve.current=G,Z.current=Y,Re.current=K,ge.current=r;let _e=s&&wn(pe,v),ie=q==="total"&&_e,B=_e?void 0:pe,le=_e&&!z?.[e],he=ke(B),H=nt(B),{isProjectDisabled:je,isProjectReadOnly:Be}=(()=>{if(he?.statusCode===403){let $=be(he.bodyText);if($&&typeof $.code=="string"){if($.code==="PROJECT_PAUSED")return {isProjectDisabled:true,isProjectReadOnly:false};if($.code==="READ_ONLY_MODE")return {isProjectDisabled:false,isProjectReadOnly:true}}return {isProjectDisabled:true,isProjectReadOnly:false}}return {isProjectDisabled:false,isProjectReadOnly:false}})();useEffect(()=>{ie&&h({field:v,schema:t});},[t,ie,v]);let ze=useCallback($=>{if(k.current||A.current)return;k.current=true,d(true);let{limit:N}=$.variables,V=m.current;ve.current({...$,query:Re.current,variables:{...ge.current,...$.variables,offset:V,limit:N}}).then(({data:se})=>{let Q=Ne({data:se,entityNamePlural:e,isForm:o,schema:t,scope:n}),y=Q.results.length;m.current=V+(y===0?0:Math.min(y,N)),a(b=>{let O=uniqBy(prop("_id"),[...b.results,...Q.results]);return O.length===b.results.length?{count:b.results.length,results:b.results}:{count:Q.count||b.count,results:O}});}).catch(se=>{console.error("Error fetching more data:",se);}).finally(()=>{k.current=false,d(false);});},[e,o,t,n]),Le=useCallback($=>{if(A.current)return Promise.resolve();let N=$?.preserve===true;return A.current=true,k.current=false,d(false),N||(g.current=null,S.current=null,m.current=0,f(true),a({count:0,results:[]})),Z.current().then(({data:V})=>{let se=JSON.stringify({entityNamePlural:e,scope:n,selection:i,includeCount:s,variables:r}),Q=Ne({data:V,entityNamePlural:e,isForm:o,schema:t,scope:n});g.current=se,S.current=null,m.current=it(r)+Q.results.length,a(Q);}).catch(V=>{console.error("Error reloading data:",V);}).finally(()=>{A.current=false,f(false);})},[e,o,t,n,i,s,r]);return useEffect(()=>{if(H){w(H);return}z&&E&&!B&&w(null);},[z,B,E,H,w]),useEffect(()=>{if(B||H||le)return;let $=JSON.stringify({entityNamePlural:e,scope:n,selection:i,includeCount:s,variables:r});if(g.current===$)return;if(j&&S.current!==$){S.current=$,m.current=0,a({count:0,results:[]});return}if(j)return;let N=Ne({data:z,entityNamePlural:e,isForm:o,schema:t,scope:n});g.current=$,S.current=null,m.current=it(r)+N.results.length,a(N);},[z,B,e,o,j,le,t,H,n,i,s,r]),useEffect(()=>{let $=ee.current;if(ee.current=me,B||H||A.current||le||$!==NetworkStatus.refetch||me!==NetworkStatus.ready||!z)return;let N=JSON.stringify({entityNamePlural:e,scope:n,selection:i,includeCount:s,variables:r}),V=Ne({data:z,entityNamePlural:e,isForm:o,schema:t,scope:n});g.current=N,S.current=null,m.current=it(r)+V.results.length,a(V);},[z,B,e,o,le,me,t,H,n,i,s,r]),useEffect(()=>{if(o)return;let $=`Get${J(e)}`,N=_n(Q=>{if(!(!Q.has($)||k.current||A.current))return Z.current().then(({data:y})=>{let b=JSON.stringify({entityNamePlural:e,scope:n,selection:i,includeCount:s,variables:r}),O=Ne({data:y,entityNamePlural:e,isForm:o,schema:t,scope:n});g.current=b,S.current=null,m.current=it(r)+O.results.length,a(O);}).catch(y=>{console.error("Error soft-refreshing entity list:",y);})}),V=Ln((Q,y)=>{Q===$&&a(b=>{let O=b.results.filter(Qt=>{let Ut=typeof Qt._id=="string"?Qt._id:void 0;return !Ut||!y.has(Ut)}),He=b.results.length-O.length;return He===0?b:{count:Math.max(0,b.count-He),results:O}});}),se=Mn((Q,y)=>{Q===$&&a(b=>go(b,y,r?.sort));});return ()=>{N(),V(),se();}},[e,o,t,n,i,s,r]),{isLoading:j&&me!==NetworkStatus.refetch||p||le,isLoadingMore:l,fetchMore:ze,reload:Le,count:u.count,data:u.results,isProjectDisabled:je,isProjectReadOnly:Be,schemaErrorMessage:E}}function it(e){let t=e?.offset;return typeof t=="number"&&Number.isFinite(t)?t:0}function Ne(e){let t=e.entityNamePlural;return e.data?.[t]?e.isForm?gn(e.entityNamePlural,e.scope,e.data,e.schema):mn(e.entityNamePlural,e.scope,e.data,e.schema):{count:0,results:[]}}function go(e,t,n){let r=new Map(t.map(s=>[s._id,s])),o=false,i=e.results.map(s=>{let u=typeof s._id=="string"?s._id:void 0;if(!u)return s;let a=r.get(u);return a?(o=true,{...s,...a.attributes}):s});return o?{count:e.count,results:ho(i,n)}:e}function ho(e,t){if(!Array.isArray(t)||t.length===0)return e;let[n]=t;if(!n||typeof n!="object")return e;let[r]=Object.entries(n),[o,i]=r??[];if(!o||i!=="ASC"&&i!=="DESC")return e;let s=i==="DESC"?-1:1;return [...e].sort((u,a)=>{let l=u[o],d=a[o],p=typeof l=="string"?l:"",f=typeof d=="string"?d:"";return p.localeCompare(f)*s})}function Zs(){return jsxs(Oc,{variant:"destructive",children:[jsx(AlertCircle,{className:"fk:h-4 fk:w-4"}),jsx(Pc,{children:"Project Paused"}),jsxs(Qc,{children:["This project has been paused. To troubleshoot this error, please"," ",jsx("a",{className:"fk:text-blue-500 fk:underline",href:"https://flexkit.io/docs/errors/project-paused",target:"_blank",rel:"noopener noreferrer",children:"follow these steps"}),"."]})]})}function ia(){let{schemaErrorMessage:e}=$e();if(!e)return jsx(Fragment,{});let[t,n,...r]=e.split(`
379
379
  `);return jsxs(Oc,{className:"fk:mb-4",variant:"destructive",children:[jsx(AlertCircle,{className:"fk:h-4 fk:w-4"}),jsx(Pc,{children:"Schema mismatch"}),jsxs(Qc,{children:[jsx("p",{children:t}),n?jsx("p",{className:"fk:mt-1",children:n}):null,r.length>0?jsx("ul",{className:"fk:mt-2 fk:list-disc fk:pl-4",children:r.map(o=>jsx("li",{children:o.replace(/^- /,"")},o))}):null]})]})}function Nn({scrollHeight:e,scrollTop:t,clientHeight:n}){if(n<=0)return false;let r=t>0?Math.max(600,n):1;return e-t-n<r}var Co=36,xo=15,vo=2,Un=40;function Bn(e){if(!e)return;let t=e.split(/\s+/);if(t.includes("fk:h-20"))return 80;if(t.includes("fk:h-10"))return 40;if(t.includes("fk:h-9"))return 36}function Ro(e,t){return e??Bn(t)??Co}function ya({classNames:e,columns:t,data:n,entityName:r,hasMore:o=false,initialSelectionState:i,isLoadingMore:s=false,onEntitySelectionChange:u,onLoadMore:a$1,onScroll:l,onSortingChange:d,pageSize:p,rowHeightEstimate:f,rowAdditionState:c,rowDeletionState:h,scrollToTopKey:k,sorting:A,toolbarComponent:m}){let g=useRef(null),{schemaErrorMessage:S}=$e(),[v,L]=useState(i??{}),[T,q]=useState({}),[oe,K$1]=useState([]),[E,w]=useState([]),j=A??E;useEffect(()=>{g.current?.scrollTo({top:0,left:0});},[r,k]),useEffect(()=>{if(!i)return;let y=Object.keys(v).sort().join(","),b=Object.keys(i).sort().join(",");y!==b&&L(i);},[i,v]);function z(y){if(d){d(y);return}w(y);}let G=useReactTable({data:n,columns:t,state:{sorting:j,columnVisibility:T,rowSelection:v,columnFilters:oe},initialState:{pagination:{pageSize:p??50}},enableRowSelection:true,onRowSelectionChange:se,onSortingChange:z,onColumnFiltersChange:K$1,onColumnVisibilityChange:q,getCoreRowModel:getCoreRowModel(),getFilteredRowModel:getFilteredRowModel(),getPaginationRowModel:getPaginationRowModel(),getSortedRowModel:getSortedRowModel(),getRowId:y=>y._id,manualFiltering:true,manualPagination:true,manualSorting:true,meta:{getRowBackground:y=>Lo(y,h,c)}}),{rows:Y}=G.getRowModel(),pe=Ro(f,e?.row),me=Bn(e?.row)!=null,ve=useVirtualizer({count:Y.length,estimateSize:()=>pe,getItemKey:y=>Y[y]?.id??y,getScrollElement:()=>g.current,overscan:xo,scrollMargin:Un}),Z=G.getVisibleLeafColumns(),Re=G.getHeaderGroups(),ee=Re.length===1,ge=useVirtualizer({horizontal:true,count:Z.length,estimateSize:y=>Z[y].getSize(),getItemKey:y=>Z[y].id,getScrollElement:()=>g.current,overscan:vo,enabled:ee}),_e=JSON.stringify(Z.map(y=>[y.id,y.getSize()]));useEffect(()=>{ge.measure();},[_e,ge]);let ie=ge.getVirtualItems(),B=ee?ie[0]?.index??0:0,le=ee?(ie[ie.length-1]?.index??-1)+1:Z.length,he=ee?ie[0]?.start??0:0,H=ee?Math.max(0,ge.getTotalSize()-(ie[ie.length-1]?.end??0)):0,je=ve.getVirtualItems(),{paddingTop:Be,paddingBottom:ze}=_o(je,ve.getTotalSize(),Un),Le=useRef(a$1),$=useRef(o),N=useRef(s);Le.current=a$1,$.current=o,N.current=s;let V=useCallback(y=>{if(!Le.current||!$.current||N.current)return;let b=y??g.current;b&&Nn(b)&&(N.current=true,Le.current());},[]);useEffect(()=>{V();},[V,Y.length,o,s]);function se(y){let b=Object.keys(typeof y=="function"?y(v):y);L(y),u?.(b);}function Q(y){l?.(y),V(y.currentTarget);}return S?jsx(Fragment,{}):jsxs("div",{className:a("fk:flex fk:h-full fk:min-h-0 fk:w-full fk:min-w-0 fk:flex-col fk:gap-4",e?.wrapper),children:[m&&m(G),jsx("div",{className:"fk:relative fk:min-h-0 fk:min-w-0 fk:flex-1 fk:-mb-px",children:jsx(K,{delayDuration:400,children:jsxs(da,{className:a("fk:grid fk:pb-20",e?.table),"aria-colcount":Z.length,style:{minWidth:G.getTotalSize()},containerClassName:e?.tableContainer,onScroll:Q,ref:g,children:[jsx(ea,{className:"fk:sticky fk:top-0 fk:z-20 fk:grid",children:Re.map(y=>jsxs(ha,{className:"fk:flex fk:w-full",children:[he>0?jsx(ut,{width:he,header:true}):null,(ee?y.headers.slice(B,le):y.headers).map((b,O)=>jsxs(ia$1,{"aria-colindex":ee?B+O+1:void 0,className:a("fk:flex fk:shrink-0 fk:items-center",b.column.id==="actions"&&"fk:pl-0"),colSpan:b.colSpan,style:b.getSize()?{width:`${b.getSize().toString()}px`}:{},children:[b.isPlaceholder?null:flexRender(b.column.columnDef.header,b.getContext()),s?jsx("div",{"aria-hidden":true,className:"fk:pointer-events-none fk:absolute fk:top-10.25 fk:right-px fk:left-px fk:z-20 fk:h-0.5 fk:overflow-hidden fk:opacity-4",children:jsx("div",{className:"fk:animate-progress fk:h-full fk:w-full fk:bg-foreground"})}):null]},b.id)),H>0?jsx(ut,{width:H,header:true}):null]},y.id))}),jsx(fa,{className:"fk:grid fk:relative",children:Y.length===0?jsx(ha,{children:jsx(ja,{className:"fk:h-24 fk:text-center",colSpan:t.length,children:"No results."})}):jsxs(Fragment,{children:[Be>0?jsx(qn,{height:Be}):null,je.map(y=>{let b=Y[y.index];return jsxs(ha,{className:a(G.options.meta.getRowBackground(b),"fk:flex fk:w-full fk:overflow-hidden fk:transition-none",!me&&f==null&&"fk:h-9",e?.row),"data-index":y.index,"data-state":b.getIsSelected()&&"selected",style:{height:`${pe.toString()}px`},children:[he>0?jsx(ut,{width:he}):null,b.getVisibleCells().slice(B,le).map((O,He)=>jsx(ja,{className:a("fk:flex fk:shrink-0 fk:items-center fk:truncate",O.column.id==="actions"&&"fk:pl-1!"),"aria-colindex":B+He+1,style:{width:O.column.getSize()},children:flexRender(O.column.columnDef.cell,O.getContext())},O.id)),H>0?jsx(ut,{width:H}):null]},y.key)}),ze>0?jsx(qn,{height:ze}):null]})})]})})})]})}function _o(e,t,n){if(e.length===0)return {paddingTop:0,paddingBottom:0};let r=e[0]?.start??0,o=e[e.length-1]?.end??0;return {paddingTop:Math.max(0,r-n),paddingBottom:Math.max(0,t-(o-n))}}function ut({width:e,header:t=false}){return jsx(t?"th":"td",{"aria-hidden":true,style:{width:e,flexShrink:0,padding:0,border:0}})}function qn({height:e}){return jsx("tr",{"aria-hidden":true,className:"fk:pointer-events-none fk:border-0",style:{display:"block",height:`${e.toString()}px`},children:jsx("td",{className:"fk:p-0 fk:border-0"})})}function Lo(e,t,n){return t?.includes(e.original._id)?"fk:bg-row-removed fk:hover:bg-row-removed-hover":n?.some(r=>r._id===e.original._id)?"fk:bg-row-added fk:hover:bg-row-added-hover":""}var Jn=createContext([]),Xn=createContext(()=>{});function Do(e,t){let n=t.type;switch(t._id||(t._id=Date.now().toString()),n){case "DeleteEntity":return uniqBy(props(["type","_id"]),[...e,t]);case "AddEntity":return uniqBy(props(["type","_id"]),[...e,t]);case "EditEntity":return uniqBy(props(["type","_id"]),[...e,t]);case "EditRelationship":return uniqBy(props(["type","_id"]),[...e,t]);case "AlertDialog":return uniqBy(props(["type","_id"]),[...e,t]);case "Dismiss":return e.filter(r=>r._id!==t._id);default:throw Error(`Unknown action: ${n}`)}}function Ea({children:e}){let[t,n]=useReducer(Do,[]);return jsx(Jn.Provider,{value:t,children:jsx(Xn.Provider,{value:n,children:e})})}function Ta(){return useContext(Jn)}function wa(){return useContext(Xn)}function Ra({table:e}){let[t]=e.getState().sorting;if(!t)return null;let r=e.getColumn(t.id)?.columnDef.meta?.label??t.id,o=t.desc?"desc":"asc";return jsxs(d,{"aria-label":`Clear sorting by ${r}`,className:"fk:h-8 fk:px-2 fk:lg:px-3 fk:text-success fk:border-none",onClick:()=>{e.resetSorting();},size:"sm",variant:"outline",children:["Sorted by ",r," ",o,jsx(X$1,{className:"fk:ml-1 fk:h-4 fk:w-4"})]})}function Oa(){let[e,t]=useState(false),[n,r]=useState(gql`
380
380
  mutation updateEntity($any: Any) {
381
381
  any
382
382
  }
383
- `),[o,i]=useState({}),[s,{data:u,loading:a,error:l}]=useMutation(n,o),d=ke(l),{isProjectDisabled:p,isProjectReadOnly:f}=(()=>{if(d?.statusCode===403){let c=be(d.bodyText);if(c&&typeof c.code=="string"){if(c.code==="PROJECT_PAUSED")return {isProjectDisabled:true,isProjectReadOnly:false};if(c.code==="READ_ONLY_MODE")return {isProjectDisabled:false,isProjectReadOnly:true}}return {isProjectDisabled:true,isProjectReadOnly:false}}return {isProjectDisabled:false,isProjectReadOnly:false}})();return useEffect(()=>{e&&(s(),t(false));},[e,s]),[t,r,i,{data:u,loading:a,error:l,isProjectDisabled:p,isProjectReadOnly:f}]}function Rt({column:e,title:t,className:n}){if(!e.getCanSort())return jsx("div",{className:a("fk:flex fk:items-center",n),children:t});let r=e.getIsSorted()==="asc",o=e.getIsSorted()==="desc";return jsxs("div",{className:a("fk:flex fk:w-full fk:items-center fk:justify-between fk:gap-1",n),children:[jsx("span",{className:"fk:truncate",children:t}),jsxs(e$1,{children:[jsx(g,{asChild:true,children:jsx("button",{"aria-label":`Sort ${t}`,className:"fk:inline-flex fk:shrink-0 fk:items-center fk:justify-center fk:rounded-sm fk:p-0.5 fk:text-muted-foreground fk:outline-hidden fk:hover:bg-accent fk:hover:text-accent-foreground fk:focus-visible:ring-1 fk:focus-visible:ring-ring fk:corner-squircle",type:"button",children:jsx(ChevronDown,{className:"fk:h-3.5 fk:w-3.5"})})}),jsxs(h,{align:"end",className:"fk:w-44",children:[jsxs(j,{"aria-checked":r,className:a(r&&"fk:bg-accent fk:text-accent-foreground"),onSelect:()=>{if(r){e.clearSorting();return}e.toggleSorting(false);},role:"menuitemcheckbox",children:[jsx(ArrowUp,{className:a("fk:h-4 fk:w-4",r&&"fk:text-white")}),"Sort Ascending"]}),jsxs(j,{"aria-checked":o,className:a(o&&"fk:bg-accent fk:text-accent-foreground"),onSelect:()=>{if(o){e.clearSorting();return}e.toggleSorting(true);},role:"menuitemcheckbox",children:[jsx(ArrowDown,{className:a("fk:h-4 fk:w-4",o&&"fk:text-white")}),"Sort Descending"]})]})]})]})}function Lt({value:e}){return jsx("div",{className:"fk:flex fk:w-full fk:justify-center",children:e?jsx(CircleCheck,{className:"fk:w-4 fk:h-4 fk:text-emerald-500"}):jsx(CircleX,{className:"fk:w-4 fk:h-4 fk:text-muted-foreground"})})}var Yn=500,Jo=3e3;function X({value:e}){let t=useRef(null),n=useRef(null),[r,o]=useState(false),[i,s]=useState(false);useEffect(()=>()=>{n.current&&clearTimeout(n.current);},[]);function u(){let f=t.current;return f?f.scrollWidth>f.clientWidth:false}async function a$1(f){if(f.preventDefault(),f.stopPropagation(),!!e){try{await navigator.clipboard.writeText(e);}catch{return}o(true),s(true),n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{o(false),s(false);},Jo);}}function l(){u();}function d(f){if(!r){if(f){s(u());return}s(false);}}if(!e)return jsx("div",{className:"fk:truncate"});let p=e.length>Yn?`${e.slice(0,Yn)}\u2026`:e;return jsxs(L,{open:i,onOpenChange:d,children:[jsx(M$1,{asChild:true,children:jsxs("button",{"aria-label":"Copy value",className:a("fk:group/copyable fk:relative fk:flex fk:w-full fk:min-w-0 fk:items-center fk:rounded-sm fk:border-0 fk:bg-transparent fk:px-0.5 fk:-mx-0.5 fk:py-0.5 fk:text-left fk:text-inherit fk:font-inherit fk:corner-squircle","fk:cursor-pointer fk:transition-[transform,background-color] fk:duration-75 fk:ease-out","fk:hover:bg-muted/50 fk:active:translate-y-px fk:active:scale-[0.98] fk:active:bg-muted/70","fk:focus-visible:outline-hidden fk:focus-visible:ring-1 fk:focus-visible:ring-ring"),onClick:a$1,onPointerEnter:l,type:"button",children:[jsx("span",{className:"fk:min-w-0 fk:flex-1 fk:truncate fk:pr-4",ref:t,children:e}),jsx("span",{"aria-hidden":true,className:a("fk:pointer-events-none fk:absolute fk:right-0.5 fk:top-1/2 fk:flex fk:-translate-y-1/2 fk:items-center fk:justify-center","fk:rounded-sm fk:bg-muted/80 fk:p-0.5 fk:text-muted-foreground fk:shadow-sm fk:ring-1 fk:ring-border/60 fk:corner-squircle","fk:transition-opacity fk:duration-100",r?"fk:opacity-100 fk:text-foreground":"fk:opacity-0 fk:group-hover/copyable:opacity-100 fk:group-focus-visible/copyable:opacity-100"),children:r?jsx(Check,{className:"fk:size-3"}):jsx(Copy,{className:"fk:size-3"})})]})}),jsx(O,{className:"fk:max-w-xs fk:wrap-break-word",children:r?"Copied to clipboard":p})]})}function xe({value:e}){let t=typeof e=="object"||Array.isArray(e)?JSON.stringify(e):e;return t=t==="null"||t==null?"":String(t),jsx(X,{value:t})}var bi=AIHighlight,Si=Placeholder,Ai=TiptapLink.configure({HTMLAttributes:{class:cx("fk:text-muted-foreground fk:underline fk:underline-offset-[3px] fk:hover:text-primary fk:transition-colors fk:cursor-pointer")}}),Ei=Markdown.configure({html:true,tightLists:true,tightListClass:"tight",bulletListMarker:"-",linkify:false,breaks:false,transformPastedText:false,transformCopiedText:false}),Ti=TiptapImage.extend({addProseMirrorPlugins(){return [UploadImagesPlugin({imageClass:cx("fk:opacity-40 fk:rounded-lg fk:border fk:border-stone-200 fk:corner-squircle")})]}}).configure({allowBase64:true,HTMLAttributes:{class:cx("fk:rounded-lg fk:border fk:border-muted fk:corner-squircle")}}),wi=TaskList.configure({HTMLAttributes:{class:cx("fk:not-prose fk:pl-2 ")}}),$i=TaskItem.configure({HTMLAttributes:{class:cx("fk:flex gap-2 fk:items-start fk:my-2")},nested:true}),Ci=HorizontalRule.configure({HTMLAttributes:{class:cx("mt-4 mb-6 border-t border-muted-foreground")}}),xi=StarterKit.configure({bulletList:{HTMLAttributes:{class:cx("fk:list-disc fk:list-outside fk:leading-3 fk:-mt-2")}},orderedList:{HTMLAttributes:{class:cx("fk:list-decimal fk:list-outside fk:leading-3 fk:-mt-2")}},listItem:{HTMLAttributes:{class:cx("fk:leading-normal fk:-mb-2")}},blockquote:{HTMLAttributes:{class:cx("fk:border-l-4 fk:border-primary")}},codeBlock:false,code:{HTMLAttributes:{class:cx("fk:rounded-md fk:bg-muted fk:px-1.5 fk:py-1 fk:font-mono fk:font-medium fk:corner-squircle"),spellcheck:"false"}},horizontalRule:false,dropcursor:{color:"#DBEAFE",width:4},gapcursor:false}),vi=CodeBlockLowlight.configure({lowlight:createLowlight(common)}),Ri=Youtube.configure({HTMLAttributes:{class:cx("fk:rounded-lg fk:border fk:border-muted fk:corner-squircle")},inline:false}),_i=Twitter.configure({HTMLAttributes:{class:cx("fk:not-prose")},inline:false}),Li=Mathematics.configure({HTMLAttributes:{class:cx("fk:text-foreground fk:rounded-sm fk:p-1 fk:hover:bg-muted fk:cursor-pointer fk:corner-squircle")},katexOptions:{throwOnError:false}}),Mi=CharacterCount.configure(),er=[xi,Si,Ai,Ti,wi,$i,Ci,bi,vi,Ri,_i,Li,Mi,TiptapUnderline,Ei,HighlightExtension,TextStyle,Color,CustomKeymap,GlobalDragHandle];var Mt;function Pi(){let e=getSchema(er);return {schema:e,textSerializers:getTextSerializersFromSchema(e)}}function tr(e,t=100){if(!e)return "";try{let n=JSON.parse(e);return Mt??=Pi(),getText(Node.fromJSON(Mt.schema,n),{textSerializers:Mt.textSerializers}).substring(0,t)}catch{return e.substring(0,t)}}function nr({value:e}){let t=useMemo(()=>tr(e),[e]);return jsx(X,{value:t})}var rr=250,ji=25e5,re=new Map,Dt=new Map,It=new Set,or=new Map;function ct(e){if(or.has(e))return;let t=new Image;t.decoding="async",t.src=e,or.set(e,t);}function dt(e){let t=re.get(e);t&&re.set(e,{...t,lastUsedAt:Date.now()});}function Bi(){if(re.size<=rr)return;let e=Array.from(re.entries()).sort((n,r)=>n[1].lastUsedAt-r[1].lastUsedAt),t=Math.max(1,Math.ceil(rr*.1));for(let n=0;n<t&&n<e.length;n+=1){let[r,o]=e[n];re.delete(r),URL.revokeObjectURL(o.objectUrl);}}async function zi(e){if(It.has(e)){ct(e);return}if(re.has(e)){dt(e);return}let t=Dt.get(e);if(t){await t;return}let n=(async()=>{try{let r=await fetch(e,{mode:"cors",cache:"force-cache"});if(!r.ok){ct(e);return}let o=await r.blob();if(o.size>ji)return;let i=URL.createObjectURL(o);re.set(e,{objectUrl:i,byteSize:o.size,lastUsedAt:Date.now()}),Bi();}catch(r){r instanceof TypeError&&It.add(e),ct(e);}})();Dt.set(e,n),await n,Dt.delete(e);}function ir(e){let t=useMemo(()=>{if(!e)return null;let o=re.get(e);return o?(dt(e),o.objectUrl):null},[e]),[n,r]=useState(t);return useEffect(()=>{if(!e){r(null);return}if(It.has(e)){ct(e),r(null);return}let o=re.get(e);if(o){dt(e),r(o.objectUrl);return}r(null);let i=false;return zi(e).then(()=>{let s=re.get(e);s&&(i||(dt(e),r(s.objectUrl)));}),()=>{i=true;}},[e]),n}var Ft="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 sr({value:e}){return Array.isArray(e)?jsx(Xi,{value:e}):jsx(Ji,{value:e})}function Ji({value:e}){let t=e?.path??"",n=!!t,r=n&&/\.(png|jpe?g|gif|webp|avif|svg)$/i.test(t),o=a=>{let[l]=a.split("?"),d=l.split(".");return d.length>1?d.pop().toLowerCase():"file"},i=n?t.endsWith(".svg")?`${c$2}${t}`:`${c$2}${t}?w=84&h=84&f=webp`:null,s=n?t.endsWith(".svg")?`${c$2}${t}`:`${c$2}${t}?w=624&h=624&f=webp`:"",u=ir(i);return n?jsx("div",{className:"fk:z-10",children:r?jsxs(L,{children:[jsx(M$1,{asChild:true,children:jsx("img",{alt:"asset",className:`fk:w-7 fk:h-7 fk:cursor-zoom-in fk:overflow-hidden fk:rounded-md fk:object-contain ${Ft} fk:corner-squircle`,decoding:"async",src:u??void 0})}),jsx(N,{children:jsx(O,{children:jsx("img",{alt:"asset",className:`fk:w-52 fk:h-52 fk:overflow-hidden fk:rounded-md fk:object-contain ${Ft} fk:corner-squircle`,decoding:"async",src:s})})})]}):jsxs(L,{children:[jsx(M$1,{asChild:true,children:jsx("div",{className:"fk:w-7 fk:h-7 fk:rounded-sm fk:bg-transparent fk:flex fk:items-center fk:justify-center fk:[&>svg]:h-full fk:[&>svg]:w-auto fk:corner-squircle",children:(()=>{let a=o(t),l=defaultStyles[a];return jsx(FileIcon,{extension:a,...l||{}})})()})}),jsx(N,{children:jsx(O,{children:jsx("div",{className:"fk:text-sm fk:text-muted-foreground",children:"Preview not available"})})})]})}):null}function Xi({value:e}){let t=e.filter(o=>!!o.path).slice(0,3),n=Math.max(e[0]?.totalCount??0,e.length);if(t.length===0)return n>0?jsx("div",{className:"fk:flex fk:items-center",children:jsx("span",{className:"fk:text-xs fk:text-muted-foreground",children:n===1?"1 asset":`${n} assets`})}):null;let r=n-t.length;return jsxs("div",{className:"fk:flex fk:items-center",children:[jsx("div",{className:"fk:flex fk:-space-x-2",children:t.map(o=>jsx("img",{alt:"asset",className:`fk:h-7 fk:w-7 fk:overflow-hidden fk:rounded-md fk:object-contain ${Ft} fk:corner-squircle`,decoding:"async",src:`${c$2}${o.path}?w=84&h=84&f=webp`},o._id))}),r>0?jsxs("span",{className:"fk:ml-2 fk:text-xs fk:text-muted-foreground",children:["+",r]}):null]})}function Pt({value:e}){if(e==null||e===""||typeof e!="string")return jsx(X,{value:""});let t=new Date(e);if(!isValid(t))return jsx(X,{value:""});let n=format(t,"MMM d, yyyy")+" at "+format(t,"HH:mm");return jsx(X,{value:n})}function Ki(e){return "groupLabel"in e}function Yi(e){return e.flatMap(t=>Ki(t)?t.items:[t])}function Zi(e,t){if(!t)return e;let n=Yi(t).find(r=>String(r.value)===e);return n?n.label:e}function ur({value:e,options:t}){if(e==null)return jsx(X,{value:""});let n=String(e),r=Zi(n,t?.list);return jsx(X,{value:r})}function dr({value:e}){return !e||!e.split(",").length?null:jsx("div",{className:"fk:flex fk:flex-wrap fk:gap-1 fk:max-w-full truncate",children:e.split(",").map(t=>jsx(b$2,{className:"fk:px-2.5 fk:py-0 fk:font-normal fk:text-[0.6875rem] fk:leading-4",variant:"secondary",children:t},t))})}function fr(e,t=5){let n=Number.isFinite(t)&&t>=1?Math.floor(t):5,r=typeof e=="string"&&e.trim()!==""?Number(e):e;if(typeof r!="number"||!Number.isFinite(r))return null;let o=Math.min(n,Math.max(0,Math.round(r)));return {filled:o,max:n,label:`${String(o)} out of ${String(n)} stars`}}function pr({value:e,options:t}){let n=fr(e,t?.max);return n?jsx("span",{"aria-label":n.label,className:"fk:inline-flex fk:items-center fk:gap-0.5",role:"img",title:n.label,children:Array.from({length:n.max},(r,o)=>jsx(Star,{"aria-hidden":true,className:o<n.filled?"fk:h-3.5 fk:w-3.5 fk:fill-amber-400 fk:text-amber-400":"fk:h-3.5 fk:w-3.5 fk:fill-transparent fk:text-muted-foreground/40",strokeWidth:1.5},o))}):jsx("span",{})}var ts=/\.(png|jpe?g|gif|webp|avif|svg)$/i;function mr(e){try{let{pathname:t}=new URL(e);return t.split("/").pop()||t}catch{let[t]=e.split("?");return t}}function gr(e){return e.originalFilename?e.originalFilename:e.path?e.path:e.url?mr(e.url):""}function hr(e){let t=gr(e),[n]=t.split("?"),r=n.split(".");return r.length>1?r.pop().toLowerCase():"file"}function yr(e){return e.mimeType?e.mimeType.startsWith("image/"):ts.test(gr(e))}function Vt(e,t){if(!e||!t||mr(e).toLowerCase().endsWith(".svg"))return e;let n=new URLSearchParams({f:"webp",h:String(t.height),w:String(t.width)}),r=e.includes("?")?"&":"?";return `${e}${r}${n.toString()}`}var is=FileIcon,kr="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 br({value:e}){let[t,n]=useState(false),r=e?.url??"";if(!e||!r&&!e.path&&!e.originalFilename)return null;if(!(yr(e)&&!!r)){let a=hr(e),l=defaultStyles[a];return jsx("div",{className:"fk:z-10",children:jsx(K,{children:jsxs(L,{children:[jsx(M$1,{asChild:true,children:jsx("div",{className:"fk:w-7 fk:h-7 fk:rounded-sm fk:bg-transparent fk:flex fk:items-center fk:justify-center fk:[&>svg]:h-full fk:[&>svg]:w-auto fk:corner-squircle",children:jsx(is,{extension:a,...l||{}})})}),jsx(N,{children:jsx(O,{children:jsx("div",{className:"fk:text-sm fk:text-muted-foreground",children:"Preview not available"})})})]})})})}let i$1=Vt(r,{width:84,height:84}),s=Vt(r,{width:624,height:624});function u(a){a.stopPropagation(),n(true);}return jsx("div",{className:"fk:z-10",children:jsxs(K,{children:[jsxs(L,{children:[jsx(M$1,{asChild:true,children:jsx("img",{src:i$1,alt:"asset",className:`fk:w-12 fk:h-12 fk:cursor-zoom-in fk:overflow-hidden fk:rounded-md fk:object-contain ${kr} fk:corner-squircle`,onClick:u})}),jsx(N,{children:jsx(O,{children:jsx("img",{src:s,alt:"asset",className:`fk:w-52 fk:h-52 fk:overflow-hidden fk:rounded-md fk:object-contain ${kr} fk:corner-squircle`})})})]}),jsx(c$1,{open:t,onOpenChange:n,children:jsxs(h$2,{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"})]}),jsx("img",{src:r,alt:"asset",className:"fk:max-h-[85vh] fk:w-full fk:overflow-hidden fk:rounded-md fk:object-contain fk:corner-squircle"})]})})]})})}var ss=new Set(["text","number","datetime","switch","select"]);function ou({attributesSchema:e,checkboxSelect:t,actionsComponent:n,enableColumnSorting:r=false}){let[,o$1]=h$1(),i=b$1(e,o$1.user?.spaces),s={datetime:"datetime",editor:"editor",asset:"asset",number:"text",relationship:"text",select:"select",switch:"boolean",text:"text",textarea:"text"},u={boolean:Lt,date:xe,datetime:Pt,editor:nr,asset:sr,number:xe,relationship:xe,select:ur,switch:Lt,text:xe,textarea:xe,tags:dr,rating:pr,assetPreviewField:br},a=i.map(c=>{if(c.name==="_updatedAt")return null;let h=(c.inputType==="relationship"&&c.relationship?.entity==="_asset"?"asset":void 0)??c.previewType??s[c.inputType],k=u[h]??u.text;if(c.hidden===true)return null;let A=h==="tags",m=r&&c.scope==="global"&&ss.has(c.inputType);return {accessorKey:c.name,filterFn:(g,S,v)=>A?true:(Array.isArray(v)?v:[v]).includes(g.getValue(S)),header:({column:g})=>m?jsx(Rt,{column:g,title:c.label}):jsx("div",{className:"fk:flex fk:items-center",children:c.label}),cell:({row:g})=>{let S=k;return h==="select"||h==="rating"?jsx(S,{value:g.getValue(c.name),options:c.options}):h==="assetPreviewField"?jsx(S,{value:g.original}):jsx(S,{value:g.getValue(c.name)})},enableSorting:m,enableHiding:true,meta:{label:c.label},size:c.options?.size??150}}).filter(c=>c!==null),l={id:"actions",cell:({row:c})=>n?n(c):null,size:80},d={accessorKey:"_updatedAt",header:({column:c})=>r?jsx(Rt,{column:c,title:"Updated At"}):jsx("div",{className:"fk:flex fk:items-center",children:"Updated At"}),cell:({row:c})=>jsx(Pt,{value:c.getValue("_updatedAt")}),enableSorting:r,enableHiding:false,meta:{label:"Updated At"},size:220},p={id:"select",cell:({row:c,table:h})=>jsx(o,{"aria-label":"Select row",checked:c.getIsSelected(),onCheckedChange:k=>{h.toggleAllPageRowsSelected(false),c.toggleSelected(!!k);}}),enableSorting:false,enableHiding:false,size:50},f={id:"select",header:({table:c})=>jsx(o,{className:"fk:dark:bg-white/15","aria-label":"Select all",checked:c.getIsAllPageRowsSelected()||c.getIsSomePageRowsSelected()&&"indeterminate",onCheckedChange:h=>{c.toggleAllPageRowsSelected(!!h);}}),cell:({row:c})=>jsx(o,{"aria-label":"Select row",checked:c.getIsSelected(),onCheckedChange:h=>{c.toggleSelected(!!h);}}),enableSorting:false,enableHiding:false,size:50};return [...t==="single"?[p]:[],...t==="multiple"?[f]:[],...n?[l]:[],...a,d]}export{wa as A,Ra as B,Oa as C,er as D,gr as E,hr as F,yr as G,Vt as H,Rt as I,ou as J,ln as a,cn as b,$r as c,ps as d,tt as e,mn as f,ms as g,gs as h,hs as i,ys as j,ks as k,bs as l,te as m,Ss as n,Ps as o,Ns as p,Vs as q,co as r,$e as s,Ms as t,Xs as u,Zs as v,ia as w,ya as x,Ea as y,Ta as z};//# sourceMappingURL=chunk-OUSEULBR.js.map
384
- //# sourceMappingURL=chunk-OUSEULBR.js.map
383
+ `),[o,i]=useState({}),[s,{data:u,loading:a,error:l}]=useMutation(n,o),d=ke(l),{isProjectDisabled:p,isProjectReadOnly:f}=(()=>{if(d?.statusCode===403){let c=be(d.bodyText);if(c&&typeof c.code=="string"){if(c.code==="PROJECT_PAUSED")return {isProjectDisabled:true,isProjectReadOnly:false};if(c.code==="READ_ONLY_MODE")return {isProjectDisabled:false,isProjectReadOnly:true}}return {isProjectDisabled:true,isProjectReadOnly:false}}return {isProjectDisabled:false,isProjectReadOnly:false}})();return useEffect(()=>{e&&(s(),t(false));},[e,s]),[t,r,i,{data:u,loading:a,error:l,isProjectDisabled:p,isProjectReadOnly:f}]}function Rt({column:e,title:t,className:n}){if(!e.getCanSort())return jsx("div",{className:a("fk:flex fk:items-center",n),children:t});let r=e.getIsSorted()==="asc",o=e.getIsSorted()==="desc";return jsxs("div",{className:a("fk:flex fk:w-full fk:items-center fk:justify-between fk:gap-1",n),children:[jsx("span",{className:"fk:truncate",children:t}),jsxs(e$1,{children:[jsx(g$1,{asChild:true,children:jsx("button",{"aria-label":`Sort ${t}`,className:"fk:inline-flex fk:shrink-0 fk:items-center fk:justify-center fk:rounded-sm fk:p-0.5 fk:text-muted-foreground fk:outline-hidden fk:hover:bg-accent fk:hover:text-accent-foreground fk:focus-visible:ring-1 fk:focus-visible:ring-ring fk:corner-squircle",type:"button",children:jsx(ChevronDown,{className:"fk:h-3.5 fk:w-3.5"})})}),jsxs(h,{align:"end",className:"fk:w-44",children:[jsxs(j,{"aria-checked":r,className:a(r&&"fk:bg-accent fk:text-accent-foreground"),onSelect:()=>{if(r){e.clearSorting();return}e.toggleSorting(false);},role:"menuitemcheckbox",children:[jsx(ArrowUp,{className:a("fk:h-4 fk:w-4",r&&"fk:text-white")}),"Sort Ascending"]}),jsxs(j,{"aria-checked":o,className:a(o&&"fk:bg-accent fk:text-accent-foreground"),onSelect:()=>{if(o){e.clearSorting();return}e.toggleSorting(true);},role:"menuitemcheckbox",children:[jsx(ArrowDown,{className:a("fk:h-4 fk:w-4",o&&"fk:text-white")}),"Sort Descending"]})]})]})]})}function Lt({value:e}){return jsx("div",{className:"fk:flex fk:w-full fk:justify-center",children:e?jsx(CircleCheck,{className:"fk:w-4 fk:h-4 fk:text-emerald-500"}):jsx(CircleX,{className:"fk:w-4 fk:h-4 fk:text-muted-foreground"})})}var Yn=500,Jo=3e3;function X({value:e}){let t=useRef(null),n=useRef(null),[r,o]=useState(false),[i,s]=useState(false);useEffect(()=>()=>{n.current&&clearTimeout(n.current);},[]);function u(){let f=t.current;return f?f.scrollWidth>f.clientWidth:false}async function a$1(f){if(f.preventDefault(),f.stopPropagation(),!!e){try{await navigator.clipboard.writeText(e);}catch{return}o(true),s(true),n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{o(false),s(false);},Jo);}}function l(){u();}function d(f){if(!r){if(f){s(u());return}s(false);}}if(!e)return jsx("div",{className:"fk:truncate"});let p=e.length>Yn?`${e.slice(0,Yn)}\u2026`:e;return jsxs(L,{open:i,onOpenChange:d,children:[jsx(M$1,{asChild:true,children:jsxs("button",{"aria-label":"Copy value",className:a("fk:group/copyable fk:relative fk:flex fk:w-full fk:min-w-0 fk:items-center fk:rounded-sm fk:border-0 fk:bg-transparent fk:px-0.5 fk:-mx-0.5 fk:py-0.5 fk:text-left fk:text-inherit fk:font-inherit fk:corner-squircle","fk:cursor-pointer fk:transition-[transform,background-color] fk:duration-75 fk:ease-out","fk:hover:bg-muted/50 fk:active:translate-y-px fk:active:scale-[0.98] fk:active:bg-muted/70","fk:focus-visible:outline-hidden fk:focus-visible:ring-1 fk:focus-visible:ring-ring"),onClick:a$1,onPointerEnter:l,type:"button",children:[jsx("span",{className:"fk:min-w-0 fk:flex-1 fk:truncate fk:pr-4",ref:t,children:e}),jsx("span",{"aria-hidden":true,className:a("fk:pointer-events-none fk:absolute fk:right-0.5 fk:top-1/2 fk:flex fk:-translate-y-1/2 fk:items-center fk:justify-center","fk:rounded-sm fk:bg-muted/80 fk:p-0.5 fk:text-muted-foreground fk:shadow-sm fk:ring-1 fk:ring-border/60 fk:corner-squircle","fk:transition-opacity fk:duration-100",r?"fk:opacity-100 fk:text-foreground":"fk:opacity-0 fk:group-hover/copyable:opacity-100 fk:group-focus-visible/copyable:opacity-100"),children:r?jsx(Check,{className:"fk:size-3"}):jsx(Copy,{className:"fk:size-3"})})]})}),jsx(O,{className:"fk:max-w-xs fk:wrap-break-word",children:r?"Copied to clipboard":p})]})}function xe({value:e}){let t=typeof e=="object"||Array.isArray(e)?JSON.stringify(e):e;return t=t==="null"||t==null?"":String(t),jsx(X,{value:t})}var bi=AIHighlight,Si=Placeholder,Ai=TiptapLink.configure({HTMLAttributes:{class:cx("fk:text-muted-foreground fk:underline fk:underline-offset-[3px] fk:hover:text-primary fk:transition-colors fk:cursor-pointer")}}),Ei=Markdown.configure({html:true,tightLists:true,tightListClass:"tight",bulletListMarker:"-",linkify:false,breaks:false,transformPastedText:false,transformCopiedText:false}),Ti=TiptapImage.extend({addProseMirrorPlugins(){return [UploadImagesPlugin({imageClass:cx("fk:opacity-40 fk:rounded-lg fk:border fk:border-stone-200 fk:corner-squircle")})]}}).configure({allowBase64:true,HTMLAttributes:{class:cx("fk:rounded-lg fk:border fk:border-muted fk:corner-squircle")}}),wi=TaskList.configure({HTMLAttributes:{class:cx("fk:not-prose fk:pl-2 ")}}),$i=TaskItem.configure({HTMLAttributes:{class:cx("fk:flex gap-2 fk:items-start fk:my-2")},nested:true}),Ci=HorizontalRule.configure({HTMLAttributes:{class:cx("mt-4 mb-6 border-t border-muted-foreground")}}),xi=StarterKit.configure({bulletList:{HTMLAttributes:{class:cx("fk:list-disc fk:list-outside fk:leading-3 fk:-mt-2")}},orderedList:{HTMLAttributes:{class:cx("fk:list-decimal fk:list-outside fk:leading-3 fk:-mt-2")}},listItem:{HTMLAttributes:{class:cx("fk:leading-normal fk:-mb-2")}},blockquote:{HTMLAttributes:{class:cx("fk:border-l-4 fk:border-primary")}},codeBlock:false,code:{HTMLAttributes:{class:cx("fk:rounded-md fk:bg-muted fk:px-1.5 fk:py-1 fk:font-mono fk:font-medium fk:corner-squircle"),spellcheck:"false"}},horizontalRule:false,dropcursor:{color:"#DBEAFE",width:4},gapcursor:false}),vi=CodeBlockLowlight.configure({lowlight:createLowlight(common)}),Ri=Youtube.configure({HTMLAttributes:{class:cx("fk:rounded-lg fk:border fk:border-muted fk:corner-squircle")},inline:false}),_i=Twitter.configure({HTMLAttributes:{class:cx("fk:not-prose")},inline:false}),Li=Mathematics.configure({HTMLAttributes:{class:cx("fk:text-foreground fk:rounded-sm fk:p-1 fk:hover:bg-muted fk:cursor-pointer fk:corner-squircle")},katexOptions:{throwOnError:false}}),Mi=CharacterCount.configure(),er=[xi,Si,Ai,Ti,wi,$i,Ci,bi,vi,Ri,_i,Li,Mi,TiptapUnderline,Ei,HighlightExtension,TextStyle,Color,CustomKeymap,GlobalDragHandle];var Mt;function Pi(){let e=getSchema(er);return {schema:e,textSerializers:getTextSerializersFromSchema(e)}}function tr(e,t=100){if(!e)return "";try{let n=JSON.parse(e);return Mt??=Pi(),getText(Node.fromJSON(Mt.schema,n),{textSerializers:Mt.textSerializers}).substring(0,t)}catch{return e.substring(0,t)}}function nr({value:e}){let t=useMemo(()=>tr(e),[e]);return jsx(X,{value:t})}var rr=250,ji=25e5,re=new Map,Dt=new Map,It=new Set,or=new Map;function ct(e){if(or.has(e))return;let t=new Image;t.decoding="async",t.src=e,or.set(e,t);}function dt(e){let t=re.get(e);t&&re.set(e,{...t,lastUsedAt:Date.now()});}function Bi(){if(re.size<=rr)return;let e=Array.from(re.entries()).sort((n,r)=>n[1].lastUsedAt-r[1].lastUsedAt),t=Math.max(1,Math.ceil(rr*.1));for(let n=0;n<t&&n<e.length;n+=1){let[r,o]=e[n];re.delete(r),URL.revokeObjectURL(o.objectUrl);}}async function zi(e){if(It.has(e)){ct(e);return}if(re.has(e)){dt(e);return}let t=Dt.get(e);if(t){await t;return}let n=(async()=>{try{let r=await fetch(e,{mode:"cors",cache:"force-cache"});if(!r.ok){ct(e);return}let o=await r.blob();if(o.size>ji)return;let i=URL.createObjectURL(o);re.set(e,{objectUrl:i,byteSize:o.size,lastUsedAt:Date.now()}),Bi();}catch(r){r instanceof TypeError&&It.add(e),ct(e);}})();Dt.set(e,n),await n,Dt.delete(e);}function ir(e){let t=useMemo(()=>{if(!e)return null;let o=re.get(e);return o?(dt(e),o.objectUrl):null},[e]),[n,r]=useState(t);return useEffect(()=>{if(!e){r(null);return}if(It.has(e)){ct(e),r(null);return}let o=re.get(e);if(o){dt(e),r(o.objectUrl);return}r(null);let i=false;return zi(e).then(()=>{let s=re.get(e);s&&(i||(dt(e),r(s.objectUrl)));}),()=>{i=true;}},[e]),n}var Ft="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 sr({value:e}){return Array.isArray(e)?jsx(Xi,{value:e}):jsx(Ji,{value:e})}function Ji({value:e}){let t=e?.path??"",n=!!t,r=n&&/\.(png|jpe?g|gif|webp|avif|svg)$/i.test(t),o=a=>{let[l]=a.split("?"),d=l.split(".");return d.length>1?d.pop().toLowerCase():"file"},i=n?t.endsWith(".svg")?`${c$2}${t}`:`${c$2}${t}?w=84&h=84&f=webp`:null,s=n?t.endsWith(".svg")?`${c$2}${t}`:`${c$2}${t}?w=624&h=624&f=webp`:"",u=ir(i);return n?jsx("div",{className:"fk:z-10",children:r?jsxs(L,{children:[jsx(M$1,{asChild:true,children:jsx("img",{alt:"asset",className:`fk:w-7 fk:h-7 fk:cursor-zoom-in fk:overflow-hidden fk:rounded-md fk:object-contain ${Ft} fk:corner-squircle`,decoding:"async",src:u??void 0})}),jsx(N,{children:jsx(O,{children:jsx("img",{alt:"asset",className:`fk:w-52 fk:h-52 fk:overflow-hidden fk:rounded-md fk:object-contain ${Ft} fk:corner-squircle`,decoding:"async",src:s})})})]}):jsxs(L,{children:[jsx(M$1,{asChild:true,children:jsx("div",{className:"fk:w-7 fk:h-7 fk:rounded-sm fk:bg-transparent fk:flex fk:items-center fk:justify-center fk:[&>svg]:h-full fk:[&>svg]:w-auto fk:corner-squircle",children:(()=>{let a=o(t),l=defaultStyles[a];return jsx(FileIcon,{extension:a,...l||{}})})()})}),jsx(N,{children:jsx(O,{children:jsx("div",{className:"fk:text-sm fk:text-muted-foreground",children:"Preview not available"})})})]})}):null}function Xi({value:e}){let t=e.filter(o=>!!o.path).slice(0,3),n=Math.max(e[0]?.totalCount??0,e.length);if(t.length===0)return n>0?jsx("div",{className:"fk:flex fk:items-center",children:jsx("span",{className:"fk:text-xs fk:text-muted-foreground",children:n===1?"1 asset":`${n} assets`})}):null;let r=n-t.length;return jsxs("div",{className:"fk:flex fk:items-center",children:[jsx("div",{className:"fk:flex fk:-space-x-2",children:t.map(o=>jsx("img",{alt:"asset",className:`fk:h-7 fk:w-7 fk:overflow-hidden fk:rounded-md fk:object-contain ${Ft} fk:corner-squircle`,decoding:"async",src:`${c$2}${o.path}?w=84&h=84&f=webp`},o._id))}),r>0?jsxs("span",{className:"fk:ml-2 fk:text-xs fk:text-muted-foreground",children:["+",r]}):null]})}function Pt({value:e}){if(e==null||e===""||typeof e!="string")return jsx(X,{value:""});let t=new Date(e);if(!isValid(t))return jsx(X,{value:""});let n=format(t,"MMM d, yyyy")+" at "+format(t,"HH:mm");return jsx(X,{value:n})}function Ki(e){return "groupLabel"in e}function Yi(e){return e.flatMap(t=>Ki(t)?t.items:[t])}function Zi(e,t){if(!t)return e;let n=Yi(t).find(r=>String(r.value)===e);return n?n.label:e}function ur({value:e,options:t}){if(e==null)return jsx(X,{value:""});let n=String(e),r=Zi(n,t?.list);return jsx(X,{value:r})}function dr({value:e}){return !e||!e.split(",").length?null:jsx("div",{className:"fk:flex fk:flex-wrap fk:gap-1 fk:max-w-full truncate",children:e.split(",").map(t=>jsx(b$2,{className:"fk:px-2.5 fk:py-0 fk:font-normal fk:text-[0.6875rem] fk:leading-4",variant:"secondary",children:t},t))})}function fr(e,t=5){let n=Number.isFinite(t)&&t>=1?Math.floor(t):5,r=typeof e=="string"&&e.trim()!==""?Number(e):e;if(typeof r!="number"||!Number.isFinite(r))return null;let o=Math.min(n,Math.max(0,Math.round(r)));return {filled:o,max:n,label:`${String(o)} out of ${String(n)} stars`}}function pr({value:e,options:t}){let n=fr(e,t?.max);return n?jsx("span",{"aria-label":n.label,className:"fk:inline-flex fk:items-center fk:gap-0.5",role:"img",title:n.label,children:Array.from({length:n.max},(r,o)=>jsx(Star,{"aria-hidden":true,className:o<n.filled?"fk:h-3.5 fk:w-3.5 fk:fill-amber-400 fk:text-amber-400":"fk:h-3.5 fk:w-3.5 fk:fill-transparent fk:text-muted-foreground/40",strokeWidth:1.5},o))}):jsx("span",{})}var ts=/\.(png|jpe?g|gif|webp|avif|svg)$/i;function mr(e){try{let{pathname:t}=new URL(e);return t.split("/").pop()||t}catch{let[t]=e.split("?");return t}}function gr(e){return e.originalFilename?e.originalFilename:e.path?e.path:e.url?mr(e.url):""}function hr(e){let t=gr(e),[n]=t.split("?"),r=n.split(".");return r.length>1?r.pop().toLowerCase():"file"}function yr(e){return e.mimeType?e.mimeType.startsWith("image/"):ts.test(gr(e))}function Vt(e,t){if(!e||!t||mr(e).toLowerCase().endsWith(".svg"))return e;let n=new URLSearchParams({f:"webp",h:String(t.height),w:String(t.width)}),r=e.includes("?")?"&":"?";return `${e}${r}${n.toString()}`}var is=FileIcon,kr="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 br({value:e}){let[t,n]=useState(false),r=e?.url??"";if(!e||!r&&!e.path&&!e.originalFilename)return null;if(!(yr(e)&&!!r)){let a=hr(e),l=defaultStyles[a];return jsx("div",{className:"fk:z-10",children:jsx(K,{children:jsxs(L,{children:[jsx(M$1,{asChild:true,children:jsx("div",{className:"fk:w-7 fk:h-7 fk:rounded-sm fk:bg-transparent fk:flex fk:items-center fk:justify-center fk:[&>svg]:h-full fk:[&>svg]:w-auto fk:corner-squircle",children:jsx(is,{extension:a,...l||{}})})}),jsx(N,{children:jsx(O,{children:jsx("div",{className:"fk:text-sm fk:text-muted-foreground",children:"Preview not available"})})})]})})})}let i$1=Vt(r,{width:84,height:84}),s=Vt(r,{width:624,height:624});function u(a){a.stopPropagation(),n(true);}return jsx("div",{className:"fk:z-10",children:jsxs(K,{children:[jsxs(L,{children:[jsx(M$1,{asChild:true,children:jsx("img",{src:i$1,alt:"asset",className:`fk:w-12 fk:h-12 fk:cursor-zoom-in fk:overflow-hidden fk:rounded-md fk:object-contain ${kr} fk:corner-squircle`,onClick:u})}),jsx(N,{children:jsx(O,{children:jsx("img",{src:s,alt:"asset",className:`fk:w-52 fk:h-52 fk:overflow-hidden fk:rounded-md fk:object-contain ${kr} fk:corner-squircle`})})})]}),jsx(c$1,{open:t,onOpenChange:n,children:jsxs(h$2,{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"})]}),jsx("img",{src:r,alt:"asset",className:"fk:max-h-[85vh] fk:w-full fk:overflow-hidden fk:rounded-md fk:object-contain fk:corner-squircle"})]})})]})})}var ss=new Set(["text","number","datetime","switch","select"]);function ou({attributesSchema:e,checkboxSelect:t,actionsComponent:n,enableColumnSorting:r=false}){let[,o$1]=h$1(),i=b$1(e,o$1.user?.spaces),s={datetime:"datetime",editor:"editor",asset:"asset",number:"text",relationship:"text",select:"select",switch:"boolean",text:"text",textarea:"text"},u={boolean:Lt,date:xe,datetime:Pt,editor:nr,asset:sr,number:xe,relationship:xe,select:ur,switch:Lt,text:xe,textarea:xe,tags:dr,rating:pr,assetPreviewField:br},a=i.map(c=>{if(c.name==="_updatedAt")return null;let h=(c.inputType==="relationship"&&c.relationship?.entity==="_asset"?"asset":void 0)??c.previewType??s[c.inputType],k=u[h]??u.text;if(c.hidden===true)return null;let A=h==="tags",m=r&&c.scope==="global"&&ss.has(c.inputType);return {accessorKey:c.name,filterFn:(g,S,v)=>A?true:(Array.isArray(v)?v:[v]).includes(g.getValue(S)),header:({column:g})=>m?jsx(Rt,{column:g,title:c.label}):jsx("div",{className:"fk:flex fk:items-center",children:c.label}),cell:({row:g})=>{let S=k;return h==="select"||h==="rating"?jsx(S,{value:g.getValue(c.name),options:c.options}):h==="assetPreviewField"?jsx(S,{value:g.original}):jsx(S,{value:g.getValue(c.name)})},enableSorting:m,enableHiding:true,meta:{label:c.label},size:c.options?.size??150}}).filter(c=>c!==null),l={id:"actions",cell:({row:c})=>n?n(c):null,size:80},d={accessorKey:"_updatedAt",header:({column:c})=>r?jsx(Rt,{column:c,title:"Updated At"}):jsx("div",{className:"fk:flex fk:items-center",children:"Updated At"}),cell:({row:c})=>jsx(Pt,{value:c.getValue("_updatedAt")}),enableSorting:r,enableHiding:false,meta:{label:"Updated At"},size:220},p={id:"select",cell:({row:c,table:h})=>jsx(o,{"aria-label":"Select row",checked:c.getIsSelected(),onCheckedChange:k=>{h.toggleAllPageRowsSelected(false),c.toggleSelected(!!k);}}),enableSorting:false,enableHiding:false,size:50},f={id:"select",header:({table:c})=>jsx(o,{className:"fk:dark:bg-white/15","aria-label":"Select all",checked:c.getIsAllPageRowsSelected()||c.getIsSomePageRowsSelected()&&"indeterminate",onCheckedChange:h=>{c.toggleAllPageRowsSelected(!!h);}}),cell:({row:c})=>jsx(o,{"aria-label":"Select row",checked:c.getIsSelected(),onCheckedChange:h=>{c.toggleSelected(!!h);}}),enableSorting:false,enableHiding:false,size:50};return [...t==="single"?[p]:[],...t==="multiple"?[f]:[],...n?[l]:[],...a,d]}export{wa as A,Ra as B,Oa as C,er as D,gr as E,hr as F,yr as G,Vt as H,Rt as I,ou as J,ln as a,cn as b,$r as c,ps as d,tt as e,mn as f,ms as g,gs as h,hs as i,ys as j,ks as k,bs as l,te as m,Ss as n,Ps as o,Ns as p,Vs as q,co as r,$e as s,Ms as t,Xs as u,Zs as v,ia as w,ya as x,Ea as y,Ta as z};//# sourceMappingURL=chunk-LMVJWCOM.js.map
384
+ //# sourceMappingURL=chunk-LMVJWCOM.js.map