canvas/dist/db/index.mjs.map
2026-03-11 18:42:08 -07:00

1 line
No EOL
71 KiB
Text

{"version":3,"sources":["../../src/db/adapter.ts","../../src/db/supabase-adapter.ts","../../src/db/provider.tsx","../../src/utils/debug.ts","../../src/db/queries/nodes.ts","../../src/db/queries/edges.ts","../../src/db/hooks/keys.ts","../../src/db/hooks/useGraphNodes.ts","../../src/db/hooks/useGraphEdges.ts","../../src/db/hooks/useUpdateNode.ts","../../src/core/sync-store.ts","../../src/db/hooks/useCreateNode.ts","../../src/db/hooks/useDeleteNode.ts","../../src/db/hooks/useUpdateEdge.ts","../../src/db/hooks/useCreateEdge.ts","../../src/db/hooks/useDeleteEdge.ts"],"sourcesContent":["/**\n * Canvas Storage Adapter\n *\n * Backend-agnostic interface for persisting canvas data.\n * The default Supabase implementation lives in `./supabase-adapter.ts`.\n * Users can implement this interface for any backend (REST, GraphQL, localStorage, etc.).\n *\n * Note: The core canvas works WITHOUT any adapter —\n * use `onNodePersist` / `onEdgeCreate` callback props for simple cases.\n * The adapter is for users who want the full `CanvasDbProvider` experience\n * with a non-Supabase backend.\n */\n\nimport { atom } from 'jotai';\n\n// =============================================================================\n// Adapter Types\n// =============================================================================\n\n/** Type aliases for backend-agnostic naming */\n\n/** Change event for realtime subscriptions */\n\n// =============================================================================\n// Adapter Interface\n// =============================================================================\n\n/**\n * Storage adapter for canvas persistence.\n *\n * Implement this interface to use any backend with `CanvasDbProvider`.\n * All methods return Promises for async-first design.\n */\n\n// =============================================================================\n// In-Memory Adapter (for testing / local-only use)\n// =============================================================================\n\n/**\n * Simple in-memory adapter for testing and local-only canvases.\n * Data is lost on page reload.\n */\nexport class InMemoryStorageAdapter {\n nodes = new Map();\n edges = new Map();\n async fetchNodes(graphId) {\n return Array.from(this.nodes.values()).filter(n => n.graph_id === graphId);\n }\n async createNode(graphId, node) {\n const now = new Date().toISOString();\n const fullNode = {\n id: node.id ?? crypto.randomUUID(),\n graph_id: graphId,\n label: node.label ?? null,\n node_type: node.node_type ?? null,\n configuration: node.configuration ?? null,\n ui_properties: node.ui_properties ?? null,\n data: node.data ?? null,\n created_at: now,\n updated_at: now\n };\n this.nodes.set(fullNode.id, fullNode);\n return fullNode;\n }\n async updateNode(nodeId, updates) {\n const existing = this.nodes.get(nodeId);\n if (!existing) throw new Error(`Node ${nodeId} not found`);\n const updated = {\n ...existing,\n ...updates,\n updated_at: new Date().toISOString()\n };\n this.nodes.set(nodeId, updated);\n return updated;\n }\n async deleteNode(nodeId) {\n this.nodes.delete(nodeId);\n // Also delete connected edges\n for (const [edgeId, edge] of this.edges) {\n if (edge.source_node_id === nodeId || edge.target_node_id === nodeId) {\n this.edges.delete(edgeId);\n }\n }\n }\n async fetchEdges(graphId) {\n return Array.from(this.edges.values()).filter(e => e.graph_id === graphId);\n }\n async createEdge(graphId, edge) {\n const now = new Date().toISOString();\n const fullEdge = {\n id: edge.id ?? crypto.randomUUID(),\n graph_id: graphId,\n source_node_id: edge.source_node_id ?? '',\n target_node_id: edge.target_node_id ?? '',\n edge_type: edge.edge_type ?? null,\n filter_condition: edge.filter_condition ?? null,\n ui_properties: edge.ui_properties ?? null,\n data: edge.data ?? null,\n created_at: now,\n updated_at: now\n };\n this.edges.set(fullEdge.id, fullEdge);\n return fullEdge;\n }\n async updateEdge(edgeId, updates) {\n const existing = this.edges.get(edgeId);\n if (!existing) throw new Error(`Edge ${edgeId} not found`);\n const updated = {\n ...existing,\n ...updates,\n updated_at: new Date().toISOString()\n };\n this.edges.set(edgeId, updated);\n return updated;\n }\n async deleteEdge(edgeId) {\n this.edges.delete(edgeId);\n }\n\n // --- Batch Operations ---\n\n async createNodes(graphId, nodes) {\n return Promise.all(nodes.map(n => this.createNode(graphId, n)));\n }\n async deleteNodes(nodeIds) {\n for (const id of nodeIds) {\n await this.deleteNode(id);\n }\n }\n async createEdges(graphId, edges) {\n return Promise.all(edges.map(e => this.createEdge(graphId, e)));\n }\n async deleteEdges(edgeIds) {\n for (const id of edgeIds) {\n await this.deleteEdge(id);\n }\n }\n}\n\n// =============================================================================\n// Global Adapter Atom\n// =============================================================================\n\n/**\n * Global storage adapter atom.\n * Set by `CanvasDbProvider` so that any store/hook can access the adapter.\n */\nexport const storageAdapterAtom = atom(null);","/**\n * Supabase Storage Adapter\n *\n * Implements CanvasStorageAdapter using Supabase as the backend.\n * Wraps the existing query functions into the adapter interface.\n */\n\nexport class SupabaseStorageAdapter {\n constructor(client) {\n this.client = client;\n }\n\n /** Get the underlying Supabase client (for advanced use or backward compat) */\n getClient() {\n return this.client;\n }\n\n // --- Node Operations ---\n\n async fetchNodes(graphId) {\n const {\n data,\n error\n } = await this.client.from('nodes').select('*').eq('graph_id', graphId).order('created_at', {\n ascending: true\n });\n if (error) throw error;\n return data || [];\n }\n async createNode(graphId, node) {\n const {\n data,\n error\n } = await this.client.from('nodes').insert({\n graph_id: graphId,\n label: node.label ?? null,\n node_type: node.node_type ?? null,\n configuration: node.configuration ?? null,\n ui_properties: node.ui_properties ?? null,\n data: node.data ?? null\n }).select().single();\n if (error) throw error;\n return data;\n }\n async updateNode(nodeId, updates) {\n const {\n data,\n error\n } = await this.client.from('nodes').update({\n ...updates,\n updated_at: new Date().toISOString()\n }).eq('id', nodeId).select().single();\n if (error) throw error;\n return data;\n }\n async deleteNode(nodeId) {\n const {\n error\n } = await this.client.from('nodes').delete().eq('id', nodeId);\n if (error) throw error;\n }\n\n // --- Edge Operations ---\n\n async fetchEdges(graphId) {\n const {\n data,\n error\n } = await this.client.from('edges').select('*').eq('graph_id', graphId).order('created_at', {\n ascending: true\n });\n if (error) throw error;\n return data || [];\n }\n async createEdge(graphId, edge) {\n const {\n data,\n error\n } = await this.client.from('edges').insert({\n graph_id: graphId,\n source_node_id: edge.source_node_id ?? '',\n target_node_id: edge.target_node_id ?? '',\n edge_type: edge.edge_type ?? null,\n filter_condition: edge.filter_condition ?? null,\n ui_properties: edge.ui_properties ?? null,\n data: edge.data ?? null\n }).select().single();\n if (error) throw error;\n return data;\n }\n async updateEdge(edgeId, updates) {\n const {\n data,\n error\n } = await this.client.from('edges').update({\n ...updates,\n updated_at: new Date().toISOString()\n }).eq('id', edgeId).select().single();\n if (error) throw error;\n return data;\n }\n async deleteEdge(edgeId) {\n const {\n error\n } = await this.client.from('edges').delete().eq('id', edgeId);\n if (error) throw error;\n }\n\n // --- Realtime (optional) ---\n\n subscribe(graphId, onChange) {\n const channel = this.client.channel(`canvas-${graphId}`).on('postgres_changes', {\n event: '*',\n schema: 'public',\n table: 'nodes',\n filter: `graph_id=eq.${graphId}`\n }, payload => {\n onChange({\n type: payload.eventType,\n table: 'nodes',\n new: payload.new,\n old: payload.old\n });\n }).on('postgres_changes', {\n event: '*',\n schema: 'public',\n table: 'edges',\n filter: `graph_id=eq.${graphId}`\n }, payload => {\n onChange({\n type: payload.eventType,\n table: 'edges',\n new: payload.new,\n old: payload.old\n });\n }).subscribe();\n return () => {\n channel.unsubscribe();\n };\n }\n}","/**\n * Canvas DB Provider\n *\n * Provides a storage adapter to the canvas components.\n */\n\nimport React, { createContext, useContext, useEffect, useRef } from 'react';\nimport { useSetAtom, useAtomValue } from 'jotai';\nimport { storageAdapterAtom } from './adapter';\nconst AdapterContext = /*#__PURE__*/createContext(null);\n\n/**\n * Provider that makes a storage adapter available to canvas hooks and components.\n *\n * @example\n * ```tsx\n * <CanvasDbProvider adapter={new InMemoryStorageAdapter()}>\n * <Canvas ... />\n * </CanvasDbProvider>\n * ```\n */\nexport function CanvasDbProvider({\n adapter,\n children\n}) {\n const setAdapter = useSetAtom(storageAdapterAtom);\n const prevAdapterRef = useRef(null);\n const resolved = adapter === prevAdapterRef.current ? prevAdapterRef.current : adapter;\n prevAdapterRef.current = resolved;\n useEffect(() => {\n setAdapter(resolved);\n return () => setAdapter(null);\n }, [resolved, setAdapter]);\n return /*#__PURE__*/_jsx(AdapterContext, {\n value: resolved,\n children: children\n });\n}\n\n/**\n * Hook to access the current storage adapter\n */\nexport function useStorageAdapter() {\n const contextAdapter = useContext(AdapterContext);\n const atomAdapter = useAtomValue(storageAdapterAtom);\n const adapter = contextAdapter || atomAdapter;\n if (!adapter) {\n throw new Error(\"useStorageAdapter must be used within CanvasDbProvider\");\n }\n return adapter;\n}\n\n// =============================================================================\n// Internal Supabase helpers (used by db/hooks/* — NOT exported from db/index.ts)\n// =============================================================================\n\n/**\n * Raw Supabase client atom — used internally by Supabase-specific query hooks.\n * Not part of the public API. Use `useStorageAdapter()` for public consumption.\n */\nimport { atom, useAtomValue as useAtomVal } from 'jotai';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const supabaseClientAtom = atom(null);\n\n/**\n * Internal hook for db hooks that need the raw Supabase client.\n * Not part of the public API.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useSupabaseClient() {\n const client = useAtomVal(supabaseClientAtom);\n if (!client) {\n throw new Error(\"useSupabaseClient: no Supabase client available. Use CanvasDbProvider with a SupabaseStorageAdapter.\");\n }\n return client;\n}","/**\n * Debug utility for @blinksgg/canvas\n *\n * Uses the `debug` package with `canvas:*` namespaces.\n * Enable in browser: `localStorage.debug = 'canvas:*'`\n * Enable in Node: `DEBUG=canvas:* node ...`\n *\n * Log levels:\n * debug('message') — verbose trace (blue)\n * debug.warn('message') — warnings (yellow, always stderr)\n * debug.error('message') — errors (red, always stderr)\n */\n\nimport debugFactory from 'debug';\nconst NAMESPACE = 'canvas';\n/**\n * Create a debug logger for a specific module.\n *\n * @example\n * ```ts\n * const debug = createDebug('graph');\n * debug('loaded %d nodes', count); // canvas:graph\n * debug.warn('node %s not found', id); // canvas:graph:warn\n * debug.error('sync failed: %O', err); // canvas:graph:error\n * ```\n */\nexport function createDebug(module) {\n const base = debugFactory(`${NAMESPACE}:${module}`);\n const warn = debugFactory(`${NAMESPACE}:${module}:warn`);\n const error = debugFactory(`${NAMESPACE}:${module}:error`);\n\n // Warnings and errors always log (even without DEBUG=canvas:*)\n warn.enabled = true;\n error.enabled = true;\n\n // Color hints: warn = yellow, error = red\n warn.log = console.warn.bind(console);\n error.log = console.error.bind(console);\n\n // Build the debugger with warn/error sub-loggers\n const debugFn = Object.assign(base, {\n warn,\n error\n });\n return debugFn;\n}\n\n// Pre-configured debug loggers\nexport const debug = {\n graph: {\n node: createDebug('graph:node'),\n edge: createDebug('graph:edge'),\n sync: createDebug('graph:sync')\n },\n ui: {\n selection: createDebug('ui:selection'),\n drag: createDebug('ui:drag'),\n resize: createDebug('ui:resize')\n },\n sync: {\n status: createDebug('sync:status'),\n mutations: createDebug('sync:mutations'),\n queue: createDebug('sync:queue')\n },\n viewport: createDebug('viewport')\n};","/**\n * Node query functions\n */\n\nimport { createDebug } from '../../utils/debug';\nconst debug = createDebug('db:nodes');\n\n/**\n * Fetch all nodes for a graph\n */\nexport async function fetchGraphNodes(supabase, graphId) {\n if (!graphId) {\n throw new Error('graphId is required to fetch nodes');\n }\n const {\n data,\n error\n } = await supabase.from('nodes').select('*').eq('graph_id', graphId).order('created_at', {\n ascending: true\n });\n if (error) {\n debug.error('Error fetching nodes for graph %s: %O', graphId, error);\n throw error;\n }\n return data || [];\n}\n\n/**\n * Fetch a single node by ID\n */\nexport async function fetchGraphNode(supabase, nodeId) {\n if (!nodeId) {\n throw new Error('nodeId is required to fetch node');\n }\n const {\n data,\n error\n } = await supabase.from('nodes').select('*').eq('id', nodeId).single();\n if (error) {\n if (error.code === 'PGRST116') {\n return null; // Not found\n }\n debug.error('Error fetching node %s: %O', nodeId, error);\n throw error;\n }\n return data;\n}\n\n/**\n * Create a new node\n */\nexport async function createGraphNode(supabase, node) {\n const {\n data,\n error\n } = await supabase.from('nodes').insert(node).select().single();\n if (error) {\n debug.error('Error creating node: %O', error);\n throw error;\n }\n return data;\n}\n\n/**\n * Update a node\n */\nexport async function updateGraphNode(supabase, nodeId, updates) {\n const {\n data,\n error\n } = await supabase.from('nodes').update({\n ...updates,\n updated_at: new Date().toISOString()\n }).eq('id', nodeId).select().single();\n if (error) {\n debug.error('Error updating node %s: %O', nodeId, error);\n throw error;\n }\n return data;\n}\n\n/**\n * Delete a node\n */\nexport async function deleteGraphNode(supabase, nodeId) {\n const {\n error\n } = await supabase.from('nodes').delete().eq('id', nodeId);\n if (error) {\n debug.error('Error deleting node %s: %O', nodeId, error);\n throw error;\n }\n}","/**\n * Edge query functions\n */\n\nimport { createDebug } from '../../utils/debug';\nconst debug = createDebug('db:edges');\n\n/**\n * Fetch all edges for a graph\n */\nexport async function fetchGraphEdges(supabase, graphId) {\n if (!graphId) {\n throw new Error('graphId is required to fetch edges');\n }\n const {\n data,\n error\n } = await supabase.from('edges').select('*').eq('graph_id', graphId).order('created_at', {\n ascending: true\n });\n if (error) {\n debug.error('Error fetching edges for graph %s: %O', graphId, error);\n throw error;\n }\n return data || [];\n}\n\n/**\n * Create a new edge\n */\nexport async function createGraphEdge(supabase, edge) {\n const {\n data,\n error\n } = await supabase.from('edges').insert(edge).select().single();\n if (error) {\n debug.error('Error creating edge: %O', error);\n throw error;\n }\n return data;\n}\n\n/**\n * Update an edge\n */\nexport async function updateGraphEdge(supabase, edgeId, updates) {\n const {\n data,\n error\n } = await supabase.from('edges').update({\n ...updates,\n updated_at: new Date().toISOString()\n }).eq('id', edgeId).select().single();\n if (error) {\n debug.error('Error updating edge %s: %O', edgeId, error);\n throw error;\n }\n return data;\n}\n\n/**\n * Delete an edge\n */\nexport async function deleteGraphEdge(supabase, edgeId) {\n const {\n error\n } = await supabase.from('edges').delete().eq('id', edgeId);\n if (error) {\n debug.error('Error deleting edge %s: %O', edgeId, error);\n throw error;\n }\n}","/**\n * Query key factories for canvas queries\n */\n\nexport const canvasKeys = {\n all: ['canvas'],\n graphs: () => [...canvasKeys.all, 'graphs'],\n graph: graphId => [...canvasKeys.graphs(), graphId],\n nodes: graphId => [...canvasKeys.graph(graphId), 'nodes'],\n node: (graphId, nodeId) => [...canvasKeys.nodes(graphId), nodeId],\n edges: graphId => [...canvasKeys.graph(graphId), 'edges'],\n edge: (graphId, edgeId) => [...canvasKeys.edges(graphId), edgeId]\n};","import { c as _c } from \"react/compiler-runtime\";\n/**\n * Hook for fetching graph nodes\n */\n\nimport { useQuery } from '@tanstack/react-query';\nimport { useSupabaseClient } from '../provider';\nimport { fetchGraphNodes } from '../queries/nodes';\nimport { canvasKeys } from './keys';\n/**\n * Hook to fetch all nodes for a graph\n */\nexport function useGraphNodes(graphId, t0) {\n const $ = _c(11);\n let t1;\n if ($[0] !== t0) {\n t1 = t0 === undefined ? {} : t0;\n $[0] = t0;\n $[1] = t1;\n } else {\n t1 = $[1];\n }\n const options = t1;\n const {\n enabled: t2\n } = options;\n const enabled = t2 === undefined ? true : t2;\n const supabase = useSupabaseClient();\n let t3;\n if ($[2] !== graphId) {\n t3 = canvasKeys.nodes(graphId || \"\");\n $[2] = graphId;\n $[3] = t3;\n } else {\n t3 = $[3];\n }\n let t4;\n if ($[4] !== graphId || $[5] !== supabase) {\n t4 = () => fetchGraphNodes(supabase, graphId);\n $[4] = graphId;\n $[5] = supabase;\n $[6] = t4;\n } else {\n t4 = $[6];\n }\n const t5 = enabled && !!graphId;\n let t6;\n if ($[7] !== t3 || $[8] !== t4 || $[9] !== t5) {\n t6 = {\n queryKey: t3,\n queryFn: t4,\n enabled: t5\n };\n $[7] = t3;\n $[8] = t4;\n $[9] = t5;\n $[10] = t6;\n } else {\n t6 = $[10];\n }\n return useQuery(t6);\n}","import { c as _c } from \"react/compiler-runtime\";\n/**\n * Hook for fetching graph edges\n */\n\nimport { useQuery } from '@tanstack/react-query';\nimport { useSupabaseClient } from '../provider';\nimport { fetchGraphEdges } from '../queries/edges';\nimport { canvasKeys } from './keys';\n/**\n * Hook to fetch all edges for a graph\n */\nexport function useGraphEdges(graphId, t0) {\n const $ = _c(11);\n let t1;\n if ($[0] !== t0) {\n t1 = t0 === undefined ? {} : t0;\n $[0] = t0;\n $[1] = t1;\n } else {\n t1 = $[1];\n }\n const options = t1;\n const {\n enabled: t2\n } = options;\n const enabled = t2 === undefined ? true : t2;\n const supabase = useSupabaseClient();\n let t3;\n if ($[2] !== graphId) {\n t3 = canvasKeys.edges(graphId || \"\");\n $[2] = graphId;\n $[3] = t3;\n } else {\n t3 = $[3];\n }\n let t4;\n if ($[4] !== graphId || $[5] !== supabase) {\n t4 = () => fetchGraphEdges(supabase, graphId);\n $[4] = graphId;\n $[5] = supabase;\n $[6] = t4;\n } else {\n t4 = $[6];\n }\n const t5 = enabled && !!graphId;\n let t6;\n if ($[7] !== t3 || $[8] !== t4 || $[9] !== t5) {\n t6 = {\n queryKey: t3,\n queryFn: t4,\n enabled: t5\n };\n $[7] = t3;\n $[8] = t4;\n $[9] = t5;\n $[10] = t6;\n } else {\n t6 = $[10];\n }\n return useQuery(t6);\n}","import { c as _c } from \"react/compiler-runtime\";\n/**\n * Hook for updating a node with optimistic updates\n */\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { useSetAtom } from 'jotai';\nimport { startMutationAtom, completeMutationAtom } from '../../core/sync-store';\nimport { useSupabaseClient } from '../provider';\nimport { updateGraphNode } from '../queries/nodes';\nimport { canvasKeys } from './keys';\n/**\n * Hook to update a node with optimistic updates\n */\nexport function useUpdateNode() {\n const $ = _c(18);\n const queryClient = useQueryClient();\n const supabase = useSupabaseClient();\n const startMutation = useSetAtom(startMutationAtom);\n const completeMutation = useSetAtom(completeMutationAtom);\n let t0;\n if ($[0] !== supabase) {\n t0 = async t1 => {\n const {\n nodeId,\n updates\n } = t1;\n return updateGraphNode(supabase, nodeId, updates);\n };\n $[0] = supabase;\n $[1] = t0;\n } else {\n t0 = $[1];\n }\n let t1;\n if ($[2] !== queryClient || $[3] !== startMutation) {\n t1 = async t2 => {\n const {\n nodeId: nodeId_0,\n graphId,\n updates: updates_0\n } = t2;\n startMutation();\n await queryClient.cancelQueries({\n queryKey: canvasKeys.nodes(graphId)\n });\n const previousNodes = queryClient.getQueryData(canvasKeys.nodes(graphId));\n if (previousNodes) {\n queryClient.setQueryData(canvasKeys.nodes(graphId), old => old?.map(node => node.id === nodeId_0 ? {\n ...node,\n ...updates_0,\n updated_at: new Date().toISOString()\n } : node));\n }\n return {\n previousNodes,\n graphId\n };\n };\n $[2] = queryClient;\n $[3] = startMutation;\n $[4] = t1;\n } else {\n t1 = $[4];\n }\n let t2;\n if ($[5] !== completeMutation || $[6] !== queryClient) {\n t2 = (_err, _variables, context) => {\n if (context?.previousNodes) {\n queryClient.setQueryData(canvasKeys.nodes(context.graphId), context.previousNodes);\n }\n completeMutation(false);\n };\n $[5] = completeMutation;\n $[6] = queryClient;\n $[7] = t2;\n } else {\n t2 = $[7];\n }\n let t3;\n if ($[8] !== completeMutation) {\n t3 = () => {\n completeMutation(true);\n };\n $[8] = completeMutation;\n $[9] = t3;\n } else {\n t3 = $[9];\n }\n let t4;\n if ($[10] !== queryClient) {\n t4 = (_data, _error, variables) => {\n queryClient.invalidateQueries({\n queryKey: canvasKeys.nodes(variables.graphId)\n });\n };\n $[10] = queryClient;\n $[11] = t4;\n } else {\n t4 = $[11];\n }\n let t5;\n if ($[12] !== t0 || $[13] !== t1 || $[14] !== t2 || $[15] !== t3 || $[16] !== t4) {\n t5 = {\n mutationFn: t0,\n onMutate: t1,\n onError: t2,\n onSuccess: t3,\n onSettled: t4\n };\n $[12] = t0;\n $[13] = t1;\n $[14] = t2;\n $[15] = t3;\n $[16] = t4;\n $[17] = t5;\n } else {\n t5 = $[17];\n }\n return useMutation(t5);\n}","/**\n * Sync state management\n *\n * Tracks sync status, pending mutations, and mutation queue for retry.\n */\n\nimport { atom } from 'jotai';\nimport { createDebug } from '../utils/debug';\nconst debug = createDebug('sync');\n\n// --- Core State Atoms ---\n\n/**\n * Current sync status\n */\nexport const syncStatusAtom = atom('synced');\n\n/**\n * Number of pending (in-flight) mutations\n */\nexport const pendingMutationsCountAtom = atom(0);\n\n/**\n * Network online status\n */\nexport const isOnlineAtom = atom(typeof navigator !== 'undefined' ? navigator.onLine : true);\n\n/**\n * Last sync error message\n */\nexport const lastSyncErrorAtom = atom(null);\n\n/**\n * Last successful sync timestamp\n */\nexport const lastSyncTimeAtom = atom(Date.now());\n\n/**\n * Queued mutations for retry\n */\nexport const mutationQueueAtom = atom([]);\n\n// --- Derived State ---\n\n/**\n * Combined sync state for easy consumption\n */\nexport const syncStateAtom = atom(get => ({\n status: get(syncStatusAtom),\n pendingMutations: get(pendingMutationsCountAtom),\n lastError: get(lastSyncErrorAtom),\n lastSyncTime: get(lastSyncTimeAtom),\n isOnline: get(isOnlineAtom),\n queuedMutations: get(mutationQueueAtom).length\n}));\n\n// --- Mutation Tracking Actions ---\n\n/**\n * Start tracking a mutation (increment counter)\n */\nexport const startMutationAtom = atom(null, (get, set) => {\n const currentCount = get(pendingMutationsCountAtom);\n const newCount = currentCount + 1;\n set(pendingMutationsCountAtom, newCount);\n debug('Mutation started. Pending count: %d -> %d', currentCount, newCount);\n if (newCount > 0 && get(syncStatusAtom) !== 'syncing') {\n set(syncStatusAtom, 'syncing');\n debug('Status -> syncing');\n }\n});\n\n/**\n * Complete a mutation (decrement counter)\n */\nexport const completeMutationAtom = atom(null, (get, set, success = true) => {\n const currentCount = get(pendingMutationsCountAtom);\n const newCount = Math.max(0, currentCount - 1);\n set(pendingMutationsCountAtom, newCount);\n debug('Mutation completed (success: %s). Pending count: %d -> %d', success, currentCount, newCount);\n if (success) {\n set(lastSyncTimeAtom, Date.now());\n if (newCount === 0) {\n set(lastSyncErrorAtom, null);\n }\n }\n\n // Update status if no more pending mutations\n if (newCount === 0) {\n const isOnline = get(isOnlineAtom);\n const hasError = get(lastSyncErrorAtom) !== null;\n if (hasError) {\n set(syncStatusAtom, 'error');\n debug('Status -> error');\n } else if (!isOnline) {\n set(syncStatusAtom, 'offline');\n debug('Status -> offline');\n } else {\n set(syncStatusAtom, 'synced');\n debug('Status -> synced');\n }\n }\n});\n\n/**\n * Track a mutation error\n */\nexport const trackMutationErrorAtom = atom(null, (_get, set, error) => {\n set(lastSyncErrorAtom, error);\n debug('Mutation failed: %s', error);\n});\n\n// --- Network Status ---\n\n/**\n * Set online/offline status\n */\nexport const setOnlineStatusAtom = atom(null, (get, set, isOnline) => {\n set(isOnlineAtom, isOnline);\n const pendingCount = get(pendingMutationsCountAtom);\n const hasError = get(lastSyncErrorAtom) !== null;\n const queueLength = get(mutationQueueAtom).length;\n if (pendingCount === 0) {\n if (hasError || queueLength > 0) {\n set(syncStatusAtom, 'error');\n } else {\n set(syncStatusAtom, isOnline ? 'synced' : 'offline');\n }\n }\n});\n\n// --- Mutation Queue ---\n\n/**\n * Add a mutation to the retry queue\n */\nexport const queueMutationAtom = atom(null, (get, set, mutation) => {\n const queue = get(mutationQueueAtom);\n const newMutation = {\n ...mutation,\n id: crypto.randomUUID(),\n timestamp: Date.now(),\n retryCount: 0,\n maxRetries: mutation.maxRetries ?? 3\n };\n const newQueue = [...queue, newMutation];\n set(mutationQueueAtom, newQueue);\n debug('Queued mutation: %s. Queue size: %d', mutation.type, newQueue.length);\n if (get(pendingMutationsCountAtom) === 0) {\n set(syncStatusAtom, 'error');\n }\n return newMutation.id;\n});\n\n/**\n * Remove a mutation from the queue\n */\nexport const dequeueMutationAtom = atom(null, (get, set, mutationId) => {\n const queue = get(mutationQueueAtom);\n const newQueue = queue.filter(m => m.id !== mutationId);\n set(mutationQueueAtom, newQueue);\n debug('Dequeued mutation: %s. Queue size: %d', mutationId, newQueue.length);\n if (newQueue.length === 0 && get(pendingMutationsCountAtom) === 0 && get(lastSyncErrorAtom) === null) {\n set(syncStatusAtom, get(isOnlineAtom) ? 'synced' : 'offline');\n }\n});\n\n/**\n * Increment retry count for a mutation\n */\nexport const incrementRetryCountAtom = atom(null, (get, set, mutationId) => {\n const queue = get(mutationQueueAtom);\n const newQueue = queue.map(m => m.id === mutationId ? {\n ...m,\n retryCount: m.retryCount + 1\n } : m);\n set(mutationQueueAtom, newQueue);\n});\n\n/**\n * Get the next mutation to retry\n */\nexport const getNextQueuedMutationAtom = atom(get => {\n const queue = get(mutationQueueAtom);\n return queue.find(m => m.retryCount < m.maxRetries) ?? null;\n});\n\n/**\n * Clear all queued mutations\n */\nexport const clearMutationQueueAtom = atom(null, (get, set) => {\n set(mutationQueueAtom, []);\n debug('Cleared mutation queue');\n if (get(pendingMutationsCountAtom) === 0 && get(lastSyncErrorAtom) === null) {\n set(syncStatusAtom, get(isOnlineAtom) ? 'synced' : 'offline');\n }\n});","import { c as _c } from \"react/compiler-runtime\";\n/**\n * Hook for creating a new node\n */\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { useSetAtom } from 'jotai';\nimport { startMutationAtom, completeMutationAtom } from '../../core/sync-store';\nimport { useSupabaseClient } from '../provider';\nimport { createGraphNode } from '../queries/nodes';\nimport { canvasKeys } from './keys';\n/**\n * Hook to create a new node\n */\nexport function useCreateNode() {\n const $ = _c(17);\n const queryClient = useQueryClient();\n const supabase = useSupabaseClient();\n const startMutation = useSetAtom(startMutationAtom);\n const completeMutation = useSetAtom(completeMutationAtom);\n let t0;\n if ($[0] !== supabase) {\n t0 = async node => createGraphNode(supabase, node);\n $[0] = supabase;\n $[1] = t0;\n } else {\n t0 = $[1];\n }\n let t1;\n if ($[2] !== queryClient || $[3] !== startMutation) {\n t1 = async node_0 => {\n startMutation();\n await queryClient.cancelQueries({\n queryKey: canvasKeys.nodes(node_0.graph_id)\n });\n const previousNodes = queryClient.getQueryData(canvasKeys.nodes(node_0.graph_id));\n const optimisticNode = {\n ...node_0,\n id: `temp-${Date.now()}`,\n created_at: new Date().toISOString(),\n updated_at: new Date().toISOString()\n };\n queryClient.setQueryData(canvasKeys.nodes(node_0.graph_id), old => [...(old || []), optimisticNode]);\n return {\n previousNodes,\n graphId: node_0.graph_id,\n optimisticId: optimisticNode.id\n };\n };\n $[2] = queryClient;\n $[3] = startMutation;\n $[4] = t1;\n } else {\n t1 = $[4];\n }\n let t2;\n let t3;\n if ($[5] !== completeMutation || $[6] !== queryClient) {\n t2 = (_err, _variables, context) => {\n if (context?.previousNodes) {\n queryClient.setQueryData(canvasKeys.nodes(context.graphId), context.previousNodes);\n }\n completeMutation(false);\n };\n t3 = (newNode, _variables_0, context_0) => {\n if (context_0) {\n queryClient.setQueryData(canvasKeys.nodes(context_0.graphId), old_0 => old_0?.map(node_1 => node_1.id === context_0.optimisticId ? newNode : node_1));\n }\n completeMutation(true);\n };\n $[5] = completeMutation;\n $[6] = queryClient;\n $[7] = t2;\n $[8] = t3;\n } else {\n t2 = $[7];\n t3 = $[8];\n }\n let t4;\n if ($[9] !== queryClient) {\n t4 = (_data, _error, variables) => {\n queryClient.invalidateQueries({\n queryKey: canvasKeys.nodes(variables.graph_id)\n });\n };\n $[9] = queryClient;\n $[10] = t4;\n } else {\n t4 = $[10];\n }\n let t5;\n if ($[11] !== t0 || $[12] !== t1 || $[13] !== t2 || $[14] !== t3 || $[15] !== t4) {\n t5 = {\n mutationFn: t0,\n onMutate: t1,\n onError: t2,\n onSuccess: t3,\n onSettled: t4\n };\n $[11] = t0;\n $[12] = t1;\n $[13] = t2;\n $[14] = t3;\n $[15] = t4;\n $[16] = t5;\n } else {\n t5 = $[16];\n }\n return useMutation(t5);\n}","import { c as _c } from \"react/compiler-runtime\";\n/**\n * Hook for deleting a node\n */\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { useSetAtom } from 'jotai';\nimport { startMutationAtom, completeMutationAtom } from '../../core/sync-store';\nimport { useSupabaseClient } from '../provider';\nimport { deleteGraphNode } from '../queries/nodes';\nimport { canvasKeys } from './keys';\n/**\n * Hook to delete a node with optimistic updates\n */\nexport function useDeleteNode() {\n const $ = _c(18);\n const queryClient = useQueryClient();\n const supabase = useSupabaseClient();\n const startMutation = useSetAtom(startMutationAtom);\n const completeMutation = useSetAtom(completeMutationAtom);\n let t0;\n if ($[0] !== supabase) {\n t0 = async t1 => {\n const {\n nodeId\n } = t1;\n return deleteGraphNode(supabase, nodeId);\n };\n $[0] = supabase;\n $[1] = t0;\n } else {\n t0 = $[1];\n }\n let t1;\n if ($[2] !== queryClient || $[3] !== startMutation) {\n t1 = async t2 => {\n const {\n nodeId: nodeId_0,\n graphId\n } = t2;\n startMutation();\n await queryClient.cancelQueries({\n queryKey: canvasKeys.nodes(graphId)\n });\n const previousNodes = queryClient.getQueryData(canvasKeys.nodes(graphId));\n if (previousNodes) {\n queryClient.setQueryData(canvasKeys.nodes(graphId), old => old?.filter(node => node.id !== nodeId_0));\n }\n return {\n previousNodes,\n graphId\n };\n };\n $[2] = queryClient;\n $[3] = startMutation;\n $[4] = t1;\n } else {\n t1 = $[4];\n }\n let t2;\n if ($[5] !== completeMutation || $[6] !== queryClient) {\n t2 = (_err, _variables, context) => {\n if (context?.previousNodes) {\n queryClient.setQueryData(canvasKeys.nodes(context.graphId), context.previousNodes);\n }\n completeMutation(false);\n };\n $[5] = completeMutation;\n $[6] = queryClient;\n $[7] = t2;\n } else {\n t2 = $[7];\n }\n let t3;\n if ($[8] !== completeMutation) {\n t3 = () => {\n completeMutation(true);\n };\n $[8] = completeMutation;\n $[9] = t3;\n } else {\n t3 = $[9];\n }\n let t4;\n if ($[10] !== queryClient) {\n t4 = (_data, _error, variables) => {\n queryClient.invalidateQueries({\n queryKey: canvasKeys.nodes(variables.graphId)\n });\n };\n $[10] = queryClient;\n $[11] = t4;\n } else {\n t4 = $[11];\n }\n let t5;\n if ($[12] !== t0 || $[13] !== t1 || $[14] !== t2 || $[15] !== t3 || $[16] !== t4) {\n t5 = {\n mutationFn: t0,\n onMutate: t1,\n onError: t2,\n onSuccess: t3,\n onSettled: t4\n };\n $[12] = t0;\n $[13] = t1;\n $[14] = t2;\n $[15] = t3;\n $[16] = t4;\n $[17] = t5;\n } else {\n t5 = $[17];\n }\n return useMutation(t5);\n}","import { c as _c } from \"react/compiler-runtime\";\n/**\n * Hook for updating an edge with optimistic updates\n */\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { useSetAtom } from 'jotai';\nimport { startMutationAtom, completeMutationAtom } from '../../core/sync-store';\nimport { useSupabaseClient } from '../provider';\nimport { updateGraphEdge } from '../queries/edges';\nimport { canvasKeys } from './keys';\n/**\n * Hook to update an edge with optimistic updates\n */\nexport function useUpdateEdge() {\n const $ = _c(18);\n const queryClient = useQueryClient();\n const supabase = useSupabaseClient();\n const startMutation = useSetAtom(startMutationAtom);\n const completeMutation = useSetAtom(completeMutationAtom);\n let t0;\n if ($[0] !== supabase) {\n t0 = async t1 => {\n const {\n edgeId,\n updates\n } = t1;\n return updateGraphEdge(supabase, edgeId, updates);\n };\n $[0] = supabase;\n $[1] = t0;\n } else {\n t0 = $[1];\n }\n let t1;\n if ($[2] !== queryClient || $[3] !== startMutation) {\n t1 = async t2 => {\n const {\n edgeId: edgeId_0,\n graphId,\n updates: updates_0\n } = t2;\n startMutation();\n await queryClient.cancelQueries({\n queryKey: canvasKeys.edges(graphId)\n });\n const previousEdges = queryClient.getQueryData(canvasKeys.edges(graphId));\n if (previousEdges) {\n queryClient.setQueryData(canvasKeys.edges(graphId), old => old?.map(edge => edge.id === edgeId_0 ? {\n ...edge,\n ...updates_0,\n updated_at: new Date().toISOString()\n } : edge));\n }\n return {\n previousEdges,\n graphId\n };\n };\n $[2] = queryClient;\n $[3] = startMutation;\n $[4] = t1;\n } else {\n t1 = $[4];\n }\n let t2;\n if ($[5] !== completeMutation || $[6] !== queryClient) {\n t2 = (_err, _variables, context) => {\n if (context?.previousEdges) {\n queryClient.setQueryData(canvasKeys.edges(context.graphId), context.previousEdges);\n }\n completeMutation(false);\n };\n $[5] = completeMutation;\n $[6] = queryClient;\n $[7] = t2;\n } else {\n t2 = $[7];\n }\n let t3;\n if ($[8] !== completeMutation) {\n t3 = () => {\n completeMutation(true);\n };\n $[8] = completeMutation;\n $[9] = t3;\n } else {\n t3 = $[9];\n }\n let t4;\n if ($[10] !== queryClient) {\n t4 = (_data, _error, variables) => {\n queryClient.invalidateQueries({\n queryKey: canvasKeys.edges(variables.graphId)\n });\n };\n $[10] = queryClient;\n $[11] = t4;\n } else {\n t4 = $[11];\n }\n let t5;\n if ($[12] !== t0 || $[13] !== t1 || $[14] !== t2 || $[15] !== t3 || $[16] !== t4) {\n t5 = {\n mutationFn: t0,\n onMutate: t1,\n onError: t2,\n onSuccess: t3,\n onSettled: t4\n };\n $[12] = t0;\n $[13] = t1;\n $[14] = t2;\n $[15] = t3;\n $[16] = t4;\n $[17] = t5;\n } else {\n t5 = $[17];\n }\n return useMutation(t5);\n}","import { c as _c } from \"react/compiler-runtime\";\n/**\n * Hook for creating a new edge\n */\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { useSetAtom } from 'jotai';\nimport { startMutationAtom, completeMutationAtom } from '../../core/sync-store';\nimport { useSupabaseClient } from '../provider';\nimport { createGraphEdge } from '../queries/edges';\nimport { canvasKeys } from './keys';\n/**\n * Hook to create a new edge\n */\nexport function useCreateEdge() {\n const $ = _c(17);\n const queryClient = useQueryClient();\n const supabase = useSupabaseClient();\n const startMutation = useSetAtom(startMutationAtom);\n const completeMutation = useSetAtom(completeMutationAtom);\n let t0;\n if ($[0] !== supabase) {\n t0 = async edge => createGraphEdge(supabase, edge);\n $[0] = supabase;\n $[1] = t0;\n } else {\n t0 = $[1];\n }\n let t1;\n if ($[2] !== queryClient || $[3] !== startMutation) {\n t1 = async edge_0 => {\n startMutation();\n await queryClient.cancelQueries({\n queryKey: canvasKeys.edges(edge_0.graph_id)\n });\n const previousEdges = queryClient.getQueryData(canvasKeys.edges(edge_0.graph_id));\n const optimisticEdge = {\n ...edge_0,\n id: `temp-${Date.now()}`,\n created_at: new Date().toISOString(),\n updated_at: new Date().toISOString()\n };\n queryClient.setQueryData(canvasKeys.edges(edge_0.graph_id), old => [...(old || []), optimisticEdge]);\n return {\n previousEdges,\n graphId: edge_0.graph_id,\n optimisticId: optimisticEdge.id\n };\n };\n $[2] = queryClient;\n $[3] = startMutation;\n $[4] = t1;\n } else {\n t1 = $[4];\n }\n let t2;\n let t3;\n if ($[5] !== completeMutation || $[6] !== queryClient) {\n t2 = (_err, _variables, context) => {\n if (context?.previousEdges) {\n queryClient.setQueryData(canvasKeys.edges(context.graphId), context.previousEdges);\n }\n completeMutation(false);\n };\n t3 = (newEdge, _variables_0, context_0) => {\n if (context_0) {\n queryClient.setQueryData(canvasKeys.edges(context_0.graphId), old_0 => old_0?.map(edge_1 => edge_1.id === context_0.optimisticId ? newEdge : edge_1));\n }\n completeMutation(true);\n };\n $[5] = completeMutation;\n $[6] = queryClient;\n $[7] = t2;\n $[8] = t3;\n } else {\n t2 = $[7];\n t3 = $[8];\n }\n let t4;\n if ($[9] !== queryClient) {\n t4 = (_data, _error, variables) => {\n queryClient.invalidateQueries({\n queryKey: canvasKeys.edges(variables.graph_id)\n });\n };\n $[9] = queryClient;\n $[10] = t4;\n } else {\n t4 = $[10];\n }\n let t5;\n if ($[11] !== t0 || $[12] !== t1 || $[13] !== t2 || $[14] !== t3 || $[15] !== t4) {\n t5 = {\n mutationFn: t0,\n onMutate: t1,\n onError: t2,\n onSuccess: t3,\n onSettled: t4\n };\n $[11] = t0;\n $[12] = t1;\n $[13] = t2;\n $[14] = t3;\n $[15] = t4;\n $[16] = t5;\n } else {\n t5 = $[16];\n }\n return useMutation(t5);\n}","import { c as _c } from \"react/compiler-runtime\";\n/**\n * Hook for deleting an edge\n */\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { useSetAtom } from 'jotai';\nimport { startMutationAtom, completeMutationAtom } from '../../core/sync-store';\nimport { useSupabaseClient } from '../provider';\nimport { deleteGraphEdge } from '../queries/edges';\nimport { canvasKeys } from './keys';\n/**\n * Hook to delete an edge with optimistic updates\n */\nexport function useDeleteEdge() {\n const $ = _c(18);\n const queryClient = useQueryClient();\n const supabase = useSupabaseClient();\n const startMutation = useSetAtom(startMutationAtom);\n const completeMutation = useSetAtom(completeMutationAtom);\n let t0;\n if ($[0] !== supabase) {\n t0 = async t1 => {\n const {\n edgeId\n } = t1;\n return deleteGraphEdge(supabase, edgeId);\n };\n $[0] = supabase;\n $[1] = t0;\n } else {\n t0 = $[1];\n }\n let t1;\n if ($[2] !== queryClient || $[3] !== startMutation) {\n t1 = async t2 => {\n const {\n edgeId: edgeId_0,\n graphId\n } = t2;\n startMutation();\n await queryClient.cancelQueries({\n queryKey: canvasKeys.edges(graphId)\n });\n const previousEdges = queryClient.getQueryData(canvasKeys.edges(graphId));\n if (previousEdges) {\n queryClient.setQueryData(canvasKeys.edges(graphId), old => old?.filter(edge => edge.id !== edgeId_0));\n }\n return {\n previousEdges,\n graphId\n };\n };\n $[2] = queryClient;\n $[3] = startMutation;\n $[4] = t1;\n } else {\n t1 = $[4];\n }\n let t2;\n if ($[5] !== completeMutation || $[6] !== queryClient) {\n t2 = (_err, _variables, context) => {\n if (context?.previousEdges) {\n queryClient.setQueryData(canvasKeys.edges(context.graphId), context.previousEdges);\n }\n completeMutation(false);\n };\n $[5] = completeMutation;\n $[6] = queryClient;\n $[7] = t2;\n } else {\n t2 = $[7];\n }\n let t3;\n if ($[8] !== completeMutation) {\n t3 = () => {\n completeMutation(true);\n };\n $[8] = completeMutation;\n $[9] = t3;\n } else {\n t3 = $[9];\n }\n let t4;\n if ($[10] !== queryClient) {\n t4 = (_data, _error, variables) => {\n queryClient.invalidateQueries({\n queryKey: canvasKeys.edges(variables.graphId)\n });\n };\n $[10] = queryClient;\n $[11] = t4;\n } else {\n t4 = $[11];\n }\n let t5;\n if ($[12] !== t0 || $[13] !== t1 || $[14] !== t2 || $[15] !== t3 || $[16] !== t4) {\n t5 = {\n mutationFn: t0,\n onMutate: t1,\n onError: t2,\n onSuccess: t3,\n onSettled: t4\n };\n $[12] = t0;\n $[13] = t1;\n $[14] = t2;\n $[15] = t3;\n $[16] = t4;\n $[17] = t5;\n } else {\n t5 = $[17];\n }\n return useMutation(t5);\n}"],"mappings":"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","names":["atom","debug","debug","_c","useQuery","_c","useQuery","_c","useSetAtom","atom","debug","atom","_c","useSetAtom","t1","t2","_c","useMutation","useQueryClient","useSetAtom","_c","useQueryClient","useSetAtom","useMutation","_c","useMutation","useQueryClient","useSetAtom","_c","useQueryClient","useSetAtom","t1","t2","useMutation","_c","useMutation","useQueryClient","useSetAtom","_c","useQueryClient","useSetAtom","t1","t2","useMutation","_c","useMutation","useQueryClient","useSetAtom","_c","useQueryClient","useSetAtom","useMutation","_c","useMutation","useQueryClient","useSetAtom","_c","useQueryClient","useSetAtom","t1","t2","useMutation"]}