@exulu/frontend 1.8.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/app-build-manifest.json +153 -155
  3. package/dist/.next/app-path-routes-manifest.json +1 -1
  4. package/dist/.next/build-manifest.json +2 -2
  5. package/dist/.next/prerender-manifest.json +1 -1
  6. package/dist/.next/server/app/(application)/agents/edit/[id]/page.js +1 -1
  7. package/dist/.next/server/app/(application)/agents/edit/[id]/page.js.nft.json +1 -1
  8. package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
  9. package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
  10. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +8 -8
  11. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js.nft.json +1 -1
  12. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
  13. package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
  14. package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
  15. package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
  16. package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
  17. package/dist/.next/server/app/(application)/data/[[...query]]/page.js +4 -4
  18. package/dist/.next/server/app/(application)/data/[[...query]]/page.js.nft.json +1 -1
  19. package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
  20. package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
  21. package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
  22. package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
  23. package/dist/.next/server/app/(application)/evals/cases/page.js +1 -1
  24. package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +1 -1
  25. package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
  26. package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
  27. package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
  28. package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
  29. package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
  30. package/dist/.next/server/app/(application)/projects/[project]/page.js +1 -1
  31. package/dist/.next/server/app/(application)/projects/[project]/page.js.nft.json +1 -1
  32. package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
  33. package/dist/.next/server/app/(application)/projects/page.js +1 -1
  34. package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
  35. package/dist/.next/server/app/(application)/prompts/page.js +1 -1
  36. package/dist/.next/server/app/(application)/prompts/page_client-reference-manifest.js +1 -1
  37. package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
  38. package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
  39. package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
  40. package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
  41. package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
  42. package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
  43. package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
  44. package/dist/.next/server/app/(application)/workflows/page.js +1 -1
  45. package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
  46. package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
  47. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  48. package/dist/.next/server/app/_not-found.html +1 -1
  49. package/dist/.next/server/app/_not-found.rsc +1 -1
  50. package/dist/.next/server/app-paths-manifest.json +5 -5
  51. package/dist/.next/server/chunks/1025.js +1 -0
  52. package/dist/.next/server/chunks/2270.js +18 -44
  53. package/dist/.next/server/chunks/3434.js +1 -1
  54. package/dist/.next/server/chunks/3503.js +1 -0
  55. package/dist/.next/server/chunks/5084.js +1 -0
  56. package/dist/.next/server/chunks/5192.js +1 -1
  57. package/dist/.next/server/chunks/5485.js +1 -1
  58. package/dist/.next/server/chunks/5600.js +1 -1
  59. package/dist/.next/server/chunks/5974.js +1 -0
  60. package/dist/.next/server/chunks/6590.js +1 -1
  61. package/dist/.next/server/chunks/7471.js +1 -1
  62. package/dist/.next/server/chunks/8286.js +1 -1
  63. package/dist/.next/server/chunks/{3679.js → 9874.js} +5 -5
  64. package/dist/.next/server/middleware-manifest.json +5 -5
  65. package/dist/.next/server/pages/404.html +1 -1
  66. package/dist/.next/server/pages/500.html +1 -1
  67. package/dist/.next/server/server-reference-manifest.json +1 -1
  68. package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js +2 -0
  69. package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js.map +1 -0
  70. package/dist/.next/static/chunks/{4811-316807e25b634f9f.js → 192-72d6868cd891ccc6.js} +8 -8
  71. package/dist/.next/static/chunks/192-72d6868cd891ccc6.js.map +1 -0
  72. package/dist/.next/static/chunks/1957-cf44b1d31a9c7d5c.js +2 -0
  73. package/dist/.next/static/chunks/1957-cf44b1d31a9c7d5c.js.map +1 -0
  74. package/dist/.next/static/chunks/342-d9c2d6ae9f9435cb.js +2 -0
  75. package/dist/.next/static/chunks/342-d9c2d6ae9f9435cb.js.map +1 -0
  76. package/dist/.next/static/chunks/3750-e3d1b2cccd265190.js +2 -0
  77. package/dist/.next/static/chunks/3750-e3d1b2cccd265190.js.map +1 -0
  78. package/dist/.next/static/chunks/{3832-417a5eeee712a793.js → 3832-d7782d6a2771ae6c.js} +1 -1
  79. package/dist/.next/static/chunks/{3832-417a5eeee712a793.js.map → 3832-d7782d6a2771ae6c.js.map} +1 -1
  80. package/dist/.next/static/chunks/552-39155a93c527ec6d.js +2 -0
  81. package/dist/.next/static/chunks/552-39155a93c527ec6d.js.map +1 -0
  82. package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js +2 -0
  83. package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js.map +1 -0
  84. package/dist/.next/static/chunks/6367-59655a85d75e19be.js +2 -0
  85. package/dist/.next/static/chunks/6367-59655a85d75e19be.js.map +1 -0
  86. package/dist/.next/static/chunks/6373-aef582adc575d3ca.js +2 -0
  87. package/dist/.next/static/chunks/6373-aef582adc575d3ca.js.map +1 -0
  88. package/dist/.next/static/chunks/8030-9c926ea4dfd3a54e.js +2 -0
  89. package/dist/.next/static/chunks/8030-9c926ea4dfd3a54e.js.map +1 -0
  90. package/dist/.next/static/chunks/{6805-792cc8008b165c07.js → 8293-ba5cd36594e6fde1.js} +10 -10
  91. package/dist/.next/static/chunks/8293-ba5cd36594e6fde1.js.map +1 -0
  92. package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js +2 -0
  93. package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js.map +1 -0
  94. package/dist/.next/static/chunks/9953-95900a236271a222.js +2 -0
  95. package/dist/.next/static/chunks/9953-95900a236271a222.js.map +1 -0
  96. package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e4a4693953329671.js +2 -0
  97. package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e4a4693953329671.js.map +1 -0
  98. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-d59534ca19eee51f.js +2 -0
  99. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-d59534ca19eee51f.js.map +1 -0
  100. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-0c7c1b0e1713bf60.js +2 -0
  101. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-0c7c1b0e1713bf60.js.map +1 -0
  102. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js +2 -0
  103. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js.map +1 -0
  104. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js +2 -0
  105. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js.map +1 -0
  106. package/dist/.next/static/chunks/app/(application)/evals/cases/{page-a39fef7444581565.js → page-827f50c6d1f150d0.js} +2 -2
  107. package/dist/.next/static/chunks/app/(application)/evals/cases/{page-a39fef7444581565.js.map → page-827f50c6d1f150d0.js.map} +1 -1
  108. package/dist/.next/static/chunks/app/(application)/explorer/{page-1d676c9dfe3ed58b.js → page-e6b1c034c07776e2.js} +1 -1
  109. package/dist/.next/static/chunks/app/(application)/explorer/{page-1d676c9dfe3ed58b.js.map → page-e6b1c034c07776e2.js.map} +1 -1
  110. package/dist/.next/static/chunks/app/(application)/projects/[project]/page-f04fd5291a1ef7b1.js +2 -0
  111. package/dist/.next/static/chunks/app/(application)/projects/[project]/page-f04fd5291a1ef7b1.js.map +1 -0
  112. package/dist/.next/static/chunks/app/(application)/prompts/page-2c500e9898447506.js +2 -0
  113. package/dist/.next/static/chunks/app/(application)/prompts/page-2c500e9898447506.js.map +1 -0
  114. package/dist/.next/static/chunks/app/(application)/token/{page-3f74f711f3d04fce.js → page-3acc39cb8a718331.js} +1 -1
  115. package/dist/.next/static/chunks/app/(application)/token/{page-3f74f711f3d04fce.js.map → page-3acc39cb8a718331.js.map} +1 -1
  116. package/dist/.next/static/chunks/app/(application)/workflows/{page-47dedb88cec600d5.js → page-e38f9456120dab69.js} +2 -2
  117. package/dist/.next/static/chunks/app/(application)/workflows/page-e38f9456120dab69.js.map +1 -0
  118. package/dist/.next/static/chunks/ba12c10f-85ed008ce7746dbe.js +2 -0
  119. package/dist/.next/static/chunks/ba12c10f-85ed008ce7746dbe.js.map +1 -0
  120. package/dist/.next/static/css/9c08ae5d990a6b14.css +4 -0
  121. package/dist/.next/static/css/9c08ae5d990a6b14.css.map +1 -0
  122. package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
  123. package/dist/package.json +1 -1
  124. package/package.json +1 -1
  125. package/dist/.next/server/chunks/2948.js +0 -1
  126. package/dist/.next/server/chunks/38.js +0 -1
  127. package/dist/.next/server/chunks/7958.js +0 -1
  128. package/dist/.next/server/chunks/8050.js +0 -1
  129. package/dist/.next/static/chunks/1685-9cacdee7e3f0942f.js +0 -2
  130. package/dist/.next/static/chunks/1685-9cacdee7e3f0942f.js.map +0 -1
  131. package/dist/.next/static/chunks/1957-39a01a3915f246ab.js +0 -2
  132. package/dist/.next/static/chunks/1957-39a01a3915f246ab.js.map +0 -1
  133. package/dist/.next/static/chunks/3750-f45c59ef1cc79417.js +0 -2
  134. package/dist/.next/static/chunks/3750-f45c59ef1cc79417.js.map +0 -1
  135. package/dist/.next/static/chunks/4811-316807e25b634f9f.js.map +0 -1
  136. package/dist/.next/static/chunks/5282-68f9880f1f951f44.js +0 -2
  137. package/dist/.next/static/chunks/5282-68f9880f1f951f44.js.map +0 -1
  138. package/dist/.next/static/chunks/572-2940a399da1e3a3b.js +0 -2
  139. package/dist/.next/static/chunks/572-2940a399da1e3a3b.js.map +0 -1
  140. package/dist/.next/static/chunks/6367-59cef3c74213925b.js +0 -2
  141. package/dist/.next/static/chunks/6367-59cef3c74213925b.js.map +0 -1
  142. package/dist/.next/static/chunks/6373-4c5dffaf4193621c.js +0 -2
  143. package/dist/.next/static/chunks/6373-4c5dffaf4193621c.js.map +0 -1
  144. package/dist/.next/static/chunks/6805-792cc8008b165c07.js.map +0 -1
  145. package/dist/.next/static/chunks/8030-c1b6be46253076cb.js +0 -2
  146. package/dist/.next/static/chunks/8030-c1b6be46253076cb.js.map +0 -1
  147. package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js +0 -2
  148. package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js.map +0 -1
  149. package/dist/.next/static/chunks/9621-f81c4d7c0ecf5a67.js +0 -2
  150. package/dist/.next/static/chunks/9621-f81c4d7c0ecf5a67.js.map +0 -1
  151. package/dist/.next/static/chunks/9953-dfb5fc0e5b74ec09.js +0 -2
  152. package/dist/.next/static/chunks/9953-dfb5fc0e5b74ec09.js.map +0 -1
  153. package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-4e7e02768ed1a72a.js +0 -2
  154. package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-4e7e02768ed1a72a.js.map +0 -1
  155. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-38f845d5ccdad76b.js +0 -2
  156. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-38f845d5ccdad76b.js.map +0 -1
  157. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-2d47be0ee80dd89d.js +0 -2
  158. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-2d47be0ee80dd89d.js.map +0 -1
  159. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-a391b8407f74e9b4.js +0 -2
  160. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-a391b8407f74e9b4.js.map +0 -1
  161. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-cf6f8d2bd4e9c819.js +0 -2
  162. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-cf6f8d2bd4e9c819.js.map +0 -1
  163. package/dist/.next/static/chunks/app/(application)/projects/[project]/page-bc859da58d8505f7.js +0 -2
  164. package/dist/.next/static/chunks/app/(application)/projects/[project]/page-bc859da58d8505f7.js.map +0 -1
  165. package/dist/.next/static/chunks/app/(application)/prompts/page-d2f36ff149385efd.js +0 -2
  166. package/dist/.next/static/chunks/app/(application)/prompts/page-d2f36ff149385efd.js.map +0 -1
  167. package/dist/.next/static/chunks/app/(application)/workflows/page-47dedb88cec600d5.js.map +0 -1
  168. package/dist/.next/static/chunks/ba12c10f-aaafcb074f608624.js +0 -2
  169. package/dist/.next/static/chunks/ba12c10f-aaafcb074f608624.js.map +0 -1
  170. package/dist/.next/static/css/c8c015815c72d053.css +0 -4
  171. package/dist/.next/static/css/c8c015815c72d053.css.map +0 -1
  172. /package/dist/.next/static/{GOwerAkBncYx0J8q1TqQb → 3j63p6b3zZZB_v1Hn8Mxp}/_buildManifest.js +0 -0
  173. /package/dist/.next/static/{GOwerAkBncYx0J8q1TqQb → 3j63p6b3zZZB_v1Hn8Mxp}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/chunks/1957-39a01a3915f246ab.js","mappings":"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","sources":["webpack://_N_E/./components/save-workflow-modal.tsx","webpack://_N_E/./components/ui/loading.tsx"],"sourcesContent":["\"use client\"\n\nimport React, { useState, useCallback, useContext, useMemo } from 'react'\nimport type { UIMessage as Message } from 'ai'\nimport { useMutation } from '@apollo/client'\nimport { UserContext } from '@/app/(application)/authenticated'\nimport { CREATE_WORKFLOW_TEMPLATE, UPDATE_WORKFLOW_TEMPLATE } from '@/queries/queries'\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Textarea } from '@/components/ui/textarea'\nimport { Label } from '@/components/ui/label'\nimport { Trash2, Edit2, ChevronDown } from 'lucide-react'\nimport { useToast } from '@/components/ui/use-toast'\nimport { cn } from '@/lib/utils'\nimport { RBACControl } from './rbac'\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'\nimport { Response } from '@/components/ai-elements/response';\n\ninterface WorkflowVariable {\n name: string\n description?: string\n type: 'string'\n required: boolean\n defaultValue?: string\n}\n\ninterface WorkflowStep {\n id: string\n type: 'user' | 'assistant' | 'tool'\n content?: string\n contentExample?: string\n toolName?: string\n variablesUsed?: string[]\n}\n\ninterface WorkflowTemplate {\n id: string\n name: string\n description?: string\n rights_mode?: 'private' | 'users' | 'roles' | 'public' | 'projects'\n RBAC?: {\n users?: Array<{ id: number; rights: 'read' | 'write' }>\n roles?: Array<{ id: string; rights: 'read' | 'write' }>\n projects?: Array<{ id: string; rights: 'read' | 'write' }>\n }\n variables?: WorkflowVariable[]\n steps_json?: WorkflowStep[]\n}\n\ninterface SaveWorkflowModalProps {\n isOpen: boolean\n onClose: () => void\n messages: Message[]\n sessionTitle?: string\n existingWorkflow?: WorkflowTemplate\n isReadOnly?: boolean\n}\n\nexport function SaveWorkflowModal({ isOpen, onClose, messages, sessionTitle, existingWorkflow, isReadOnly = false }: SaveWorkflowModalProps) {\n const { user } = useContext(UserContext)\n const { toast } = useToast()\n const [rbac, setRbac] = useState({\n rights_mode: existingWorkflow?.rights_mode || 'private',\n users: existingWorkflow?.RBAC?.users || [],\n roles: existingWorkflow?.RBAC?.roles || [],\n projects: existingWorkflow?.RBAC?.projects || []\n })\n const isEditing = Boolean(existingWorkflow)\n\n // Form state\n const [workflowName, setWorkflowName] = useState(existingWorkflow?.name || '')\n const [workflowDescription, setWorkflowDescription] = useState(existingWorkflow?.description || '')\n const [variables, setVariables] = useState<WorkflowVariable[]>(existingWorkflow?.variables || [])\n const [steps, setSteps] = useState<WorkflowStep[]>(existingWorkflow?.steps_json || [])\n const [isCreating, setIsCreating] = useState(false)\n const [activeTab, setActiveTab] = useState('setup')\n const [showAdvanced, setShowAdvanced] = useState(false)\n const [editingVariable, setEditingVariable] = useState<string | null>(null)\n const [editingValue, setEditingValue] = useState('')\n const [createWorkflowTemplate] = useMutation(CREATE_WORKFLOW_TEMPLATE)\n const [updateWorkflowTemplate] = useMutation(UPDATE_WORKFLOW_TEMPLATE)\n\n // Initialize steps from messages\n React.useEffect(() => {\n if (messages.length > 0) {\n const transformedSteps: WorkflowStep[] = []\n\n messages.forEach((message, index) => {\n const messageContent = (message as any).content || (message.parts ? message.parts.filter(p => p.type === 'text').map((p: any) => p.text).join('\\n') : '')\n\n if (message.role === 'user') {\n transformedSteps.push({\n id: `step_${index + 1}`,\n type: 'user',\n content: messageContent,\n variablesUsed: []\n })\n } else if (message.role === 'assistant') {\n transformedSteps.push({\n id: `step_${index + 1}`,\n type: 'assistant',\n contentExample: messageContent\n })\n } else if (message.role === 'system') {\n // Handle tool calls from message parts\n if (message.parts) {\n message.parts.forEach((part: any, partIndex: number) => {\n if (part.type === 'tool-invocation' && part.toolInvocation) {\n transformedSteps.push({\n id: `step_${index + 1}_${partIndex}`,\n type: 'tool',\n toolName: part.toolInvocation.toolName\n })\n }\n })\n }\n }\n })\n console.log(\"transformedSteps\", transformedSteps)\n setSteps(transformedSteps)\n setWorkflowName(sessionTitle || 'My Workflow')\n }\n }, [messages, sessionTitle, steps.length])\n\n // Variable management functions\n const createVariable = useCallback((name: string, description?: string) => {\n if (!name.match(/^[A-Za-z_][A-Za-z0-9_]{1,63}$/)) {\n toast({\n title: \"Invalid variable name\",\n description: \"Variable name must start with a letter or underscore, contain only letters, numbers, and underscores, and be 2-64 characters long.\",\n variant: \"destructive\"\n })\n return false\n }\n\n if (variables.some(v => v.name === name)) {\n return true // Variable already exists, that's fine\n }\n\n const newVariable: WorkflowVariable = {\n name,\n type: 'string',\n required: true,\n description: description || `Auto-detected variable`\n }\n\n setVariables(prev => [...prev, newVariable])\n return true\n }, [variables, toast])\n\n // Auto-detect variables from {variable_name} syntax and update content\n const handleStepContentChange = useCallback((stepId: string, content: string) => {\n // Extract all variables from the content\n const variableMatches = content.match(/\\{([A-Za-z_][A-Za-z0-9_]{1,63})\\}/g) || []\n const variableNames = variableMatches.map((match: string) => match.slice(1, -1)) // Remove { and }\n\n // Create variables that don't exist yet\n variableNames.forEach(name => {\n createVariable(name)\n })\n\n // Update the step content\n setSteps(prev => prev.map(step =>\n step.id === stepId\n ? { ...step, content, variablesUsed: variableNames }\n : step\n ))\n\n // Remove unused variables\n const allUsedVariables = new Set<string>()\n steps.forEach(step => {\n if (step.id === stepId) {\n // Use the new content for this step\n const matches = content.match(/\\{([A-Za-z_][A-Za-z0-9_]{1,63})\\}/g) || []\n matches.forEach((match: string) => allUsedVariables.add(match.slice(1, -1)))\n } else if (step.variablesUsed) {\n step.variablesUsed.forEach(varName => allUsedVariables.add(varName))\n }\n })\n\n // Remove variables that are no longer used anywhere\n setVariables(prev => prev.filter(variable => allUsedVariables.has(variable.name)))\n }, [steps, createVariable])\n\n const deleteVariable = useCallback((variableName: string) => {\n // Remove variable from variables list\n setVariables(prev => prev.filter(v => v.name !== variableName))\n\n // Remove variable references from steps\n setSteps(prev => prev.map(step => ({\n ...step,\n content: step.content?.replace(new RegExp(`\\\\{${variableName}\\\\}`, 'g'), ''),\n variablesUsed: step.variablesUsed?.filter(v => v !== variableName) || []\n })))\n }, [])\n\n const renameVariable = useCallback((oldName: string, newName: string) => {\n if (!newName.match(/^[A-Za-z_][A-Za-z0-9_]{1,63}$/)) {\n toast({\n title: \"Invalid variable name\",\n description: \"Variable name must start with a letter or underscore and contain only letters, numbers, and underscores.\",\n variant: \"destructive\"\n })\n return false\n }\n\n if (variables.some(v => v.name === newName && v.name !== oldName)) {\n toast({\n title: \"Variable name already exists\",\n description: \"A variable with this name already exists.\",\n variant: \"destructive\"\n })\n return false\n }\n\n // Update variable name\n setVariables(prev => prev.map(v =>\n v.name === oldName ? { ...v, name: newName } : v\n ))\n\n // Update variable references in steps\n setSteps(prev => prev.map(step => ({\n ...step,\n content: step.content?.replace(new RegExp(`\\\\{${oldName}\\\\}`, 'g'), `{${newName}}`),\n variablesUsed: step.variablesUsed?.map(v => v === oldName ? newName : v) || []\n })))\n\n return true\n }, [variables, toast])\n\n // Validation\n const isValid = useMemo(() => {\n if (!workflowName.trim()) return false\n if (steps.length === 0) return false\n if (rbac.rights_mode === 'users' && rbac.users?.length === 0) return false\n if (rbac.rights_mode === 'roles' && rbac.roles?.length === 0) return false\n if (rbac.rights_mode === 'projects' && rbac.projects?.length === 0) return false\n\n // Check that all user steps have non-empty content after variable replacement\n const userSteps = steps.filter(s => s.type === 'user')\n return userSteps.every(step => {\n const content = step.content || ''\n const withoutVariables = content?.replace(/\\{[^}]+\\}/g, '')\n return withoutVariables.trim().length > 0\n })\n }, [workflowName, steps, rbac])\n\n // Save workflow\n const handleSave = useCallback(async () => {\n if (!isValid || !user?.id) return\n\n setIsCreating(true)\n\n try {\n\n const stepsJson = steps.map(step => ({\n id: step.id,\n type: step.type,\n ...(step.type === 'user' && { content: step.content }),\n ...(step.type === 'assistant' && { contentExample: step.contentExample }),\n ...(step.type === 'tool' && { toolName: step.toolName })\n }))\n\n if (isEditing && existingWorkflow) {\n await updateWorkflowTemplate({\n variables: {\n id: existingWorkflow.id,\n name: workflowName.trim(),\n description: workflowDescription.trim() || null,\n rights_mode: rbac.rights_mode,\n RBAC: {\n users: rbac.users,\n roles: rbac.roles,\n projects: rbac.projects\n },\n variables,\n steps_json: stepsJson\n }\n })\n\n toast({\n title: \"Workflow updated!\",\n description: `\"${workflowName}\" has been updated successfully.`\n })\n } else {\n await createWorkflowTemplate({\n variables: {\n name: workflowName.trim(),\n description: workflowDescription.trim() || null,\n owner: user.id,\n rights_mode: rbac.rights_mode,\n RBAC: {\n users: rbac.users,\n roles: rbac.roles,\n projects: rbac.projects\n },\n variables,\n steps_json: stepsJson\n }\n })\n\n toast({\n title: \"Workflow created!\",\n description: `\"${workflowName}\" has been saved as a workflow template.`\n })\n }\n\n onClose()\n } catch (error) {\n console.error('Error saving workflow:', error)\n toast({\n title: \"Error saving workflow\",\n description: \"There was an error saving your workflow. Please try again.\",\n variant: \"destructive\"\n })\n } finally {\n setIsCreating(false)\n }\n }, [isValid, user?.id, workflowName, workflowDescription, rbac, variables, steps, createWorkflowTemplate, updateWorkflowTemplate, toast, onClose, isEditing, existingWorkflow])\n\n if (!isOpen) return null\n\n return (\n <Dialog open={isOpen} onOpenChange={onClose}>\n <DialogContent className=\"max-w-4xl max-h-[92vh] flex flex-col\">\n <DialogHeader className=\"pb-4\">\n <DialogTitle className=\"text-lg\">\n {isEditing ? (isReadOnly ? 'View Workflow' : 'Edit Workflow') : 'Save as Workflow'}\n </DialogTitle>\n <DialogDescription className=\"text-sm\">\n {isEditing\n ? (isReadOnly\n ? 'View workflow details and configuration.'\n : 'Modify this workflow template. Edit your messages and use {variable_name} syntax to create variables.'\n )\n : 'Convert this conversation into a reusable workflow template. Edit your messages and use {variable_name} syntax to create variables.'\n }\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"flex-1 mt-6\">\n <Tabs value={activeTab} onValueChange={setActiveTab} className=\"h-full flex flex-col\">\n <TabsList className=\"grid w-full grid-cols-2 mb-6\">\n <TabsTrigger value=\"setup\" className=\"data-[state=active]:bg-background\">\n Setup & Permissions\n </TabsTrigger>\n <TabsTrigger value=\"workflow\" className=\"data-[state=active]:bg-background\">\n Workflow Steps & Variables\n </TabsTrigger>\n </TabsList>\n\n <div className=\"flex-1 pb-6\">\n <TabsContent value=\"setup\" className=\"mt-0 h-full\">\n <div className=\"space-y-6\">\n <div className=\"space-y-4\">\n <div>\n <Label htmlFor=\"workflow-name\" className=\"text-base font-semibold\">Workflow Name *</Label>\n <Input\n id=\"workflow-name\"\n value={workflowName}\n onChange={(e) => setWorkflowName(e.target.value)}\n placeholder=\"My Workflow\"\n className=\"mt-2 h-11\"\n readOnly={isReadOnly}\n />\n {!workflowName.trim() && (\n <p className=\"text-sm text-destructive mt-1 flex items-center\">\n <span className=\"mr-1\">⚠️</span>\n Workflow name is required\n </p>\n )}\n </div>\n\n <div>\n <Label htmlFor=\"workflow-description\" className=\"text-base font-semibold\">Description</Label>\n <Textarea\n id=\"workflow-description\"\n value={workflowDescription}\n onChange={(e) => setWorkflowDescription(e.target.value)}\n placeholder=\"Describe what this workflow does and when to use it...\"\n rows={3}\n className=\"mt-2 resize-none\"\n readOnly={isReadOnly}\n />\n </div>\n </div>\n\n <div className=\"border-t pt-6\">\n <div className=\"flex items-center justify-between mb-4\">\n <div>\n <h3 className=\"text-base font-semibold mb-1\">Sharing & Permissions</h3>\n <p className=\"text-sm text-muted-foreground\">Control who can view and edit this workflow</p>\n </div>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setShowAdvanced(!showAdvanced)}\n className=\"ml-4\"\n >\n {showAdvanced ? 'Hide Advanced' : 'Show Advanced'}\n <ChevronDown className={cn(\"w-4 h-4 ml-1 transition-transform\", showAdvanced && \"rotate-180\")} />\n </Button>\n </div>\n {showAdvanced && (\n <RBACControl\n initialRightsMode={existingWorkflow?.rights_mode}\n initialUsers={existingWorkflow?.RBAC?.users}\n initialRoles={existingWorkflow?.RBAC?.roles}\n initialProjects={existingWorkflow?.RBAC?.projects}\n onChange={(rights_mode, users, roles, projects) => {\n setRbac({\n rights_mode,\n users,\n roles,\n projects\n })\n }}\n />\n )}\n {!showAdvanced && (\n <div className=\"text-sm text-muted-foreground bg-muted/30 p-3 rounded-md\">\n Using default permissions (private to you)\n </div>\n )}\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"workflow\" className=\"mt-0 h-full\">\n <div className=\"h-full flex gap-6\">\n {/* Left side - Messages */}\n <div className=\"flex-1\">\n <div className=\"mb-4\">\n <h3 className=\"text-base font-semibold mb-2\">Conversation Steps</h3>\n <div className=\"border rounded-lg p-3 mb-4\">\n <p className=\"text-sm\">\n 💡 <strong>Pro tip:</strong> Use {`{variable_name}`} syntax in your messages to create reusable variables. For example you can use {`{company_name}`} to create a variable for the company name\n so you can reuse this flow template with different companies.\n </p>\n </div>\n </div>\n\n <div className=\"space-y-4 max-h-[500px] overflow-y-auto pr-2\">\n {steps.map((step, index) => (\n <div key={step.id}>\n <div className=\"border rounded-lg p-4 bg-card\">\n <div className=\"flex items-center gap-3 mb-3\">\n <span className={cn(\n \"text-sm font-medium px-3 py-1 rounded-full\",\n step.type === 'user' ? \"bg-blue-100 text-blue-700\" :\n step.type === 'assistant' ? \"bg-green-100 text-green-700\" :\n \"bg-purple-100 text-purple-700\"\n )}>\n {step.type === 'user' ? '👤 User' :\n step.type === 'assistant' ? '🤖 Assistant' :\n `🔧 ${step.toolName}`}\n </span>\n {step.variablesUsed && step.variablesUsed.length > 0 && (\n <div className=\"flex gap-1 flex-wrap\">\n {step.variablesUsed.map(varName => (\n <span key={varName} className=\"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded font-mono border border-blue-200\">\n {`{${varName}}`}\n </span>\n ))}\n </div>\n )}\n </div>\n\n {step.type === 'user' ? (\n <div>\n <Textarea\n value={step.content || ''}\n onChange={(e) => handleStepContentChange(step.id, e.target.value)}\n placeholder=\"Enter your message...\"\n className=\"min-h-[80px] resize-none\"\n rows={3}\n readOnly={isReadOnly}\n />\n </div>\n ) : (\n <div className=\"bg-muted/50 p-3 rounded-md\">\n {step.type === 'assistant' ? (\n <div>\n <div className=\"text-xs font-medium text-muted-foreground mb-2\">Example response (will be regenerated):</div>\n <Response>\n {step.contentExample}\n </Response>\n </div>\n ) : (\n <div>\n <div className=\"text-xs font-medium text-muted-foreground mb-1\">Tool: {step.toolName}</div>\n <div className=\"text-sm text-muted-foreground\">Parameters will be generated dynamically</div>\n </div>\n )}\n </div>\n )}\n </div>\n {index < steps.length - 1 && (\n <div className=\"flex justify-center my-3\">\n <ChevronDown className=\"w-5 h-5 text-muted-foreground/50\" />\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n\n {/* Right side - Variables */}\n <div className=\"w-80\">\n <div className=\"mb-4\">\n <h3 className=\"text-base font-semibold mb-2\">Variables ({variables.length})</h3>\n <p className=\"text-sm text-muted-foreground\">Auto-detected from your messages</p>\n </div>\n\n {variables.length > 0 ? (\n <div className=\"space-y-3 max-h-[500px] overflow-y-auto\">\n {variables.map((variable) => (\n <div key={variable.name} className=\"border rounded-lg p-3 bg-card\">\n <div className=\"flex items-start justify-between mb-2\">\n <div className=\"font-mono text-blue-600 font-medium text-sm\">\n {`{${variable.name}}`}\n </div>\n {!isReadOnly && (\n <div className=\"flex gap-1\">\n {editingVariable === variable.name ? (\n <Input\n value={editingValue}\n onChange={(e) => setEditingValue(e.target.value)}\n className=\"h-6 text-xs font-mono w-20\"\n placeholder=\"variable_name\"\n autoFocus\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n if (editingValue && editingValue !== variable.name) {\n renameVariable(variable.name, editingValue)\n }\n setEditingVariable(null)\n setEditingValue('')\n } else if (e.key === 'Escape') {\n setEditingVariable(null)\n setEditingValue('')\n }\n }}\n onBlur={() => {\n if (editingValue && editingValue !== variable.name) {\n renameVariable(variable.name, editingValue)\n }\n setEditingVariable(null)\n setEditingValue('')\n }}\n />\n ) : (\n <>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-6 w-6 p-0\"\n onClick={() => {\n setEditingVariable(variable.name)\n setEditingValue(variable.name)\n }}\n >\n <Edit2 className=\"w-3 h-3\" />\n </Button>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-6 w-6 p-0 text-destructive hover:bg-destructive/10\"\n onClick={() => deleteVariable(variable.name)}\n >\n <Trash2 className=\"w-3 h-3\" />\n </Button>\n </>\n )}\n </div>\n )}\n </div>\n <div className=\"text-xs text-muted-foreground mb-2\">\n {variable.description}\n </div>\n <div className=\"flex gap-1\">\n <span className=\"text-xs bg-gray-100 text-gray-700 px-1.5 py-0.5 rounded\">\n {variable.type}\n </span>\n {variable.required && (\n <span className=\"text-xs bg-orange-100 text-orange-700 px-1.5 py-0.5 rounded\">\n required\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"text-center py-8 text-muted-foreground border-2 border-dashed rounded-lg\">\n <div className=\"mb-3\">\n <span className=\"text-3xl\">📝</span>\n </div>\n <div className=\"text-sm mb-1 font-medium\">No variables yet</div>\n <div className=\"text-xs\">\n Use {`{variable_name}`} syntax in your messages\n </div>\n </div>\n )}\n </div>\n </div>\n </TabsContent>\n </div>\n </Tabs>\n </div>\n\n <div className=\"border-t p-4 bg-background\">\n <DialogFooter>\n <Button variant=\"outline\" onClick={onClose}>\n {isReadOnly ? 'Close' : 'Cancel'}\n </Button>\n {!isReadOnly && (\n <>\n <Button\n onClick={handleSave}\n disabled={!isValid || isCreating}\n className={cn(\n \"min-w-[140px]\",\n !isValid && \"opacity-50 cursor-not-allowed\"\n )}\n >\n {isCreating ? (\n <>\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-white mr-2\"></div>\n {isEditing ? 'Updating...' : 'Saving...'}\n </>\n ) : (\n isEditing ? 'Update Workflow' : 'Save Workflow'\n )}\n </Button>\n\n </>\n\n )}\n </DialogFooter>\n </div>\n </DialogContent>\n </Dialog>\n )\n}","import { cn } from \"@/lib/utils\";\n\nexport const Loading = ({ className }: { className?: null | string }) => {\n return (\n <svg\n aria-hidden=\"true\"\n role=\"status\"\n className={cn(\"inline w-4 h-4 text-white animate-spin fill-inherit\", className)}\n viewBox=\"0 0 100 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\n className=\"fill-inherit opacity-20\"\n ></path>\n <path\n d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\n className=\"fill-inherit\"\n ></path>\n </svg>\n );\n};\n"],"names":["SaveWorkflowModal","param","existingWorkflow","isOpen","onClose","messages","sessionTitle","isReadOnly","user","useContext","UserContext","toast","useToast","rbac","setRbac","useState","rights_mode","users","RBAC","roles","projects","isEditing","Boolean","workflowName","setWorkflowName","name","workflowDescription","setWorkflowDescription","description","variables","setVariables","steps","setSteps","steps_json","isCreating","setIsCreating","activeTab","setActiveTab","showAdvanced","setShowAdvanced","editingVariable","setEditingVariable","editingValue","setEditingValue","createWorkflowTemplate","useMutation","CREATE_WORKFLOW_TEMPLATE","updateWorkflowTemplate","UPDATE_WORKFLOW_TEMPLATE","React","length","transformedSteps","forEach","message","index","messageContent","content","parts","filter","p","type","map","text","join","role","push","id","concat","variablesUsed","contentExample","part","partIndex","toolInvocation","toolName","console","log","createVariable","useCallback","match","title","variant","some","v","newVariable","required","prev","handleStepContentChange","stepId","variableNames","variableMatches","slice","step","allUsedVariables","Set","matches","add","varName","variable","has","deleteVariable","variableName","replace","renameVariable","oldName","newName","isValid","useMemo","trim","userSteps","s","every","withoutVariables","handleSave","stepsJson","owner","error","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","Dialog","open","onOpenChange","jsxs","DialogContent","className","DialogHeader","DialogTitle","DialogDescription","div","Tabs","value","onValueChange","TabsList","TabsTrigger","TabsContent","Label","htmlFor","Input","onChange","e","target","placeholder","readOnly","span","Textarea","rows","h3","Button","size","onClick","ChevronDown","cn","RBACControl","initialRightsMode","initialUsers","initialRoles","initialProjects","strong","Response","autoFocus","onKeyDown","key","onBlur","Fragment","Edit2","Trash2","DialogFooter","disabled","Loading","svg","aria-hidden","viewBox","fill","xmlns","path","d"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3750],{53245:function(e,s,t){t.d(s,{d:function(){return x},f:function(){return p}});var n=t(57437),l=t(62869),r=t(94508),a=t(30401),i=t(78867),o=t(2265),d=t(34996),c=t(1479),u=t(9880);let m=(0,o.createContext)({code:""}),x=e=>{let{code:s,language:t,showLineNumbers:l=!1,className:a,children:i,...o}=e;return(0,n.jsx)(m.Provider,{value:{code:s},children:(0,n.jsx)("div",{className:(0,r.cn)("relative w-full overflow-hidden rounded-md border bg-background text-foreground",a),...o,children:(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsx)(d.Z,{className:"overflow-hidden dark:hidden",codeTagProps:{className:"font-mono text-sm"},customStyle:{margin:0,padding:"1rem",fontSize:"0.875rem",background:"hsl(var(--background))",color:"hsl(var(--foreground))"},language:t,lineNumberStyle:{color:"hsl(var(--muted-foreground))",paddingRight:"1rem",minWidth:"2.5rem"},showLineNumbers:l,style:c.Z,children:s}),(0,n.jsx)(d.Z,{className:"hidden overflow-hidden dark:block",codeTagProps:{className:"font-mono text-sm"},customStyle:{margin:0,padding:"1rem",fontSize:"0.875rem",background:"hsl(var(--background))",color:"hsl(var(--foreground))"},language:t,lineNumberStyle:{color:"hsl(var(--muted-foreground))",paddingRight:"1rem",minWidth:"2.5rem"},showLineNumbers:l,style:u.Z,children:s}),i&&(0,n.jsx)("div",{className:"absolute top-2 right-2 flex items-center gap-2",children:i})]})})})},p=e=>{let{onCopy:s,onError:t,timeout:d=2e3,children:c,className:u,...x}=e,[p,h]=(0,o.useState)(!1),{code:f}=(0,o.useContext)(m),g=async()=>{if(!navigator.clipboard.writeText){null==t||t(Error("Clipboard API not available"));return}try{await navigator.clipboard.writeText(f),h(!0),null==s||s(),setTimeout(()=>h(!1),d)}catch(e){null==t||t(e)}},j=p?a.Z:i.Z;return(0,n.jsx)(l.z,{className:(0,r.cn)("shrink-0",u),onClick:g,size:"icon",variant:"ghost",...x,children:null!=c?c:(0,n.jsx)(j,{size:14})})}},35629:function(e,s,t){t.d(s,{H:function(){return x}});var n=t(57437),l=t(94508),r=t(2265),a=t(86816),i=t(67245),o=t(58146),d=t(85020),c=t(53245);t(2446);let u=(0,t(86589).Z)(a.UG),m={ol:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("ol",{className:(0,l.cn)("ml-4 list-outside list-decimal",r),...a,children:t})},li:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("li",{className:(0,l.cn)("py-1",r),...a,children:t})},ul:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("ul",{className:(0,l.cn)("ml-4 list-outside list-disc",r),...a,children:t})},hr:e=>{let{node:s,className:t,...r}=e;return(0,n.jsx)("hr",{className:(0,l.cn)("my-6 border-border",t),...r})},strong:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("span",{className:(0,l.cn)("font-semibold",r),...a,children:t})},a:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("a",{className:(0,l.cn)("font-medium text-primary underline",r),rel:"noreferrer",target:"_blank",...a,children:t})},h1:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("h1",{className:(0,l.cn)("mt-6 mb-2 font-semibold text-3xl",r),...a,children:t})},h2:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("h2",{className:(0,l.cn)("mt-6 mb-2 font-semibold text-2xl",r),...a,children:t})},h3:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("h3",{className:(0,l.cn)("mt-6 mb-2 font-semibold text-xl",r),...a,children:t})},h4:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("h4",{className:(0,l.cn)("mt-6 mb-2 font-semibold text-lg",r),...a,children:t})},h5:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("h5",{className:(0,l.cn)("mt-6 mb-2 font-semibold text-base",r),...a,children:t})},h6:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("h6",{className:(0,l.cn)("mt-6 mb-2 font-semibold text-sm",r),...a,children:t})},table:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("div",{className:"my-4 overflow-x-auto",children:(0,n.jsx)("table",{className:(0,l.cn)("w-full border-collapse border border-border",r),...a,children:t})})},thead:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("thead",{className:(0,l.cn)("bg-muted/50",r),...a,children:t})},tbody:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("tbody",{className:(0,l.cn)("divide-y divide-border",r),...a,children:t})},tr:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("tr",{className:(0,l.cn)("border-border border-b",r),...a,children:t})},th:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("th",{className:(0,l.cn)("px-4 py-2 text-left font-semibold text-sm",r),...a,children:t})},td:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("td",{className:(0,l.cn)("px-4 py-2 text-sm",r),...a,children:t})},blockquote:e=>{let{node:s,children:t,className:r,...a}=e;return(0,n.jsx)("blockquote",{className:(0,l.cn)("my-4 border-muted-foreground/30 border-l-4 pl-4 text-muted-foreground italic",r),...a,children:t})},code:e=>{var s,t;let{node:r,className:a,...i}=e;return(null==r?void 0:null===(s=r.position)||void 0===s?void 0:s.start.line)!==(null==r?void 0:null===(t=r.position)||void 0===t?void 0:t.end.line)?(0,n.jsx)("code",{className:a,...i}):(0,n.jsx)("code",{className:(0,l.cn)("rounded bg-muted px-1.5 py-0.5 font-mono text-sm",a),...i})},pre:e=>{var s;let{node:t,className:a,children:i}=e,o="javascript";"string"==typeof(null==t?void 0:null===(s=t.properties)||void 0===s?void 0:s.className)&&(o=t.properties.className.replace("language-",""));let d="";return(0,r.isValidElement)(i)&&i.props&&"string"==typeof i.props.children?d=i.props.children:"string"==typeof i&&(d=i),(0,n.jsx)(c.d,{className:(0,l.cn)("my-4 h-auto",a),code:d,language:o,children:(0,n.jsx)(c.f,{onCopy:()=>console.log("Copied code to clipboard"),onError:()=>console.error("Failed to copy code to clipboard")})})}},x=(0,r.memo)(e=>{let{className:s,options:t,children:r,allowedImagePrefixes:a,allowedLinkPrefixes:c,defaultOrigin:x,parseIncompleteMarkdown:p=!0,...h}=e,f="string"==typeof r&&p?function(e){if(!e||"string"!=typeof e)return e;let s=e,t=s.match(/(!?\[)([^\]]*?)$/);if(t){let e=s.lastIndexOf(t[1]);s=s.substring(0,e)}if(s.match(/(\*\*)([^*]*?)$/)&&(s.match(/\*\*/g)||[]).length%2==1&&(s="".concat(s,"**")),s.match(/(__)([^_]*?)$/)&&(s.match(/__/g)||[]).length%2==1&&(s="".concat(s,"__")),s.match(/(\*)([^*]*?)$/)&&s.split("").reduce((e,t,n)=>{if("*"===t){let t=s[n-1],l=s[n+1];if("*"!==t&&"*"!==l)return e+1}return e},0)%2==1&&(s="".concat(s,"*")),s.match(/(_)([^_]*?)$/)&&s.split("").reduce((e,t,n)=>{if("_"===t){let t=s[n-1],l=s[n+1];if("_"!==t&&"_"!==l)return e+1}return e},0)%2==1&&(s="".concat(s,"_")),s.match(/(`)([^`]*?)$/)&&(s.includes("```"),(s.match(/```[\s\S]*?```/g)||[]).length,(s.match(/```/g)||[]).length%2!=1)){let e=0;for(let t=0;t<s.length;t++)if("`"===s[t]){let n="```"===s.substring(t,t+3),l=t>0&&"```"===s.substring(t-1,t+2),r=t>1&&"```"===s.substring(t-2,t+1);!(n||l||r)&&e++}e%2==1&&(s="".concat(s,"`"))}return s.match(/(~~)([^~]*?)$/)&&(s.match(/~~/g)||[]).length%2==1&&(s="".concat(s,"~~")),s}(r):r;return(0,n.jsx)("div",{className:(0,l.cn)("size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0",s),...h,children:(0,n.jsx)(u,{allowedImagePrefixes:null!=a?a:["*"],allowedLinkPrefixes:null!=c?c:["*"],components:m,defaultOrigin:x,rehypePlugins:[i.Z],remarkPlugins:[o.Z,d.Z],...t,children:f})})},(e,s)=>e.children===s.children);x.displayName="Response"},65613:function(e,s,t){t.d(s,{Cd:function(){return d},X:function(){return c},bZ:function(){return o}});var n=t(57437),l=t(90535),r=t(2265),a=t(94508);let i=(0,l.j)("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",info:"border-info/50 text-info dark:border-info [&>svg]:text-info"}},defaultVariants:{variant:"default"}}),o=r.forwardRef((e,s)=>{let{className:t,variant:l,...r}=e;return(0,n.jsx)("div",{ref:s,role:"alert",className:(0,a.cn)(i({variant:l}),t),...r})});o.displayName="Alert";let d=r.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,n.jsx)("h5",{ref:s,className:(0,a.cn)("mb-1 font-medium leading-none tracking-tight",t),...l})});d.displayName="AlertTitle";let c=r.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,n.jsx)("div",{ref:s,className:(0,a.cn)("text-sm [&_p]:leading-relaxed",t),...l})});c.displayName="AlertDescription"},74928:function(e,s,t){t.d(s,{Fw:function(){return a},wy:function(){return r},zF:function(){return l}});var n=t(88985);let l=n.fC,r=n.wy,a=n.Fw},12339:function(e,s,t){t.d(s,{SP:function(){return d},dr:function(){return o},mQ:function(){return i},nU:function(){return c}});var n=t(57437),l=t(20271),r=t(2265),a=t(94508);let i=l.fC,o=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,n.jsx)(l.aV,{ref:s,className:(0,a.cn)("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",t),...r})});o.displayName=l.aV.displayName;let d=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,n.jsx)(l.xz,{ref:s,className:(0,a.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",t),...r})});d.displayName=l.xz.displayName;let c=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,n.jsx)(l.VY,{ref:s,className:(0,a.cn)("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",t),...r})});c.displayName=l.VY.displayName},77992:function(e,s,t){t.d(s,{Am:function(){return u},pm:function(){return m}});var n=t(2265);let l=0,r=new Map,a=e=>{if(r.has(e))return;let s=setTimeout(()=>{r.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);r.set(e,s)},i=(e,s)=>{switch(s.type){case"ADD_TOAST":return{...e,toasts:[s.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===s.toast.id?{...e,...s.toast}:e)};case"DISMISS_TOAST":{let{toastId:t}=s;return t?a(t):e.toasts.forEach(e=>{a(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===t||void 0===t?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===s.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==s.toastId)}}},o=[],d={toasts:[]};function c(e){d=i(d,e),o.forEach(e=>{e(d)})}function u(e){let{...s}=e,t=(l=(l+1)%Number.MAX_SAFE_INTEGER).toString(),n=()=>c({type:"DISMISS_TOAST",toastId:t});return c({type:"ADD_TOAST",toast:{...s,id:t,open:!0,onOpenChange:e=>{e||n()}}}),{id:t,dismiss:n,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function m(){let[e,s]=n.useState(d);return n.useEffect(()=>(o.push(s),()=>{let e=o.indexOf(s);e>-1&&o.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},78361:function(e,s,t){t.d(s,{jF:function(){return A},jU:function(){return R},ZP:function(){return L},NF:function(){return I}});var n=t(57437),l=t(2265),r=t(47632),a=t(1109);t(46693),t(51832);var i=t(6374),o=t(44045);let d=async e=>{var s;if(!e.backend)throw Error("No backend set.");let{callbacks:t,maxNumberOfFiles:n,uppyOptions:l}=e||{},{uploadSuccess:o}=t||{},{allowedFileTypes:d,id:c}=l||{},u=await (0,i.LP)(),m=new r.Z({autoProceed:!0,debug:!1,id:c||"uppy",restrictions:{maxNumberOfFiles:n||5,allowedFileTypes:d||[".heic",".jpg",".jpeg",".png",".webp",".svg"]}}).use(a.Z,{id:"Exulu",endpoint:e.backend,headers:{Authorization:"Bearer ".concat(u),Session:null!==(s=localStorage.getItem("session"))&&void 0!==s?s:""}}).on("file-added",async e=>{console.debug("added",e)}).on("upload-error",(e,s)=>{(null==e?void 0:e.id)&&(m.removeFile(null==e?void 0:e.id),console.error("error",s))}).on("upload-success",(e,s)=>{s.uploadURL&&o&&(console.log("response",s),o({file:e,key:s.uploadURL.split("/").pop()||"",url:s.uploadURL}))});return m};var c=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=(0,l.useContext)(o.E),[n,r]=(0,l.useState)(void 0);return(0,l.useEffect)(()=>((async()=>{r(await d({...e,backend:(null==t?void 0:t.backend)||""}))})(),()=>{n&&(n.destroy(),r(void 0))}),[...s]),n},u=t(80007),m=t(92735),x=t(88964),p=t(30044),h=t(92451),f=t(10407),g=t(48736),j=t(53113),v=t(69658),b=t(99397),N=t(32489),y=t(15001),w=t(62869),k=t(26110),S=t(19378),C=t(78298),Z=t(11713),_=t(21770),T=t(95186),O=t(20653),z=t(66070),E=t(93022);function A(e){let{s3key:s,children:t}=e,{data:r,isLoading:a,error:o,refetch:d}=(0,Z.a)({queryKey:["fileObject",s],queryFn:async()=>s?await i.QZ.object(s):null,enabled:null!=s});if((0,l.useEffect)(()=>{s&&d()},[s]),!s)return(0,n.jsx)(z.Zb,{children:(0,n.jsxs)(z.aY,{className:"p-3 flex",children:[(0,n.jsx)("p",{className:"text-sm text-muted-foreground m-auto",children:"No file selected"}),t]})});let c=s,u="";if(s.includes("[bucket:")){var x,p;u=(null===(x=s.split("[bucket:")[1])||void 0===x?void 0:x.split("]")[0])||"",(null==(c=(null===(p=s.split("[bucket:")[1])||void 0===p?void 0:p.split("]")[0])||"")?void 0:c.length)&&(c=s.split("]")[1]||"")}return c=c.split("_EXULU_").pop()||"",(0,n.jsxs)(z.Zb,{children:[(0,n.jsx)(z.Ol,{className:"pb-3",children:(0,n.jsx)(z.ll,{className:"text-sm max-w-[500px] truncate",children:c})}),(0,n.jsxs)(z.aY,{className:"pt-0",children:[a&&(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(E.O,{className:"h-4 w-full"}),(0,n.jsx)(E.O,{className:"h-4 w-2/3"})]}),!a&&r&&(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[(0,n.jsxs)("span",{className:"capitalize",children:[null==r?void 0:r.ContentType.split("/").pop(),u&&" [Bucket: ".concat(u,"]")]}),(0,n.jsxs)("span",{children:[((null==r?void 0:r.ContentLength)/1024/1024).toFixed(2)," MB"]})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[(0,n.jsxs)("span",{children:["Last modified: ",new Date(null==r?void 0:r.LastModified).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"})]}),(0,n.jsxs)(w.z,{variant:"secondary",size:"sm",type:"button",className:"h-7 px-2",onClick:()=>{i.QZ.download(s).then(async e=>{console.log("res",e);let s=await e.json();console.log("res",s);let t=s.url;window.open(t,"_blank")})},children:[(0,n.jsx)("span",{className:"mr-1 text-xs",children:"View"}),(0,n.jsx)(m.Z,{className:"h-3 w-3"})]})]})]}),!a&&o&&(0,n.jsx)("p",{className:"text-xs text-muted-foreground",children:o.message}),t]})]})}function L(e){let{id:s,allowedFileTypes:t,dependencies:r,onConfirm:a,selectionLimit:i,buttonText:o}=e,[d,c]=(0,l.useState)(!1);return(0,n.jsxs)(k.Vq,{open:d,onOpenChange:c,children:[(0,n.jsx)(k.hg,{asChild:!0,children:(0,n.jsxs)(w.z,{variant:"outline",children:[o&&(0,n.jsx)("span",{className:"mr-2",children:o}),(0,n.jsx)(x.Z,{className:"h-4 w-4"})]})}),(0,n.jsxs)(k.cZ,{className:"sm:max-w-[900px]",children:[(0,n.jsxs)(k.fK,{children:[(0,n.jsx)(k.$N,{children:"File Gallery"}),(0,n.jsx)(k.Be,{children:"Browse your previously uploaded files or upload new ones."})]}),(0,n.jsx)(F,{id:s,allowedFileTypes:t,dependencies:r,selectionLimit:i,onConfirm:e=>{a(e),c(!1)}})]})]})}let F=e=>{var s,t;let{id:r,allowedFileTypes:a,dependencies:d,onConfirm:m,selectionLimit:x}=e;a||(a=[".png",".jpg",".jpeg",".gif",".webp",".pdf",".docx",".xlsx",".xls",".csv",".pptx",".ppt",".mp3",".wav",".m4a",".mp4",".mpeg",".mp4",".m4a",".mp3",".mpeg",".wav"]);let[g,j]=(0,l.useState)(void 0),[v,b]=(0,l.useState)(void 0),[N,y]=(0,l.useState)(void 0),k=(0,l.useContext)(o.E),[z,A]=(0,l.useState)([]),L=e=>{if(z.includes(e)){A(z.filter(s=>s!==e));return}if(1===x){A([e]);return}z.length>=x||A([...z,e])},F=(0,_.D)({mutationFn:async e=>{let{key:s}=e;await i.QZ.delete(s),P()}}),{data:U,isLoading:I,error:W,refetch:P}=(0,Z.a)({queryKey:["filesQuery",g,N],staleTime:3e4,queryFn:async()=>i.QZ.list({search:g,continuationToken:N})});console.log("!! data !!",U);let{theme:D}=(0,C.F)(),V=c({backend:(null==k?void 0:k.backend)||"",uppyOptions:{id:r,allowedFileTypes:a},callbacks:{uploadSuccess:async e=>{console.log("data",e)}},maxNumberOfFiles:10},d);return((0,l.useEffect)(()=>{P()},[g,N]),V)?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[(0,n.jsxs)("div",{className:"border rounded-lg p-4",children:[(0,n.jsx)("h3",{className:"text-sm font-medium mb-3",children:"Previously Uploaded Files"}),(0,n.jsx)(T.I,{placeholder:"Search files...",value:g,onChange:e=>j(e.target.value),className:"mb-3"}),(0,n.jsxs)("div",{className:"flex items-center justify-between text-xs text-muted-foreground pb-2",children:[(0,n.jsxs)("span",{children:[z.length," / ",x," files selected"]}),(0,n.jsxs)("span",{children:["Allowed file types: ",null==a?void 0:a.map(e=>e).join(", ")]})]}),(0,n.jsxs)(S.x,{children:[I&&(0,n.jsxs)("div",{className:"flex items-center justify-center h-full w-full grid grid-cols-2 sm:grid-cols-3 gap-3",children:[(0,n.jsx)(E.O,{className:"h-[120px] w-full"}),(0,n.jsx)(E.O,{className:"h-[120px] w-full"}),(0,n.jsx)(E.O,{className:"h-[120px] w-full"}),(0,n.jsx)(E.O,{className:"h-[120px] w-full"}),(0,n.jsx)(E.O,{className:"h-[120px] w-full"}),(0,n.jsx)(E.O,{className:"h-[120px] w-full"}),(0,n.jsx)(E.O,{className:"h-[120px] w-full"}),(0,n.jsx)(E.O,{className:"h-[120px] w-full"}),(0,n.jsx)(E.O,{className:"h-[120px] w-full"})]}),(0,n.jsxs)("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-3",children:[!I&&!(null==U?void 0:null===(s=U.Contents)||void 0===s?void 0:s.length)&&(0,n.jsxs)("div",{className:"col-span-full flex flex-col items-center justify-center py-12 text-center",children:[(0,n.jsx)(p.Z,{className:"h-12 w-12 text-muted-foreground/50 mb-3"}),(0,n.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:"Nothing to see here... yet!"}),(0,n.jsx)("p",{className:"text-xs text-muted-foreground/75 mt-1",children:"Upload some files to get started"})]}),null==U?void 0:null===(t=U.Contents)||void 0===t?void 0:t.map(e=>(0,n.jsx)(R,{s3Key:e.Key,onSelect:L,active:z.some(s=>s===e.Key),onRemove:()=>{F.mutate({key:e.Key})},disabled:!!a&&!(null==a?void 0:a.some(s=>e.Key.endsWith(s)))}))]}),(0,n.jsx)("div",{className:"flex items-center space-x-6 lg:space-x-8 pt-3",children:(0,n.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,n.jsxs)(w.z,{variant:"outline",className:"hidden size-8 p-0 lg:flex",onClick:()=>{y(void 0)},disabled:!N||I,children:[(0,n.jsx)("span",{className:"sr-only",children:"Go to first page"}),(0,n.jsx)(O.kRt,{className:"size-4"})]}),(0,n.jsxs)(w.z,{variant:"outline",className:"size-8 p-0",onClick:()=>{y(v)},disabled:!N||I,children:[(0,n.jsx)("span",{className:"sr-only",children:"Go to previous page"}),(0,n.jsx)(h.Z,{className:"size-4"})]}),(0,n.jsxs)(w.z,{variant:"outline",className:"size-8 p-0",onClick:()=>{b(N),y(null==U?void 0:U.NextContinuationToken)},disabled:!(null==U?void 0:U.NextContinuationToken)||I,children:[(0,n.jsx)("span",{className:"sr-only",children:"Go to next page"}),(0,n.jsx)(f.Z,{className:"size-4"})]})]})})]})]}),(0,n.jsxs)("div",{className:"border rounded-lg p-4",children:[(0,n.jsx)("h3",{className:"text-sm font-medium mb-3",children:"Upload New Files"}),(0,n.jsx)(u.A,{uppy:V,theme:"dark"===D?"dark":"light"})]})]}),(0,n.jsx)("div",{className:"flex justify-end",children:(0,n.jsx)(w.z,{variant:"outline",onClick:()=>{m(z),A([])},children:"Confirm"})})]}):null},R=e=>{let{s3Key:s,onSelect:t,onRemove:l,active:r,disabled:a,addToContext:o}=e;return(0,n.jsxs)("div",{className:"".concat(a?"opacity-50":""," group relative rounded-lg p-2 hover:bg-muted transition-colors cursor-pointer ").concat(r?"border border-purple-500":"border"),onClick:()=>{!a&&t&&t(s)},children:[(0,n.jsx)("div",{className:"aspect-square relative mb-2 bg-muted/50 rounded-md overflow-hidden flex items-center justify-center",children:s&&(s.toLowerCase().endsWith("jpg")||s.toLowerCase().endsWith("jpeg")||s.toLowerCase().endsWith("png")||s.toLowerCase().endsWith("svg"))?(0,n.jsx)(W,{fileKey:s}):(0,n.jsxs)("div",{className:"flex flex-col items-center justify-center h-full",children:[s?s.toLowerCase().endsWith("jpg")||s.toLowerCase().endsWith("jpeg")||s.toLowerCase().endsWith("png")||s.toLowerCase().endsWith("svg")?(0,n.jsx)(j.Z,{className:"h-6 w-6 text-blue-500"}):s.endsWith("pdf")?(0,n.jsx)(v.Z,{className:"h-6 w-6 text-red-500"}):s.endsWith("xls")||s.endsWith("xlsx")||s.endsWith("csv")?(0,n.jsx)(g.Z,{className:"h-6 w-6 text-green-500"}):s.endsWith("ppt")||s.endsWith("pptx")?(0,n.jsx)(g.Z,{className:"h-6 w-6 text-orange-500"}):(0,n.jsx)(g.Z,{className:"h-6 w-6 text-gray-500"}):(0,n.jsx)(g.Z,{className:"h-6 w-6 text-gray-500"}),(0,n.jsx)("span",{className:"text-xs text-muted-foreground mt-1 text-center",children:s?s.split("_EXULU_").pop():s})]})}),(0,n.jsx)("p",{className:"text-xs truncate",children:s?s.split("_EXULU_").pop():s}),(0,n.jsxs)("div",{className:"opacity-0 group-hover:opacity-100 flex absolute top-1 right-1",children:[o&&(0,n.jsxs)(w.z,{variant:"ghost",size:"icon",type:"button",className:"h-6 w-6 bg-background/80 hover:bg-background",onClick:()=>{o(s)},children:[(0,n.jsx)(b.Z,{className:"h-3 w-3"}),(0,n.jsx)("span",{className:"sr-only",children:"Add"})]}),(0,n.jsxs)(w.z,{variant:"ghost",size:"icon",type:"button",className:"h-6 w-6 bg-background/80 hover:bg-background",onClick:()=>{i.QZ.download(s).then(async e=>{console.log("res",e);let s=await e.json();console.log("res",s);let t=s.url;window.open(t,"_blank")})},children:[(0,n.jsx)(m.Z,{className:"h-3 w-3"}),(0,n.jsx)("span",{className:"sr-only",children:"View"})]}),l&&(0,n.jsxs)(w.z,{onClick:e=>{e.stopPropagation(),l(s)},variant:"ghost",type:"button",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100 bg-background/80 hover:bg-background ml-1",children:[(0,n.jsx)(N.Z,{className:"h-3 w-3"}),(0,n.jsx)("span",{className:"sr-only",children:"Remove"})]})]})]},s)},U={},I=async e=>{if(U[e]){if(!(U[e].expiresAt<Date.now()))return U[e].url;delete U[e]}let s=await i.QZ.download(e),t=await s.json();return console.log("json",t),U[e]={url:t.url,expiresAt:Date.now()+6e4},t.url},W=e=>{let{fileKey:s}=e;console.log("key",s);let t=(0,Z.a)({queryKey:["imageQuery",s],staleTime:3e4,queryFn:async()=>I(s)});return t.isLoading?(0,n.jsx)("div",{children:(0,n.jsx)(y.Z,{})}):t.isLoading||t.data?(0,n.jsx)("img",{src:t.data,alt:s,className:"object-cover w-full h-full"}):(0,n.jsx)("div",{children:(0,n.jsx)(p.Z,{})})}}}]);
2
- //# sourceMappingURL=3750-f45c59ef1cc79417.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/chunks/3750-f45c59ef1cc79417.js","mappings":"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","sources":["webpack://_N_E/./components/ai-elements/code-block.tsx","webpack://_N_E/./components/ai-elements/response.tsx","webpack://_N_E/./components/ui/alert.tsx","webpack://_N_E/./components/ui/collapsible.tsx","webpack://_N_E/./components/ui/tabs.tsx","webpack://_N_E/./components/ui/use-toast.ts","webpack://_N_E/./hooks/use-uppy.tsx","webpack://_N_E/./components/uppy-dashboard.tsx"],"sourcesContent":["'use client';\n\nimport { Button } from '@/components/ui/button';\nimport { cn } from '@/lib/utils';\nimport { CheckIcon, CopyIcon } from 'lucide-react';\nimport type { ComponentProps, HTMLAttributes, ReactNode } from 'react';\nimport { createContext, useContext, useState } from 'react';\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';\nimport {\n oneDark,\n oneLight,\n} from 'react-syntax-highlighter/dist/esm/styles/prism';\n\ntype CodeBlockContextType = {\n code: string;\n};\n\nconst CodeBlockContext = createContext<CodeBlockContextType>({\n code: '',\n});\n\nexport type CodeBlockProps = HTMLAttributes<HTMLDivElement> & {\n code: string;\n language: string;\n showLineNumbers?: boolean;\n children?: ReactNode;\n};\n\nexport const CodeBlock = ({\n code,\n language,\n showLineNumbers = false,\n className,\n children,\n ...props\n}: CodeBlockProps) => (\n <CodeBlockContext.Provider value={{ code }}>\n <div\n className={cn(\n 'relative w-full overflow-hidden rounded-md border bg-background text-foreground',\n className\n )}\n {...props}\n >\n <div className=\"relative\">\n <SyntaxHighlighter\n className=\"overflow-hidden dark:hidden\"\n codeTagProps={{\n className: 'font-mono text-sm',\n }}\n customStyle={{\n margin: 0,\n padding: '1rem',\n fontSize: '0.875rem',\n background: 'hsl(var(--background))',\n color: 'hsl(var(--foreground))',\n }}\n language={language}\n lineNumberStyle={{\n color: 'hsl(var(--muted-foreground))',\n paddingRight: '1rem',\n minWidth: '2.5rem',\n }}\n showLineNumbers={showLineNumbers}\n style={oneLight}\n >\n {code}\n </SyntaxHighlighter>\n <SyntaxHighlighter\n className=\"hidden overflow-hidden dark:block\"\n codeTagProps={{\n className: 'font-mono text-sm',\n }}\n customStyle={{\n margin: 0,\n padding: '1rem',\n fontSize: '0.875rem',\n background: 'hsl(var(--background))',\n color: 'hsl(var(--foreground))',\n }}\n language={language}\n lineNumberStyle={{\n color: 'hsl(var(--muted-foreground))',\n paddingRight: '1rem',\n minWidth: '2.5rem',\n }}\n showLineNumbers={showLineNumbers}\n style={oneDark}\n >\n {code}\n </SyntaxHighlighter>\n {children && (\n <div className=\"absolute top-2 right-2 flex items-center gap-2\">\n {children}\n </div>\n )}\n </div>\n </div>\n </CodeBlockContext.Provider>\n);\n\nexport type CodeBlockCopyButtonProps = ComponentProps<typeof Button> & {\n onCopy?: () => void;\n onError?: (error: Error) => void;\n timeout?: number;\n};\n\nexport const CodeBlockCopyButton = ({\n onCopy,\n onError,\n timeout = 2000,\n children,\n className,\n ...props\n}: CodeBlockCopyButtonProps) => {\n const [isCopied, setIsCopied] = useState(false);\n const { code } = useContext(CodeBlockContext);\n\n const copyToClipboard = async () => {\n if (typeof window === 'undefined' || !navigator.clipboard.writeText) {\n onError?.(new Error('Clipboard API not available'));\n return;\n }\n\n try {\n await navigator.clipboard.writeText(code);\n setIsCopied(true);\n onCopy?.();\n setTimeout(() => setIsCopied(false), timeout);\n } catch (error) {\n onError?.(error as Error);\n }\n };\n\n const Icon = isCopied ? CheckIcon : CopyIcon;\n\n return (\n <Button\n className={cn('shrink-0', className)}\n onClick={copyToClipboard}\n size=\"icon\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <Icon size={14} />}\n </Button>\n );\n};\n","'use client';\n\nimport { cn } from '@/lib/utils';\nimport type { ComponentProps, HTMLAttributes } from 'react';\nimport { isValidElement, memo } from 'react';\nimport ReactMarkdown, { type Options } from 'react-markdown';\nimport rehypeKatex from 'rehype-katex';\nimport remarkGfm from 'remark-gfm';\nimport remarkMath from 'remark-math';\nimport { CodeBlock, CodeBlockCopyButton } from './code-block';\nimport 'katex/dist/katex.min.css';\nimport hardenReactMarkdown from 'harden-react-markdown';\n\n/**\n * Parses markdown text and removes incomplete tokens to prevent partial rendering\n * of links, images, bold, and italic formatting during streaming.\n */\nfunction parseIncompleteMarkdown(text: string): string {\n if (!text || typeof text !== 'string') {\n return text;\n }\n\n let result = text;\n\n // Handle incomplete links and images\n // Pattern: [...] or ![...] where the closing ] is missing\n const linkImagePattern = /(!?\\[)([^\\]]*?)$/;\n const linkMatch = result.match(linkImagePattern);\n if (linkMatch) {\n // If we have an unterminated [ or ![, remove it and everything after\n const startIndex = result.lastIndexOf(linkMatch[1]);\n result = result.substring(0, startIndex);\n }\n\n // Handle incomplete bold formatting (**)\n const boldPattern = /(\\*\\*)([^*]*?)$/;\n const boldMatch = result.match(boldPattern);\n if (boldMatch) {\n // Count the number of ** in the entire string\n const asteriskPairs = (result.match(/\\*\\*/g) || []).length;\n // If odd number of **, we have an incomplete bold - complete it\n if (asteriskPairs % 2 === 1) {\n result = `${result}**`;\n }\n }\n\n // Handle incomplete italic formatting (__)\n const italicPattern = /(__)([^_]*?)$/;\n const italicMatch = result.match(italicPattern);\n if (italicMatch) {\n // Count the number of __ in the entire string\n const underscorePairs = (result.match(/__/g) || []).length;\n // If odd number of __, we have an incomplete italic - complete it\n if (underscorePairs % 2 === 1) {\n result = `${result}__`;\n }\n }\n\n // Handle incomplete single asterisk italic (*)\n const singleAsteriskPattern = /(\\*)([^*]*?)$/;\n const singleAsteriskMatch = result.match(singleAsteriskPattern);\n if (singleAsteriskMatch) {\n // Count single asterisks that aren't part of **\n const singleAsterisks = result.split('').reduce((acc, char, index) => {\n if (char === '*') {\n // Check if it's part of a ** pair\n const prevChar = result[index - 1];\n const nextChar = result[index + 1];\n if (prevChar !== '*' && nextChar !== '*') {\n return acc + 1;\n }\n }\n return acc;\n }, 0);\n\n // If odd number of single *, we have an incomplete italic - complete it\n if (singleAsterisks % 2 === 1) {\n result = `${result}*`;\n }\n }\n\n // Handle incomplete single underscore italic (_)\n const singleUnderscorePattern = /(_)([^_]*?)$/;\n const singleUnderscoreMatch = result.match(singleUnderscorePattern);\n if (singleUnderscoreMatch) {\n // Count single underscores that aren't part of __\n const singleUnderscores = result.split('').reduce((acc, char, index) => {\n if (char === '_') {\n // Check if it's part of a __ pair\n const prevChar = result[index - 1];\n const nextChar = result[index + 1];\n if (prevChar !== '_' && nextChar !== '_') {\n return acc + 1;\n }\n }\n return acc;\n }, 0);\n\n // If odd number of single _, we have an incomplete italic - complete it\n if (singleUnderscores % 2 === 1) {\n result = `${result}_`;\n }\n }\n\n // Handle incomplete inline code blocks (`) - but avoid code blocks (```)\n const inlineCodePattern = /(`)([^`]*?)$/;\n const inlineCodeMatch = result.match(inlineCodePattern);\n if (inlineCodeMatch) {\n // Check if we're dealing with a code block (triple backticks)\n const hasCodeBlockStart = result.includes('```');\n const codeBlockPattern = /```[\\s\\S]*?```/g;\n const completeCodeBlocks = (result.match(codeBlockPattern) || []).length;\n const allTripleBackticks = (result.match(/```/g) || []).length;\n\n // If we have an odd number of ``` sequences, we're inside an incomplete code block\n // In this case, don't complete inline code\n const insideIncompleteCodeBlock = allTripleBackticks % 2 === 1;\n\n if (!insideIncompleteCodeBlock) {\n // Count the number of single backticks that are NOT part of triple backticks\n let singleBacktickCount = 0;\n for (let i = 0; i < result.length; i++) {\n if (result[i] === '`') {\n // Check if this backtick is part of a triple backtick sequence\n const isTripleStart = result.substring(i, i + 3) === '```';\n const isTripleMiddle =\n i > 0 && result.substring(i - 1, i + 2) === '```';\n const isTripleEnd = i > 1 && result.substring(i - 2, i + 1) === '```';\n\n if (!(isTripleStart || isTripleMiddle || isTripleEnd)) {\n singleBacktickCount++;\n }\n }\n }\n\n // If odd number of single backticks, we have an incomplete inline code - complete it\n if (singleBacktickCount % 2 === 1) {\n result = `${result}\\``;\n }\n }\n }\n\n // Handle incomplete strikethrough formatting (~~)\n const strikethroughPattern = /(~~)([^~]*?)$/;\n const strikethroughMatch = result.match(strikethroughPattern);\n if (strikethroughMatch) {\n // Count the number of ~~ in the entire string\n const tildePairs = (result.match(/~~/g) || []).length;\n // If odd number of ~~, we have an incomplete strikethrough - complete it\n if (tildePairs % 2 === 1) {\n result = `${result}~~`;\n }\n }\n\n return result;\n}\n\n// Create a hardened version of ReactMarkdown\nconst HardenedMarkdown = hardenReactMarkdown(ReactMarkdown);\n\nexport type ResponseProps = HTMLAttributes<HTMLDivElement> & {\n options?: Options;\n children: Options['children'];\n allowedImagePrefixes?: ComponentProps<\n ReturnType<typeof hardenReactMarkdown>\n >['allowedImagePrefixes'];\n allowedLinkPrefixes?: ComponentProps<\n ReturnType<typeof hardenReactMarkdown>\n >['allowedLinkPrefixes'];\n defaultOrigin?: ComponentProps<\n ReturnType<typeof hardenReactMarkdown>\n >['defaultOrigin'];\n parseIncompleteMarkdown?: boolean;\n};\n\nconst components: Options['components'] = {\n ol: ({ node, children, className, ...props }) => (\n <ol className={cn('ml-4 list-outside list-decimal', className)} {...props}>\n {children}\n </ol>\n ),\n li: ({ node, children, className, ...props }) => (\n <li className={cn('py-1', className)} {...props}>\n {children}\n </li>\n ),\n ul: ({ node, children, className, ...props }) => (\n <ul className={cn('ml-4 list-outside list-disc', className)} {...props}>\n {children}\n </ul>\n ),\n hr: ({ node, className, ...props }) => (\n <hr className={cn('my-6 border-border', className)} {...props} />\n ),\n strong: ({ node, children, className, ...props }) => (\n <span className={cn('font-semibold', className)} {...props}>\n {children}\n </span>\n ),\n a: ({ node, children, className, ...props }) => (\n <a\n className={cn('font-medium text-primary underline', className)}\n rel=\"noreferrer\"\n target=\"_blank\"\n {...props}\n >\n {children}\n </a>\n ),\n h1: ({ node, children, className, ...props }) => (\n <h1\n className={cn('mt-6 mb-2 font-semibold text-3xl', className)}\n {...props}\n >\n {children}\n </h1>\n ),\n h2: ({ node, children, className, ...props }) => (\n <h2\n className={cn('mt-6 mb-2 font-semibold text-2xl', className)}\n {...props}\n >\n {children}\n </h2>\n ),\n h3: ({ node, children, className, ...props }) => (\n <h3 className={cn('mt-6 mb-2 font-semibold text-xl', className)} {...props}>\n {children}\n </h3>\n ),\n h4: ({ node, children, className, ...props }) => (\n <h4 className={cn('mt-6 mb-2 font-semibold text-lg', className)} {...props}>\n {children}\n </h4>\n ),\n h5: ({ node, children, className, ...props }) => (\n <h5\n className={cn('mt-6 mb-2 font-semibold text-base', className)}\n {...props}\n >\n {children}\n </h5>\n ),\n h6: ({ node, children, className, ...props }) => (\n <h6 className={cn('mt-6 mb-2 font-semibold text-sm', className)} {...props}>\n {children}\n </h6>\n ),\n table: ({ node, children, className, ...props }) => (\n <div className=\"my-4 overflow-x-auto\">\n <table\n className={cn('w-full border-collapse border border-border', className)}\n {...props}\n >\n {children}\n </table>\n </div>\n ),\n thead: ({ node, children, className, ...props }) => (\n <thead className={cn('bg-muted/50', className)} {...props}>\n {children}\n </thead>\n ),\n tbody: ({ node, children, className, ...props }) => (\n <tbody className={cn('divide-y divide-border', className)} {...props}>\n {children}\n </tbody>\n ),\n tr: ({ node, children, className, ...props }) => (\n <tr className={cn('border-border border-b', className)} {...props}>\n {children}\n </tr>\n ),\n th: ({ node, children, className, ...props }) => (\n <th\n className={cn('px-4 py-2 text-left font-semibold text-sm', className)}\n {...props}\n >\n {children}\n </th>\n ),\n td: ({ node, children, className, ...props }) => (\n <td className={cn('px-4 py-2 text-sm', className)} {...props}>\n {children}\n </td>\n ),\n blockquote: ({ node, children, className, ...props }) => (\n <blockquote\n className={cn(\n 'my-4 border-muted-foreground/30 border-l-4 pl-4 text-muted-foreground italic',\n className\n )}\n {...props}\n >\n {children}\n </blockquote>\n ),\n code: ({ node, className, ...props }) => {\n const inline = node?.position?.start.line === node?.position?.end.line;\n\n if (!inline) {\n return <code className={className} {...props} />;\n }\n\n return (\n <code\n className={cn(\n 'rounded bg-muted px-1.5 py-0.5 font-mono text-sm',\n className\n )}\n {...props}\n />\n );\n },\n pre: ({ node, className, children }) => {\n let language = 'javascript';\n\n if (typeof node?.properties?.className === 'string') {\n language = node.properties.className.replace('language-', '');\n }\n\n // Extract code content from children safely\n let code = '';\n if (\n isValidElement(children) &&\n children.props &&\n typeof children.props.children === 'string'\n ) {\n code = children.props.children;\n } else if (typeof children === 'string') {\n code = children;\n }\n\n return (\n <CodeBlock\n className={cn('my-4 h-auto', className)}\n code={code}\n language={language}\n >\n <CodeBlockCopyButton\n onCopy={() => console.log('Copied code to clipboard')}\n onError={() => console.error('Failed to copy code to clipboard')}\n />\n </CodeBlock>\n );\n },\n};\n\nexport const Response = memo(\n ({\n className,\n options,\n children,\n allowedImagePrefixes,\n allowedLinkPrefixes,\n defaultOrigin,\n parseIncompleteMarkdown: shouldParseIncompleteMarkdown = true,\n ...props\n }: ResponseProps) => {\n // Parse the children to remove incomplete markdown tokens if enabled\n const parsedChildren =\n typeof children === 'string' && shouldParseIncompleteMarkdown\n ? parseIncompleteMarkdown(children)\n : children;\n\n return (\n <div\n className={cn(\n 'size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0',\n className\n )}\n {...props}\n >\n <HardenedMarkdown\n allowedImagePrefixes={allowedImagePrefixes ?? ['*']}\n allowedLinkPrefixes={allowedLinkPrefixes ?? ['*']}\n components={components}\n defaultOrigin={defaultOrigin}\n rehypePlugins={[rehypeKatex]}\n remarkPlugins={[remarkGfm, remarkMath]}\n {...options}\n >\n {parsedChildren}\n </HardenedMarkdown>\n </div>\n );\n },\n (prevProps, nextProps) => prevProps.children === nextProps.children\n);\n\nResponse.displayName = 'Response';\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n info: \"border-info/50 text-info dark:border-info [&>svg]:text-info\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n));\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription };\n","\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","\"use client\";\n\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","\"use client\";\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"@/components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n","import { useEffect, useState, useContext } from \"react\";\nimport Uppy from \"@uppy/core\";\nimport AwsS3 from \"@uppy/aws-s3\";\nimport \"@uppy/core/dist/style.min.css\";\nimport \"@uppy/dashboard/dist/style.min.css\";\nimport '@uppy/core/dist/style.min.css';\nimport '@uppy/dashboard/dist/style.min.css';\nimport { getToken } from \"@/util/api\";\nimport { ConfigContext } from \"@/components/config-context\";\n\ninterface InitializeOptions {\n backend: string;\n callbacks?: {\n uploadSuccess?: (response: {\n file: any | null;\n url: string\n key: string\n }) => void;\n };\n fileKey?: string;\n fileKeyPrefix?: string;\n maxNumberOfFiles?: number;\n uppyOptions?: {\n id?: string;\n allowedFileTypes: string[];\n };\n useName?: boolean;\n}\n\nexport const initializeUppy = async (options: InitializeOptions): Promise<Uppy> => {\n if (!options.backend) {\n throw new Error(\"No backend set.\")\n }\n const { callbacks, maxNumberOfFiles, uppyOptions } = options || {};\n const { uploadSuccess } = callbacks || {};\n const { allowedFileTypes, id } = uppyOptions || {};\n const token = await getToken()\n\n const uppy = new Uppy({\n autoProceed: true,\n debug: false,\n id: id || \"uppy\",\n restrictions: {\n maxNumberOfFiles: maxNumberOfFiles || 5,\n allowedFileTypes: allowedFileTypes || [\".heic\", \".jpg\", \".jpeg\", \".png\", \".webp\", \".svg\"],\n }\n })\n .use(AwsS3, {\n id: \"Exulu\",\n endpoint: options.backend,\n headers: { \n Authorization: `Bearer ${token}`,\n Session: localStorage.getItem(\"session\") ?? \"\",\n }\n })\n .on(\"file-added\", async (file) => {\n console.debug(\"added\", file);\n })\n .on(\"upload-error\", (file, error) => {\n if (!file?.id) {\n return;\n }\n uppy.removeFile(file?.id);\n console.error(\"error\", error);\n })\n .on(\"upload-success\", (file, response) => {\n if (!response.uploadURL) {\n return;\n }\n if (uploadSuccess) {\n console.log(\"response\", response)\n uploadSuccess({\n file: file,\n key: response.uploadURL.split(\"/\").pop() || \"\",\n url: response.uploadURL,\n });\n }\n });\n\n return uppy;\n};\n\nfunction useUppy(options: InitializeOptions, deps: any[] = []) {\n const configContext = useContext(ConfigContext);\n const [uppy, setUppy] = useState<Uppy | undefined>(undefined);\n useEffect(() => {\n const initUppy = async () => {\n const uppyInstance = await initializeUppy({\n ...options,\n backend: configContext?.backend || \"\",\n });\n setUppy(uppyInstance);\n };\n initUppy()\n return () => {\n if (uppy) {\n uppy.destroy();\n setUppy(undefined);\n }\n };\n }, [...deps]);\n\n return uppy;\n}\n\nexport default useUppy;\n","import useUppy from \"@/hooks/use-uppy\";\nimport { Dashboard } from '@uppy/react';\nimport { useContext, useEffect, useState } from \"react\"\nimport { X, File, ImageIcon, FileText, FilePlus, Download, LoaderIcon, FileWarning, Upload, PlusSquareIcon, EyeIcon, PlusIcon, ChevronRightIcon, ChevronLeftIcon } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport '@uppy/core/dist/style.min.css';\nimport '@uppy/dashboard/dist/style.min.css';\nimport { files, S3FileListOutput } from \"@/util/api\"\nimport { useTheme } from \"next-themes\";\nimport { ConfigContext } from \"./config-context\";\nimport { useQuery as useTanstackQuery, useMutation as useTanstackMutation } from \"@tanstack/react-query\";\nimport { Loading } from \"./ui/loading\";\nimport { allFileTypes } from \"@/types/models/agent\";\nimport { Input } from \"./ui/input\";\nimport { DoubleArrowLeftIcon } from \"@radix-ui/react-icons\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"./ui/card\";\nimport { Skeleton } from \"./ui/skeleton\";\n\nexport function FileDataCard({ s3key, children }: { s3key: string, children?: React.ReactNode }) {\n const { data, isLoading, error, refetch } = useTanstackQuery({\n queryKey: ['fileObject', s3key],\n queryFn: async () => {\n if (!s3key) {\n return null;\n }\n const result = await files.object(s3key);\n return result;\n },\n enabled: s3key !== undefined && s3key !== null,\n })\n\n useEffect(() => {\n if (s3key) {\n refetch();\n }\n }, [s3key]);\n\n if (!s3key) {\n return <Card>\n <CardContent className=\"p-3 flex\">\n <p className=\"text-sm text-muted-foreground m-auto\">No file selected</p>\n {children}\n </CardContent>\n </Card>;\n }\n\n // also filter out [bucket:name] from the key if [bucket:name] is present\n let name = s3key;\n let bucket = \"\";\n if (s3key.includes(\"[bucket:\")) {\n bucket = s3key.split(\"[bucket:\")[1]?.split(\"]\")[0] || \"\";\n name = s3key.split(\"[bucket:\")[1]?.split(\"]\")[0] || \"\";\n if (name?.length) {\n name = s3key.split(\"]\")[1] || \"\";\n }\n }\n // Get the part after _EXULU_\n name = name.split(\"_EXULU_\").pop() || \"\";\n\n return <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm max-w-[500px] truncate\">\n {name}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"pt-0\">\n {\n isLoading && (\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-2/3\" />\n </div>\n )\n }\n {!isLoading && data && (\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span className=\"capitalize\">\n {data?.ContentType.split(\"/\").pop()}\n {bucket && ` [Bucket: ${bucket}]`}\n </span>\n <span>{(data?.ContentLength / 1024 / 1024).toFixed(2)} MB</span>\n </div>\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span>Last modified: {new Date(data?.LastModified).toLocaleDateString(\"en-US\", { year: \"numeric\", month: \"long\", day: \"numeric\", hour: \"2-digit\", minute: \"2-digit\" })}</span>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n type=\"button\"\n className=\"h-7 px-2\"\n onClick={() => {\n files.download(s3key).then(async res => {\n console.log(\"res\", res);\n const json = await res.json()\n console.log(\"res\", json);\n const downloadUrl = json.url;\n window.open(downloadUrl, '_blank');\n return;\n })\n }}>\n <span className=\"mr-1 text-xs\">View</span>\n <Download className=\"h-3 w-3\" />\n </Button>\n </div>\n </div>\n )}\n {\n !isLoading && error && (\n <p className=\"text-xs text-muted-foreground\">{error.message}</p>\n )\n }\n {children}\n </CardContent>\n </Card>\n}\n\nexport default function UppyDashboard({ id, allowedFileTypes, dependencies, onConfirm, selectionLimit, buttonText }: {\n id: string,\n buttonText?: string,\n allowedFileTypes?: allFileTypes[],\n selectionLimit: number,\n dependencies: any[],\n onConfirm: (keys: string[]) => void\n}) {\n const [open, setOpen] = useState(false)\n return <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger asChild>\n <Button variant=\"outline\">\n {buttonText && (\n <span className=\"mr-2\">{buttonText}</span>\n )\n }\n <FilePlus className=\"h-4 w-4\" />\n </Button>\n </DialogTrigger>\n <DialogContent className=\"sm:max-w-[900px]\">\n <DialogHeader>\n <DialogTitle>File Gallery</DialogTitle>\n <DialogDescription>Browse your previously uploaded files or upload new ones.</DialogDescription>\n </DialogHeader>\n <FileGalleryAndUpload\n id={id}\n allowedFileTypes={allowedFileTypes}\n dependencies={dependencies}\n selectionLimit={selectionLimit}\n onConfirm={(data) => {\n onConfirm(data)\n setOpen(false)\n }}\n />\n </DialogContent>\n </Dialog>;\n}\n\nexport const FileGalleryAndUpload = ({ id, allowedFileTypes, dependencies, onConfirm, selectionLimit }: {\n id: string,\n allowedFileTypes?: allFileTypes[],\n dependencies: any[],\n selectionLimit: number,\n onConfirm: (keys: string[]) => void\n}) => {\n\n if (!allowedFileTypes) {\n allowedFileTypes = [\n '.png',\n '.jpg',\n '.jpeg',\n '.gif',\n '.webp',\n '.pdf',\n '.docx',\n '.xlsx',\n '.xls',\n '.csv',\n '.pptx',\n '.ppt',\n '.mp3',\n '.wav',\n '.m4a',\n '.mp4',\n '.mpeg',\n '.mp4',\n '.m4a',\n '.mp3',\n '.mpeg',\n '.wav'\n ]\n }\n\n const [search, setSearch] = useState<string | undefined>(undefined)\n const [previousContinuationToken, setPreviousContinuationToken] = useState<string | undefined>(undefined)\n const [currentContinuationToken, setCurrentContinuationToken] = useState<string | undefined>(undefined)\n const configContext = useContext(ConfigContext);\n const [selected, setSelected] = useState<string[]>([])\n\n const addSelected = (key: string) => {\n if (selected.includes(key)) {\n setSelected(selected.filter((s) => s !== key))\n return;\n }\n if (selectionLimit === 1) {\n setSelected([key])\n return;\n }\n if (selected.length >= selectionLimit) {\n return;\n }\n setSelected([...selected, key])\n }\n\n const deleteFile = useTanstackMutation({\n mutationFn: async ({ key }: { key: string }) => {\n await files.delete(key)\n refetch();\n return;\n }\n })\n\n const { data, isLoading: loading, error, refetch } = useTanstackQuery({\n queryKey: ['filesQuery', search, currentContinuationToken],\n staleTime: 30000,\n queryFn: async (): Promise<S3FileListOutput> => {\n return files.list({\n search,\n continuationToken: currentContinuationToken\n })\n },\n })\n\n console.log(\"!! data !!\", data)\n\n const { theme } = useTheme()\n const uppy = useUppy(\n {\n backend: configContext?.backend || \"\",\n uppyOptions: {\n id,\n allowedFileTypes\n },\n callbacks: {\n uploadSuccess: async (data) => {\n console.log(\"data\", data)\n /* \n We no longer create items automatically for files uploaded via uppy.\n const item = {\n name: data.file.name,\n type: data.file.type,\n rights_mode: \"private\",\n s3key: `${user?.id}/${data.key}`\n }\n await createItemMutation({ variables: { input: item } }) */\n },\n },\n maxNumberOfFiles: 10,\n },\n dependencies,\n );\n\n useEffect(() => {\n refetch();\n }, [search, currentContinuationToken]);\n\n // Loading state\n if (!uppy) {\n return null;\n }\n\n return <>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4\">\n {/* Left side - Gallery of previously uploaded files */}\n <div className=\"border rounded-lg p-4\">\n <h3 className=\"text-sm font-medium mb-3\">Previously Uploaded Files</h3>\n\n {/* search */}\n <Input\n placeholder=\"Search files...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"mb-3\"\n />\n <div className=\"flex items-center justify-between text-xs text-muted-foreground pb-2\">\n <span>{selected.length} / {selectionLimit} files selected</span>\n <span>Allowed file types: {allowedFileTypes?.map((type) => type).join(\", \")}</span>\n </div>\n <ScrollArea>\n {loading && (\n <div className=\"flex items-center justify-center h-full w-full grid grid-cols-2 sm:grid-cols-3 gap-3\">\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n </div>\n )}\n <div className=\"grid grid-cols-2 sm:grid-cols-3 gap-3\">\n {\n !loading && !data?.Contents?.length && (\n <div className=\"col-span-full flex flex-col items-center justify-center py-12 text-center\">\n <FileWarning className=\"h-12 w-12 text-muted-foreground/50 mb-3\" />\n <p className=\"text-sm font-medium text-muted-foreground\">Nothing to see here... yet!</p>\n <p className=\"text-xs text-muted-foreground/75 mt-1\">Upload some files to get started</p>\n </div>\n )\n }\n {data?.Contents?.map((item: S3FileListOutput[\"Contents\"][0]) => {\n return (\n <FileItem s3Key={item.Key} onSelect={addSelected} active={selected.some((s) => s === item.Key)} onRemove={() => {\n deleteFile.mutate({\n key: item.Key\n })\n }} disabled={!allowedFileTypes ? false : !allowedFileTypes?.some((type) => item.Key.endsWith(type))} />\n )\n })}\n </div>\n\n <div className=\"flex items-center space-x-6 lg:space-x-8 pt-3\">\n <div className=\"flex items-center space-x-2\">\n <Button\n variant=\"outline\"\n className=\"hidden size-8 p-0 lg:flex\"\n onClick={() => {\n setCurrentContinuationToken(undefined)\n }}\n disabled={\n !currentContinuationToken ||\n loading\n }\n >\n <span className=\"sr-only\">Go to first page</span>\n <DoubleArrowLeftIcon className=\"size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"size-8 p-0\"\n onClick={() => {\n setCurrentContinuationToken(previousContinuationToken)\n }}\n disabled={\n !currentContinuationToken ||\n loading\n }\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"size-8 p-0\"\n onClick={() => {\n setPreviousContinuationToken(currentContinuationToken)\n setCurrentContinuationToken(data?.NextContinuationToken)\n }}\n disabled={\n !data?.NextContinuationToken ||\n loading\n }>\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n </div>\n </div>\n </ScrollArea>\n </div>\n {/* Right side - Upload area */}\n <div className=\"border rounded-lg p-4\">\n <h3 className=\"text-sm font-medium mb-3\">Upload New Files</h3>\n <Dashboard uppy={uppy} theme={theme === \"dark\" ? \"dark\" : \"light\"} />\n </div>\n </div>\n <div className=\"flex justify-end\">\n <Button variant=\"outline\" onClick={() => {\n onConfirm(selected)\n setSelected([])\n }}>\n Confirm\n </Button>\n </div>\n </>\n}\n\nexport const FileItem = ({ s3Key, onSelect, onRemove, active, disabled, addToContext }: {\n s3Key: string,\n onSelect?: (key: string) => void,\n onRemove?: (key: string) => void,\n active: boolean,\n disabled: boolean,\n addToContext?: (key: string) => void\n}) => {\n const getFileIcon = (s3Key: string) => {\n if (!s3Key) {\n return <FileText className=\"h-6 w-6 text-gray-500\" />\n }\n if (\n s3Key.toLowerCase().endsWith(\"jpg\") ||\n s3Key.toLowerCase().endsWith(\"jpeg\") ||\n s3Key.toLowerCase().endsWith(\"png\") ||\n s3Key.toLowerCase().endsWith(\"svg\")\n ) {\n return <ImageIcon className=\"h-6 w-6 text-blue-500\" />\n } else if (s3Key.endsWith(\"pdf\")) {\n return <File className=\"h-6 w-6 text-red-500\" />\n } else if (s3Key.endsWith(\"xls\") || s3Key.endsWith(\"xlsx\") || s3Key.endsWith(\"csv\")) {\n return <FileText className=\"h-6 w-6 text-green-500\" />\n } else if (s3Key.endsWith(\"ppt\") || s3Key.endsWith(\"pptx\")) {\n return <FileText className=\"h-6 w-6 text-orange-500\" />\n } else {\n return <FileText className=\"h-6 w-6 text-gray-500\" />\n }\n }\n\n return (\n <div\n key={s3Key}\n className={`${disabled ? 'opacity-50' : ''} group relative rounded-lg p-2 hover:bg-muted transition-colors cursor-pointer ${active ? 'border border-purple-500' : 'border'}`}\n onClick={() => {\n if (!disabled && onSelect) {\n onSelect(s3Key)\n }\n }}>\n <div className=\"aspect-square relative mb-2 bg-muted/50 rounded-md overflow-hidden flex items-center justify-center\">\n {(\n s3Key && (\n s3Key.toLowerCase().endsWith(\"jpg\") ||\n s3Key.toLowerCase().endsWith(\"jpeg\") ||\n s3Key.toLowerCase().endsWith(\"png\") ||\n s3Key.toLowerCase().endsWith(\"svg\")\n )\n ) ? (\n <SecureImageRenderComponent fileKey={s3Key} />\n ) : (\n <div className=\"flex flex-col items-center justify-center h-full\">\n {getFileIcon(s3Key)}\n <span className=\"text-xs text-muted-foreground mt-1 text-center\">{s3Key ? s3Key.split(\"_EXULU_\").pop() : s3Key}</span>\n </div>\n )}\n </div>\n <p className=\"text-xs truncate\">{s3Key ? s3Key.split(\"_EXULU_\").pop() : s3Key}</p>\n <div className=\"opacity-0 group-hover:opacity-100 flex absolute top-1 right-1\">\n\n {addToContext && (\n <Button variant=\"ghost\" size=\"icon\" type=\"button\" className=\"h-6 w-6 bg-background/80 hover:bg-background\" onClick={() => {\n addToContext(s3Key)\n }}>\n <PlusIcon className=\"h-3 w-3\" />\n <span className=\"sr-only\">Add</span>\n </Button>\n )}\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n type=\"button\"\n className=\"h-6 w-6 bg-background/80 hover:bg-background\"\n onClick={() => {\n files.download(s3Key).then(async res => {\n console.log(\"res\", res);\n const json = await res.json()\n console.log(\"res\", json);\n const downloadUrl = json.url;\n window.open(downloadUrl, '_blank');\n return;\n })\n }}>\n <Download className=\"h-3 w-3\" />\n <span className=\"sr-only\">View</span>\n </Button>\n\n {onRemove && (\n <Button\n onClick={(e) => {\n e.stopPropagation()\n onRemove(s3Key)\n }}\n variant=\"ghost\"\n type=\"button\"\n size=\"icon\"\n className=\"h-6 w-6 opacity-0 group-hover:opacity-100 bg-background/80 hover:bg-background ml-1\">\n <X className=\"h-3 w-3\" />\n <span className=\"sr-only\">Remove</span>\n </Button>\n )}\n </div>\n </div>\n )\n}\n\nlet signedUrlCache: {\n [key: string]: {\n url: string;\n expiresAt: number;\n }\n} = {};\n\nexport const getPresignedUrl = async (fileKey: string) => {\n if (signedUrlCache[fileKey]) {\n if (signedUrlCache[fileKey].expiresAt < Date.now()) {\n delete signedUrlCache[fileKey];\n } else {\n return signedUrlCache[fileKey].url;\n }\n }\n const response = await files.download(fileKey)\n const json = await response.json();\n console.log(\"json\", json)\n signedUrlCache[fileKey] = {\n url: json.url,\n expiresAt: Date.now() + 60 * 1000, // 1 minute\n }\n return json.url;\n}\n\nconst SecureImageRenderComponent = ({ fileKey }: { fileKey: string }) => {\n // Gets a signed key to show the image\n console.log(\"key\", fileKey)\n const query = useTanstackQuery({\n queryKey: ['imageQuery', fileKey],\n staleTime: 30000,\n queryFn: async () => {\n return getPresignedUrl(fileKey)\n },\n })\n\n if (query.isLoading) {\n return <div><LoaderIcon /></div>\n }\n\n if (!query.isLoading && !query.data) {\n return <div><FileWarning /></div>\n }\n\n return (<img\n src={query.data}\n alt={fileKey}\n className=\"object-cover w-full h-full\"\n />)\n\n}"],"names":["CodeBlockContext","createContext","code","CodeBlock","language","showLineNumbers","className","children","props","param","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","Provider","value","div","cn","jsxs","SyntaxHighlighter","codeTagProps","customStyle","margin","padding","fontSize","background","color","lineNumberStyle","paddingRight","minWidth","style","oneLight","oneDark","CodeBlockCopyButton","onCopy","onError","timeout","isCopied","setIsCopied","useState","useContext","copyToClipboard","navigator","clipboard","writeText","setTimeout","error","Icon","CheckIcon","CopyIcon","Button","onClick","size","variant","HardenedMarkdown","hardenReactMarkdown","ReactMarkdown","components","ol","node","li","ul","hr","strong","span","a","rel","target","h1","h2","h3","h4","h5","h6","table","thead","tbody","tr","th","td","blockquote","position","start","line","end","pre","properties","replace","isValidElement","console","log","Response","memo","options","allowedImagePrefixes","allowedLinkPrefixes","defaultOrigin","parseIncompleteMarkdown","shouldParseIncompleteMarkdown","parsedChildren","text","result","linkMatch","match","startIndex","lastIndexOf","substring","asteriskPairs","length","concat","underscorePairs","singleAsterisks","split","reduce","acc","char","index","prevChar","nextChar","singleUnderscores","includes","singleBacktickCount","i","isTripleStart","isTripleMiddle","isTripleEnd","tildePairs","rehypePlugins","rehypeKatex","remarkPlugins","remarkGfm","remarkMath","prevProps","nextProps","displayName","alertVariants","cva","variants","default","destructive","info","defaultVariants","Alert","React","ref","role","AlertTitle","AlertDescription","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsContent","count","toastTimeouts","Map","addToRemoveQueue","has","toastId","delete","dispatch","type","set","reducer","state","action","toasts","toast","slice","map","t","id","forEach","undefined","open","filter","listeners","memoryState","listener","Number","MAX_SAFE_INTEGER","toString","dismiss","onOpenChange","update","useToast","setState","push","indexOf","splice","initializeUppy","localStorage","backend","callbacks","maxNumberOfFiles","uppyOptions","uploadSuccess","allowedFileTypes","token","getToken","uppy","Uppy","autoProceed","debug","restrictions","use","AwsS3","endpoint","headers","Authorization","Session","getItem","on","file","removeFile","response","uploadURL","key","pop","url","use_uppy","deps","configContext","ConfigContext","setUppy","useEffect","initUppy","destroy","FileDataCard","s3key","data","isLoading","refetch","useTanstackQuery","queryKey","queryFn","files","object","enabled","jsx_runtime","Card","CardContent","p","name","bucket","CardHeader","CardTitle","Skeleton","ContentType","ContentLength","toFixed","Date","LastModified","toLocaleDateString","year","month","day","hour","minute","download","then","res","json","downloadUrl","window","Download","message","UppyDashboard","dependencies","onConfirm","selectionLimit","buttonText","setOpen","Dialog","DialogTrigger","asChild","FilePlus","DialogContent","DialogHeader","DialogTitle","DialogDescription","FileGalleryAndUpload","search","setSearch","previousContinuationToken","setPreviousContinuationToken","currentContinuationToken","setCurrentContinuationToken","selected","setSelected","addSelected","s","deleteFile","useTanstackMutation","mutationFn","loading","staleTime","list","continuationToken","theme","useTheme","useUppy","Fragment","Input","placeholder","onChange","e","join","ScrollArea","Contents","FileWarning","FileItem","s3Key","item","Key","onSelect","active","some","onRemove","mutate","disabled","endsWith","DoubleArrowLeftIcon","ChevronLeftIcon","NextContinuationToken","ChevronRightIcon","Dashboard","addToContext","toLowerCase","SecureImageRenderComponent","fileKey","ImageIcon","File","FileText","PlusIcon","stopPropagation","X","signedUrlCache","getPresignedUrl","expiresAt","now","query","LoaderIcon","img","src","alt"],"sourceRoot":""}