@fileflow/sdk 0.1.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.
- package/dist/ImportWizard-BkHlsJ8v.mjs +2843 -0
- package/dist/ImportWizard-BkHlsJ8v.mjs.map +1 -0
- package/dist/ImportWizard-mc9UDwP3.js +68 -0
- package/dist/ImportWizard-mc9UDwP3.js.map +1 -0
- package/dist/KYCWizard-CRBXY9Np.js +32 -0
- package/dist/KYCWizard-CRBXY9Np.js.map +1 -0
- package/dist/KYCWizard-D3Leb4rK.mjs +4575 -0
- package/dist/KYCWizard-D3Leb4rK.mjs.map +1 -0
- package/dist/import.d.ts +104 -0
- package/dist/import.js +2 -0
- package/dist/import.js.map +1 -0
- package/dist/import.mjs +10 -0
- package/dist/import.mjs.map +1 -0
- package/dist/index-BdodGzlO.js +112 -0
- package/dist/index-BdodGzlO.js.map +1 -0
- package/dist/index-CML_nPxo.mjs +5101 -0
- package/dist/index-CML_nPxo.mjs.map +1 -0
- package/dist/index.d.ts +318 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +22 -0
- package/dist/index.mjs.map +1 -0
- package/dist/kyc.d.ts +83 -0
- package/dist/kyc.js +2 -0
- package/dist/kyc.js.map +1 -0
- package/dist/kyc.mjs +8 -0
- package/dist/kyc.mjs.map +1 -0
- package/dist/style.css +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImportWizard-BkHlsJ8v.mjs","sources":["../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/arrow-right.js","../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/check-square.js","../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/check.js","../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/chevron-left.js","../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/eye.js","../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/file.js","../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/git-branch.js","../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/help-circle.js","../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/pen.js","../src/store/import-store.ts","../src/import/components/FileUploader.tsx","../src/import/components/ColumnMapper.tsx","../../../node_modules/.pnpm/@tanstack+table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.mjs","../../../node_modules/.pnpm/@tanstack+react-table@8.21.3_react-dom@18.3.1_react@18.3.1/node_modules/@tanstack/react-table/build/lib/index.mjs","../src/import/components/DataTable.tsx","../src/import/components/ValidationSummary.tsx","../src/import/components/ImportWizard.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowRight = createLucideIcon(\"ArrowRight\", [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"m12 5 7 7-7 7\", key: \"xquz4c\" }]\n]);\n\nexport { ArrowRight as default };\n//# sourceMappingURL=arrow-right.js.map\n","/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CheckSquare = createLucideIcon(\"CheckSquare\", [\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }],\n [\"path\", { d: \"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\", key: \"1jnkn4\" }]\n]);\n\nexport { CheckSquare as default };\n//# sourceMappingURL=check-square.js.map\n","/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Check = createLucideIcon(\"Check\", [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]]);\n\nexport { Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronLeft = createLucideIcon(\"ChevronLeft\", [\n [\"path\", { d: \"m15 18-6-6 6-6\", key: \"1wnfg3\" }]\n]);\n\nexport { ChevronLeft as default };\n//# sourceMappingURL=chevron-left.js.map\n","/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Eye = createLucideIcon(\"Eye\", [\n [\"path\", { d: \"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\", key: \"rwhkz3\" }],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n]);\n\nexport { Eye as default };\n//# sourceMappingURL=eye.js.map\n","/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst File = createLucideIcon(\"File\", [\n [\"path\", { d: \"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\", key: \"1rqfz7\" }],\n [\"path\", { d: \"M14 2v4a2 2 0 0 0 2 2h4\", key: \"tnqrlb\" }]\n]);\n\nexport { File as default };\n//# sourceMappingURL=file.js.map\n","/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst GitBranch = createLucideIcon(\"GitBranch\", [\n [\"line\", { x1: \"6\", x2: \"6\", y1: \"3\", y2: \"15\", key: \"17qcm7\" }],\n [\"circle\", { cx: \"18\", cy: \"6\", r: \"3\", key: \"1h7g24\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"path\", { d: \"M18 9a9 9 0 0 1-9 9\", key: \"n2h4wq\" }]\n]);\n\nexport { GitBranch as default };\n//# sourceMappingURL=git-branch.js.map\n","/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst HelpCircle = createLucideIcon(\"HelpCircle\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\", key: \"1u773s\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n]);\n\nexport { HelpCircle as default };\n//# sourceMappingURL=help-circle.js.map\n","/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Pen = createLucideIcon(\"Pen\", [\n [\"path\", { d: \"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\", key: \"5qss01\" }]\n]);\n\nexport { Pen as default };\n//# sourceMappingURL=pen.js.map\n","import { create } from 'zustand';\nimport type { \n ImportSchema, \n ParsedRow, \n ColumnMapping, \n ValidationResults,\n ValidationError,\n SchemaColumn,\n} from '@fileflow/shared';\n\nexport type ImportStep = 'upload' | 'mapping' | 'validation' | 'review' | 'complete';\n\nexport interface ImportState {\n // Session\n sessionId: string | null;\n status: string;\n step: ImportStep;\n \n // Schema\n schema: ImportSchema | null;\n \n // File\n file: File | null;\n fileName: string | null;\n fileSize: number | null;\n \n // Parsed data\n headers: string[];\n rows: ParsedRow[];\n totalRows: number;\n sampleRows: ParsedRow[];\n \n // Mappings\n mappings: ColumnMapping[];\n unmappedSource: string[];\n unmappedTarget: string[];\n \n // Validation\n validationResults: ValidationResults | null;\n errorsByRow: Map<number, ValidationError[]>;\n \n // UI state\n isLoading: boolean;\n error: string | null;\n \n // Editing\n editingCell: { rowIndex: number; columnKey: string } | null;\n editedRows: Set<number>;\n}\n\nexport interface ImportActions {\n // Initialize\n setSchema: (schema: ImportSchema) => void;\n setSessionId: (sessionId: string) => void;\n \n // File upload\n setFile: (file: File) => void;\n setParsedData: (data: {\n headers: string[];\n rows: ParsedRow[];\n totalRows: number;\n sampleRows: ParsedRow[];\n }) => void;\n \n // Mapping\n setMappings: (mappings: ColumnMapping[]) => void;\n updateMapping: (sourceColumn: string, targetKey: string | null) => void;\n setUnmapped: (source: string[], target: string[]) => void;\n \n // Validation\n setValidationResults: (results: ValidationResults) => void;\n \n // Navigation\n setStep: (step: ImportStep) => void;\n nextStep: () => void;\n previousStep: () => void;\n \n // Editing\n startEditing: (rowIndex: number, columnKey: string) => void;\n stopEditing: () => void;\n updateCell: (rowIndex: number, columnKey: string, value: unknown) => void;\n \n // Status\n setStatus: (status: string) => void;\n setLoading: (loading: boolean) => void;\n setError: (error: string | null) => void;\n \n // Reset\n reset: () => void;\n}\n\nconst initialState: ImportState = {\n sessionId: null,\n status: 'idle',\n step: 'upload',\n schema: null,\n file: null,\n fileName: null,\n fileSize: null,\n headers: [],\n rows: [],\n totalRows: 0,\n sampleRows: [],\n mappings: [],\n unmappedSource: [],\n unmappedTarget: [],\n validationResults: null,\n errorsByRow: new Map(),\n isLoading: false,\n error: null,\n editingCell: null,\n editedRows: new Set(),\n};\n\nexport const useImportStore = create<ImportState & ImportActions>((set, get) => ({\n ...initialState,\n\n setSchema: (schema) => set({ schema }),\n \n setSessionId: (sessionId) => set({ sessionId }),\n\n setFile: (file) => set({ \n file, \n fileName: file.name, \n fileSize: file.size,\n error: null,\n }),\n\n setParsedData: (data) => set({ \n headers: data.headers,\n rows: data.rows,\n totalRows: data.totalRows,\n sampleRows: data.sampleRows,\n }),\n\n setMappings: (mappings) => set({ mappings }),\n\n updateMapping: (sourceColumn, targetKey) => set((state) => {\n const mappings = state.mappings.map((m) =>\n m.sourceColumn === sourceColumn\n ? { ...m, targetKey, isAutoMapped: false }\n : m\n );\n return { mappings };\n }),\n\n setUnmapped: (source, target) => set({\n unmappedSource: source,\n unmappedTarget: target,\n }),\n\n setValidationResults: (results) => {\n // Index errors by row for quick lookup\n const errorsByRow = new Map<number, ValidationError[]>();\n for (const error of results.errors) {\n const existing = errorsByRow.get(error.rowIndex) || [];\n existing.push(error);\n errorsByRow.set(error.rowIndex, existing);\n }\n set({ validationResults: results, errorsByRow });\n },\n\n setStep: (step) => set({ step }),\n\n nextStep: () => {\n const steps: ImportStep[] = ['upload', 'mapping', 'validation', 'review', 'complete'];\n const currentIndex = steps.indexOf(get().step);\n if (currentIndex < steps.length - 1) {\n set({ step: steps[currentIndex + 1] });\n }\n },\n\n previousStep: () => {\n const steps: ImportStep[] = ['upload', 'mapping', 'validation', 'review', 'complete'];\n const currentIndex = steps.indexOf(get().step);\n if (currentIndex > 0) {\n set({ step: steps[currentIndex - 1] });\n }\n },\n\n startEditing: (rowIndex, columnKey) => set({\n editingCell: { rowIndex, columnKey },\n }),\n\n stopEditing: () => set({ editingCell: null }),\n\n updateCell: (rowIndex, columnKey, value) => set((state) => {\n const rows = [...state.rows];\n const row = rows.find((r) => r.rowIndex === rowIndex);\n if (row) {\n row.data = { ...row.data, [columnKey]: String(value) };\n }\n const editedRows = new Set(state.editedRows);\n editedRows.add(rowIndex);\n return { rows, editedRows, editingCell: null };\n }),\n\n setStatus: (status) => set({ status }),\n \n setLoading: (isLoading) => set({ isLoading }),\n \n setError: (error) => set({ error }),\n\n reset: () => set(initialState),\n}));\n","import React, { useCallback } from 'react';\nimport { useDropzone } from 'react-dropzone';\nimport { Upload, File, X, AlertCircle } from 'lucide-react';\nimport { clsx } from 'clsx';\nimport { useImportStore } from '../../store/import-store';\n\ninterface FileUploaderProps {\n onFileSelect?: (file: File) => void;\n maxSize?: number;\n acceptedTypes?: string[];\n}\n\nexport const FileUploader: React.FC<FileUploaderProps> = ({\n onFileSelect,\n maxSize = 50 * 1024 * 1024, // 50MB\n acceptedTypes = ['.csv', '.xlsx', '.xls'],\n}) => {\n const { file, fileName, fileSize, setFile, error, setError, isLoading } = useImportStore();\n\n const onDrop = useCallback(\n (acceptedFiles: File[], rejectedFiles: unknown[]) => {\n if (rejectedFiles.length > 0) {\n setError('Invalid file type or file too large');\n return;\n }\n\n if (acceptedFiles.length > 0) {\n const selectedFile = acceptedFiles[0];\n setFile(selectedFile);\n onFileSelect?.(selectedFile);\n }\n },\n [onFileSelect, setFile, setError]\n );\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop,\n accept: {\n 'text/csv': ['.csv'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': ['.xlsx'],\n 'application/vnd.ms-excel': ['.xls'],\n },\n maxSize,\n multiple: false,\n disabled: isLoading,\n });\n\n const formatFileSize = (bytes: number): string => {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n };\n\n const clearFile = (e: React.MouseEvent) => {\n e.stopPropagation();\n useImportStore.getState().reset();\n };\n\n if (file) {\n return (\n <div className=\"ff-p-4 ff-bg-green-50 ff-border ff-border-green-200 ff-rounded-lg\">\n <div className=\"ff-flex ff-items-center ff-gap-3\">\n <div className=\"ff-p-2 ff-bg-green-100 ff-rounded-lg\">\n <File className=\"ff-w-6 ff-h-6 ff-text-green-600\" />\n </div>\n <div className=\"ff-flex-1 ff-min-w-0\">\n <p className=\"ff-font-medium ff-text-green-900 ff-truncate\">{fileName}</p>\n <p className=\"ff-text-sm ff-text-green-600\">{formatFileSize(fileSize || 0)}</p>\n </div>\n <button\n onClick={clearFile}\n className=\"ff-p-1.5 ff-text-green-600 hover:ff-text-green-800 hover:ff-bg-green-100 ff-rounded-full ff-transition-colors\"\n aria-label=\"Remove file\"\n >\n <X className=\"ff-w-5 ff-h-5\" />\n </button>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"ff-space-y-3\">\n <div\n {...getRootProps()}\n className={clsx(\n 'ff-dropzone',\n isDragActive && 'ff-dropzone-active',\n isLoading && 'ff-opacity-50 ff-cursor-not-allowed'\n )}\n >\n <input {...getInputProps()} />\n <div className=\"ff-flex ff-flex-col ff-items-center ff-gap-3\">\n <div className={clsx(\n 'ff-p-3 ff-rounded-full',\n isDragActive ? 'ff-bg-primary-100' : 'ff-bg-gray-100'\n )}>\n <Upload className={clsx(\n 'ff-w-8 ff-h-8',\n isDragActive ? 'ff-text-primary-600' : 'ff-text-gray-400'\n )} />\n </div>\n <div className=\"ff-text-center\">\n <p className=\"ff-text-base ff-font-medium ff-text-gray-700\">\n {isDragActive ? 'Drop your file here' : 'Drag & drop your file here'}\n </p>\n <p className=\"ff-text-sm ff-text-gray-500 ff-mt-1\">\n or <span className=\"ff-text-primary-600 ff-font-medium\">browse files</span>\n </p>\n </div>\n <p className=\"ff-text-xs ff-text-gray-400\">\n Supports: {acceptedTypes.join(', ')} (max {formatFileSize(maxSize)})\n </p>\n </div>\n </div>\n\n {error && (\n <div className=\"ff-flex ff-items-center ff-gap-2 ff-p-3 ff-bg-error-50 ff-text-error-700 ff-rounded-lg\">\n <AlertCircle className=\"ff-w-4 ff-h-4 ff-flex-shrink-0\" />\n <p className=\"ff-text-sm\">{error}</p>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { ArrowRight, Check, AlertCircle, HelpCircle } from 'lucide-react';\nimport { clsx } from 'clsx';\nimport { useImportStore } from '../../store/import-store';\nimport type { SchemaColumn } from '@fileflow/shared';\n\ninterface ColumnMapperProps {\n onMappingChange?: (sourceColumn: string, targetKey: string | null) => void;\n}\n\nexport const ColumnMapper: React.FC<ColumnMapperProps> = ({ onMappingChange }) => {\n const { mappings, schema, unmappedSource, updateMapping } = useImportStore();\n\n const targetColumns = schema?.columns || [];\n\n const handleMappingChange = (sourceColumn: string, targetKey: string) => {\n const value = targetKey === '' ? null : targetKey;\n updateMapping(sourceColumn, value);\n onMappingChange?.(sourceColumn, value);\n };\n\n const getConfidenceColor = (confidence: number): string => {\n if (confidence >= 0.85) return 'ff-text-success-600';\n if (confidence >= 0.6) return 'ff-text-warning-600';\n return 'ff-text-error-600';\n };\n\n const getConfidenceLabel = (confidence: number): string => {\n if (confidence >= 0.85) return 'High';\n if (confidence >= 0.6) return 'Medium';\n return 'Low';\n };\n\n const getMappedTargetKeys = (): Set<string> => {\n return new Set(\n mappings\n .filter((m) => m.targetKey !== null)\n .map((m) => m.targetKey as string)\n );\n };\n\n const mappedKeys = getMappedTargetKeys();\n\n return (\n <div className=\"ff-space-y-4\">\n <div className=\"ff-flex ff-items-center ff-justify-between ff-mb-4\">\n <div>\n <h3 className=\"ff-text-lg ff-font-semibold ff-text-gray-900\">Column Mapping</h3>\n <p className=\"ff-text-sm ff-text-gray-500\">\n Match your file columns to the expected fields\n </p>\n </div>\n <div className=\"ff-flex ff-items-center ff-gap-4 ff-text-sm\">\n <span className=\"ff-flex ff-items-center ff-gap-1.5\">\n <span className=\"ff-w-2 ff-h-2 ff-rounded-full ff-bg-success-500\" />\n <span className=\"ff-text-gray-600\">Mapped</span>\n </span>\n <span className=\"ff-flex ff-items-center ff-gap-1.5\">\n <span className=\"ff-w-2 ff-h-2 ff-rounded-full ff-bg-warning-500\" />\n <span className=\"ff-text-gray-600\">Review</span>\n </span>\n <span className=\"ff-flex ff-items-center ff-gap-1.5\">\n <span className=\"ff-w-2 ff-h-2 ff-rounded-full ff-bg-gray-300\" />\n <span className=\"ff-text-gray-600\">Unmapped</span>\n </span>\n </div>\n </div>\n\n <div className=\"ff-space-y-2\">\n {mappings.map((mapping) => {\n const targetColumn = targetColumns.find((c) => c.key === mapping.targetKey);\n const isMapped = mapping.targetKey !== null;\n const isHighConfidence = mapping.confidence >= 0.85;\n\n return (\n <div\n key={mapping.sourceColumn}\n className={clsx(\n 'ff-mapping-row',\n isMapped && isHighConfidence && 'ff-border-success-200 ff-bg-success-50/50',\n isMapped && !isHighConfidence && 'ff-border-warning-200 ff-bg-warning-50/50',\n !isMapped && 'ff-border-gray-200'\n )}\n >\n {/* Source Column */}\n <div className=\"ff-flex-1\">\n <div className=\"ff-mapping-source\">\n {mapping.sourceColumn}\n </div>\n </div>\n\n {/* Arrow */}\n <div className=\"ff-mapping-arrow\">\n <ArrowRight className=\"ff-w-5 ff-h-5\" />\n </div>\n\n {/* Target Column Selector */}\n <div className=\"ff-flex-1 ff-mapping-target\">\n <select\n value={mapping.targetKey || ''}\n onChange={(e) => handleMappingChange(mapping.sourceColumn, e.target.value)}\n className={clsx(\n 'ff-input',\n !isMapped && 'ff-border-gray-300',\n isMapped && isHighConfidence && 'ff-border-success-300 ff-bg-success-50',\n isMapped && !isHighConfidence && 'ff-border-warning-300 ff-bg-warning-50'\n )}\n >\n <option value=\"\">-- Do not import --</option>\n {targetColumns.map((col) => (\n <option\n key={col.key}\n value={col.key}\n disabled={mappedKeys.has(col.key) && mapping.targetKey !== col.key}\n >\n {col.label} ({col.type}){col.required ? ' *' : ''}\n </option>\n ))}\n </select>\n </div>\n\n {/* Status Icon */}\n <div className=\"ff-w-8 ff-flex ff-justify-center\">\n {isMapped ? (\n isHighConfidence ? (\n <Check className=\"ff-w-5 ff-h-5 ff-text-success-600\" />\n ) : (\n <HelpCircle className=\"ff-w-5 ff-h-5 ff-text-warning-600\" />\n )\n ) : (\n <span className=\"ff-w-5 ff-h-5\" />\n )}\n </div>\n\n {/* Confidence */}\n {mapping.confidence > 0 && (\n <div className={clsx('ff-confidence', getConfidenceColor(mapping.confidence))}>\n <span>{Math.round(mapping.confidence * 100)}%</span>\n <span className=\"ff-text-gray-400\">\n ({getConfidenceLabel(mapping.confidence)})\n </span>\n </div>\n )}\n </div>\n );\n })}\n </div>\n\n {/* Unmapped Required Fields Warning */}\n {(() => {\n const requiredUnmapped = targetColumns.filter(\n (col) => col.required && !mappedKeys.has(col.key)\n );\n if (requiredUnmapped.length > 0) {\n return (\n <div className=\"ff-flex ff-items-start ff-gap-2 ff-p-3 ff-bg-warning-50 ff-border ff-border-warning-200 ff-rounded-lg\">\n <AlertCircle className=\"ff-w-5 ff-h-5 ff-text-warning-600 ff-flex-shrink-0 ff-mt-0.5\" />\n <div>\n <p className=\"ff-text-sm ff-font-medium ff-text-warning-800\">\n Required fields not mapped\n </p>\n <p className=\"ff-text-sm ff-text-warning-700 ff-mt-1\">\n {requiredUnmapped.map((c) => c.label).join(', ')}\n </p>\n </div>\n </div>\n );\n }\n return null;\n })()}\n </div>\n );\n};\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _filterValue$toString, _row$getValue;\n const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\nfunction safelyAccessDocument(_document) {\n return _document || (typeof document !== 'undefined' ? document : null);\n}\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = safelyAccessDocument(_contextDocument);\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _ref4, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_ref4 = position === 'top' ? table.getTopRows() : table.getBottomRows()) == null ? void 0 : _ref4.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n };\n table.getTopRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top], (allRows, topPinnedRowIds) => table._getPinnedRows(allRows, topPinnedRowIds, 'top'), getMemoOptions(table.options, 'debugRows', 'getTopRows'));\n table.getBottomRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.bottom], (allRows, bottomPinnedRowIds) => table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'), getMemoOptions(table.options, 'debugRows', 'getBottomRows'));\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return undefined;\n const uniqueValues = facetedRowModel.flatRows.flatMap(flatRow => {\n var _flatRow$getUniqueVal;\n return (_flatRow$getUniqueVal = flatRow.getUniqueValues(columnId)) != null ? _flatRow$getUniqueVal : [];\n }).map(Number).filter(value => !Number.isNaN(value));\n if (!uniqueValues.length) return;\n let facetedMinValue = uniqueValues[0];\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1];\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value;else if (value > facetedMaxValue) facetedMaxValue = value;\n }\n return [facetedMinValue, facetedMaxValue];\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0;\n row.parentId = undefined;\n });\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n subRows.forEach(subRow => {\n subRow.parentId = id;\n });\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","import React, { useState, useMemo, useCallback } from 'react';\nimport {\n useReactTable,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n flexRender,\n createColumnHelper,\n type SortingState,\n type ColumnFiltersState,\n} from '@tanstack/react-table';\nimport { AlertCircle, AlertTriangle, ChevronLeft, ChevronRight, Edit2, Check, X } from 'lucide-react';\nimport { clsx } from 'clsx';\nimport { useImportStore } from '../../store/import-store';\nimport type { ParsedRow, ValidationError } from '@fileflow/shared';\n\ninterface DataTableProps {\n editable?: boolean;\n pageSize?: number;\n onCellEdit?: (rowIndex: number, columnKey: string, value: string) => void;\n}\n\nexport const DataTable: React.FC<DataTableProps> = ({\n editable = true,\n pageSize = 25,\n onCellEdit,\n}) => {\n const {\n rows,\n schema,\n mappings,\n errorsByRow,\n editingCell,\n startEditing,\n stopEditing,\n updateCell,\n } = useImportStore();\n\n const [sorting, setSorting] = useState<SortingState>([]);\n const [globalFilter, setGlobalFilter] = useState('');\n const [editValue, setEditValue] = useState('');\n\n // Get mapped columns\n const displayColumns = useMemo(() => {\n return mappings\n .filter((m) => m.targetKey !== null)\n .map((m) => {\n const schemaCol = schema?.columns.find((c) => c.key === m.targetKey);\n return {\n sourceColumn: m.sourceColumn,\n targetKey: m.targetKey!,\n label: schemaCol?.label || m.targetKey!,\n type: schemaCol?.type || 'string',\n };\n });\n }, [mappings, schema]);\n\n // Get error for specific cell\n const getCellError = useCallback(\n (rowIndex: number, columnKey: string): ValidationError | undefined => {\n const rowErrors = errorsByRow.get(rowIndex);\n return rowErrors?.find((e) => e.columnKey === columnKey);\n },\n [errorsByRow]\n );\n\n // Handle cell edit start\n const handleStartEdit = (rowIndex: number, columnKey: string, currentValue: string) => {\n setEditValue(currentValue);\n startEditing(rowIndex, columnKey);\n };\n\n // Handle cell edit save\n const handleSaveEdit = () => {\n if (editingCell) {\n updateCell(editingCell.rowIndex, editingCell.columnKey, editValue);\n onCellEdit?.(editingCell.rowIndex, editingCell.columnKey, editValue);\n }\n stopEditing();\n };\n\n // Handle cell edit cancel\n const handleCancelEdit = () => {\n setEditValue('');\n stopEditing();\n };\n\n // Build table columns\n const columnHelper = createColumnHelper<ParsedRow>();\n\n const columns = useMemo(\n () => [\n columnHelper.accessor('rowIndex', {\n header: '#',\n size: 60,\n cell: (info) => (\n <span className=\"ff-text-gray-400 ff-font-mono ff-text-xs\">\n {info.getValue() + 1}\n </span>\n ),\n }),\n ...displayColumns.map((col) =>\n columnHelper.accessor((row) => row.data[col.targetKey] || row.data[col.sourceColumn], {\n id: col.targetKey,\n header: col.label,\n cell: (info) => {\n const rowIndex = info.row.original.rowIndex;\n const value = String(info.getValue() ?? '');\n const error = getCellError(rowIndex, col.targetKey);\n const isEditing =\n editingCell?.rowIndex === rowIndex && editingCell?.columnKey === col.targetKey;\n\n if (isEditing) {\n return (\n <div className=\"ff-flex ff-items-center ff-gap-1\">\n <input\n type=\"text\"\n value={editValue}\n onChange={(e) => setEditValue(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleSaveEdit();\n if (e.key === 'Escape') handleCancelEdit();\n }}\n className=\"ff-input ff-py-1 ff-text-sm\"\n autoFocus\n />\n <button\n onClick={handleSaveEdit}\n className=\"ff-p-1 ff-text-success-600 hover:ff-bg-success-50 ff-rounded\"\n >\n <Check className=\"ff-w-4 ff-h-4\" />\n </button>\n <button\n onClick={handleCancelEdit}\n className=\"ff-p-1 ff-text-error-600 hover:ff-bg-error-50 ff-rounded\"\n >\n <X className=\"ff-w-4 ff-h-4\" />\n </button>\n </div>\n );\n }\n\n return (\n <div\n className={clsx(\n 'ff-group ff-flex ff-items-center ff-gap-2',\n error?.severity === 'error' && 'ff-cell-error',\n error?.severity === 'warning' && 'ff-cell-warning'\n )}\n >\n <span className=\"ff-flex-1 ff-truncate\">{value || <span className=\"ff-text-gray-300\">—</span>}</span>\n {error && (\n <div className=\"ff-relative ff-group/tooltip\">\n {error.severity === 'error' ? (\n <AlertCircle className=\"ff-w-4 ff-h-4 ff-text-error-500\" />\n ) : (\n <AlertTriangle className=\"ff-w-4 ff-h-4 ff-text-warning-500\" />\n )}\n <div className=\"ff-tooltip ff-bottom-full ff-left-1/2 ff-transform ff--translate-x-1/2 ff-mb-2 ff-w-48 group-hover/tooltip:ff-tooltip-visible\">\n {error.message}\n {error.suggestion && (\n <span className=\"ff-block ff-mt-1 ff-text-gray-300\">{error.suggestion}</span>\n )}\n </div>\n </div>\n )}\n {editable && !error && (\n <button\n onClick={() => handleStartEdit(rowIndex, col.targetKey, value)}\n className=\"ff-opacity-0 group-hover:ff-opacity-100 ff-p-1 ff-text-gray-400 hover:ff-text-gray-600 ff-rounded ff-transition-opacity\"\n >\n <Edit2 className=\"ff-w-3 ff-h-3\" />\n </button>\n )}\n </div>\n );\n },\n })\n ),\n ],\n [displayColumns, editingCell, editValue, editable, getCellError, columnHelper]\n );\n\n const table = useReactTable({\n data: rows,\n columns,\n state: {\n sorting,\n globalFilter,\n },\n onSortingChange: setSorting,\n onGlobalFilterChange: setGlobalFilter,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n initialState: {\n pagination: {\n pageSize,\n },\n },\n });\n\n return (\n <div className=\"ff-space-y-4\">\n {/* Search */}\n <div className=\"ff-flex ff-items-center ff-justify-between\">\n <input\n type=\"text\"\n value={globalFilter}\n onChange={(e) => setGlobalFilter(e.target.value)}\n placeholder=\"Search all columns...\"\n className=\"ff-input ff-max-w-xs\"\n />\n <div className=\"ff-text-sm ff-text-gray-500\">\n {table.getFilteredRowModel().rows.length} rows\n </div>\n </div>\n\n {/* Table */}\n <div className=\"ff-table-container ff-max-h-[500px]\">\n <table className=\"ff-table\">\n <thead>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <th\n key={header.id}\n style={{ width: header.getSize() }}\n onClick={header.column.getToggleSortingHandler()}\n className={clsx(\n header.column.getCanSort() && 'ff-cursor-pointer ff-select-none'\n )}\n >\n <div className=\"ff-flex ff-items-center ff-gap-1\">\n {flexRender(header.column.columnDef.header, header.getContext())}\n {header.column.getIsSorted() && (\n <span>{header.column.getIsSorted() === 'asc' ? '↑' : '↓'}</span>\n )}\n </div>\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody>\n {table.getRowModel().rows.map((row) => {\n const hasError = errorsByRow.has(row.original.rowIndex);\n return (\n <tr\n key={row.id}\n className={clsx(hasError && 'ff-bg-error-50/30')}\n >\n {row.getVisibleCells().map((cell) => (\n <td key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n ))}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n\n {/* Pagination */}\n <div className=\"ff-flex ff-items-center ff-justify-between ff-px-2\">\n <div className=\"ff-text-sm ff-text-gray-500\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </div>\n <div className=\"ff-flex ff-items-center ff-gap-2\">\n <button\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n className=\"ff-btn ff-btn-secondary ff-py-1.5\"\n >\n <ChevronLeft className=\"ff-w-4 ff-h-4\" />\n Previous\n </button>\n <button\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n className=\"ff-btn ff-btn-secondary ff-py-1.5\"\n >\n Next\n <ChevronRight className=\"ff-w-4 ff-h-4\" />\n </button>\n </div>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { CheckCircle, XCircle, AlertTriangle, Info } from 'lucide-react';\nimport { clsx } from 'clsx';\nimport { useImportStore } from '../../store/import-store';\n\ninterface ValidationSummaryProps {\n showDetails?: boolean;\n}\n\nexport const ValidationSummary: React.FC<ValidationSummaryProps> = ({\n showDetails = true,\n}) => {\n const { validationResults } = useImportStore();\n\n if (!validationResults) {\n return null;\n }\n\n const { isValid, totalRows, validRows, errorCount, warningCount, infoCount, summary } =\n validationResults;\n\n const validPercentage = Math.round((validRows / totalRows) * 100);\n\n return (\n <div className=\"ff-space-y-4\">\n {/* Overall Status */}\n <div\n className={clsx(\n 'ff-flex ff-items-center ff-gap-4 ff-p-4 ff-rounded-lg ff-border',\n isValid ? 'ff-bg-success-50 ff-border-success-200' : 'ff-bg-error-50 ff-border-error-200'\n )}\n >\n {isValid ? (\n <CheckCircle className=\"ff-w-8 ff-h-8 ff-text-success-600\" />\n ) : (\n <XCircle className=\"ff-w-8 ff-h-8 ff-text-error-600\" />\n )}\n <div>\n <h3\n className={clsx(\n 'ff-text-lg ff-font-semibold',\n isValid ? 'ff-text-success-800' : 'ff-text-error-800'\n )}\n >\n {isValid ? 'Validation Passed' : 'Validation Failed'}\n </h3>\n <p className={clsx('ff-text-sm', isValid ? 'ff-text-success-600' : 'ff-text-error-600')}>\n {validRows} of {totalRows} rows are valid ({validPercentage}%)\n </p>\n </div>\n </div>\n\n {/* Stats Grid */}\n <div className=\"ff-grid ff-grid-cols-4 ff-gap-4\">\n <div className=\"ff-bg-white ff-border ff-border-gray-200 ff-rounded-lg ff-p-4 ff-text-center\">\n <p className=\"ff-text-2xl ff-font-bold ff-text-gray-900\">{totalRows}</p>\n <p className=\"ff-text-sm ff-text-gray-500\">Total Rows</p>\n </div>\n <div className=\"ff-bg-success-50 ff-border ff-border-success-200 ff-rounded-lg ff-p-4 ff-text-center\">\n <p className=\"ff-text-2xl ff-font-bold ff-text-success-700\">{validRows}</p>\n <p className=\"ff-text-sm ff-text-success-600\">Valid Rows</p>\n </div>\n <div className=\"ff-bg-error-50 ff-border ff-border-error-200 ff-rounded-lg ff-p-4 ff-text-center\">\n <p className=\"ff-text-2xl ff-font-bold ff-text-error-700\">{errorCount}</p>\n <p className=\"ff-text-sm ff-text-error-600\">Errors</p>\n </div>\n <div className=\"ff-bg-warning-50 ff-border ff-border-warning-200 ff-rounded-lg ff-p-4 ff-text-center\">\n <p className=\"ff-text-2xl ff-font-bold ff-text-warning-700\">{warningCount}</p>\n <p className=\"ff-text-sm ff-text-warning-600\">Warnings</p>\n </div>\n </div>\n\n {/* Details by Column */}\n {showDetails && summary.byColumn && Object.keys(summary.byColumn).length > 0 && (\n <div className=\"ff-bg-white ff-border ff-border-gray-200 ff-rounded-lg ff-overflow-hidden\">\n <div className=\"ff-px-4 ff-py-3 ff-bg-gray-50 ff-border-b ff-border-gray-200\">\n <h4 className=\"ff-font-medium ff-text-gray-700\">Issues by Column</h4>\n </div>\n <div className=\"ff-divide-y ff-divide-gray-100\">\n {Object.entries(summary.byColumn)\n .filter(([, col]) => col.errorCount > 0 || col.warningCount > 0)\n .map(([key, col]) => (\n <div key={key} className=\"ff-flex ff-items-center ff-justify-between ff-px-4 ff-py-3\">\n <div>\n <p className=\"ff-font-medium ff-text-gray-900\">{col.columnKey}</p>\n {col.mostCommonError && (\n <p className=\"ff-text-sm ff-text-gray-500\">{col.mostCommonError}</p>\n )}\n </div>\n <div className=\"ff-flex ff-items-center ff-gap-3\">\n {col.errorCount > 0 && (\n <span className=\"ff-badge ff-badge-error\">\n <XCircle className=\"ff-w-3 ff-h-3 ff-mr-1\" />\n {col.errorCount} errors\n </span>\n )}\n {col.warningCount > 0 && (\n <span className=\"ff-badge ff-badge-warning\">\n <AlertTriangle className=\"ff-w-3 ff-h-3 ff-mr-1\" />\n {col.warningCount} warnings\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Duplicates */}\n {showDetails && summary.duplicates && summary.duplicates.length > 0 && (\n <div className=\"ff-bg-warning-50 ff-border ff-border-warning-200 ff-rounded-lg ff-p-4\">\n <div className=\"ff-flex ff-items-start ff-gap-3\">\n <AlertTriangle className=\"ff-w-5 ff-h-5 ff-text-warning-600 ff-flex-shrink-0 ff-mt-0.5\" />\n <div>\n <h4 className=\"ff-font-medium ff-text-warning-800\">Duplicate Values Found</h4>\n <ul className=\"ff-mt-2 ff-space-y-1 ff-text-sm ff-text-warning-700\">\n {summary.duplicates.slice(0, 5).map((dup, i) => (\n <li key={i}>\n <span className=\"ff-font-mono\">{dup.columnKey}</span>: \"{String(dup.value)}\" appears{' '}\n {dup.rowIndices.length} times (rows{' '}\n {dup.rowIndices\n .slice(0, 3)\n .map((r) => r + 1)\n .join(', ')}\n {dup.rowIndices.length > 3 ? '...' : ''})\n </li>\n ))}\n {summary.duplicates.length > 5 && (\n <li className=\"ff-text-warning-600\">\n ... and {summary.duplicates.length - 5} more duplicate groups\n </li>\n )}\n </ul>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n","import React, { useCallback, useEffect } from 'react';\nimport { Upload, GitBranch, CheckSquare, Eye, CheckCircle, X, Loader2 } from 'lucide-react';\nimport { clsx } from 'clsx';\nimport { useImportStore, type ImportStep } from '../../store/import-store';\nimport { getClient } from '../../api/client';\nimport { FileUploader } from './FileUploader';\nimport { ColumnMapper } from './ColumnMapper';\nimport { DataTable } from './DataTable';\nimport { ValidationSummary } from './ValidationSummary';\nimport type { ImportSchema, ImportResult } from '@fileflow/shared';\n\ninterface ImportWizardProps {\n schema: ImportSchema;\n onComplete?: (result: ImportResult) => void;\n onCancel?: () => void;\n onError?: (error: Error) => void;\n}\n\nconst STEPS: { key: ImportStep; label: string; icon: React.ElementType }[] = [\n { key: 'upload', label: 'Upload', icon: Upload },\n { key: 'mapping', label: 'Map Columns', icon: GitBranch },\n { key: 'validation', label: 'Validate', icon: CheckSquare },\n { key: 'review', label: 'Review', icon: Eye },\n { key: 'complete', label: 'Complete', icon: CheckCircle },\n];\n\nexport const ImportWizard: React.FC<ImportWizardProps> = ({\n schema,\n onComplete,\n onCancel,\n onError,\n}) => {\n const {\n step,\n sessionId,\n file,\n mappings,\n validationResults,\n isLoading,\n error,\n setSchema,\n setSessionId,\n setParsedData,\n setMappings,\n setUnmapped,\n setValidationResults,\n setStep,\n nextStep,\n previousStep,\n setLoading,\n setError,\n reset,\n } = useImportStore();\n\n // Initialize schema\n useEffect(() => {\n setSchema(schema);\n initializeSession();\n }, [schema]);\n\n const initializeSession = async () => {\n try {\n setLoading(true);\n const client = getClient();\n const result = await client.createImportSession(schema);\n setSessionId(result.sessionId);\n } catch (err) {\n const error = err as Error;\n setError(error.message);\n onError?.(error);\n } finally {\n setLoading(false);\n }\n };\n\n const handleFileSelect = useCallback(async (selectedFile: File) => {\n if (!sessionId) return;\n\n try {\n setLoading(true);\n setError(null);\n const client = getClient();\n \n const result = await client.uploadFile(sessionId, selectedFile);\n \n setParsedData({\n headers: result.data.headers,\n rows: result.data.sampleRows.map((row, i) => ({\n rowIndex: i,\n data: row as Record<string, string>,\n rawData: Object.values(row) as string[],\n })),\n totalRows: result.data.totalRows,\n sampleRows: result.data.sampleRows.map((row, i) => ({\n rowIndex: i,\n data: row as Record<string, string>,\n rawData: Object.values(row) as string[],\n })),\n });\n\n // Auto-advance to mapping\n nextStep();\n \n // Trigger column matching\n await handleColumnMatching();\n } catch (err) {\n const error = err as Error;\n setError(error.message);\n onError?.(error);\n } finally {\n setLoading(false);\n }\n }, [sessionId]);\n\n const handleColumnMatching = async () => {\n if (!sessionId) return;\n\n try {\n setLoading(true);\n const client = getClient();\n \n const result = await client.matchColumns(sessionId);\n \n setMappings(result.mappings as any[]);\n setUnmapped(result.unmappedSource, result.unmappedTarget);\n } catch (err) {\n const error = err as Error;\n setError(error.message);\n onError?.(error);\n } finally {\n setLoading(false);\n }\n };\n\n const handleValidation = async () => {\n if (!sessionId) return;\n\n try {\n setLoading(true);\n setError(null);\n const client = getClient();\n \n const result = await client.validateImport(sessionId);\n \n setValidationResults(result.validation as any);\n nextStep();\n } catch (err) {\n const error = err as Error;\n setError(error.message);\n onError?.(error);\n } finally {\n setLoading(false);\n }\n };\n\n const handleComplete = async () => {\n if (!sessionId) return;\n\n try {\n setLoading(true);\n setError(null);\n const client = getClient();\n \n const result = await client.completeImport(sessionId, {\n skipInvalidRows: true,\n acknowledgeWarnings: true,\n });\n \n setStep('complete');\n onComplete?.(result as ImportResult);\n } catch (err) {\n const error = err as Error;\n setError(error.message);\n onError?.(error);\n } finally {\n setLoading(false);\n }\n };\n\n const handleCancel = () => {\n reset();\n onCancel?.();\n };\n\n const getCurrentStepIndex = () => STEPS.findIndex((s) => s.key === step);\n\n const canProceed = () => {\n switch (step) {\n case 'upload':\n return file !== null;\n case 'mapping':\n return mappings.length > 0 && mappings.some((m) => m.targetKey !== null);\n case 'validation':\n return validationResults !== null;\n case 'review':\n return true;\n default:\n return false;\n }\n };\n\n const handleNext = async () => {\n switch (step) {\n case 'mapping':\n await handleValidation();\n break;\n case 'validation':\n nextStep();\n break;\n case 'review':\n await handleComplete();\n break;\n default:\n nextStep();\n }\n };\n\n return (\n <div className=\"ff-container ff-bg-white ff-rounded-xl ff-shadow-xl ff-overflow-hidden ff-flex ff-flex-col ff-max-h-[90vh]\">\n {/* Header */}\n <div className=\"ff-flex ff-items-center ff-justify-between ff-px-6 ff-py-4 ff-border-b ff-border-gray-200 ff-bg-gray-50 ff-flex-shrink-0\">\n <h2 className=\"ff-text-xl ff-font-semibold ff-text-gray-900\">Import Data</h2>\n <button\n onClick={handleCancel}\n className=\"ff-p-2 ff-text-gray-400 hover:ff-text-gray-600 ff-rounded-full hover:ff-bg-gray-100\"\n >\n <X className=\"ff-w-5 ff-h-5\" />\n </button>\n </div>\n\n {/* Progress Steps */}\n <div className=\"ff-px-6 ff-py-4 ff-border-b ff-border-gray-200 ff-flex-shrink-0\">\n <div className=\"ff-flex ff-items-center ff-justify-between\">\n {STEPS.map((s, index) => {\n const Icon = s.icon;\n const isCurrent = s.key === step;\n const isCompleted = getCurrentStepIndex() > index;\n const isDisabled = getCurrentStepIndex() < index;\n\n return (\n <React.Fragment key={s.key}>\n <div\n className={clsx(\n 'ff-flex ff-items-center ff-gap-2',\n isCurrent && 'ff-text-primary-600',\n isCompleted && 'ff-text-success-600',\n isDisabled && 'ff-text-gray-300'\n )}\n >\n <div\n className={clsx(\n 'ff-flex ff-items-center ff-justify-center ff-w-8 ff-h-8 ff-rounded-full',\n isCurrent && 'ff-bg-primary-100',\n isCompleted && 'ff-bg-success-100',\n isDisabled && 'ff-bg-gray-100'\n )}\n >\n {isCompleted ? (\n <CheckCircle className=\"ff-w-5 ff-h-5\" />\n ) : (\n <Icon className=\"ff-w-4 ff-h-4\" />\n )}\n </div>\n <span\n className={clsx(\n 'ff-text-sm ff-font-medium',\n isDisabled && 'ff-text-gray-400'\n )}\n >\n {s.label}\n </span>\n </div>\n {index < STEPS.length - 1 && (\n <div\n className={clsx(\n 'ff-flex-1 ff-h-0.5 ff-mx-4',\n isCompleted ? 'ff-bg-success-300' : 'ff-bg-gray-200'\n )}\n />\n )}\n </React.Fragment>\n );\n })}\n </div>\n </div>\n\n {/* Content */}\n <div className=\"ff-p-6 ff-min-h-[200px] ff-overflow-y-auto ff-flex-1\">\n {error && (\n <div className=\"ff-mb-4 ff-p-4 ff-bg-error-50 ff-border ff-border-error-200 ff-rounded-lg ff-text-error-700\">\n {error}\n </div>\n )}\n\n {step === 'upload' && (\n <div className=\"ff-max-w-xl ff-mx-auto\">\n <FileUploader onFileSelect={handleFileSelect} />\n </div>\n )}\n\n {step === 'mapping' && <ColumnMapper />}\n\n {step === 'validation' && (\n <div className=\"ff-space-y-6\">\n <ValidationSummary />\n <DataTable editable={true} />\n </div>\n )}\n\n {step === 'review' && (\n <div className=\"ff-space-y-6\">\n <ValidationSummary showDetails={false} />\n <DataTable editable={false} pageSize={10} />\n </div>\n )}\n\n {step === 'complete' && (\n <div className=\"ff-flex ff-flex-col ff-items-center ff-justify-center ff-py-12\">\n <div className=\"ff-w-16 ff-h-16 ff-bg-success-100 ff-rounded-full ff-flex ff-items-center ff-justify-center ff-mb-4\">\n <CheckCircle className=\"ff-w-10 ff-h-10 ff-text-success-600\" />\n </div>\n <h3 className=\"ff-text-xl ff-font-semibold ff-text-gray-900 ff-mb-2\">\n Import Complete!\n </h3>\n <p className=\"ff-text-gray-500\">\n Your data has been successfully imported.\n </p>\n </div>\n )}\n </div>\n\n {/* Footer */}\n {step !== 'complete' && (\n <div className=\"ff-flex ff-items-center ff-justify-between ff-px-6 ff-py-4 ff-border-t ff-border-gray-200 ff-bg-gray-50 ff-flex-shrink-0\">\n <button\n onClick={previousStep}\n disabled={getCurrentStepIndex() === 0 || isLoading}\n className=\"ff-btn ff-btn-secondary\"\n >\n Back\n </button>\n <button\n onClick={handleNext}\n disabled={!canProceed() || isLoading}\n className=\"ff-btn ff-btn-primary\"\n >\n {isLoading ? (\n <>\n <Loader2 className=\"ff-w-4 ff-h-4 ff-mr-2 ff-animate-spin\" />\n Processing...\n </>\n ) : step === 'review' ? (\n 'Complete Import'\n ) : (\n 'Continue'\n )}\n </button>\n </div>\n )}\n </div>\n );\n};\n"],"names":["ArrowRight","createLucideIcon","CheckSquare","Check","ChevronLeft","Eye","File","GitBranch","HelpCircle","Pen","initialState","useImportStore","create","set","get","schema","sessionId","file","data","mappings","sourceColumn","targetKey","state","m","source","target","results","errorsByRow","error","existing","step","steps","currentIndex","rowIndex","columnKey","value","rows","row","r","editedRows","status","isLoading","FileUploader","onFileSelect","maxSize","acceptedTypes","fileName","fileSize","setFile","setError","onDrop","useCallback","acceptedFiles","rejectedFiles","selectedFile","getRootProps","getInputProps","isDragActive","useDropzone","formatFileSize","bytes","clearFile","e","jsxs","jsx","X","clsx","Upload","AlertCircle","ColumnMapper","onMappingChange","unmappedSource","updateMapping","targetColumns","handleMappingChange","getConfidenceColor","confidence","getConfidenceLabel","mappedKeys","mapping","c","isMapped","isHighConfidence","col","requiredUnmapped","createColumnHelper","accessor","column","functionalUpdate","updater","input","makeStateUpdater","key","instance","old","isFunction","d","isNumberArray","val","flattenBy","arr","getChildren","flat","recurse","subArr","item","children","memo","getDeps","fn","opts","deps","result","depArgs","depTime","newDeps","dep","index","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","num","getMemoOptions","tableOptions","debugLevel","onChange","_tableOptions$debugAl","createCell","table","columnId","getRenderValue","_cell$getValue","cell","feature","createColumn","columnDef","depth","parent","_ref","_resolvedColumnDef$id","resolvedColumnDef","accessorKey","id","accessorFn","originalRow","_result","_column$columns","orderColumns","_column$columns2","leafColumns","debug","createHeader","options","_options$id","header","leafHeaders","recurseHeader","h","Headers","allColumns","left","right","_left$map$filter","_right$map$filter","leftColumns","rightColumns","centerColumns","buildHeaderGroups","_left$map$filter2","orderedLeafColumns","_right$map$filter2","headerGroups","headerGroup","flatHeaders","_header$subHeaders","_header$subHeaders2","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","bottomHeaders","recurseHeadersForSpans","headers","colSpan","rowSpan","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","original","subRows","parentId","_row$getValue","parentRows","currentRow","parentRow","allCells","acc","i","ColumnFaceting","includesString","filterValue","_filterValue$toString","search","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","min","max","rowValue","unsafeMin","unsafeMax","parsedMin","parsedMax","temp","filterFns","ColumnFiltering","firstRow","_table$options$filter","_table$options$filter2","_column$columnDef$ena","_table$options$enable","_table$options$enable2","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","filterFn","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","updateFn","_functionalUpdate","filter","defaultState","_table$initialState$c","_table$initialState","sum","_leafRows","childRows","next","nextValue","extent","mean","leafRows","count","median","values","mid","nums","a","b","unique","uniqueCount","_columnId","aggregationFns","ColumnGrouping","props","_toString","_props$getValue","_table$getState$group","_table$getState$group2","canGroup","_table$options$aggreg","_table$options$aggreg2","_table$initialState$g","_row$subRows","grouping","groupedColumnMode","nonGroupingColumns","g","ColumnOrdering","position","_getVisibleLeafColumns","_columns$","_columns","columnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","getDefaultColumnPinningState","ColumnPinning","columnIds","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","_d$columnDef$enablePi","leafColumnIds","isLeft","isRight","leftAndRight","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","safelyAccessDocument","_document","defaultColumnSizing","getDefaultColumnSizingInfoState","ColumnSizing","_column$columnDef$min","_column$columnDef$max","columnSize","_ref2","_","rest","_header$column$getSiz","prevSiblingHeader","_contextDocument","canResize","isTouchStartEvent","startSize","columnSizingStart","clientX","newColumnSizing","updateOffset","eventType","clientXPos","_old$startOffset","_old$startSize","deltaDirection","deltaOffset","deltaPercentage","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","touchEvents","_e$touches$","passiveIfSupported","passiveEventSupported","_table$initialState$c2","_table$getHeaderGroup","_table$getHeaderGroup2","_table$getLeftHeaderG","_table$getLeftHeaderG2","_table$getCenterHeade","_table$getCenterHeade2","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","noop","ColumnVisibility","childColumns","cells","makeVisibleColumnsMethod","getColumns","_value","obj","_target","GlobalFaceting","GlobalFiltering","_table$getCoreRowMode","_table$options$getCol","globalFilterFn","RowExpanding","registered","queued","_table$options$autoRe","expanded","_table$initialState$e","splitId","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","_table$options$getRow","isFullyExpanded","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","RowPagination","safeUpdater","_table$initialState$p","pageIndex","maxPageIndex","_table$initialState$p2","_table$initialState$p3","_table$initialState2","pageSize","topRowIndex","_table$options$pageCo","newPageCount","pageCount","pageOptions","_table$options$pageCo2","_table$options$rowCou","getDefaultRowPinningState","RowPinning","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","rowIds","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","enableRowPinning","enablePinning","top","bottom","isTop","isBottom","_ref4","_visiblePinnedRowIds$","visiblePinnedRowIds","_ref5","_table$initialState$r","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","allRows","topPinnedRowIds","bottomPinnedRowIds","topAndBottom","RowSelection","rowSelection","preGroupedFlatRows","resolvedValue","mutateRowIsSelected","rowModel","selectRowsFn","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","_table$getState$rowSe","totalSelected","isSelected","_opts$selectChildren","selectedRowIds","isRowSelected","isSubRowSelected","_table$options$enable3","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","toString","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","bn","combo","sortingFns","RowSorting","firstRows","isString","_table$options$sortin","_table$options$sortin2","desc","multi","nextSortingOrder","hasManualValue","existingSorting","existingIndex","newSorting","sortAction","nextDesc","_table$options$maxMul","_column$columnDef$sor","firstSortDirection","isSorted","_column$columnDef$ena2","_table$getState$sorti","columnSort","_table$getState$sorti2","_table$getState$sorti3","canSort","_table$initialState$s","builtInFeatures","createTable","_options$_features","_options$initialState","_features","defaultOptions","mergeOptions","_feature$getInitialSt","queuedTimeout","coreInstance","cb","newOptions","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","columnDefs","recurseColumns","groupingColumnDef","flatColumns","getCoreRowModel","accessRows","originalRows","_row$originalSubRows","expandRows","expandedRows","handleRow","filterRows","filterRowImpl","filterRowModelFromLeafs","filterRowModelFromRoot","rowsToFilter","filterRow","_table$options$maxLea","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","_table$options$maxLea2","getFilteredRowModel","columnFilters","globalFilter","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","filterableIds","globallyFilterableColumns","_globalFilterFn$resol","currentColumnFilter","currentGlobalFilter","j","filterMeta","filterRowsImpl","getPaginationRowModel","pagination","flatRows","rowsById","pageStart","pageEnd","paginatedRowModel","getSortedRowModel","sorting","sortingState","sortedFlatRows","availableSorting","sort","_table$getColumn","columnInfoById","sortEntry","sortData","sortedData","_sortEntry$desc","columnInfo","sortUndefined","isDesc","sortInt","aValue","bValue","aUndefined","bUndefined","flexRender","Comp","isReactComponent","React","component","isClassComponent","isExoticComponent","proto","useReactTable","resolvedOptions","tableRef","setState","prev","DataTable","editable","onCellEdit","editingCell","startEditing","stopEditing","updateCell","setSorting","useState","setGlobalFilter","editValue","setEditValue","displayColumns","useMemo","schemaCol","getCellError","rowErrors","handleStartEdit","currentValue","handleSaveEdit","handleCancelEdit","columnHelper","info","AlertTriangle","Edit2","hasError","ChevronRight","ValidationSummary","showDetails","validationResults","isValid","totalRows","validRows","errorCount","warningCount","infoCount","summary","validPercentage","CheckCircle","XCircle","dup","STEPS","ImportWizard","onComplete","onCancel","onError","setSchema","setSessionId","setParsedData","setMappings","setUnmapped","setValidationResults","setStep","nextStep","previousStep","setLoading","reset","useEffect","initializeSession","getClient","err","handleFileSelect","handleColumnMatching","handleValidation","handleComplete","handleCancel","getCurrentStepIndex","s","canProceed","handleNext","Icon","isCurrent","isCompleted","isDisabled","Fragment","Loader2"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,12,13]}
|