'use client' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import dynamic from 'next/dynamic' import type { GridResult, GridCell, ColumnResult, RowResult, PageZone, PageRegion, RowItem } from '@/app/(admin)/ai/ocr-pipeline/types' import { usePixelWordPositions } from './usePixelWordPositions' const KLAUSUR_API = '/klausur-api' // Lazy-load Fabric.js canvas editor (SSR-incompatible) const FabricReconstructionCanvas = dynamic( () => import('./FabricReconstructionCanvas').then(m => ({ default: m.FabricReconstructionCanvas })), { ssr: false, loading: () =>