@mdxui/do 4.0.0 → 4.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/index.d.ts +32 -186
- package/dist/app/index.js +19 -11
- package/dist/auth/index.d.ts +48 -0
- package/dist/auth/index.js +4 -0
- package/dist/{breadcrumbs-C9Qn3S7d.d.ts → breadcrumbs-DltlCiHt.d.ts} +3 -3
- package/dist/chunk-2FWXT4HH.js +576 -0
- package/dist/chunk-2FWXT4HH.js.map +1 -0
- package/dist/chunk-5PC6U46L.js +604 -0
- package/dist/chunk-5PC6U46L.js.map +1 -0
- package/dist/chunk-63VCRTDQ.js +2505 -0
- package/dist/chunk-63VCRTDQ.js.map +1 -0
- package/dist/chunk-7J3RSIG4.js +178 -0
- package/dist/chunk-7J3RSIG4.js.map +1 -0
- package/dist/chunk-7QCTRNEJ.js +173 -0
- package/dist/chunk-7QCTRNEJ.js.map +1 -0
- package/dist/chunk-7TFHUKS7.js +66 -0
- package/dist/chunk-7TFHUKS7.js.map +1 -0
- package/dist/{chunk-LJIWB7KE.js → chunk-BU5HMHGQ.js} +3 -3
- package/dist/chunk-BU5HMHGQ.js.map +1 -0
- package/dist/{chunk-GGO5GW72.js → chunk-BZURBNFD.js} +305 -51
- package/dist/chunk-BZURBNFD.js.map +1 -0
- package/dist/{chunk-NA652ART.js → chunk-FM2RTAHV.js} +5 -65
- package/dist/chunk-FM2RTAHV.js.map +1 -0
- package/dist/{chunk-WMNT4OIE.js → chunk-HC4PBXV4.js} +131 -58
- package/dist/chunk-HC4PBXV4.js.map +1 -0
- package/dist/{chunk-Y52IEYVM.js → chunk-JPZ6RZJE.js} +78 -45
- package/dist/chunk-JPZ6RZJE.js.map +1 -0
- package/dist/{chunk-OVLO7UOH.js → chunk-KLN5OTQH.js} +168 -361
- package/dist/chunk-KLN5OTQH.js.map +1 -0
- package/dist/chunk-LCYBQR35.js +79 -0
- package/dist/chunk-LCYBQR35.js.map +1 -0
- package/dist/chunk-PJYGRD7N.js +216 -0
- package/dist/chunk-PJYGRD7N.js.map +1 -0
- package/dist/chunk-QEXY4FZV.js +292 -0
- package/dist/chunk-QEXY4FZV.js.map +1 -0
- package/dist/chunk-SX4IIE2R.js +53 -0
- package/dist/chunk-SX4IIE2R.js.map +1 -0
- package/dist/chunk-UCWMSKCW.js +901 -0
- package/dist/chunk-UCWMSKCW.js.map +1 -0
- package/dist/{chunk-5SHZZC7L.js → chunk-WC6SFBAF.js} +59 -6
- package/dist/chunk-WC6SFBAF.js.map +1 -0
- package/dist/chunk-WIKU77ZY.js +18 -0
- package/dist/chunk-WIKU77ZY.js.map +1 -0
- package/dist/chunk-X3AWNFBF.js +47 -0
- package/dist/chunk-X3AWNFBF.js.map +1 -0
- package/dist/chunk-ZZTQGMLX.js +23 -0
- package/dist/chunk-ZZTQGMLX.js.map +1 -0
- package/dist/{lib → client}/index.d.ts +97 -345
- package/dist/client/index.js +3 -0
- package/dist/common-DW_JM2dW.d.ts +454 -0
- package/dist/components/index.d.ts +11 -2
- package/dist/components/index.js +8 -3
- package/dist/{config-CxvpD8Y6.d.ts → config-DB14_LhF.d.ts} +1 -1
- package/dist/{do-D27i5bU0.d.ts → do-D37hbmL9.d.ts} +6 -14
- package/dist/dotdo-client-2DkwXHM2.d.ts +344 -0
- package/dist/errors-BOY11CJs.d.ts +373 -0
- package/dist/features/data-browser/index.d.ts +51 -0
- package/dist/features/data-browser/index.js +12 -0
- package/dist/features/data-browser/index.js.map +1 -0
- package/dist/features/data-grid/index.d.ts +22 -0
- package/dist/features/data-grid/index.js +12 -0
- package/dist/features/data-grid/index.js.map +1 -0
- package/dist/features/document-editor/index.d.ts +26 -0
- package/dist/features/document-editor/index.js +12 -0
- package/dist/features/document-editor/index.js.map +1 -0
- package/dist/features/function-editor/index.d.ts +215 -0
- package/dist/features/function-editor/index.js +7 -0
- package/dist/features/function-editor/index.js.map +1 -0
- package/dist/hooks/index.d.ts +64 -7
- package/dist/hooks/index.js +8 -7
- package/dist/hooks/things/index.d.ts +5 -297
- package/dist/hooks/things/index.js +6 -6
- package/dist/index-C0m9UI6W.d.ts +444 -0
- package/dist/index.d.ts +42 -32
- package/dist/index.js +21 -13
- package/dist/providers/index.d.ts +16 -28
- package/dist/providers/index.js +3 -3
- package/dist/schemas/index.d.ts +4551 -109
- package/dist/schemas/index.js +2 -260
- package/dist/schemas/index.js.map +1 -1
- package/dist/shell/index.d.ts +92 -0
- package/dist/shell/index.js +6 -0
- package/dist/shell/index.js.map +1 -0
- package/dist/{thing-BF25aUtJ.d.ts → thing-Dc3AE2XI.d.ts} +22 -22
- package/dist/thing-adapters-aMjF0h9u.d.ts +1214 -0
- package/dist/types/index.d.ts +954 -7521
- package/dist/types/index.js +2 -2
- package/dist/ui-filters-BvrjMP_U.d.ts +108 -0
- package/dist/{errors-DratdVIz.d.ts → utils/index.d.ts} +38 -77
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist-app/assets/index-DWX3479M.js +7 -0
- package/dist-app/assets/index-DWX3479M.js.map +1 -0
- package/dist-app/assets/main-BptePr_C.js +318 -0
- package/dist-app/assets/main-BptePr_C.js.map +1 -0
- package/dist-app/assets/main-CS9jgKzj.css +1 -0
- package/dist-app/index.html +38 -0
- package/package.json +32 -19
- package/dist/agents-2_r9e9i7.d.ts +0 -1043
- package/dist/capnweb-client-Bq78FtEA.d.ts +0 -229
- package/dist/chunk-3XKYQRXY.js +0 -192
- package/dist/chunk-3XKYQRXY.js.map +0 -1
- package/dist/chunk-4KXVN3EQ.js +0 -56
- package/dist/chunk-4KXVN3EQ.js.map +0 -1
- package/dist/chunk-5SHZZC7L.js.map +0 -1
- package/dist/chunk-7UFINK3Q.js +0 -1994
- package/dist/chunk-7UFINK3Q.js.map +0 -1
- package/dist/chunk-GGO5GW72.js.map +0 -1
- package/dist/chunk-JJLAES6W.js +0 -76
- package/dist/chunk-JJLAES6W.js.map +0 -1
- package/dist/chunk-KT52UU3U.js +0 -985
- package/dist/chunk-KT52UU3U.js.map +0 -1
- package/dist/chunk-LJIWB7KE.js.map +0 -1
- package/dist/chunk-NA652ART.js.map +0 -1
- package/dist/chunk-OVLO7UOH.js.map +0 -1
- package/dist/chunk-VRLUXCLD.js +0 -31
- package/dist/chunk-VRLUXCLD.js.map +0 -1
- package/dist/chunk-WMNT4OIE.js.map +0 -1
- package/dist/chunk-Y52IEYVM.js.map +0 -1
- package/dist/lib/index.js +0 -6
- package/dist/query-keys-CZNFikIi.d.ts +0 -153
- package/dist/views/index.d.ts +0 -131
- package/dist/views/index.js +0 -11
- /package/dist/{lib → auth}/index.js.map +0 -0
- /package/dist/{views → client}/index.js.map +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/features/data-grid/DataGridView.tsx"],"names":["schema"],"mappings":"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","file":"chunk-2FWXT4HH.js","sourcesContent":["'use client'\n\n/**\n * DataGridView\n *\n * Spreadsheet-style editing with schema-driven columns.\n * Uses @mdxui/admin database-editor components.\n *\n * Matches the full-experience pattern from @mdxui/admin stories.\n */\n\nimport * as React from 'react'\nimport {\n DatabaseGrid,\n DatabaseSidebar,\n TableEditorToolbar,\n QueryView,\n FormatView,\n useEditHistory,\n applyFilters,\n ColumnEditorPanel,\n TableCreatorPanel,\n type TableColumn,\n type NewTableDefinition,\n type DatabaseColumnDef,\n type DatabaseSchema,\n type DataGridViewMode,\n type RefreshStatus,\n type RefreshInterval,\n type ExportFormat,\n type FilterCondition,\n type ViewFormat,\n} from '@mdxui/admin'\nimport { Toaster } from '@mdxui/primitives'\nimport { toast } from 'sonner'\nimport { cn } from '../../utils'\nimport { useDO } from '../../providers/do-provider'\nimport { useThings, useTypes, useNamespaces } from '../../hooks'\nimport type { Thing, ThingFilter } from '../../types'\n\n\nexport interface DataGridViewProps {\n /** Initial namespace */\n initialNamespace?: string\n /** Initial type */\n initialType?: string\n /** Read-only mode */\n readOnly?: boolean\n /** Callback when a row is selected */\n onRowSelect?: (thing: Thing | null) => void\n /** Custom className */\n className?: string\n}\n\n\n/**\n * Infer column data type from value\n */\nfunction inferDataType(value: unknown): DatabaseColumnDef['dataType'] {\n if (value === null || value === undefined) return 'text'\n if (typeof value === 'boolean') return 'boolean'\n if (typeof value === 'number') return 'number'\n if (value instanceof Date) return 'date'\n if (typeof value === 'string') {\n if (/^\\d{4}-\\d{2}-\\d{2}/.test(value)) return 'date'\n if (value.includes('@')) return 'email'\n }\n if (typeof value === 'object') return 'json'\n return 'text'\n}\n\n/**\n * Generate columns from Thing data\n */\nfunction generateColumns(things: Thing[]): DatabaseColumnDef[] {\n const columns: DatabaseColumnDef[] = [\n { accessorKey: 'id', header: 'ID', dataType: 'text', isPrimaryKey: true, editable: false },\n { accessorKey: 'name', header: 'Name', dataType: 'text' },\n { accessorKey: 'createdAt', header: 'Created', dataType: 'date', editable: false },\n { accessorKey: 'updatedAt', header: 'Updated', dataType: 'date', editable: false },\n ]\n\n // Collect all data keys from things with their types\n const dataKeys = new Map<string, DatabaseColumnDef['dataType']>()\n things.forEach((thing) => {\n if (thing.data && typeof thing.data === 'object') {\n Object.entries(thing.data).forEach(([key, value]) => {\n if (!key.startsWith('@') && !dataKeys.has(key)) {\n dataKeys.set(key, inferDataType(value))\n }\n })\n }\n })\n\n // Add data columns\n dataKeys.forEach((dataType, key) => {\n columns.push({\n accessorKey: key,\n header: key.charAt(0).toUpperCase() + key.slice(1),\n dataType,\n })\n })\n\n return columns\n}\n\n/**\n * Convert Thing to grid row format\n */\nfunction thingToRow(thing: Thing): Record<string, unknown> {\n return {\n id: thing.id,\n _ns: thing.ns,\n _type: thing.type,\n name: thing.name,\n createdAt: thing.createdAt,\n updatedAt: thing.updatedAt,\n ...thing.data,\n }\n}\n\n\nexport function DataGridView({\n initialNamespace,\n initialType,\n readOnly = false,\n onRowSelect: _onRowSelect,\n className,\n}: DataGridViewProps) {\n const { namespace: contextNamespace, client } = useDO()\n\n // State\n const [selectedNamespace, setSelectedNamespace] = React.useState(\n initialNamespace ?? contextNamespace\n )\n const [selectedType, setSelectedType] = React.useState<string | undefined>(initialType)\n const [selectedTable, setSelectedTable] = React.useState<string>(\n `${selectedNamespace}.${initialType ?? ''}`\n )\n const [sidebarCollapsed, setSidebarCollapsed] = React.useState(false)\n const [viewMode, setViewMode] = React.useState<DataGridViewMode>('table')\n const [formatViewFormat, _setFormatViewFormat] = React.useState<ViewFormat>('json')\n const [selectedRows, setSelectedRows] = React.useState<string[]>([])\n const [filters, setFilters] = React.useState<FilterCondition[]>([])\n const [hiddenColumns, setHiddenColumns] = React.useState<Set<string>>(new Set())\n\n // Refresh state\n const [refreshStatus, setRefreshStatus] = React.useState<RefreshStatus>('idle')\n const [autoRefreshEnabled, setAutoRefreshEnabled] = React.useState(false)\n const [autoRefreshInterval, setAutoRefreshInterval] = React.useState<RefreshInterval>(30)\n const [lastRefreshTime, setLastRefreshTime] = React.useState<Date | null>(null)\n\n // Panel states\n const [columnEditorOpen, setColumnEditorOpen] = React.useState(false)\n const [tableCreatorOpen, setTableCreatorOpen] = React.useState(false)\n const [editingColumn, setEditingColumn] = React.useState<TableColumn | undefined>()\n\n // Grid actions ref for triggering row insertion from toolbar\n const gridActionsRef = React.useRef<{ startNewRow: () => void } | null>(null)\n\n // Data state for editing\n const [localData, setLocalData] = React.useState<Record<string, unknown>[]>([])\n\n // Data fetching\n const { data: namespaces } = useNamespaces()\n const { data: types } = useTypes({ ns: selectedNamespace })\n\n // Build filter\n const filter: ThingFilter = React.useMemo(() => {\n const f: ThingFilter = { ns: selectedNamespace }\n if (selectedType) f.type = selectedType\n return f\n }, [selectedNamespace, selectedType])\n\n const { data: thingsResult, isLoading, refetch } = useThings(filter)\n\n // Sync local data with fetched data\n React.useEffect(() => {\n if (thingsResult?.data) {\n setLocalData(thingsResult.data.map(thingToRow))\n }\n }, [thingsResult])\n\n // Build schema structure for sidebar\n const schemas: DatabaseSchema[] = React.useMemo(() => {\n if (!namespaces || !types) return []\n\n return namespaces.map((ns) => ({\n name: ns.name,\n tables: types\n .filter((t) => t.namespace === ns.name)\n .map((t) => ({\n name: t.name,\n schema: ns.name,\n rowCount: 0, // We don't have row counts per type from the hook\n })),\n }))\n }, [namespaces, types])\n\n // Generate columns from data\n const columns = React.useMemo(() => {\n if (!thingsResult?.data || thingsResult.data.length === 0) {\n return [\n { accessorKey: 'id', header: 'ID', dataType: 'text' as const, isPrimaryKey: true, editable: false },\n { accessorKey: 'name', header: 'Name', dataType: 'text' as const },\n { accessorKey: 'createdAt', header: 'Created', dataType: 'date' as const },\n { accessorKey: 'updatedAt', header: 'Updated', dataType: 'date' as const },\n ]\n }\n return generateColumns(thingsResult.data)\n }, [thingsResult])\n\n // Visible columns (not hidden)\n const visibleColumns = React.useMemo(\n () => columns.filter((col) => !hiddenColumns.has(col.accessorKey)),\n [columns, hiddenColumns]\n )\n\n // Apply filters\n const filteredData = React.useMemo(\n () => applyFilters(localData, filters, columns),\n [localData, filters, columns]\n )\n\n // Edit history for undo/redo\n const {\n pushOperation,\n undo,\n redo,\n canUndo,\n canRedo,\n undoCount,\n redoCount,\n } = useEditHistory({\n onRedo: (operation) => {\n const { rowIndex, columnId, newValue } = operation\n setLocalData((prev) => {\n const newData = [...prev]\n newData[rowIndex] = { ...newData[rowIndex], [columnId]: newValue }\n return newData\n })\n },\n onUndo: (operation) => {\n const { rowIndex, columnId, oldValue } = operation\n setLocalData((prev) => {\n const newData = [...prev]\n newData[rowIndex] = { ...newData[rowIndex], [columnId]: oldValue }\n return newData\n })\n },\n })\n\n // Handlers\n const handleSelectTable = React.useCallback((schema: string, table: string) => {\n setSelectedNamespace(schema)\n setSelectedType(table)\n setSelectedTable(`${schema}.${table}`)\n setSelectedRows([])\n setFilters([])\n }, [])\n\n // Column editor handlers\n const handleAddColumn = React.useCallback(() => {\n setEditingColumn(undefined)\n setColumnEditorOpen(true)\n }, [])\n\n const handleSaveColumn = React.useCallback(\n async (column: TableColumn) => {\n if (!selectedType) return\n\n try {\n // Build SQL DDL\n const nullable = column.isNullable ? '' : 'NOT NULL'\n const defaultVal = column.defaultValue\n ? `DEFAULT ${column.isDefaultExpression ? column.defaultValue : `'${column.defaultValue}'`}`\n : ''\n const unique = column.isUnique ? 'UNIQUE' : ''\n\n const sql = editingColumn\n ? `ALTER TABLE ${selectedType} RENAME COLUMN ${editingColumn.name} TO ${column.name}`\n : `ALTER TABLE ${selectedType} ADD COLUMN ${column.name} ${column.dataType} ${nullable} ${defaultVal} ${unique}`\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n await (client as any).SQL.execute({ query: sql.trim() })\n\n setColumnEditorOpen(false)\n toast.success(`Column \"${column.name}\" ${editingColumn ? 'updated' : 'created'}`)\n await refetch()\n } catch (err) {\n toast.error(`Failed to save column: ${err instanceof Error ? err.message : 'Unknown error'}`)\n }\n },\n [selectedType, editingColumn, client, refetch]\n )\n\n const handleDeleteColumn = React.useCallback(async () => {\n if (!selectedType || !editingColumn) return\n\n try {\n // SQLite doesn't support DROP COLUMN easily, but we can try\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n await (client as any).SQL.execute({\n query: `ALTER TABLE ${selectedType} DROP COLUMN ${editingColumn.name}`,\n })\n setColumnEditorOpen(false)\n toast.success(`Column \"${editingColumn.name}\" deleted`)\n await refetch()\n } catch (err) {\n toast.error(`Failed to delete column: ${err instanceof Error ? err.message : 'Unknown error'}`)\n }\n }, [selectedType, editingColumn, client, refetch])\n\n // Table creator handler\n const handleCreateTable = React.useCallback(\n async (table: NewTableDefinition) => {\n try {\n // Build column definitions\n const columnDefs = table.columns\n .map((col) => {\n const nullable = col.isNullable ? '' : 'NOT NULL'\n const pk = col.isPrimaryKey ? 'PRIMARY KEY' : ''\n const defaultVal = col.defaultValue ? `DEFAULT '${col.defaultValue}'` : ''\n return `${col.name} ${col.dataType} ${pk} ${nullable} ${defaultVal}`.trim()\n })\n .join(', ')\n\n const sql = `CREATE TABLE ${table.name} (${columnDefs})`\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n await (client as any).SQL.execute({ query: sql })\n\n setTableCreatorOpen(false)\n toast.success(`Table \"${table.name}\" created`)\n // Refresh types list\n await refetch()\n } catch (err) {\n toast.error(`Failed to create table: ${err instanceof Error ? err.message : 'Unknown error'}`)\n }\n },\n [client, refetch]\n )\n\n const handleCellUpdate = React.useCallback(\n async (rowIndex: number, columnId: string, value: unknown) => {\n if (readOnly || !selectedType) return\n\n const row = localData[rowIndex]\n const oldValue = row?.[columnId]\n const rowId = row?.id as string\n\n // Optimistic local update\n pushOperation({ rowIndex, columnId, oldValue, newValue: value, type: 'cell_update' })\n\n try {\n // Persist via Thing.update\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n await (client as any).Thing.update({\n ns: selectedNamespace,\n type: selectedType,\n id: rowId,\n data: { [columnId]: value },\n })\n toast.success('Cell updated')\n } catch (err) {\n // Rollback on failure\n undo()\n toast.error(`Failed to save cell: ${err instanceof Error ? err.message : 'Unknown error'}`)\n }\n },\n [readOnly, selectedType, selectedNamespace, localData, pushOperation, undo, client]\n )\n\n const handleInsert = React.useCallback(\n async (newRow: Record<string, unknown>) => {\n if (readOnly || !selectedType) return\n\n try {\n // Extract name from row data, or generate a default\n const name = (newRow.name as string) || `New ${selectedType}`\n\n // Clean up data - remove null/undefined values and system fields\n // The backend will auto-generate id, createdAt, updatedAt\n const cleanData: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(newRow)) {\n // Skip system fields and null/undefined values\n if (['id', 'createdAt', 'updatedAt', '_ns', '_type'].includes(key)) continue\n if (value === null || value === undefined) continue\n cleanData[key] = value\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n await (client as any).Thing.create({\n ns: selectedNamespace,\n type: selectedType,\n name,\n data: cleanData,\n })\n await refetch()\n toast.success('Row added successfully')\n } catch (err) {\n console.error('[@mdxui/do] Failed to create row:', err)\n toast.error(`Failed to create row: ${err instanceof Error ? err.message : 'Unknown error'}`)\n }\n },\n [readOnly, selectedType, selectedNamespace, client, refetch]\n )\n\n const handleDeleteRows = React.useCallback(\n async (rowIds: string[]) => {\n if (readOnly || !selectedType) return\n\n try {\n await Promise.all(\n rowIds.map((id) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (client as any).Thing.delete({\n ns: selectedNamespace,\n type: selectedType,\n id,\n })\n )\n )\n setLocalData((prev) => prev.filter((row) => !rowIds.includes(String(row.id))))\n setSelectedRows([])\n toast.success(`${rowIds.length} row${rowIds.length > 1 ? 's' : ''} deleted`)\n } catch (err) {\n toast.error(`Failed to delete rows: ${err instanceof Error ? err.message : 'Unknown error'}`)\n }\n },\n [readOnly, selectedType, selectedNamespace, client]\n )\n\n const handleRefresh = React.useCallback(async () => {\n setRefreshStatus('refreshing')\n try {\n await refetch()\n setRefreshStatus('success')\n setLastRefreshTime(new Date())\n setTimeout(() => setRefreshStatus('idle'), 2000)\n } catch {\n setRefreshStatus('error')\n setTimeout(() => setRefreshStatus('idle'), 3000)\n }\n }, [refetch])\n\n const handleToggleColumnVisibility = React.useCallback((accessorKey: string) => {\n setHiddenColumns((prev) => {\n const next = new Set(prev)\n if (next.has(accessorKey)) {\n next.delete(accessorKey)\n } else {\n next.add(accessorKey)\n }\n return next\n })\n }, [])\n\n const handleExport = React.useCallback(\n (scope: 'visible' | 'filtered' | 'all', format: ExportFormat) => {\n const dataToExport =\n scope === 'all' ? localData : scope === 'filtered' ? filteredData : filteredData\n\n let content: string\n let mimeType: string\n let extension: string\n\n switch (format) {\n case 'json':\n content = JSON.stringify(dataToExport, null, 2)\n mimeType = 'application/json'\n extension = 'json'\n break\n case 'csv': {\n const headers = visibleColumns.map((c) => c.header).join(',')\n const rows = dataToExport.map((row) =>\n visibleColumns.map((c) => JSON.stringify(row[c.accessorKey] ?? '')).join(',')\n )\n content = [headers, ...rows].join('\\n')\n mimeType = 'text/csv'\n extension = 'csv'\n break\n }\n default:\n content = JSON.stringify(dataToExport, null, 2)\n mimeType = 'application/json'\n extension = 'json'\n }\n\n const blob = new Blob([content], { type: mimeType })\n const url = URL.createObjectURL(blob)\n const link = document.createElement('a')\n link.href = url\n link.download = `${selectedType ?? 'data'}-${scope}.${extension}`\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n URL.revokeObjectURL(url)\n },\n [localData, filteredData, visibleColumns, selectedType]\n )\n\n const handleQueryExecute = React.useCallback(\n async (query: string) => {\n const startTime = Date.now()\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = await (client as any).SQL.execute({ query })\n\n return {\n rows: result.rows,\n columns: result.columns.map((col: { name: string; type: string }) => ({\n name: col.name,\n type: col.type,\n })),\n rowsAffected: result.rowsAffected,\n executionTime: result.executionTimeMs ?? Date.now() - startTime,\n }\n } catch (err) {\n throw new Error(err instanceof Error ? err.message : 'Query execution failed')\n }\n },\n [client]\n )\n\n // Auto-collapse sidebar on medium screens\n React.useEffect(() => {\n const mediaQuery = window.matchMedia('(max-width: 768px)')\n const handleMediaChange = (e: MediaQueryListEvent | MediaQueryList) => {\n if (e.matches) {\n setSidebarCollapsed(true)\n }\n }\n handleMediaChange(mediaQuery)\n mediaQuery.addEventListener('change', handleMediaChange)\n return () => mediaQuery.removeEventListener('change', handleMediaChange)\n }, [])\n\n // Keyboard shortcuts for undo/redo\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key === 'z') {\n if (e.shiftKey) {\n e.preventDefault()\n redo()\n } else {\n e.preventDefault()\n undo()\n }\n }\n }\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [undo, redo])\n\n // Auto-refresh effect\n React.useEffect(() => {\n if (!autoRefreshEnabled) return\n\n const intervalMs = autoRefreshInterval * 1000\n const timer = setInterval(handleRefresh, intervalMs)\n\n return () => clearInterval(timer)\n }, [autoRefreshEnabled, autoRefreshInterval, handleRefresh])\n\n // Parse selected table\n const [schema, tableName] = selectedTable.split('.')\n\n return (\n <>\n <div className={cn('flex h-full overflow-x-auto bg-background', className)}>\n {/* Sidebar */}\n <DatabaseSidebar\n schemas={schemas}\n selectedTable={selectedTable}\n onSelectTable={handleSelectTable}\n onViewTable={(schema, table) => handleSelectTable(schema, table)}\n onDuplicateTable={async (_schema, table) => {\n try {\n // SQLite doesn't have DUPLICATE TABLE, need to do it manually\n const sql = `CREATE TABLE ${table}_copy AS SELECT * FROM ${table}`\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n await (client as any).SQL.execute({ query: sql })\n toast.success(`Table \"${table}\" duplicated as \"${table}_copy\"`)\n await refetch()\n } catch (err) {\n toast.error(`Failed to duplicate table: ${err instanceof Error ? err.message : 'Unknown error'}`)\n }\n }}\n onDeleteTable={async (_schema, table) => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n await (client as any).SQL.execute({ query: `DROP TABLE ${table}` })\n toast.success(`Table \"${table}\" deleted`)\n await refetch()\n } catch (err) {\n toast.error(`Failed to delete table: ${err instanceof Error ? err.message : 'Unknown error'}`)\n }\n }}\n onCreateTable={() => setTableCreatorOpen(true)}\n collapsed={sidebarCollapsed}\n onCollapsedChange={setSidebarCollapsed}\n className=\"shrink-0\"\n />\n\n {/* Main Content */}\n <div className=\"flex flex-1 flex-col overflow-hidden min-w-[320px]\">\n {/* Toolbar */}\n <TableEditorToolbar\n schema={schema}\n tableName={tableName || 'Select a type'}\n columns={columns}\n totalRowCount={localData.length}\n filteredRowCount={filteredData.length}\n visibleRowCount={filteredData.length}\n selectedRowIds={selectedRows}\n onClearSelection={() => setSelectedRows([])}\n onDeleteSelectedRows={handleDeleteRows}\n sidebarCollapsed={sidebarCollapsed}\n onSidebarCollapsedChange={setSidebarCollapsed}\n viewMode={viewMode}\n onViewModeChange={setViewMode}\n canUndo={canUndo}\n canRedo={canRedo}\n undoCount={undoCount}\n redoCount={redoCount}\n onUndo={undo}\n onRedo={redo}\n refreshStatus={refreshStatus}\n onRefresh={handleRefresh}\n autoRefreshEnabled={autoRefreshEnabled}\n onAutoRefreshEnabledChange={setAutoRefreshEnabled}\n autoRefreshInterval={autoRefreshInterval}\n onAutoRefreshIntervalChange={setAutoRefreshInterval}\n lastRefreshTime={lastRefreshTime}\n filters={filters}\n onFiltersChange={setFilters}\n hiddenColumns={hiddenColumns}\n onToggleColumnVisibility={handleToggleColumnVisibility}\n onInsertRow={() => gridActionsRef.current?.startNewRow()}\n onAddColumn={handleAddColumn}\n onExport={handleExport}\n />\n\n {/* Content Area */}\n {viewMode === 'table' ? (\n <div className=\"flex min-h-0 flex-1 flex-col p-2\">\n {isLoading ? (\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"h-8 w-8 animate-spin rounded-full border-4 border-primary border-t-transparent\" />\n <span className=\"text-sm text-muted-foreground\">Loading...</span>\n </div>\n </div>\n ) : !selectedType ? (\n <div className=\"flex items-center justify-center h-full text-muted-foreground\">\n Select a type from the sidebar to view data\n </div>\n ) : (\n <DatabaseGrid\n data={filteredData}\n columns={visibleColumns}\n onCellUpdate={handleCellUpdate}\n onInsert={handleInsert}\n onDeleteRows={handleDeleteRows}\n onViewRow={(rowId) => {\n // Cells are inline-editable, so just show row ID for reference\n toast.info(`Row ID: ${rowId}`)\n }}\n onDuplicateRow={async (_rowId, row) => {\n if (!selectedType) return\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { id, _ns, _type, name, ...data } = row\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n await (client as any).Thing.create({\n ns: selectedNamespace,\n type: selectedType,\n name: `${name || selectedType} (copy)`,\n data,\n })\n await refetch()\n toast.success('Row duplicated')\n } catch (err) {\n console.error('[@mdxui/do] Failed to duplicate row:', err)\n toast.error(`Failed to duplicate row: ${err instanceof Error ? err.message : 'Unknown error'}`)\n }\n }}\n onSelectionChange={setSelectedRows}\n onColumnReorder={(order) => {\n if (selectedType) {\n localStorage.setItem(\n `do-column-order-${selectedNamespace}-${selectedType}`,\n JSON.stringify(order)\n )\n }\n }}\n actionsRef={gridActionsRef}\n emptyMessage=\"No data matches the current filters\"\n className=\"h-full\"\n />\n )}\n </div>\n ) : viewMode === 'query' ? (\n <QueryView\n currentTable={tableName || ''}\n schema={schema}\n onExecute={handleQueryExecute}\n className=\"flex-1\"\n />\n ) : (\n <FormatView\n data={filteredData}\n columns={columns}\n format={formatViewFormat}\n className=\"flex-1\"\n />\n )}\n </div>\n </div>\n\n {/* Column Editor Panel */}\n <ColumnEditorPanel\n open={columnEditorOpen}\n onOpenChange={setColumnEditorOpen}\n column={editingColumn}\n referenceTables={\n types?.map((t) => ({\n name: t.name,\n columns: ['id', 'name', 'createdAt', 'updatedAt'],\n })) ?? []\n }\n onSave={handleSaveColumn}\n onDelete={editingColumn ? handleDeleteColumn : undefined}\n />\n\n {/* Table Creator Panel */}\n <TableCreatorPanel\n open={tableCreatorOpen}\n onOpenChange={setTableCreatorOpen}\n schemas={namespaces?.map((ns) => ns.name) ?? ['default']}\n onCreate={handleCreateTable}\n />\n\n <Toaster closeButton position=\"top-right\" />\n </>\n )\n}\n\nDataGridView.displayName = 'DataGridView'\n"]}
|