next-data-kit 8.2.0 → 8.2.2

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/utils.ts","../src/server/adapters/mongoose.ts","../src/server/action.ts","../src/server/adapters/memory.ts","../src/server/schema.ts","../src/client/utils/cn.ts","../src/client/utils/index.ts","../src/client/hooks/useDataKit.ts","../src/client/hooks/useSelection.ts","../src/client/hooks/usePagination.ts","../src/client/context/index.tsx","../src/client/components/ui/table.tsx","../src/client/components/ui/checkbox.tsx","../src/client/components/ui/popover.tsx","../src/client/components/ui/dropdown-menu.tsx","../src/client/components/ui/switch.tsx","../src/client/components/ui/button.tsx","../src/client/components/ui/pagination.tsx","../src/client/components/ui/select.tsx","../src/client/components/data-kit-table.tsx","../src/client/components/data-kit.tsx"],"names":["customFilter","filters","useState","useCallback","useMemo","jsx","React","Button","jsxs","CheckIcon","debounce","useRef","useEffect","MoreHorizontal","action","ChevronLeft","ChevronRight","Filter","Loader2"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * next-data-kit - Server Utilities\n */\n\nimport type { TMongoFilterQuery, TSortEntry, TPaginationInfo } from '../types';\n\n/**\n * Check if a value is provided (not undefined, null, or empty string)\n */\nexport const isProvided = (value: unknown): boolean => value !== undefined && value !== null && value !== '';\n\n/**\n * Get a nested value from an object by path (e.g., 'user.name')\n */\nexport const getValueByPath = (obj: unknown, path: string): unknown => {\n\tif (!path) return undefined;\n\tconst parts = path.split('.');\n\tlet current: unknown = obj;\n\tfor (const part of parts) {\n\t\tif (current && typeof current === 'object' && part in (current as Record<string, unknown>)) {\n\t\t\tcurrent = (current as Record<string, unknown>)[part];\n\t\t} else {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\treturn current;\n};\n\n/**\n * Check if a value matches exactly (supports array inclusion)\n */\nexport const matchesExact = (rowValue: unknown, needle: unknown): boolean => {\n\tif (Array.isArray(needle)) return needle.includes(rowValue as never);\n\treturn rowValue === needle;\n};\n\n/**\n * Check if a value matches a regex-like pattern (case-insensitive)\n */\nexport const matchesRegexLike = (rowValue: unknown, needle: unknown): boolean => {\n\tif (!isProvided(needle)) return true;\n\tif (rowValue === undefined || rowValue === null) return false;\n\tconst hay = String(rowValue);\n\n\tif (needle instanceof RegExp) return needle.test(hay);\n\tconst n = String(needle);\n\treturn hay.toLowerCase().includes(n.toLowerCase());\n};\n\n/**\n * Compare two values for sorting\n */\nexport const compareValues = (a: unknown, b: unknown): number => {\n\tif (a === b) return 0;\n\tif (a === undefined || a === null) return -1;\n\tif (b === undefined || b === null) return 1;\n\n\tif (typeof a === 'number' && typeof b === 'number') return a - b;\n\tif (typeof a === 'bigint' && typeof b === 'bigint') return a < b ? -1 : 1;\n\n\tconst as = String(a);\n\tconst bs = String(b);\n\treturn as.localeCompare(bs);\n};\n\n/**\n * Normalize and validate sort entries\n */\nexport const normalizeSorts = (sorts: TSortEntry[] | undefined): TSortEntry[] => (Array.isArray(sorts) ? sorts.filter(s => !!s?.path && (s.value === 1 || s.value === -1)) : []);\n\n/**\n * Check if a key is safe (not a prototype pollution key)\n */\nexport const isSafeKey = (key: string): boolean => {\n\tconst unsafeKeys = ['__proto__', 'constructor', 'prototype'];\n\treturn !unsafeKeys.includes(key);\n};\n\n/**\n * Helper to escape regex special characters in a string\n */\nexport const escapeRegex = (str: string): string => {\n\treturn str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\n\n/**\n * Create a search filter for multiple fields\n *\n * @example\n * ```typescript\n * filterCustom: {\n * search: createSearchFilter(['name', 'email', 'phone'])\n * }\n * ```\n */\nexport const createSearchFilter = <T>(fields: (keyof T | string)[]): ((value: unknown) => TMongoFilterQuery<T>) => {\n\treturn (value: unknown): TMongoFilterQuery<T> => {\n\t\tif (!value || typeof value !== 'string') {\n\t\t\treturn {} as TMongoFilterQuery<T>;\n\t\t}\n\n\t\tconst escapedValue = escapeRegex(value);\n\t\treturn {\n\t\t\t$or: fields.map(field => ({\n\t\t\t\t[field]: { $regex: escapedValue, $options: 'i' },\n\t\t\t})),\n\t\t} as TMongoFilterQuery<T>;\n\t};\n};\n/**\n * Calculate pagination info from page, limit, and total\n */\nexport const calculatePagination = (page: number, limit: number, total: number): TPaginationInfo => ({\n\tcurrentPage: page,\n\ttotalPages: Math.ceil(total / limit),\n\ttotalItems: total,\n\titemsPerPage: limit,\n\thasNextPage: page * limit < total,\n\thasPrevPage: page > 1,\n});\n","/**\n * next-data-kit - Mongoose Adapter\n *\n * Database adapter for Mongoose/MongoDB.\n */\n\nimport type { TMongoModel, TMongoFilterQuery, TSortOrder, TSortOptions, TFilterCustomConfigWithFilter, TDataKitAdapter } from '../../types';\nimport { escapeRegex, isProvided, isSafeKey } from '../utils';\n\nexport const mongooseAdapter = <DocType = unknown>(\n\tmodel: TMongoModel<DocType>,\n\toptions: Readonly<{\n\t\tfilter?: ((filterInput?: Record<string, unknown>) => TMongoFilterQuery<DocType>) | TMongoFilterQuery<DocType>;\n\t\tfilterCustom?: TFilterCustomConfigWithFilter<DocType, TMongoFilterQuery<DocType>>;\n\t\tdefaultSort?: TSortOptions<DocType>;\n\t}> = {},\n): TDataKitAdapter<DocType> => {\n\t// ** Deconstruct options\n\tconst { filter: customFilter, filterCustom, defaultSort = { _id: -1 } as TSortOptions<DocType> } = options;\n\n\treturn async ({ filter, sorts, limit, skip, input }) => {\n\t\t// ** Normalize sort\n\t\tlet sortOption: Record<string, TSortOrder>;\n\n\t\tif (input.sort && Object.keys(input.sort).length > 0) {\n\t\t\tsortOption = input.sort as Record<string, TSortOrder>;\n\t\t} else if (sorts && sorts.length > 0) {\n\t\t\tsortOption = sorts.reduce<Record<string, TSortOrder>>((acc, s) => {\n\t\t\t\tif (s?.path && (s.value === 1 || s.value === -1)) {\n\t\t\t\t\tacc[s.path] = s.value;\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t}, {});\n\t\t} else {\n\t\t\tsortOption = defaultSort as Record<string, TSortOrder>;\n\t\t}\n\n\t\t// ** Construct filter query\n\t\tlet filterQuery: TMongoFilterQuery<DocType> = {};\n\n\t\t// ** Query params (exact match)\n\t\tif (input.query) {\n\t\t\tObject.entries(input.query).forEach(([key, value]) => {\n\t\t\t\tif (isProvided(value) && isSafeKey(key)) {\n\t\t\t\t\t(filterQuery as Record<string, unknown>)[key] = value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// ** Custom filter function or object\n\t\tif (customFilter) {\n\t\t\tconst customQuery = typeof customFilter === 'function' ? customFilter(filter) : customFilter;\n\t\t\tfilterQuery = { ...filterQuery, ...customQuery };\n\t\t}\n\n\t\t// ** User defined filters\n\t\tif (filter && !customFilter) {\n\t\t\tif (input.filterConfig) {\n\t\t\t\tObject.entries(filter).forEach(([key, value]) => {\n\t\t\t\t\t// Skip if handled by filterCustom\n\t\t\t\t\tif (filterCustom && filterCustom[key]) return;\n\n\t\t\t\t\tif (isProvided(value) && isSafeKey(key) && input.filterConfig?.[key]) {\n\t\t\t\t\t\tconst config = input.filterConfig[key];\n\t\t\t\t\t\tconst fieldName = config?.field ?? key;\n\n\t\t\t\t\t\tif (config?.type === 'REGEX') {\n\t\t\t\t\t\t\t(filterQuery as Record<string, unknown>)[fieldName] = {\n\t\t\t\t\t\t\t\t$regex: escapeRegex(String(value)),\n\t\t\t\t\t\t\t\t$options: 'i',\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (config?.type === 'EXACT') {\n\t\t\t\t\t\t\t(filterQuery as Record<string, unknown>)[fieldName] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// ** Default automatic filtering\n\t\t\t\tObject.entries(filter).forEach(([key, value]) => {\n\t\t\t\t\t// Skip if handled by filterCustom\n\t\t\t\t\tif (filterCustom && filterCustom[key]) return;\n\n\t\t\t\t\tif (isProvided(value) && isSafeKey(key)) {\n\t\t\t\t\t\tif (typeof value === 'string') {\n\t\t\t\t\t\t\t(filterQuery as Record<string, unknown>)[key] = {\n\t\t\t\t\t\t\t\t$regex: escapeRegex(value),\n\t\t\t\t\t\t\t\t$options: 'i',\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (typeof value === 'number' || typeof value === 'boolean') {\n\t\t\t\t\t\t\t(filterQuery as Record<string, unknown>)[key] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// ** Custom filter logic (filterCustom)\n\t\tif (filterCustom && filter) {\n\t\t\tObject.entries(filter).forEach(([key, value]) => {\n\t\t\t\tif (isProvided(value) && isSafeKey(key) && filterCustom[key]) {\n\t\t\t\t\tconst customFilter = filterCustom[key]!(value);\n\t\t\t\t\tfilterQuery = { ...filterQuery, ...customFilter };\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// ** Execute queries\n\t\tconst total = await model.countDocuments(filterQuery as TMongoFilterQuery<unknown>);\n\t\tconst items = (await model\n\t\t\t.find(filterQuery as TMongoFilterQuery<unknown>)\n\t\t\t.sort(sortOption)\n\t\t\t.limit(limit)\n\t\t\t.skip(skip)) as unknown as DocType[];\n\n\t\treturn { items, total };\n\t};\n};\n","/**\n * next-data-kit - Server Action\n *\n * The main server-side function for handling table data fetching\n * with pagination, filtering, and sorting.\n */\n\nimport { mongooseAdapter } from './adapters/mongoose';\nimport type { Model } from 'mongoose';\nimport type { TDataKitInput, TDataKitResult, TDataKitAdapter, TMongoModel, TExtractDocType, TMongooseOptions, TAdapterOptions } from '../types';\n\n/**\n * Core execution logic shared by both overloads\n */\nasync function executeDataKit<TDoc, R>(input: TDataKitInput<TDoc>, adapter: TDataKitAdapter<TDoc>, item: (item: TDoc) => Promise<R> | R, maxLimit: number, filterAllowed?: string[], queryAllowed?: (keyof TDoc | string)[], sortAllowed?: (keyof TDoc | string)[]): Promise<TDataKitResult<R>> {\n\t// Check Query\n\tif (input.query) {\n\t\tconst safeQuery: Record<string, string | number | boolean> = {};\n\t\tObject.keys(input.query).forEach(key => {\n\t\t\tif (queryAllowed && !queryAllowed.includes(key)) {\n\t\t\t\tthrow new Error(`[Security] Query field '${key}' is not allowed.`);\n\t\t\t}\n\t\t\tconst val = input.query![key];\n\t\t\tif (val !== null && typeof val === 'object') {\n\t\t\t\tthrow new Error(`[Security] Query value for '${key}' must be a primitive.`);\n\t\t\t}\n\t\t\tif (val !== undefined) {\n\t\t\t\tsafeQuery[key] = val;\n\t\t\t}\n\t\t});\n\t\tinput.query = safeQuery;\n\t}\n\n\t// Check Filter\n\tif (input.filter) {\n\t\tconst safeFilter: Record<string, string | number | boolean | null> = {};\n\t\tObject.keys(input.filter).forEach(key => {\n\t\t\tif (filterAllowed && !filterAllowed.includes(key)) {\n\t\t\t\tthrow new Error(`[Security] Filter field '${key}' is not allowed.`);\n\t\t\t}\n\t\t\tconst val = input.filter![key];\n\t\t\tif (val !== null && typeof val === 'object') {\n\t\t\t\tthrow new Error(`[Security] Filter value for '${key}' must be a primitive.`);\n\t\t\t}\n\t\t\tif (val !== undefined) {\n\t\t\t\tsafeFilter[key] = val;\n\t\t\t}\n\t\t});\n\t\tinput.filter = safeFilter;\n\t}\n\n\t// Check Sort\n\tif (input.sorts && sortAllowed) {\n\t\tinput.sorts.forEach(sort => {\n\t\t\tif (!sortAllowed.includes(sort.path)) {\n\t\t\t\tthrow new Error(`[Security] Sort field '${sort.path}' is not allowed.`);\n\t\t\t}\n\t\t});\n\t}\n\n\t// Handle action\n\tswitch (input.action ?? 'FETCH') {\n\t\tcase 'FETCH': {\n\t\t\tif (!input.limit || !input.page) {\n\t\t\t\tthrow new Error('Invalid input: missing limit or page');\n\t\t\t}\n\n\t\t\tconst limit = Math.min(input.limit, maxLimit);\n\t\t\tconst skip = limit * (input.page - 1);\n\n\t\t\tconst { items, total } = await adapter({\n\t\t\t\tfilter: input.filter ?? {},\n\t\t\t\tsorts: input.sorts ?? [],\n\t\t\t\tlimit,\n\t\t\t\tpage: input.page,\n\t\t\t\tskip,\n\t\t\t\tinput,\n\t\t\t});\n\n\t\t\tconst processedItems = await Promise.all(items.map(dataItem => item(dataItem)));\n\n\t\t\treturn {\n\t\t\t\ttype: 'ITEMS',\n\t\t\t\titems: processedItems,\n\t\t\t\tdocumentTotal: total,\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\tthrow new Error(`Unsupported action: ${(input as { action?: string }).action}`);\n\t}\n}\n\n/**\n * Server action with Mongoose model (auto-infers document type)\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport async function dataKitServerAction<M extends Model<any>, R = unknown>(props: Readonly<TMongooseOptions<M, TExtractDocType<M>, R>>): Promise<TDataKitResult<R>>;\n\n/**\n * Server action with custom adapter\n */\nexport async function dataKitServerAction<TDoc, R = unknown>(props: Readonly<TAdapterOptions<TDoc, R>>): Promise<TDataKitResult<R>>;\n\n/**\n * Implementation\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport async function dataKitServerAction<M extends Model<any>, TDoc = any, R = unknown>(props: Readonly<TMongooseOptions<M, TDoc, R> | TAdapterOptions<TDoc, R>>): Promise<TDataKitResult<R>> {\n\tconst { input, item, maxLimit = 100, queryAllowed, filterAllowed: explicitFilterAllowed, sortAllowed } = props;\n\n\t// Determine filterAllowed\n\tconst filterAllowed = explicitFilterAllowed;\n\n\t// Determine adapter\n\tlet finalAdapter: TDataKitAdapter<TDoc>;\n\n\tif ('adapter' in props && props.adapter) {\n\t\tfinalAdapter = props.adapter;\n\t} else if ('model' in props && props.model) {\n\t\tconst model = props.model as unknown as TMongoModel<TDoc>;\n\t\tfinalAdapter = mongooseAdapter(model, {\n\t\t\tfilter: props.filter,\n\t\t\tfilterCustom: props.filterCustom,\n\t\t\tdefaultSort: props.defaultSort,\n\t\t}) as TDataKitAdapter<TDoc>;\n\t} else {\n\t\tthrow new Error('Either model or adapter must be provided');\n\t}\n\n\treturn executeDataKit(input, finalAdapter, item, maxLimit, filterAllowed, queryAllowed, sortAllowed);\n}\n","/**\n * next-data-kit - Memory Adapter\n *\n * In-memory adapter for demos, tests, and local playgrounds.\n * Implements the React Data Kit adapter contract over an array dataset.\n */\n\nimport type { TFilterConfig, TDataKitAdapter } from '../../types';\nimport { isProvided, getValueByPath, matchesExact, matchesRegexLike, compareValues, normalizeSorts } from '../utils';\n\n/**\n * Creates an adapter that pages/filters/sorts an in-memory dataset.\n */\nexport const adapterMemory = <T extends Record<string, unknown>>(\n\tdataset: ReadonlyArray<T>,\n\toptions: Readonly<{\n\t\t/** default behavior for filter keys not present in filterConfig */\n\t\tdefaultFilterType?: 'regex' | 'exact';\n\t}> = {},\n): TDataKitAdapter<T> => {\n\tconst { defaultFilterType = 'exact' } = options;\n\n\treturn async ({ filter, sorts, limit, skip, input }) => {\n\t\tconst filterConfig: TFilterConfig | undefined = input.filterConfig;\n\t\tconst query = input.query ?? {};\n\n\t\t// 1) Apply query (exact match)\n\t\tlet rows = dataset.filter(row => {\n\t\t\tfor (const [key, value] of Object.entries(query)) {\n\t\t\t\tif (!isProvided(value)) continue;\n\t\t\t\tconst rowValue = getValueByPath(row, key);\n\t\t\t\tif (!matchesExact(rowValue, value)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\t// 2) Apply filter (via filterConfig when present)\n\t\tconst effectiveFilter = filter ?? {};\n\t\trows = rows.filter(row => {\n\t\t\tfor (const [key, value] of Object.entries(effectiveFilter)) {\n\t\t\t\tif (!isProvided(value)) continue;\n\n\t\t\t\tconst config = filterConfig?.[key];\n\t\t\t\tconst field = config?.field ?? key;\n\t\t\t\tconst rowValue = getValueByPath(row, field);\n\n\t\t\t\tconst type = config?.type ?? defaultFilterType;\n\t\t\t\tif (type === 'regex') {\n\t\t\t\t\tif (!matchesRegexLike(rowValue, value)) return false;\n\t\t\t\t} else {\n\t\t\t\t\tif (!matchesExact(rowValue, value)) return false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\t// 3) Sort\n\t\tconst normalizedSorts = normalizeSorts(sorts);\n\t\tif (normalizedSorts.length > 0) {\n\t\t\trows = [...rows].sort((ra, rb) => {\n\t\t\t\tfor (const s of normalizedSorts) {\n\t\t\t\t\tconst av = getValueByPath(ra, s.path);\n\t\t\t\t\tconst bv = getValueByPath(rb, s.path);\n\t\t\t\t\tconst cmp = compareValues(av, bv);\n\t\t\t\t\tif (cmp !== 0) return s.value === 1 ? cmp : -cmp;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t}\n\n\t\tconst total = rows.length;\n\t\tconst items = rows.slice(skip, skip + limit);\n\t\treturn { items, total };\n\t};\n};\n","import { z } from 'zod';\n\nexport const dataKitSchemaZod = z.object({\n\taction: z.literal('FETCH').optional(),\n\tpage: z.number().int().positive().optional(),\n\tlimit: z.number().int().positive().optional(),\n\tquery: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional(),\n\tfilter: z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(),\n\tfilterConfig: z\n\t\t.record(\n\t\t\tz.string(),\n\t\t\tz.object({\n\t\t\t\ttype: z.enum(['REGEX', 'EXACT']),\n\t\t\t\tfield: z.string().optional(),\n\t\t\t}),\n\t\t)\n\t\t.optional(),\n\tsorts: z\n\t\t.array(\n\t\t\tz.object({\n\t\t\t\tpath: z.string().max(100), // Limit path length to prevent abuse\n\t\t\t\tvalue: z.literal(-1).or(z.literal(1)),\n\t\t\t}),\n\t\t)\n\t\t.max(5)\n\t\t.optional(), // Limit to 5 sort fields\n\tsort: z.record(z.string(), z.literal(1).or(z.literal(-1))).optional(),\n});\n\nexport type TDataKitSchemaZod = z.infer<typeof dataKitSchemaZod>;\n","'use client';\n\ntype ClassPrimitive = string | number | boolean | null | undefined;\ntype ClassDictionary = Record<string, boolean | undefined | null>;\ntype ClassArray = ClassValue[];\nexport type ClassValue = ClassPrimitive | ClassDictionary | ClassArray;\n\nconst toClassString = (input: ClassValue): string => {\n if (!input) return '';\n\n if (typeof input === 'string' || typeof input === 'number') return String(input);\n\n if (Array.isArray(input)) {\n return input.map(toClassString).filter(Boolean).join(' ');\n }\n\n if (typeof input === 'object') {\n return Object.entries(input)\n .filter(([, value]) => Boolean(value))\n .map(([key]) => key)\n .join(' ');\n }\n\n return '';\n};\n\n/**\n * Minimal `cn` helper (shadcn-style) without external deps.\n */\nexport const cn = (...inputs: ClassValue[]): string => inputs.map(toClassString).filter(Boolean).join(' ');\n","/**\n * next-data-kit - Utility Functions\n *\n * Helper utilities for client-side operations.\n */\n\nimport type { TDataKitColumn, TSortEntry } from '../../types';\n\nexport { cn, type ClassValue } from './cn';\n\n\n/**\n * Get the value from an item using a column accessor\n */\nexport const getColumnValue = <T>(item: T, column: TDataKitColumn<T>): unknown => {\n const { accessor } = column;\n return typeof accessor === 'function' ? accessor(item) : item[accessor as keyof T];\n};\n\n/**\n * Get the sort value for a column\n */\nexport const getSortValue = (sorts: TSortEntry[], path: string): 1 | -1 | null => {\n const sort = sorts.find((s) => s.path === path);\n return sort?.value ?? null;\n};\n\n/**\n * Get the next sort value in the cycle: null -> 1 -> -1 -> null\n */\nexport const getNextSortValue = (current: 1 | -1 | null): 1 | -1 | null => {\n if (current === null) return 1;\n if (current === 1) return -1;\n return null;\n};\n\n\n/**\n * Format a number with commas\n */\nexport const formatNumber = (num: number): string => num.toLocaleString();\n\n\n/**\n * Debounce a function\n */\nexport const debounce = <T extends (...args: unknown[]) => unknown>(\n fn: T,\n delay: number\n): ((...args: Parameters<T>) => void) => {\n let timeoutId: ReturnType<typeof setTimeout>;\n return (...args: Parameters<T>) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n};\n\n/**\n * Throttle a function\n */\nexport const throttle = <T extends (...args: unknown[]) => unknown>(\n fn: T,\n limit: number\n): ((...args: Parameters<T>) => void) => {\n let inThrottle = false;\n return (...args: Parameters<T>) => {\n if (!inThrottle) {\n fn(...args);\n inThrottle = true;\n setTimeout(() => { inThrottle = false; }, limit);\n }\n };\n};\n\n\n/**\n * Create a stable object key from sort entries\n */\nexport const sortEntriesToKey = (sorts: TSortEntry[]): string =>\n sorts.map((s) => `${s.path}:${s.value}`).join(',');\n\n/**\n * Parse a sort key back to sort entries\n */\nexport const keyToSortEntries = (key: string): TSortEntry[] => {\n if (!key) return [];\n return key.split(',').map((part) => {\n const [path, value] = part.split(':');\n return { path: path ?? '', value: parseInt(value ?? '1', 10) as 1 | -1 };\n });\n};\n\n\n/**\n * Parse URL search params into tabler state\n */\nexport const parseUrlParams = (search: string): {\n page?: number;\n limit?: number;\n sorts?: TSortEntry[];\n filter?: Record<string, unknown>;\n query?: Record<string, unknown>;\n} => {\n const params = new URLSearchParams(search);\n const state: ReturnType<typeof parseUrlParams> = {};\n\n // ** Page\n const page = params.get('page');\n if (page) state.page = parseInt(page, 10);\n\n // ** Limit\n const limit = params.get('limit');\n if (limit) state.limit = parseInt(limit, 10);\n\n // ** Sorts\n const sort = params.get('sort');\n if (sort) state.sorts = keyToSortEntries(sort);\n\n // ** Filter (f_key) and Query (q_key)\n const filter: Record<string, unknown> = {};\n const query: Record<string, unknown> = {};\n\n params.forEach((value, key) => {\n if (key.startsWith('f_')) filter[key.slice(2)] = value;\n else if (key.startsWith('q_')) query[key.slice(2)] = value;\n });\n\n if (Object.keys(filter).length > 0) state.filter = filter;\n if (Object.keys(query).length > 0) state.query = query;\n\n return state;\n};\n\n/**\n * Convert tabler state to URL search params\n */\nexport const stateToUrlParams = (state: {\n page?: number;\n limit?: number;\n sorts?: TSortEntry[];\n filter?: Record<string, unknown>;\n query?: Record<string, unknown>;\n}): URLSearchParams => {\n const params = new URLSearchParams();\n\n if (state.page && state.page > 1) params.set('page', state.page.toString());\n if (state.limit) params.set('limit', state.limit.toString());\n if (state.sorts && state.sorts.length > 0) params.set('sort', sortEntriesToKey(state.sorts));\n\n if (state.filter) {\n Object.entries(state.filter).forEach(([key, value]) => {\n if (value !== undefined && value !== null && value !== '') {\n params.set(`f_${key}`, String(value));\n }\n });\n }\n\n if (state.query) {\n Object.entries(state.query).forEach(([key, value]) => {\n if (value !== undefined && value !== null && value !== '') {\n params.set(`q_${key}`, String(value));\n }\n });\n }\n\n return params;\n};\n","/**\n * next-data-kit - useDataKit Hook\n *\n * React hook for managing next-data-kit state and actions.\n */\n\n'use client';\n\nimport { useState, useCallback, useEffect, useRef } from 'react';\nimport type { TDataKitInput, TDataKitResult, TUseDataKitOptions, TSortEntry, TUseDataKitReturn, TFilterConfig } from '../../types';\nimport { parseUrlParams, stateToUrlParams } from '../utils';\n\nexport const useDataKit = <T = unknown, R = unknown>(props: Readonly<TUseDataKitOptions<T, R>>): TUseDataKitReturn<T, R> => {\n\t// ** Deconstruct Props\n\tconst { initial = {}, memory: memoryMode = 'memory', filters, action, onSuccess, onError, autoFetch = true, debounce: debounceDelay = 300 } = props;\n\n\tconst { page: initialPage = 1, limit: initialLimit = 10, sorts: initialSorts = [], filter: initialFilter = {}, query: initialQuery = {} } = initial;\n\n\t// ** State\n\tconst [page, setPageState] = useState(initialPage);\n\tconst [limit, setLimitState] = useState(initialLimit);\n\tconst [sorts, setSortsState] = useState<TSortEntry[]>(initialSorts);\n\tconst [filter, setFilterState] = useState<Record<string, unknown>>(initialFilter);\n\tconst [debouncedFilter, setDebouncedFilter] = useState<Record<string, unknown>>(initialFilter);\n\tconst [query, setQueryState] = useState<Record<string, unknown>>(initialQuery);\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [error, setError] = useState<Error | null>(null);\n\tconst [items, setItems] = useState<R[]>([]);\n\tconst [total, setTotal] = useState(0);\n\n\t// ** Refs\n\tconst mounted = useRef(true);\n\tconst fetchIdRef = useRef(0);\n\tconst debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n\t// ** Refs for props to prevent infinite loops and stale closures\n\tconst actionRef = useRef(action);\n\tconst onSuccessRef = useRef(onSuccess);\n\tconst onErrorRef = useRef(onError);\n\tconst filtersRef = useRef(filters);\n\n\t// ** Update refs on every render\n\tactionRef.current = action;\n\tonSuccessRef.current = onSuccess;\n\tonErrorRef.current = onError;\n\tfiltersRef.current = filters;\n\n\t// ** Get current input\n\tconst getInput = useCallback((): TDataKitInput<T> => {\n\t\tconst input: TDataKitInput<T> = {\n\t\t\taction: 'FETCH',\n\t\t\tpage,\n\t\t\tlimit,\n\t\t\tsorts,\n\t\t\tfilter: debouncedFilter as Record<string, string | number | boolean | null>,\n\t\t\tquery: query as Record<string, string | number | boolean>,\n\t\t};\n\n\t\tif (filtersRef.current) {\n\t\t\tinput.filterConfig = filtersRef.current.reduce<TFilterConfig>((acc, f) => {\n\t\t\t\tif (f.configuration) acc[f.id] = f.configuration;\n\t\t\t\treturn acc;\n\t\t\t}, {});\n\t\t}\n\n\t\treturn input;\n\t}, [page, limit, sorts, debouncedFilter, query]);\n\n\t// ** Fetch data\n\tconst fetchData = useCallback(async () => {\n\t\tconst fetchId = ++fetchIdRef.current;\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\n\t\ttry {\n\t\t\tconst input = getInput();\n\t\t\tconst result = (await actionRef.current(input)) as TDataKitResult<R>;\n\n\t\t\t// ** Check if this is still the latest fetch\n\t\t\tif (fetchId !== fetchIdRef.current || !mounted.current) return;\n\n\t\t\tsetItems(result.items);\n\t\t\tsetTotal(result.documentTotal);\n\t\t\tonSuccessRef.current?.(result);\n\t\t} catch (err) {\n\t\t\tif (fetchId !== fetchIdRef.current || !mounted.current) return;\n\n\t\t\tconst fetchError = err instanceof Error ? err : new Error(String(err));\n\t\t\tsetError(fetchError);\n\t\t\tonErrorRef.current?.(fetchError);\n\t\t} finally {\n\t\t\tif (fetchId === fetchIdRef.current && mounted.current) {\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t}\n\t}, [getInput]);\n\n\t// ** Debounce filter changes\n\tuseEffect(() => {\n\t\tif (debounceTimerRef.current) clearTimeout(debounceTimerRef.current);\n\n\t\tdebounceTimerRef.current = setTimeout(() => {\n\t\t\tsetDebouncedFilter(filter);\n\t\t}, debounceDelay);\n\n\t\treturn () => {\n\t\t\tif (debounceTimerRef.current) clearTimeout(debounceTimerRef.current);\n\t\t};\n\t}, [filter, debounceDelay]);\n\n\t// ** Actions\n\tconst setPage = useCallback((newPage: number) => setPageState(newPage), []);\n\n\tconst setLimit = useCallback((newLimit: number) => {\n\t\tsetLimitState(newLimit);\n\t\tsetPageState(1);\n\t}, []);\n\n\tconst setSort = useCallback((path: string, value: 1 | -1 | null, append = false) => {\n\t\tsetSortsState(prev => {\n\t\t\tif (value === null) return prev.filter(s => s.path !== path);\n\t\t\tif (!append) return [{ path, value }];\n\n\t\t\tconst existing = prev.find(s => s.path === path);\n\t\t\tif (existing) return prev.map(s => (s.path === path ? { ...s, value } : s));\n\t\t\treturn [...prev, { path, value }];\n\t\t});\n\t}, []);\n\n\tconst setSorts = useCallback((newSorts: TSortEntry[]) => setSortsState(newSorts), []);\n\n\tconst setFilter = useCallback((key: string, value: unknown) => {\n\t\tsetFilterState(prev => ({ ...prev, [key]: value }));\n\t\tsetPageState(1);\n\t}, []);\n\n\tconst setFilters = useCallback((filters: Record<string, unknown>) => {\n\t\tsetFilterState(prev => ({ ...prev, ...filters }));\n\t\tsetPageState(1);\n\t}, []);\n\n\tconst clearFilters = useCallback(() => {\n\t\tsetFilterState({});\n\t\tsetPageState(1);\n\t}, []);\n\n\tconst setQuery = useCallback((key: string, value: unknown) => {\n\t\tsetQueryState(prev => ({ ...prev, [key]: value }));\n\t\tsetPageState(1);\n\t}, []);\n\n\tconst refresh = useCallback(async () => {\n\t\tawait fetchData();\n\t}, [fetchData]);\n\n\t// ** Item mutations (optional helpers)\n\tconst setItemsAction = useCallback((nextItems: R[]) => {\n\t\tsetItems(nextItems);\n\t}, []);\n\n\tconst setItemAt = useCallback((index: number, item: R) => {\n\t\tsetItems(prev => {\n\t\t\tif (index < 0 || index >= prev.length) return prev;\n\t\t\tconst next = [...prev];\n\t\t\tnext[index] = item;\n\t\t\treturn next;\n\t\t});\n\t}, []);\n\n\tconst deleteItemAt = useCallback((index: number) => {\n\t\tsetItems(prev => prev.filter((_, i) => i !== index));\n\t}, []);\n\n\tconst itemPush = useCallback((item: R, position: 0 | 1 = 1) => {\n\t\tsetItems(prev => (position === 0 ? [item, ...prev] : [...prev, item]));\n\t}, []);\n\n\tconst deleteBulk = useCallback((itemsToDelete: R[]) => {\n\t\tif (itemsToDelete.length === 0) return;\n\t\tconst toDelete = new Set(itemsToDelete);\n\t\tsetItems(prev => prev.filter(it => !toDelete.has(it)));\n\t}, []);\n\n\tconst reset = useCallback(() => {\n\t\tsetPageState(initialPage);\n\t\tsetLimitState(initialLimit);\n\t\tsetSortsState(initialSorts);\n\t\tsetFilterState(initialFilter);\n\t\tsetDebouncedFilter(initialFilter);\n\t\tsetQueryState(initialQuery);\n\t}, [initialPage, initialLimit, initialSorts, initialFilter, initialQuery]);\n\n\t// ** Sync with URL if memoryMode is 'search-params'\n\tuseEffect(() => {\n\t\tif (memoryMode !== 'search-params' || typeof window === 'undefined') return;\n\n\t\t// ** Initial load from URL\n\t\tconst urlState = parseUrlParams(window.location.search);\n\n\t\tif (Object.keys(urlState).length > 0) {\n\t\t\tif (urlState.page) setPageState(urlState.page);\n\t\t\tif (urlState.limit) setLimitState(urlState.limit);\n\t\t\tif (urlState.sorts) setSortsState(urlState.sorts);\n\t\t\tif (urlState.filter) {\n\t\t\t\tsetFilterState(prev => ({ ...prev, ...urlState.filter }));\n\t\t\t\tsetDebouncedFilter(prev => ({ ...prev, ...urlState.filter }));\n\t\t\t}\n\t\t\tif (urlState.query) setQueryState(prev => ({ ...prev, ...urlState.query }));\n\t\t}\n\n\t\t// ** Listen for popstate (back/forward)\n\t\tconst handlePopState = () => {\n\t\t\tconst newUrlState = parseUrlParams(window.location.search);\n\n\t\t\tsetPageState(newUrlState.page ?? initialPage);\n\t\t\tsetLimitState(newUrlState.limit ?? initialLimit);\n\t\t\tsetSortsState(newUrlState.sorts ?? initialSorts);\n\t\t\tsetFilterState({ ...initialFilter, ...newUrlState.filter });\n\t\t\tsetDebouncedFilter({ ...initialFilter, ...newUrlState.filter });\n\t\t\tsetQueryState({ ...initialQuery, ...newUrlState.query });\n\t\t};\n\n\t\twindow.addEventListener('popstate', handlePopState);\n\t\treturn () => window.removeEventListener('popstate', handlePopState);\n\t}, [memoryMode, initialPage, initialLimit, initialSorts, initialFilter, initialQuery]);\n\n\t// ** Update URL when state changes\n\tuseEffect(() => {\n\t\tif (memoryMode !== 'search-params' || typeof window === 'undefined') return;\n\n\t\tconst params = stateToUrlParams({ page, limit, sorts, filter, query });\n\t\tconst newSearch = params.toString();\n\t\tconst currentSearch = window.location.search.slice(1);\n\n\t\tif (newSearch !== currentSearch) {\n\t\t\tconst newUrl = newSearch ? `?${newSearch}` : window.location.pathname;\n\t\t\twindow.history.pushState(null, '', newUrl);\n\t\t}\n\t}, [page, limit, sorts, filter, query, memoryMode]);\n\n\t// ** Auto-fetch on mount and when dependencies change\n\tuseEffect(() => {\n\t\tif (autoFetch) fetchData();\n\t}, [page, limit, sorts, debouncedFilter, query, autoFetch, fetchData]);\n\n\t// ** Cleanup\n\tuseEffect(() => {\n\t\tmounted.current = true;\n\t\treturn () => {\n\t\t\tmounted.current = false;\n\t\t};\n\t}, []);\n\n\t// ** Calculate hasNextPage\n\tconst hasNextPage = page * limit < total;\n\n\treturn {\n\t\tpage,\n\t\tlimit,\n\t\tsorts,\n\t\tfilter,\n\t\tfilterConfig: filters?.reduce<TFilterConfig>((acc, f) => {\n\t\t\tif (f.configuration) acc[f.id] = f.configuration;\n\t\t\treturn acc;\n\t\t}, {}),\n\t\tquery,\n\t\titems,\n\t\ttotal,\n\t\tstate: { isLoading, error, hasNextPage },\n\t\tactions: {\n\t\t\tsetPage,\n\t\t\tsetLimit,\n\t\t\tsetSort,\n\t\t\tsetSorts,\n\t\t\tsetFilter,\n\t\t\tsetFilters,\n\t\t\tclearFilters,\n\t\t\tsetQuery,\n\t\t\trefresh,\n\t\t\treset,\n\t\t\tgetInput,\n\t\t\tsetItems: setItemsAction,\n\t\t\tsetItemAt,\n\t\t\tdeleteItemAt,\n\t\t\titemPush,\n\t\t\tdeleteBulk,\n\t\t},\n\t};\n};\n\nexport type { TUseDataKitOptions };\n","/**\n * next-data-kit - useSelection Hook\n *\n * React hook for managing table row selection.\n */\n\n'use client';\n\nimport { useState, useCallback, useMemo } from 'react';\nimport type { TUseSelectionReturn } from '../../types';\n\n\nexport const useSelection = <T = string>(initialSelected: T[] = []): TUseSelectionReturn<T> => {\n // ** State\n const [selectedIds, setSelectedIds] = useState<Set<T>>(new Set(initialSelected));\n\n // ** Select a single item\n const select = useCallback((id: T) => {\n setSelectedIds((prev) => new Set(prev).add(id));\n }, []);\n\n // ** Deselect a single item\n const deselect = useCallback((id: T) => {\n setSelectedIds((prev) => {\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }, []);\n\n // ** Toggle selection of a single item\n const toggle = useCallback((id: T) => {\n setSelectedIds((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n }, []);\n\n // ** Select all items\n const selectAll = useCallback((ids: T[]) => {\n setSelectedIds(new Set(ids));\n }, []);\n\n // ** Deselect all items\n const deselectAll = useCallback(() => {\n setSelectedIds(new Set());\n }, []);\n\n // ** Toggle all items selection\n const toggleAll = useCallback((ids: T[]) => {\n setSelectedIds((prev) => {\n // ** If all are selected, deselect all\n if (ids.every((id) => prev.has(id))) return new Set();\n // ** Otherwise, select all\n return new Set(ids);\n });\n }, []);\n\n // ** Check if an item is selected\n const isSelected = useCallback((id: T) => selectedIds.has(id), [selectedIds]);\n\n // ** Get array of selected IDs\n const getSelectedArray = useCallback(() => Array.from(selectedIds), [selectedIds]);\n\n // ** Calculate derived state\n const isAllSelected = useMemo(() => selectedIds.size > 0, [selectedIds.size]);\n const isIndeterminate = useMemo(() => false, []);\n\n return {\n selectedIds,\n isAllSelected,\n isIndeterminate,\n select,\n deselect,\n toggle,\n selectAll,\n deselectAll,\n toggleAll,\n isSelected,\n getSelectedArray,\n };\n};\n\n\nexport const useSelectionWithTotal = <T = string>(\n totalItems: T[],\n initialSelected: T[] = []\n): Omit<TUseSelectionReturn<T>, 'toggleAll'> & {\n isAllSelected: boolean;\n isIndeterminate: boolean;\n toggleAll: () => void;\n} => {\n // ** Base selection hook\n const selection = useSelection<T>(initialSelected);\n\n // ** Calculate derived state\n const isAllSelected = useMemo(\n () => totalItems.length > 0 && totalItems.every((id) => selection.selectedIds.has(id)),\n [totalItems, selection.selectedIds]\n );\n\n const isIndeterminate = useMemo(\n () => selection.selectedIds.size > 0 && selection.selectedIds.size < totalItems.length,\n [totalItems.length, selection.selectedIds.size]\n );\n\n // ** Override toggleAll to use totalItems\n const toggleAll = useCallback(() => {\n if (isAllSelected) selection.deselectAll();\n else selection.selectAll(totalItems);\n }, [isAllSelected, selection, totalItems]);\n\n return {\n ...selection,\n isAllSelected,\n isIndeterminate,\n toggleAll,\n };\n};\n","/**\n * next-data-kit - usePagination Hook\n *\n * React hook for calculating pagination state.\n */\n\n'use client';\n\nimport { useMemo } from 'react';\nimport type { TPaginationInfo } from '../../types';\nimport { calculatePagination } from '../../server/utils';\n\nexport type TUsePaginationReturn = TPaginationInfo & {\n\t// ** Array of page numbers/ellipsis to display\n\tpages: (number | 'ellipsis')[];\n\t// ** First page number\n\tfirstPage: number;\n\t// ** Last page number\n\tlastPage: number;\n};\n\nconst range = (start: number, end: number): number[] => Array.from({ length: end - start + 1 }, (_, idx) => idx + start);\n\nexport const usePagination = (\n\tprops: Readonly<{\n\t\tpage: number;\n\t\tlimit: number;\n\t\ttotal: number;\n\t\t// ** Number of page buttons to show on each side of current page\n\t\tsiblingCount?: number;\n\t}>,\n): TUsePaginationReturn => {\n\t// ** Deconstruct Props\n\tconst { page, limit, total, siblingCount = 1 } = props;\n\n\t// ** Calculate pagination info\n\tconst paginationInfo = useMemo(() => calculatePagination(page, limit, total), [page, limit, total]);\n\n\t// ** Calculate page numbers to display\n\tconst pages = useMemo(() => {\n\t\tconst { totalPages } = paginationInfo;\n\n\t\t// ** Total number of page buttons = siblings on both sides + first + last + current + 2 ellipsis\n\t\tconst totalPageNumbers = siblingCount * 2 + 5;\n\n\t\t// ** If total pages is less than page numbers we want to show\n\t\tif (totalPageNumbers >= totalPages) return range(1, totalPages);\n\n\t\tconst leftSiblingIndex = Math.max(page - siblingCount, 1);\n\t\tconst rightSiblingIndex = Math.min(page + siblingCount, totalPages);\n\n\t\tconst shouldShowLeftEllipsis = leftSiblingIndex > 2;\n\t\tconst shouldShowRightEllipsis = rightSiblingIndex < totalPages - 1;\n\n\t\t// ** No left ellipsis, but right ellipsis\n\t\tif (!shouldShowLeftEllipsis && shouldShowRightEllipsis) {\n\t\t\tconst leftRange = range(1, 3 + 2 * siblingCount);\n\t\t\treturn [...leftRange, 'ellipsis' as const, totalPages];\n\t\t}\n\n\t\t// ** Left ellipsis, no right ellipsis\n\t\tif (shouldShowLeftEllipsis && !shouldShowRightEllipsis) {\n\t\t\tconst rightRange = range(totalPages - (3 + 2 * siblingCount) + 1, totalPages);\n\t\t\treturn [1, 'ellipsis' as const, ...rightRange];\n\t\t}\n\n\t\t// ** Both ellipsis\n\t\tif (shouldShowLeftEllipsis && shouldShowRightEllipsis) {\n\t\t\tconst middleRange = range(leftSiblingIndex, rightSiblingIndex);\n\t\t\treturn [1, 'ellipsis' as const, ...middleRange, 'ellipsis' as const, totalPages];\n\t\t}\n\n\t\treturn range(1, totalPages);\n\t}, [paginationInfo, page, siblingCount]);\n\n\treturn {\n\t\t...paginationInfo,\n\t\tpages,\n\t\tfirstPage: 1,\n\t\tlastPage: paginationInfo.totalPages,\n\t};\n};\n","/**\n * next-data-kit - DataKitContext\n *\n * React context for sharing next-data-kit state across components.\n */\n\n'use client';\n\nimport { createContext, useContext, type ReactNode } from 'react';\nimport type { TUseDataKitReturn } from '../../types';\n\n\nexport type TDataKitContextValue<T = unknown, R = unknown> = TUseDataKitReturn<T, R>;\n\n\nexport const createDataKitContext = <T = unknown, R = unknown>() => {\n const Context = createContext<TDataKitContextValue<T, R> | null>(null);\n\n // ** Provider component for next-data-kit context\n const DataKitProvider = (props: Readonly<{\n value: TDataKitContextValue<T, R>;\n children: ReactNode;\n }>) => {\n const { value, children } = props;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n // ** Hook to access next-data-kit context\n const useDataKitContext = (): TDataKitContextValue<T, R> => {\n const context = useContext(Context);\n if (!context) {\n throw new Error('useDataKitContext must be used within a DataKitProvider');\n }\n return context;\n };\n\n return { DataKitProvider, useDataKitContext, Context };\n};\n\n\nconst {\n DataKitProvider: DefaultDataKitProvider,\n useDataKitContext: useDefaultDataKitContext,\n Context: DefaultDataKitContext,\n} = createDataKitContext();\n\nexport {\n DefaultDataKitProvider as DataKitProvider,\n useDefaultDataKitContext as useDataKitContext,\n DefaultDataKitContext as DataKitContext,\n};\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../utils';\n\nfunction Table({ className, ...props }: React.ComponentProps<'table'>) {\n return (\n <div data-slot=\"table-container\" className=\"relative w-full overflow-x-auto\">\n <table\n data-slot=\"table\"\n className={cn('w-full caption-bottom text-sm', className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn('[&_tr]:border-b', className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n 'bg-gray-50/70 dark:bg-gray-900/40 border-t border-gray-200 dark:border-gray-800 font-medium [&>tr]:last:border-b-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n 'hover:bg-gray-50 dark:hover:bg-gray-900/50 data-[state=selected]:bg-gray-50 dark:data-[state=selected]:bg-gray-900/50 border-b border-gray-100 dark:border-gray-900 transition-colors',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n 'text-gray-900 dark:text-gray-100 h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n 'p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<'caption'>) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn('text-gray-500 dark:text-gray-400 mt-4 text-sm', className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","'use client';\n\nimport * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '../../utils';\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'peer border-gray-200 bg-white text-gray-900 dark:border-gray-800 dark:bg-gray-950 dark:text-gray-100 data-[state=checked]:bg-gray-900 data-[state=checked]:text-white dark:data-[state=checked]:bg-gray-100 dark:data-[state=checked]:text-gray-900 data-[state=checked]:border-gray-900 dark:data-[state=checked]:border-gray-100 focus-visible:border-gray-900 dark:focus-visible:border-gray-200 focus-visible:ring-black/20 dark:focus-visible:ring-white/20 aria-invalid:ring-red-500/20 dark:aria-invalid:ring-red-500/30 aria-invalid:border-red-500 size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","'use client';\n\nimport * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '../../utils';\n\nfunction Popover(\n props: React.ComponentProps<typeof PopoverPrimitive.Root>\n) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger(\n props: React.ComponentProps<typeof PopoverPrimitive.Trigger>\n) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n container,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content> & {\n container?: HTMLElement | null;\n}) {\n return (\n <PopoverPrimitive.Portal container={container ?? undefined}>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-100 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border border-gray-200 dark:border-gray-800 p-4 shadow-md outline-hidden',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor(\n props: React.ComponentProps<typeof PopoverPrimitive.Anchor>\n) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { cn } from '../../utils';\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n container,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content> & {\n container?: HTMLElement | null;\n}) {\n return (\n <DropdownMenuPrimitive.Portal container={container ?? undefined}>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-100 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-gray-200 dark:border-gray-800 p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-gray-50 dark:focus:bg-gray-900 focus:text-gray-900 dark:focus:text-gray-100 data-[variant=destructive]:text-red-600 dark:data-[variant=destructive]:text-red-500 data-[variant=destructive]:focus:bg-red-500/10 dark:data-[variant=destructive]:focus:bg-red-500/15 data-[variant=destructive]:focus:text-red-700 dark:data-[variant=destructive]:focus:text-red-400 data-[variant=destructive]:*:[svg]:!text-red-600 dark:data-[variant=destructive]:*:[svg]:!text-red-500 [&_svg:not([class*='text-'])]:text-gray-500 dark:[&_svg:not([class*='text-'])]:text-gray-400 relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-gray-50 dark:focus:bg-gray-900 focus:text-gray-900 dark:focus:text-gray-100 relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-gray-50 dark:focus:bg-gray-900 focus:text-gray-900 dark:focus:text-gray-100 relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-gray-100 dark:bg-gray-900 -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-gray-500 dark:text-gray-400 ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-gray-50 dark:focus:bg-gray-900 focus:text-gray-900 dark:focus:text-gray-100 data-[state=open]:bg-gray-50 dark:data-[state=open]:bg-gray-900 data-[state=open]:text-gray-900 dark:data-[state=open]:text-gray-100 [&_svg:not([class*='text-'])]:text-gray-500 dark:[&_svg:not([class*='text-'])]:text-gray-400 flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-100 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border border-gray-200 dark:border-gray-800 p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\nimport { cn } from \"@/client/utils\"\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from '../../utils';\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-black/20 dark:focus-visible:ring-white/20 focus-visible:ring-[3px] aria-invalid:ring-red-500/20 dark:aria-invalid:ring-red-500/30 aria-invalid:border-red-500\",\n {\n variants: {\n variant: {\n default: \"bg-gray-900 text-white hover:bg-gray-800 dark:bg-gray-100 dark:text-gray-900 dark:hover:bg-gray-200\",\n destructive:\n \"bg-red-600 text-white hover:bg-red-700 dark:bg-red-600 dark:hover:bg-red-500\",\n outline:\n \"border border-gray-200 bg-white text-gray-900 shadow-xs hover:bg-gray-50 dark:border-gray-800 dark:bg-gray-950 dark:text-gray-100 dark:hover:bg-gray-900\",\n secondary:\n \"bg-gray-100 text-gray-900 hover:bg-gray-200 dark:bg-gray-900 dark:text-gray-100 dark:hover:bg-gray-800\",\n ghost:\n \"hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-gray-900 dark:hover:text-gray-100\",\n link: \"text-gray-900 underline-offset-4 hover:underline dark:text-gray-100\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst Button = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }\n>(function Button(\n {\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n },\n ref\n) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n})\n\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","'use client';\r\n\r\nimport * as React from 'react';\r\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react';\r\n\r\nimport { cn } from '../../utils';\r\nimport { buttonVariants, type Button } from './button';\r\n\r\nfunction Pagination({ className, ...props }: React.ComponentProps<'nav'>) {\r\n return (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"pagination\"\r\n data-slot=\"pagination\"\r\n className={cn('mx-auto flex w-full justify-center', className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction PaginationContent({\r\n className,\r\n ...props\r\n}: React.ComponentProps<'ul'>) {\r\n return (\r\n <ul\r\n data-slot=\"pagination-content\"\r\n className={cn('flex flex-row items-center gap-1', className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction PaginationItem({ ...props }: React.ComponentProps<'li'>) {\r\n return <li data-slot=\"pagination-item\" {...props} />;\r\n}\r\n\r\ntype PaginationLinkProps = {\r\n isActive?: boolean;\r\n} & Pick<React.ComponentProps<typeof Button>, 'size' | 'disabled' | 'onClick' | 'type'> &\r\n Omit<React.ComponentProps<'button'>, 'type' | 'onClick' | 'disabled'>;\r\n\r\nfunction PaginationLink({\r\n className,\r\n isActive,\r\n size = 'icon',\r\n type = 'button',\r\n ...props\r\n}: PaginationLinkProps) {\r\n return (\r\n <button\r\n aria-current={isActive ? 'page' : undefined}\r\n data-slot=\"pagination-link\"\r\n data-active={isActive ? 'true' : 'false'}\r\n className={cn(\r\n buttonVariants({\r\n variant: isActive ? 'outline' : 'ghost',\r\n size,\r\n }),\r\n className\r\n )}\r\n type={type}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction PaginationPrevious({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) {\r\n return (\r\n <PaginationLink\r\n aria-label=\"Go to previous page\"\r\n size=\"default\"\r\n className={cn('gap-1 px-2.5 sm:pl-2.5', className)}\r\n {...props}\r\n >\r\n <ChevronLeft className=\"size-4\" aria-hidden=\"true\" />\r\n <span className=\"hidden sm:block\">Previous</span>\r\n </PaginationLink>\r\n );\r\n}\r\n\r\nfunction PaginationNext({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) {\r\n return (\r\n <PaginationLink\r\n aria-label=\"Go to next page\"\r\n size=\"default\"\r\n className={cn('gap-1 px-2.5 sm:pr-2.5', className)}\r\n {...props}\r\n >\r\n <span className=\"hidden sm:block\">Next</span>\r\n <ChevronRight className=\"size-4\" aria-hidden=\"true\" />\r\n </PaginationLink>\r\n );\r\n}\r\n\r\nfunction PaginationEllipsis({\r\n className,\r\n ...props\r\n}: React.ComponentProps<'span'>) {\r\n return (\r\n <span\r\n aria-hidden=\"true\"\r\n data-slot=\"pagination-ellipsis\"\r\n className={cn('flex size-9 items-center justify-center', className)}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"size-4\" aria-hidden=\"true\" />\r\n <span className=\"sr-only\">More pages</span>\r\n </span>\r\n );\r\n}\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationPrevious,\r\n PaginationNext,\r\n PaginationEllipsis,\r\n};\r\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from '../../utils';\n\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-gray-200 dark:border-gray-800 data-[placeholder]:text-gray-500 dark:data-[placeholder]:text-gray-400 [&_svg:not([class*='text-'])]:text-gray-500 dark:[&_svg:not([class*='text-'])]:text-gray-400 focus-visible:border-gray-900 dark:focus-visible:border-gray-200 focus-visible:ring-black/20 dark:focus-visible:ring-white/20 aria-invalid:ring-red-500/20 dark:aria-invalid:ring-red-500/30 aria-invalid:border-red-500 bg-white dark:bg-gray-950 hover:bg-gray-50 dark:hover:bg-gray-900 flex w-fit items-center justify-between gap-2 rounded-md border px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n container,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content> & {\n container?: HTMLElement | null;\n}) {\n return (\n <SelectPrimitive.Portal container={container ?? undefined}>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-100 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-gray-200 dark:border-gray-800 shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-gray-500 dark:text-gray-400 px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-gray-50 dark:focus:bg-gray-900 focus:text-gray-900 dark:focus:text-gray-100 [&_svg:not([class*='text-'])]:text-gray-500 dark:[&_svg:not([class*='text-'])]:text-gray-400 relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span\n data-slot=\"select-item-indicator\"\n className=\"absolute right-2 flex size-3.5 items-center justify-center\"\n >\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-gray-100 dark:bg-gray-900 pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","'use client';\n\nimport React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { ArrowDown, ArrowUp, ChevronLeft, ChevronRight, Filter, Loader2, MoreHorizontal } from 'lucide-react';\nimport { useDataKit } from '../hooks/useDataKit';\nimport { useSelectionWithTotal } from '../hooks/useSelection';\nimport { usePagination } from '../hooks/usePagination';\nimport {\n Button,\n Checkbox,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Popover,\n PopoverContent,\n PopoverTrigger,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Switch,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from './ui';\nimport type {\n TDataKitInput,\n TDataKitResult,\n TDataKitComponentColumn,\n TDataKitFilterItem,\n TDataKitBulkAction,\n TDataKitController,\n TDataKitMemoryMode,\n TExtractDataKitItemType,\n\n TDataKitSelectableItem,\n} from '../../types';\n\n\nconst DataKitRoot = <\n TAction extends (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TDataKitSelectableItem>>,\n TRowState = unknown\n>(props: Readonly<{\n action: TAction;\n query?: Record<string, unknown>;\n\n table: TDataKitComponentColumn<TExtractDataKitItemType<TAction>, TRowState>[];\n filters?: TDataKitFilterItem[];\n selectable?: {\n enabled: boolean;\n actions?: Record<string, TDataKitBulkAction<TExtractDataKitItemType<TAction>>>;\n };\n state?: TRowState;\n limit?: { default: number };\n className?: string;\n autoFetch?: boolean;\n debounce?: number;\n bordered?: boolean | 'rounded';\n refetchInterval?: number;\n memory?: TDataKitMemoryMode;\n pagination?: 'SIMPLE' | 'NUMBER';\n controller?: React.MutableRefObject<TDataKitController<TExtractDataKitItemType<TAction>> | null>;\n}>) => {\n // ** Deconstruct Props\n const {\n action,\n query,\n table: columns,\n filters = [],\n selectable,\n state: initialState,\n limit: limitConfig,\n className,\n autoFetch = true,\n debounce = 300,\n bordered,\n refetchInterval,\n memory: memoryMode = 'memory',\n pagination: paginationType = 'NUMBER',\n controller,\n } = props;\n\n // ** Type\n type TItem = TExtractDataKitItemType<TAction>;\n\n // ** Ref\n const tableRef = useRef<HTMLDivElement>(null);\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n // ** State\n const [isVisible, setIsVisible] = useState(false);\n const [isFilterOpen, setIsFilterOpen] = useState(false);\n const [actionLoading, setActionLoading] = useState<string | null>(null);\n const [actionsMenuOpen, setActionsMenuOpen] = useState(false);\n const [rowStates, setRowStates] = useState<Map<string | number, TRowState>>(new Map());\n\n // ** Variable\n const overlayContainer = tableRef.current;\n\n // ** Helper functions for row state management\n const getRowState = useCallback((rowId: string | number): TRowState => {\n return rowStates.get(rowId) ?? (initialState as TRowState);\n }, [rowStates, initialState]);\n\n const setRowState = useCallback((rowId: string | number, updater: React.SetStateAction<TRowState>) => {\n setRowStates(prev => {\n const current = prev.get(rowId) ?? (initialState as TRowState);\n const newState = typeof updater === 'function'\n ? (updater as (prevState: TRowState) => TRowState)(current)\n : updater;\n const newMap = new Map(prev);\n newMap.set(rowId, newState);\n return newMap;\n });\n }, [initialState]);\n\n // ** Hooks\n const dataKit = useDataKit<unknown, TItem>({\n action: action as unknown as (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TItem>>,\n filters,\n autoFetch,\n debounce,\n memory: memoryMode,\n initial: {\n limit: limitConfig?.default ?? 10,\n query: query ?? {},\n sorts: columns.reduce<{ path: string; value: 1 | -1 }[]>((acc, col) => {\n if (col.sortable && col.sortable.default !== 0) {\n acc.push({ path: col.sortable.path, value: col.sortable.default as 1 | -1 });\n }\n return acc;\n }, []),\n filter: filters.reduce<Record<string, unknown>>((acc, f) => {\n if (f.defaultValue !== undefined) acc[f.id] = f.defaultValue;\n return acc;\n }, {}),\n },\n });\n const pagination = usePagination({ page: dataKit.page, limit: dataKit.limit, total: dataKit.total, siblingCount: 1 });\n const selection = useSelectionWithTotal<string | number>(dataKit.items.map((item) => item.id));\n\n // ** Variable\n const selectedCount = selection.selectedIds.size;\n const colSpan = columns.length + (selectable?.enabled ? 1 : 0);\n const limitOptions = React.useMemo(() => {\n const standardOptions = [10, 25, 50, 100];\n const currentLimit = dataKit.limit;\n if (!standardOptions.includes(currentLimit)) {\n return [...standardOptions, currentLimit].sort((a, b) => a - b);\n }\n return standardOptions;\n }, [dataKit.limit]);\n\n // ** Handlers\n const handleSort = useCallback((path: string) => {\n const currentSort = dataKit.sorts.find((s) => s.path === path);\n const nextValue = currentSort?.value === 1 ? -1 : currentSort?.value === -1 ? null : 1;\n dataKit.actions.setSort(path, nextValue);\n }, [dataKit.sorts, dataKit.actions]);\n\n const handleSelectionAction = useCallback(async (actionKey: string) => {\n if (!selectable?.actions?.[actionKey] || actionLoading) return;\n setActionLoading(actionKey);\n setActionsMenuOpen(false);\n try {\n const selectedItems = dataKit.items.filter((item) => selection.isSelected(item.id));\n const result = await selectable.actions[actionKey].function(selectedItems);\n if (result[0]) {\n const data = result[1] as { deselectAll?: boolean };\n if (data.deselectAll) selection.deselectAll();\n await dataKit.actions.refresh();\n }\n } catch (error) {\n console.error('Selection action failed:', error);\n } finally {\n setActionLoading(null);\n }\n }, [selectable?.actions, actionLoading, dataKit.items, selection, dataKit.actions]);\n\n const handleResetFilters = useCallback(() => {\n filters.forEach((f) => {\n dataKit.actions.setFilter(f.id, f.defaultValue ?? (f.type === 'BOOLEAN' ? false : ''));\n });\n }, [filters, dataKit.actions]);\n\n const getSortFor = useCallback((path: string) => dataKit.sorts.find((s) => s.path === path)?.value ?? null, [dataKit.sorts]);\n\n // ** Effects\n useEffect(() => {\n if (controller) {\n controller.current = {\n itemPush: dataKit.actions.itemPush,\n refetchData: dataKit.actions.refresh,\n deleteBulk: dataKit.actions.deleteBulk,\n getSelectedItems: () => dataKit.items.filter((item) => selection.isSelected(item.id)),\n clearSelection: () => selection.deselectAll(),\n };\n }\n }, [controller, dataKit.actions, dataKit.items, selection]);\n\n useEffect(() => {\n if (!tableRef.current || !refetchInterval) return;\n const observer = new IntersectionObserver(\n (entries) => entries[0] && setIsVisible(entries[0].isIntersecting),\n { threshold: 0.1 }\n );\n const currentRef = tableRef.current;\n observer.observe(currentRef);\n return () => { if (currentRef) observer.unobserve(currentRef); };\n }, [refetchInterval]);\n\n useEffect(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n if (refetchInterval && isVisible) {\n intervalRef.current = setInterval(dataKit.actions.refresh, refetchInterval);\n }\n return () => { if (intervalRef.current) clearInterval(intervalRef.current); };\n }, [refetchInterval, isVisible, dataKit.actions]);\n\n useEffect(() => { selection.deselectAll(); }, [dataKit.items.length]);\n\n // ** Render\n return (\n <div ref={tableRef} className={`space-y-3 ${className ?? ''}`}>\n {/* Toolbar */}\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n {filters.length > 0 && (\n <Popover open={isFilterOpen} onOpenChange={setIsFilterOpen}>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n <Filter className=\"mr-1.5 size-4\" />\n Filters\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"w-80\" container={overlayContainer}>\n <div className=\"grid gap-3\">\n {filters.map((f) => (\n <div key={f.id} className=\"grid gap-1.5\">\n <label className=\"text-sm font-medium\">{f.label}</label>\n {f.type === 'TEXT' && (\n <input\n type=\"text\"\n className=\"h-9 w-full rounded-md border bg-transparent px-3 text-sm outline-none focus:ring-2 focus:ring-ring\"\n placeholder={f.placeholder}\n value={(dataKit.filter[f.id] as string) ?? ''}\n onChange={(e) => dataKit.actions.setFilter(f.id, e.target.value)}\n />\n )}\n {f.type === 'SELECT' && (\n <Select\n value={String(dataKit.filter[f.id] || '__all__')}\n onValueChange={(v) => dataKit.actions.setFilter(f.id, v === '__all__' ? '' : v)}\n >\n <SelectTrigger><SelectValue /></SelectTrigger>\n <SelectContent container={overlayContainer}>\n <SelectItem value=\"__all__\">All</SelectItem>\n {f.dataset?.map((d) => (\n <SelectItem key={d.id} value={d.id}>{d.label}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n {f.type === 'BOOLEAN' && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">{f.placeholder ?? 'Enable'}</span>\n <Switch\n checked={Boolean(dataKit.filter[f.id])}\n onCheckedChange={(c) => dataKit.actions.setFilter(f.id, c)}\n />\n </div>\n )}\n </div>\n ))}\n </div>\n <div className=\"mt-4 flex justify-between border-t pt-3\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleResetFilters}>Reset</Button>\n <Button size=\"sm\" onClick={() => setIsFilterOpen(false)}>Done</Button>\n </div>\n </PopoverContent>\n </Popover>\n )}\n </div>\n\n <div className=\"flex items-center gap-1\">\n <span className=\"mr-2 text-sm text-muted-foreground\">\n {dataKit.items.length} of {dataKit.total}\n </span>\n <Select value={String(dataKit.limit)} onValueChange={(v) => dataKit.actions.setLimit(Number(v))} disabled={dataKit.state.isLoading}>\n <SelectTrigger className=\"w-16\"><SelectValue /></SelectTrigger>\n <SelectContent container={overlayContainer}>\n {limitOptions.map((v) => (\n <SelectItem key={v} value={String(v)}>{v}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n {/* Table */}\n <div className={`overflow-hidden border border-gray-200 dark:border-gray-800 ${bordered === 'rounded' ? 'rounded-lg' : bordered ? '' : 'rounded-lg'}`}>\n <Table>\n <TableHeader>\n <TableRow>\n {selectable?.enabled && (\n <TableHead className=\"w-12\">\n <div className=\"flex items-center gap-2\">\n <Checkbox\n checked={selection.isIndeterminate ? 'indeterminate' : selection.isAllSelected}\n onCheckedChange={() => selection.toggleAll()}\n />\n {selectable.actions && Object.keys(selectable.actions).length > 0 && (\n <DropdownMenu open={actionsMenuOpen} onOpenChange={setActionsMenuOpen}>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-6\"\n disabled={selectedCount === 0 || !!actionLoading}\n >\n {actionLoading ? <Loader2 className=\"size-4 animate-spin\" /> : <MoreHorizontal className=\"size-4\" />}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" container={overlayContainer}>\n {Object.entries(selectable.actions).map(([key, action]) => (\n <DropdownMenuItem key={key} disabled={!!actionLoading} onSelect={() => handleSelectionAction(key)}>\n {actionLoading === key ? 'Working…' : action.name}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </TableHead>\n )}\n {columns.map((col, idx) => (\n <React.Fragment key={idx}>\n {col.sortable ? (\n <TableHead {...(React.isValidElement(col.head) ? (col.head.props as object) : {})}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-3\"\n onClick={() => handleSort(col.sortable!.path)}\n >\n {React.isValidElement(col.head) ? (col.head as React.ReactElement<{ children?: React.ReactNode }>).props.children : col.head}\n {getSortFor(col.sortable!.path) === 1 && <ArrowUp className=\"ml-1 size-4\" />}\n {getSortFor(col.sortable!.path) === -1 && <ArrowDown className=\"ml-1 size-4\" />}\n </Button>\n </TableHead>\n ) : (\n col.head\n )}\n </React.Fragment>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {dataKit.state.isLoading ? (\n <TableRow>\n <TableCell colSpan={colSpan} className=\"h-24 text-center\">\n <Loader2 className=\"mx-auto size-5 animate-spin\" />\n </TableCell>\n </TableRow>\n ) : dataKit.state.error ? (\n <TableRow>\n <TableCell colSpan={colSpan} className=\"h-24 text-center text-red-500\">\n Error: {dataKit.state.error.message}\n </TableCell>\n </TableRow>\n ) : dataKit.items.length === 0 ? (\n <TableRow>\n <TableCell colSpan={colSpan} className=\"h-24 text-center text-muted-foreground\">\n No results found.\n </TableCell>\n </TableRow>\n ) : (\n dataKit.items.map((item, idx) => {\n const rowId = item.id ?? idx;\n return (\n <TableRow key={rowId}>\n {selectable?.enabled && (\n <TableCell>\n <Checkbox\n checked={selection.isSelected(item.id)}\n onCheckedChange={() => selection.toggle(item.id)}\n />\n </TableCell>\n )}\n {columns.map((col, colIdx) => (\n <React.Fragment key={colIdx}>\n {col.body({\n item,\n index: idx,\n state: getRowState(rowId),\n setState: (updater) => setRowState(rowId, updater),\n setItem: (updatedItem) => dataKit.actions.setItemAt(idx, updatedItem),\n deleteItem: () => dataKit.actions.deleteItemAt(idx),\n })}\n </React.Fragment>\n ))}\n </TableRow>\n );\n })\n )}\n </TableBody>\n </Table>\n </div>\n\n {/* Footer */}\n <div className=\"flex items-center justify-between gap-4\">\n <div className=\"min-w-[140px]\">\n <p className=\"text-sm text-muted-foreground\">\n Page {dataKit.page} of {pagination.totalPages}\n </p>\n {selectable?.enabled && selectedCount > 0 && (\n <p className=\"text-sm text-foreground\">\n {selectedCount} selected\n </p>\n )}\n </div>\n <div className=\"flex-1\" />\n {paginationType === 'SIMPLE' ? (\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n >\n <ChevronLeft className=\"size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n >\n <ChevronRight className=\"size-4\" />\n </Button>\n </div>\n ) : (\n <Pagination className=\"mx-0 w-auto\">\n <PaginationContent>\n <PaginationItem className=\"hidden sm:block\">\n <PaginationPrevious\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n />\n </PaginationItem>\n <PaginationItem className=\"sm:hidden\">\n <PaginationLink\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n >\n <ChevronLeft className=\"size-4\" />\n </PaginationLink>\n </PaginationItem>\n {pagination.pages.map((pageNum, idx) => (\n <PaginationItem key={idx} className=\"hidden sm:block\">\n {pageNum === 'ellipsis' ? (\n <PaginationEllipsis />\n ) : (\n <PaginationLink\n isActive={pageNum === dataKit.page}\n disabled={dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(pageNum as number)}\n >\n {pageNum}\n </PaginationLink>\n )}\n </PaginationItem>\n ))}\n <PaginationItem className=\"sm:hidden\">\n <span className=\"flex size-9 items-center justify-center text-sm\">\n {dataKit.page}\n </span>\n </PaginationItem>\n <PaginationItem className=\"hidden sm:block\">\n <PaginationNext\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n />\n </PaginationItem>\n <PaginationItem className=\"sm:hidden\">\n <PaginationLink\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n >\n <ChevronRight className=\"size-4\" />\n </PaginationLink>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n )}\n </div>\n </div>\n );\n};\n\nexport const DataKitTable = Object.assign(DataKitRoot, {\n Cell: TableCell,\n Head: TableHead,\n});\n","'use client';\n\nimport React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { ChevronLeft, ChevronRight, Filter, Loader2 } from 'lucide-react';\nimport { useDataKit } from '../hooks/useDataKit';\nimport { usePagination } from '../hooks/usePagination';\nimport {\n Button,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Popover,\n PopoverContent,\n PopoverTrigger,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Switch,\n} from './ui';\nimport type {\n TDataKitInput,\n TDataKitResult,\n TDataKitFilterItem,\n TDataKitSelectableItem,\n TDataKitMemoryMode,\n TExtractDataKitItemType,\n TUseDataKitReturn,\n TDataKitRef,\n} from '../../types';\n\n\nconst DataKitInner = <\n TAction extends (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TDataKitSelectableItem>>\n>(props: Readonly<{\n action: TAction;\n query?: Record<string, unknown>;\n filters?: TDataKitFilterItem[];\n limit?: { default: number };\n defaultSort?: { path: string; value: 1 | -1 }[];\n className?: string;\n autoFetch?: boolean;\n debounce?: number;\n refetchInterval?: number;\n memory?: TDataKitMemoryMode;\n manual?: boolean;\n pagination?: 'SIMPLE' | 'NUMBER';\n children: (dataKit: TUseDataKitReturn<unknown, TExtractDataKitItemType<TAction>>) => React.ReactNode;\n}>, ref: React.ForwardedRef<TDataKitRef<unknown, TExtractDataKitItemType<TAction>>>) => {\n // ** Deconstruct Props\n const {\n action,\n query,\n filters = [],\n limit: limitConfig,\n defaultSort = [],\n className,\n autoFetch = true,\n debounce = 300,\n refetchInterval,\n memory: memoryMode = 'memory',\n manual = false,\n pagination: paginationType = 'NUMBER',\n children,\n } = props;\n\n // ** Type\n type TItem = TExtractDataKitItemType<TAction>;\n\n // ** Ref\n const containerRef = useRef<HTMLDivElement>(null);\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n // ** State\n const [isVisible, setIsVisible] = useState(false);\n const [isFilterOpen, setIsFilterOpen] = useState(false);\n\n // ** Variable\n const overlayContainer = containerRef.current;\n\n // ** Hooks\n const dataKit = useDataKit<unknown, TItem>({\n action: action as unknown as (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TItem>>,\n filters,\n autoFetch,\n debounce,\n memory: memoryMode,\n initial: {\n limit: limitConfig?.default ?? 10,\n query: query ?? {},\n sorts: defaultSort,\n filter: filters.reduce<Record<string, unknown>>((acc, f) => {\n if (f.defaultValue !== undefined) acc[f.id] = f.defaultValue;\n return acc;\n }, {}),\n },\n });\n const pagination = usePagination({ page: dataKit.page, limit: dataKit.limit, total: dataKit.total, siblingCount: 1 });\n const limitOptions = React.useMemo(() => {\n const standardOptions = [10, 25, 50, 100];\n const currentLimit = dataKit.limit;\n if (!standardOptions.includes(currentLimit)) {\n return [...standardOptions, currentLimit].sort((a, b) => a - b);\n }\n return standardOptions;\n }, [dataKit.limit]);\n\n // ** Imperative Handle\n React.useImperativeHandle(ref, () => dataKit as unknown as TDataKitRef<unknown, TItem>, [dataKit]);\n\n // ** Handlers\n const handleResetFilters = useCallback(() => {\n filters.forEach((f) => {\n dataKit.actions.setFilter(f.id, f.defaultValue ?? (f.type === 'BOOLEAN' ? false : ''));\n });\n }, [filters, dataKit.actions]);\n\n // ** Effects\n useEffect(() => {\n if (!containerRef.current || !refetchInterval) return;\n const observer = new IntersectionObserver(\n (entries) => entries[0] && setIsVisible(entries[0].isIntersecting),\n { threshold: 0.1 }\n );\n const currentRef = containerRef.current;\n observer.observe(currentRef);\n return () => { if (currentRef) observer.unobserve(currentRef); };\n }, [refetchInterval]);\n\n useEffect(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n if (refetchInterval && isVisible) {\n intervalRef.current = setInterval(dataKit.actions.refresh, refetchInterval);\n }\n return () => { if (intervalRef.current) clearInterval(intervalRef.current); };\n }, [refetchInterval, isVisible, dataKit.actions]);\n\n // ** Render\n return (\n <div ref={containerRef} className={`space-y-3 ${className ?? ''}`}>\n {/* Toolbar */}\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n {filters.length > 0 && (\n <Popover open={isFilterOpen} onOpenChange={setIsFilterOpen}>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n <Filter className=\"mr-1.5 size-4\" />\n Filters\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"w-80\" container={overlayContainer}>\n <div className=\"grid gap-3\">\n {filters.map((f) => (\n <div key={f.id} className=\"grid gap-1.5\">\n <label className=\"text-sm font-medium\">{f.label}</label>\n {f.type === 'TEXT' && (\n <input\n type=\"text\"\n className=\"h-9 w-full rounded-md border bg-transparent px-3 text-sm outline-none focus:ring-2 focus:ring-ring\"\n placeholder={f.placeholder}\n value={(dataKit.filter[f.id] as string) ?? ''}\n onChange={(e) => dataKit.actions.setFilter(f.id, e.target.value)}\n />\n )}\n {f.type === 'SELECT' && (\n <Select\n value={String(dataKit.filter[f.id] || '__all__')}\n onValueChange={(v) => dataKit.actions.setFilter(f.id, v === '__all__' ? '' : v)}\n >\n <SelectTrigger><SelectValue /></SelectTrigger>\n <SelectContent container={overlayContainer}>\n <SelectItem value=\"__all__\">All</SelectItem>\n {f.dataset?.map((d) => (\n <SelectItem key={d.id} value={d.id}>{d.label}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n {f.type === 'BOOLEAN' && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">{f.placeholder ?? 'Enable'}</span>\n <Switch\n checked={Boolean(dataKit.filter[f.id])}\n onCheckedChange={(c) => dataKit.actions.setFilter(f.id, c)}\n />\n </div>\n )}\n </div>\n ))}\n </div>\n <div className=\"mt-4 flex justify-between border-t pt-3\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleResetFilters}>Reset</Button>\n <Button size=\"sm\" onClick={() => setIsFilterOpen(false)}>Done</Button>\n </div>\n </PopoverContent>\n </Popover>\n )}\n </div>\n\n <div className=\"flex items-center gap-1\">\n <span className=\"mr-2 text-sm text-muted-foreground\">\n {dataKit.items.length} of {dataKit.total}\n </span>\n <Select value={String(dataKit.limit)} onValueChange={(v) => dataKit.actions.setLimit(Number(v))} disabled={dataKit.state.isLoading}>\n <SelectTrigger className=\"w-16\"><SelectValue /></SelectTrigger>\n <SelectContent container={overlayContainer}>\n {limitOptions.map((v) => (\n <SelectItem key={v} value={String(v)}>{v}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n {/* Content (user-provided) */}\n {manual ? (\n children(dataKit)\n ) : (\n <div className=\"min-h-[200px]\">\n {dataKit.state.isLoading ? (\n <div className=\"flex h-48 items-center justify-center\">\n <Loader2 className=\"size-6 animate-spin text-muted-foreground\" />\n </div>\n ) : dataKit.items.length === 0 ? (\n <div className=\"flex h-48 items-center justify-center text-muted-foreground\">\n No results found.\n </div>\n ) : (\n children(dataKit)\n )}\n </div>\n )}\n\n {/* Footer */}\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm text-muted-foreground\">\n Page {dataKit.page} of {pagination.totalPages}\n </p>\n {paginationType === 'SIMPLE' ? (\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n >\n <ChevronLeft className=\"size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n >\n <ChevronRight className=\"size-4\" />\n </Button>\n </div>\n ) : (\n <Pagination className=\"mx-0 w-auto\">\n <PaginationContent>\n <PaginationItem className=\"hidden sm:block\">\n <PaginationPrevious\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n />\n </PaginationItem>\n <PaginationItem className=\"sm:hidden\">\n <PaginationLink\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n >\n <ChevronLeft className=\"size-4\" />\n </PaginationLink>\n </PaginationItem>\n {pagination.pages.map((pageNum, idx) => (\n <PaginationItem key={idx} className=\"hidden sm:block\">\n {pageNum === 'ellipsis' ? (\n <PaginationEllipsis />\n ) : (\n <PaginationLink\n isActive={pageNum === dataKit.page}\n disabled={dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(pageNum)}\n >\n {pageNum}\n </PaginationLink>\n )}\n </PaginationItem>\n ))}\n <PaginationItem className=\"sm:hidden\">\n <span className=\"flex size-9 items-center justify-center text-sm\">\n {dataKit.page}\n </span>\n </PaginationItem>\n <PaginationItem className=\"hidden sm:block\">\n <PaginationNext\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n />\n </PaginationItem>\n <PaginationItem className=\"sm:hidden\">\n <PaginationLink\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n >\n <ChevronRight className=\"size-4\" />\n </PaginationLink>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n )}\n </div>\n </div>\n );\n};\n\nexport const DataKit = React.forwardRef(DataKitInner) as unknown as <\n TAction extends (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TDataKitSelectableItem>>\n>(\n props: Readonly<{\n action: TAction;\n query?: Record<string, unknown>;\n filters?: TDataKitFilterItem[];\n limit?: { default: number };\n defaultSort?: { path: string; value: 1 | -1 }[];\n className?: string;\n autoFetch?: boolean;\n debounce?: number;\n refetchInterval?: number;\n memory?: TDataKitMemoryMode;\n manual?: boolean;\n pagination?: 'SIMPLE' | 'NUMBER';\n children: (dataKit: TUseDataKitReturn<unknown, TExtractDataKitItemType<TAction>>) => React.ReactNode;\n ref?: React.Ref<TDataKitRef<unknown, TExtractDataKitItemType<TAction>>>;\n }>\n) => React.ReactElement;\n"]}
1
+ {"version":3,"sources":["../src/server/utils.ts","../src/server/adapters/mongoose.ts","../src/server/action.ts","../src/server/adapters/memory.ts","../src/server/schema.ts","../src/client/utils/cn.ts","../src/client/utils/index.ts","../src/client/hooks/useDataKit.ts","../src/client/hooks/useSelection.ts","../src/client/hooks/usePagination.ts","../src/client/context/index.tsx","../src/client/components/ui/table.tsx","../src/client/components/ui/checkbox.tsx","../src/client/components/ui/popover.tsx","../src/client/components/ui/dropdown-menu.tsx","../src/client/components/ui/switch.tsx","../src/client/components/ui/button.tsx","../src/client/components/ui/pagination.tsx","../src/client/components/ui/select.tsx","../src/client/components/data-kit-table.tsx","../src/client/components/data-kit.tsx"],"names":["customFilter","filters","useState","useCallback","useMemo","jsx","React","Button","jsxs","CheckIcon","debounce","useRef","useEffect","MoreHorizontal","action","ChevronLeft","ChevronRight","Filter","Loader2"],"mappings":";;;;;;;;;;;;;;;AASO,IAAM,aAAa,CAAC,KAAA,KAA4B,UAAU,MAAA,IAAa,KAAA,KAAU,QAAQ,KAAA,KAAU,EAAA;AAKnG,IAAM,cAAA,GAAiB,CAAC,GAAA,EAAc,IAAA,KAA0B;AACtE,EAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC5B,EAAA,IAAI,OAAA,GAAmB,GAAA;AACvB,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACzB,IAAA,IAAI,OAAA,IAAW,OAAO,OAAA,KAAY,QAAA,IAAY,QAAS,OAAA,EAAqC;AAC3F,MAAA,OAAA,GAAW,QAAoC,IAAI,CAAA;AAAA,IACpD,CAAA,MAAO;AACN,MAAA,OAAO,MAAA;AAAA,IACR;AAAA,EACD;AACA,EAAA,OAAO,OAAA;AACR,CAAA;AAKO,IAAM,YAAA,GAAe,CAAC,QAAA,EAAmB,MAAA,KAA6B;AAC5E,EAAA,IAAI,MAAM,OAAA,CAAQ,MAAM,GAAG,OAAO,MAAA,CAAO,SAAS,QAAiB,CAAA;AACnE,EAAA,OAAO,QAAA,KAAa,MAAA;AACrB,CAAA;AAKO,IAAM,gBAAA,GAAmB,CAAC,QAAA,EAAmB,MAAA,KAA6B;AAChF,EAAA,IAAI,CAAC,UAAA,CAAW,MAAM,CAAA,EAAG,OAAO,IAAA;AAChC,EAAA,IAAI,QAAA,KAAa,MAAA,IAAa,QAAA,KAAa,IAAA,EAAM,OAAO,KAAA;AACxD,EAAA,MAAM,GAAA,GAAM,OAAO,QAAQ,CAAA;AAE3B,EAAA,IAAI,MAAA,YAAkB,MAAA,EAAQ,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACpD,EAAA,MAAM,CAAA,GAAI,OAAO,MAAM,CAAA;AACvB,EAAA,OAAO,IAAI,WAAA,EAAY,CAAE,QAAA,CAAS,CAAA,CAAE,aAAa,CAAA;AAClD,CAAA;AAKO,IAAM,aAAA,GAAgB,CAAC,CAAA,EAAY,CAAA,KAAuB;AAChE,EAAA,IAAI,CAAA,KAAM,GAAG,OAAO,CAAA;AACpB,EAAA,IAAI,CAAA,KAAM,MAAA,IAAa,CAAA,KAAM,IAAA,EAAM,OAAO,EAAA;AAC1C,EAAA,IAAI,CAAA,KAAM,MAAA,IAAa,CAAA,KAAM,IAAA,EAAM,OAAO,CAAA;AAE1C,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,OAAO,CAAA,KAAM,QAAA,SAAiB,CAAA,GAAI,CAAA;AAC/D,EAAA,IAAI,OAAO,MAAM,QAAA,IAAY,OAAO,MAAM,QAAA,EAAU,OAAO,CAAA,GAAI,CAAA,GAAI,EAAA,GAAK,CAAA;AAExE,EAAA,MAAM,EAAA,GAAK,OAAO,CAAC,CAAA;AACnB,EAAA,MAAM,EAAA,GAAK,OAAO,CAAC,CAAA;AACnB,EAAA,OAAO,EAAA,CAAG,cAAc,EAAE,CAAA;AAC3B,CAAA;AAKO,IAAM,cAAA,GAAiB,CAAC,KAAA,KAAmD,KAAA,CAAM,QAAQ,KAAK,CAAA,GAAI,MAAM,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,CAAC,CAAA,EAAG,SAAS,CAAA,CAAE,KAAA,KAAU,KAAK,CAAA,CAAE,KAAA,KAAU,EAAA,CAAG,CAAA,GAAI,EAAC;AAKvK,IAAM,SAAA,GAAY,CAAC,GAAA,KAAyB;AAClD,EAAA,MAAM,UAAA,GAAa,CAAC,WAAA,EAAa,aAAA,EAAe,WAAW,CAAA;AAC3D,EAAA,OAAO,CAAC,UAAA,CAAW,QAAA,CAAS,GAAG,CAAA;AAChC,CAAA;AAKO,IAAM,WAAA,GAAc,CAAC,GAAA,KAAwB;AACnD,EAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,qBAAA,EAAuB,MAAM,CAAA;AACjD;AAYO,IAAM,kBAAA,GAAqB,CAAI,MAAA,KAA6E;AAClH,EAAA,OAAO,CAAC,KAAA,KAAyC;AAChD,IAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AACxC,MAAA,OAAO,EAAC;AAAA,IACT;AAEA,IAAA,MAAM,YAAA,GAAe,YAAY,KAAK,CAAA;AACtC,IAAA,OAAO;AAAA,MACN,GAAA,EAAK,MAAA,CAAO,GAAA,CAAI,CAAA,KAAA,MAAU;AAAA,QACzB,CAAC,KAAK,GAAG,EAAE,MAAA,EAAQ,YAAA,EAAc,UAAU,GAAA;AAAI,OAChD,CAAE;AAAA,KACH;AAAA,EACD,CAAA;AACD;AAIO,IAAM,mBAAA,GAAsB,CAAC,IAAA,EAAc,KAAA,EAAe,KAAA,MAAoC;AAAA,EACpG,WAAA,EAAa,IAAA;AAAA,EACb,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,KAAK,CAAA;AAAA,EACnC,UAAA,EAAY,KAAA;AAAA,EACZ,YAAA,EAAc,KAAA;AAAA,EACd,WAAA,EAAa,OAAO,KAAA,GAAQ,KAAA;AAAA,EAC5B,aAAa,IAAA,GAAO;AACrB,CAAA;;;AC9GO,IAAM,eAAA,GAAkB,CAC9B,KAAA,EACA,OAAA,GAIK,EAAC,KACwB;AAE9B,EAAA,MAAM,EAAE,QAAQ,YAAA,EAAc,YAAA,EAAc,cAAc,EAAE,GAAA,EAAK,EAAA,EAAG,EAA2B,GAAI,OAAA;AAEnG,EAAA,OAAO,OAAO,EAAE,MAAA,EAAQ,OAAO,KAAA,EAAO,IAAA,EAAM,OAAM,KAAM;AAEvD,IAAA,IAAI,UAAA;AAEJ,IAAA,IAAI,KAAA,CAAM,QAAQ,MAAA,CAAO,IAAA,CAAK,MAAM,IAAI,CAAA,CAAE,SAAS,CAAA,EAAG;AACrD,MAAA,UAAA,GAAa,KAAA,CAAM,IAAA;AAAA,IACpB,CAAA,MAAA,IAAW,KAAA,IAAS,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG;AACrC,MAAA,UAAA,GAAa,KAAA,CAAM,MAAA,CAAmC,CAAC,GAAA,EAAK,CAAA,KAAM;AACjE,QAAA,IAAI,GAAG,IAAA,KAAS,CAAA,CAAE,UAAU,CAAA,IAAK,CAAA,CAAE,UAAU,EAAA,CAAA,EAAK;AACjD,UAAA,GAAA,CAAI,CAAA,CAAE,IAAI,CAAA,GAAI,CAAA,CAAE,KAAA;AAAA,QACjB;AACA,QAAA,OAAO,GAAA;AAAA,MACR,CAAA,EAAG,EAAE,CAAA;AAAA,IACN,CAAA,MAAO;AACN,MAAA,UAAA,GAAa,WAAA;AAAA,IACd;AAGA,IAAA,IAAI,cAA0C,EAAC;AAG/C,IAAA,IAAI,MAAM,KAAA,EAAO;AAChB,MAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,KAAK,CAAA,CAAE,QAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AACrD,QAAA,IAAI,UAAA,CAAW,KAAK,CAAA,IAAK,SAAA,CAAU,GAAG,CAAA,EAAG;AACxC,UAAC,WAAA,CAAwC,GAAG,CAAA,GAAI,KAAA;AAAA,QACjD;AAAA,MACD,CAAC,CAAA;AAAA,IACF;AAGA,IAAA,IAAI,YAAA,EAAc;AACjB,MAAA,MAAM,cAAc,OAAO,YAAA,KAAiB,UAAA,GAAa,YAAA,CAAa,MAAM,CAAA,GAAI,YAAA;AAChF,MAAA,WAAA,GAAc,EAAE,GAAG,WAAA,EAAa,GAAG,WAAA,EAAY;AAAA,IAChD;AAGA,IAAA,IAAI,MAAA,IAAU,CAAC,YAAA,EAAc;AAC5B,MAAA,IAAI,MAAM,YAAA,EAAc;AACvB,QAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAEhD,UAAA,IAAI,YAAA,IAAgB,YAAA,CAAa,GAAG,CAAA,EAAG;AAEvC,UAAA,IAAI,UAAA,CAAW,KAAK,CAAA,IAAK,SAAA,CAAU,GAAG,CAAA,IAAK,KAAA,CAAM,YAAA,GAAe,GAAG,CAAA,EAAG;AACrE,YAAA,MAAM,MAAA,GAAS,KAAA,CAAM,YAAA,CAAa,GAAG,CAAA;AACrC,YAAA,MAAM,SAAA,GAAY,QAAQ,KAAA,IAAS,GAAA;AAEnC,YAAA,IAAI,MAAA,EAAQ,SAAS,OAAA,EAAS;AAC7B,cAAC,WAAA,CAAwC,SAAS,CAAA,GAAI;AAAA,gBACrD,MAAA,EAAQ,WAAA,CAAY,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,gBACjC,QAAA,EAAU;AAAA,eACX;AAAA,YACD,CAAA,MAAA,IAAW,MAAA,EAAQ,IAAA,KAAS,OAAA,EAAS;AACpC,cAAC,WAAA,CAAwC,SAAS,CAAA,GAAI,KAAA;AAAA,YACvD;AAAA,UACD;AAAA,QACD,CAAC,CAAA;AAAA,MACF,CAAA,MAAO;AAEN,QAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAEhD,UAAA,IAAI,YAAA,IAAgB,YAAA,CAAa,GAAG,CAAA,EAAG;AAEvC,UAAA,IAAI,UAAA,CAAW,KAAK,CAAA,IAAK,SAAA,CAAU,GAAG,CAAA,EAAG;AACxC,YAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC9B,cAAC,WAAA,CAAwC,GAAG,CAAA,GAAI;AAAA,gBAC/C,MAAA,EAAQ,YAAY,KAAK,CAAA;AAAA,gBACzB,QAAA,EAAU;AAAA,eACX;AAAA,YACD,WAAW,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,UAAU,SAAA,EAAW;AACnE,cAAC,WAAA,CAAwC,GAAG,CAAA,GAAI,KAAA;AAAA,YACjD;AAAA,UACD;AAAA,QACD,CAAC,CAAA;AAAA,MACF;AAAA,IACD;AAGA,IAAA,IAAI,gBAAgB,MAAA,EAAQ;AAC3B,MAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAChD,QAAA,IAAI,UAAA,CAAW,KAAK,CAAA,IAAK,SAAA,CAAU,GAAG,CAAA,IAAK,YAAA,CAAa,GAAG,CAAA,EAAG;AAC7D,UAAA,MAAMA,aAAAA,GAAe,YAAA,CAAa,GAAG,CAAA,CAAG,KAAK,CAAA;AAC7C,UAAA,WAAA,GAAc,EAAE,GAAG,WAAA,EAAa,GAAGA,aAAAA,EAAa;AAAA,QACjD;AAAA,MACD,CAAC,CAAA;AAAA,IACF;AAGA,IAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,CAAM,cAAA,CAAe,WAAyC,CAAA;AAClF,IAAA,MAAM,KAAA,GAAS,MAAM,KAAA,CACnB,IAAA,CAAK,WAAyC,CAAA,CAC9C,IAAA,CAAK,UAAU,CAAA,CACf,KAAA,CAAM,KAAK,CAAA,CACX,KAAK,IAAI,CAAA;AAEX,IAAA,OAAO,EAAE,OAAO,KAAA,EAAM;AAAA,EACvB,CAAA;AACD;;;ACtGA,eAAe,eAAwB,KAAA,EAA4B,OAAA,EAAgC,MAAsC,QAAA,EAAkB,aAAA,EAA0B,cAAwC,WAAA,EAAmE;AAE/R,EAAA,IAAI,MAAM,KAAA,EAAO;AAChB,IAAA,MAAM,YAAuD,EAAC;AAC9D,IAAA,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,CAAE,QAAQ,CAAA,GAAA,KAAO;AACvC,MAAA,IAAI,YAAA,IAAgB,CAAC,YAAA,CAAa,QAAA,CAAS,GAAG,CAAA,EAAG;AAChD,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,wBAAA,EAA2B,GAAG,CAAA,iBAAA,CAAmB,CAAA;AAAA,MAClE;AACA,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,KAAA,CAAO,GAAG,CAAA;AAC5B,MAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,OAAO,GAAA,KAAQ,QAAA,EAAU;AAC5C,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4BAAA,EAA+B,GAAG,CAAA,sBAAA,CAAwB,CAAA;AAAA,MAC3E;AACA,MAAA,IAAI,QAAQ,MAAA,EAAW;AACtB,QAAA,SAAA,CAAU,GAAG,CAAA,GAAI,GAAA;AAAA,MAClB;AAAA,IACD,CAAC,CAAA;AACD,IAAA,KAAA,CAAM,KAAA,GAAQ,SAAA;AAAA,EACf;AAGA,EAAA,IAAI,MAAM,MAAA,EAAQ;AACjB,IAAA,MAAM,aAA+D,EAAC;AACtE,IAAA,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,MAAM,CAAA,CAAE,QAAQ,CAAA,GAAA,KAAO;AACxC,MAAA,IAAI,aAAA,IAAiB,CAAC,aAAA,CAAc,QAAA,CAAS,GAAG,CAAA,EAAG;AAClD,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,yBAAA,EAA4B,GAAG,CAAA,iBAAA,CAAmB,CAAA;AAAA,MACnE;AACA,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,MAAA,CAAQ,GAAG,CAAA;AAC7B,MAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,OAAO,GAAA,KAAQ,QAAA,EAAU;AAC5C,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,6BAAA,EAAgC,GAAG,CAAA,sBAAA,CAAwB,CAAA;AAAA,MAC5E;AACA,MAAA,IAAI,QAAQ,MAAA,EAAW;AACtB,QAAA,UAAA,CAAW,GAAG,CAAA,GAAI,GAAA;AAAA,MACnB;AAAA,IACD,CAAC,CAAA;AACD,IAAA,KAAA,CAAM,MAAA,GAAS,UAAA;AAAA,EAChB;AAGA,EAAA,IAAI,KAAA,CAAM,SAAS,WAAA,EAAa;AAC/B,IAAA,KAAA,CAAM,KAAA,CAAM,QAAQ,CAAA,IAAA,KAAQ;AAC3B,MAAA,IAAI,CAAC,WAAA,CAAY,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA,EAAG;AACrC,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,IAAA,CAAK,IAAI,CAAA,iBAAA,CAAmB,CAAA;AAAA,MACvE;AAAA,IACD,CAAC,CAAA;AAAA,EACF;AAGA,EAAA,QAAQ,KAAA,CAAM,UAAU,OAAA;AAAS,IAChC,KAAK,OAAA,EAAS;AACb,MAAA,IAAI,CAAC,KAAA,CAAM,KAAA,IAAS,CAAC,MAAM,IAAA,EAAM;AAChC,QAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,MACvD;AAEA,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,OAAO,QAAQ,CAAA;AAC5C,MAAA,MAAM,IAAA,GAAO,KAAA,IAAS,KAAA,CAAM,IAAA,GAAO,CAAA,CAAA;AAEnC,MAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAI,MAAM,OAAA,CAAQ;AAAA,QACtC,MAAA,EAAQ,KAAA,CAAM,MAAA,IAAU,EAAC;AAAA,QACzB,KAAA,EAAO,KAAA,CAAM,KAAA,IAAS,EAAC;AAAA,QACvB,KAAA;AAAA,QACA,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,IAAA;AAAA,QACA;AAAA,OACA,CAAA;AAED,MAAA,MAAM,cAAA,GAAiB,MAAM,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,QAAA,KAAY,IAAA,CAAK,QAAQ,CAAC,CAAC,CAAA;AAE9E,MAAA,OAAO;AAAA,QACN,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,cAAA;AAAA,QACP,aAAA,EAAe;AAAA,OAChB;AAAA,IACD;AAAA,IAEA;AACC,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,oBAAA,EAAwB,KAAA,CAA8B,MAAM,CAAA,CAAE,CAAA;AAAA;AAEjF;AAiBA,eAAsB,oBAAmE,KAAA,EAAsG;AAC9L,EAAA,MAAM,EAAE,OAAO,IAAA,EAAM,QAAA,GAAW,KAAK,YAAA,EAAc,aAAA,EAAe,qBAAA,EAAuB,WAAA,EAAY,GAAI,KAAA;AAGzG,EAAA,MAAM,aAAA,GAAgB,qBAAA;AAGtB,EAAA,IAAI,YAAA;AAEJ,EAAA,IAAI,SAAA,IAAa,KAAA,IAAS,KAAA,CAAM,OAAA,EAAS;AACxC,IAAA,YAAA,GAAe,KAAA,CAAM,OAAA;AAAA,EACtB,CAAA,MAAA,IAAW,OAAA,IAAW,KAAA,IAAS,KAAA,CAAM,KAAA,EAAO;AAC3C,IAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,IAAA,YAAA,GAAe,gBAAgB,KAAA,EAAO;AAAA,MACrC,QAAQ,KAAA,CAAM,MAAA;AAAA,MACd,cAAc,KAAA,CAAM,YAAA;AAAA,MACpB,aAAa,KAAA,CAAM;AAAA,KACnB,CAAA;AAAA,EACF,CAAA,MAAO;AACN,IAAA,MAAM,IAAI,MAAM,0CAA0C,CAAA;AAAA,EAC3D;AAEA,EAAA,OAAO,eAAe,KAAA,EAAO,YAAA,EAAc,MAAM,QAAA,EAAU,aAAA,EAAe,cAAc,WAAW,CAAA;AACpG;;;ACtHO,IAAM,aAAA,GAAgB,CAC5B,OAAA,EACA,OAAA,GAGK,EAAC,KACkB;AACxB,EAAA,MAAM,EAAE,iBAAA,GAAoB,OAAA,EAAQ,GAAI,OAAA;AAExC,EAAA,OAAO,OAAO,EAAE,MAAA,EAAQ,OAAO,KAAA,EAAO,IAAA,EAAM,OAAM,KAAM;AACvD,IAAA,MAAM,eAA0C,KAAA,CAAM,YAAA;AACtD,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,IAAS,EAAC;AAG9B,IAAA,IAAI,IAAA,GAAO,OAAA,CAAQ,MAAA,CAAO,CAAA,GAAA,KAAO;AAChC,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAG;AACjD,QAAA,IAAI,CAAC,UAAA,CAAW,KAAK,CAAA,EAAG;AACxB,QAAA,MAAM,QAAA,GAAW,cAAA,CAAe,GAAA,EAAK,GAAG,CAAA;AACxC,QAAA,IAAI,CAAC,YAAA,CAAa,QAAA,EAAU,KAAK,GAAG,OAAO,KAAA;AAAA,MAC5C;AACA,MAAA,OAAO,IAAA;AAAA,IACR,CAAC,CAAA;AAGD,IAAA,MAAM,eAAA,GAAkB,UAAU,EAAC;AACnC,IAAA,IAAA,GAAO,IAAA,CAAK,OAAO,CAAA,GAAA,KAAO;AACzB,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,eAAe,CAAA,EAAG;AAC3D,QAAA,IAAI,CAAC,UAAA,CAAW,KAAK,CAAA,EAAG;AAExB,QAAA,MAAM,MAAA,GAAS,eAAe,GAAG,CAAA;AACjC,QAAA,MAAM,KAAA,GAAQ,QAAQ,KAAA,IAAS,GAAA;AAC/B,QAAA,MAAM,QAAA,GAAW,cAAA,CAAe,GAAA,EAAK,KAAK,CAAA;AAE1C,QAAA,MAAM,IAAA,GAAO,QAAQ,IAAA,IAAQ,iBAAA;AAC7B,QAAA,IAAI,SAAS,OAAA,EAAS;AACrB,UAAA,IAAI,CAAC,gBAAA,CAAiB,QAAA,EAAU,KAAK,GAAG,OAAO,KAAA;AAAA,QAChD,CAAA,MAAO;AACN,UAAA,IAAI,CAAC,YAAA,CAAa,QAAA,EAAU,KAAK,GAAG,OAAO,KAAA;AAAA,QAC5C;AAAA,MACD;AACA,MAAA,OAAO,IAAA;AAAA,IACR,CAAC,CAAA;AAGD,IAAA,MAAM,eAAA,GAAkB,eAAe,KAAK,CAAA;AAC5C,IAAA,IAAI,eAAA,CAAgB,SAAS,CAAA,EAAG;AAC/B,MAAA,IAAA,GAAO,CAAC,GAAG,IAAI,EAAE,IAAA,CAAK,CAAC,IAAI,EAAA,KAAO;AACjC,QAAA,KAAA,MAAW,KAAK,eAAA,EAAiB;AAChC,UAAA,MAAM,EAAA,GAAK,cAAA,CAAe,EAAA,EAAI,CAAA,CAAE,IAAI,CAAA;AACpC,UAAA,MAAM,EAAA,GAAK,cAAA,CAAe,EAAA,EAAI,CAAA,CAAE,IAAI,CAAA;AACpC,UAAA,MAAM,GAAA,GAAM,aAAA,CAAc,EAAA,EAAI,EAAE,CAAA;AAChC,UAAA,IAAI,QAAQ,CAAA,EAAG,OAAO,EAAE,KAAA,KAAU,CAAA,GAAI,MAAM,CAAC,GAAA;AAAA,QAC9C;AACA,QAAA,OAAO,CAAA;AAAA,MACR,CAAC,CAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAQ,IAAA,CAAK,MAAA;AACnB,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,OAAO,KAAK,CAAA;AAC3C,IAAA,OAAO,EAAE,OAAO,KAAA,EAAM;AAAA,EACvB,CAAA;AACD;ACxEgC,EAAE,MAAA,CAAO;AAAA,EACxC,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,OAAO,EAAE,QAAA,EAAS;AAAA,EACpC,IAAA,EAAM,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EAC3C,KAAA,EAAO,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EAC5C,KAAA,EAAO,EAAE,MAAA,CAAO,CAAA,CAAE,QAAO,EAAG,CAAA,CAAE,MAAM,CAAC,CAAA,CAAE,QAAO,EAAG,CAAA,CAAE,QAAO,EAAG,CAAA,CAAE,SAAS,CAAC,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EACrF,MAAA,EAAQ,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,EAAO,EAAG,EAAE,MAAA,EAAO,EAAG,CAAA,CAAE,OAAA,EAAQ,EAAG,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAChG,cAAc,CAAA,CACZ,MAAA;AAAA,IACA,EAAE,MAAA,EAAO;AAAA,IACT,EAAE,MAAA,CAAO;AAAA,MACR,MAAM,CAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,OAAO,CAAC,CAAA;AAAA,MAC/B,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,KAC3B;AAAA,IAED,QAAA,EAAS;AAAA,EACX,OAAO,CAAA,CACL,KAAA;AAAA,IACA,EAAE,MAAA,CAAO;AAAA,MACR,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,GAAG,CAAA;AAAA;AAAA,MACxB,KAAA,EAAO,EAAE,OAAA,CAAQ,EAAE,EAAE,EAAA,CAAG,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC;AAAA,KACpC;AAAA,GACF,CACC,GAAA,CAAI,CAAC,CAAA,CACL,QAAA,EAAS;AAAA;AAAA,EACX,MAAM,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,GAAG,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAC,CAAC,EAAE,QAAA;AAC5D,CAAC;;;ACpBD,IAAM,aAAA,GAAgB,CAAC,KAAA,KAA8B;AACjD,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,OAAO,UAAU,QAAA,EAAU,OAAO,OAAO,KAAK,CAAA;AAE/E,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,IAAA,OAAO,KAAA,CAAM,IAAI,aAAa,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,EAC5D;AAEA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,IAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,OAAO,CAAC,GAAG,KAAK,CAAA,KAAM,OAAA,CAAQ,KAAK,CAAC,CAAA,CACpC,IAAI,CAAC,CAAC,GAAG,CAAA,KAAM,GAAG,CAAA,CAClB,IAAA,CAAK,GAAG,CAAA;AAAA,EACjB;AAEA,EAAA,OAAO,EAAA;AACX,CAAA;AAKO,IAAM,EAAA,GAAK,CAAA,GAAI,MAAA,KAAiC,MAAA,CAAO,GAAA,CAAI,aAAa,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;;;ACflG,IAAM,cAAA,GAAiB,CAAI,IAAA,EAAS,MAAA,KAAuC;AAC7E,EAAA,MAAM,EAAE,UAAS,GAAI,MAAA;AACrB,EAAA,OAAO,OAAO,QAAA,KAAa,UAAA,GAAa,SAAS,IAAI,CAAA,GAAI,KAAK,QAAmB,CAAA;AACtF;AAKO,IAAM,YAAA,GAAe,CAAC,KAAA,EAAqB,IAAA,KAAgC;AAC7E,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,IAAI,CAAA;AAC9C,EAAA,OAAO,MAAM,KAAA,IAAS,IAAA;AAC3B;AAKO,IAAM,gBAAA,GAAmB,CAAC,OAAA,KAA0C;AACtE,EAAA,IAAI,OAAA,KAAY,MAAM,OAAO,CAAA;AAC7B,EAAA,IAAI,OAAA,KAAY,GAAG,OAAO,EAAA;AAC1B,EAAA,OAAO,IAAA;AACZ;AAMO,IAAM,YAAA,GAAe,CAAC,GAAA,KAAwB,GAAA,CAAI,cAAA;AAMlD,IAAM,QAAA,GAAW,CACnB,EAAA,EACA,KAAA,KACoC;AACpC,EAAA,IAAI,SAAA;AACJ,EAAA,OAAO,IAAI,IAAA,KAAwB;AAC9B,IAAA,YAAA,CAAa,SAAS,CAAA;AACtB,IAAA,SAAA,GAAY,WAAW,MAAM,EAAA,CAAG,GAAG,IAAI,GAAG,KAAK,CAAA;AAAA,EACpD,CAAA;AACL;AAKO,IAAM,QAAA,GAAW,CACnB,EAAA,EACA,KAAA,KACoC;AACpC,EAAA,IAAI,UAAA,GAAa,KAAA;AACjB,EAAA,OAAO,IAAI,IAAA,KAAwB;AAC9B,IAAA,IAAI,CAAC,UAAA,EAAY;AACZ,MAAA,EAAA,CAAG,GAAG,IAAI,CAAA;AACV,MAAA,UAAA,GAAa,IAAA;AACb,MAAA,UAAA,CAAW,MAAM;AAAE,QAAA,UAAA,GAAa,KAAA;AAAA,MAAO,GAAG,KAAK,CAAA;AAAA,IACpD;AAAA,EACL,CAAA;AACL;AAMO,IAAM,mBAAmB,CAAC,KAAA,KAC5B,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,EAAG,CAAA,CAAE,IAAI,IAAI,CAAA,CAAE,KAAK,CAAA,CAAE,CAAA,CAAE,KAAK,GAAG;AAK/C,IAAM,gBAAA,GAAmB,CAAC,GAAA,KAA8B;AAC1D,EAAA,IAAI,CAAC,GAAA,EAAK,OAAO,EAAC;AAClB,EAAA,OAAO,IAAI,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS;AAC/B,IAAA,MAAM,CAAC,IAAA,EAAM,KAAK,CAAA,GAAI,IAAA,CAAK,MAAM,GAAG,CAAA;AACpC,IAAA,OAAO,EAAE,MAAM,IAAA,IAAQ,EAAA,EAAI,OAAO,QAAA,CAAS,KAAA,IAAS,GAAA,EAAK,EAAE,CAAA,EAAY;AAAA,EAC5E,CAAC,CAAA;AACN;AAMO,IAAM,cAAA,GAAiB,CAAC,MAAA,KAM1B;AACA,EAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,MAAM,CAAA;AACzC,EAAA,MAAM,QAA2C,EAAC;AAGlD,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA;AAC9B,EAAA,IAAI,IAAA,EAAM,KAAA,CAAM,IAAA,GAAO,QAAA,CAAS,MAAM,EAAE,CAAA;AAGxC,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;AAChC,EAAA,IAAI,KAAA,EAAO,KAAA,CAAM,KAAA,GAAQ,QAAA,CAAS,OAAO,EAAE,CAAA;AAG3C,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA;AAC9B,EAAA,IAAI,IAAA,EAAM,KAAA,CAAM,KAAA,GAAQ,gBAAA,CAAiB,IAAI,CAAA;AAG7C,EAAA,MAAM,SAAkC,EAAC;AACzC,EAAA,MAAM,QAAiC,EAAC;AAExC,EAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AAC1B,IAAA,IAAI,GAAA,CAAI,WAAW,IAAI,CAAA,SAAU,GAAA,CAAI,KAAA,CAAM,CAAC,CAAC,CAAA,GAAI,KAAA;AAAA,SAAA,IACxC,GAAA,CAAI,WAAW,IAAI,CAAA,QAAS,GAAA,CAAI,KAAA,CAAM,CAAC,CAAC,CAAA,GAAI,KAAA;AAAA,EAC1D,CAAC,CAAA;AAED,EAAA,IAAI,OAAO,IAAA,CAAK,MAAM,EAAE,MAAA,GAAS,CAAA,QAAS,MAAA,GAAS,MAAA;AACnD,EAAA,IAAI,OAAO,IAAA,CAAK,KAAK,EAAE,MAAA,GAAS,CAAA,QAAS,KAAA,GAAQ,KAAA;AAEjD,EAAA,OAAO,KAAA;AACZ,CAAA;AAKO,IAAM,gBAAA,GAAmB,CAAC,KAAA,KAMV;AAClB,EAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AAEnC,EAAA,IAAI,KAAA,CAAM,IAAA,IAAQ,KAAA,CAAM,IAAA,GAAO,CAAA,EAAG,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,KAAA,CAAM,IAAA,CAAK,QAAA,EAAU,CAAA;AAC1E,EAAA,IAAI,KAAA,CAAM,OAAO,MAAA,CAAO,GAAA,CAAI,SAAS,KAAA,CAAM,KAAA,CAAM,UAAU,CAAA;AAC3D,EAAA,IAAI,KAAA,CAAM,KAAA,IAAS,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,gBAAA,CAAiB,KAAA,CAAM,KAAK,CAAC,CAAA;AAE3F,EAAA,IAAI,MAAM,MAAA,EAAQ;AACb,IAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,MAAM,CAAA,CAAE,QAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAClD,MAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,IAAQ,UAAU,EAAA,EAAI;AACtD,QAAA,MAAA,CAAO,IAAI,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,EAAI,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,MACzC;AAAA,IACL,CAAC,CAAA;AAAA,EACN;AAEA,EAAA,IAAI,MAAM,KAAA,EAAO;AACZ,IAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,KAAK,CAAA,CAAE,QAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AACjD,MAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,IAAQ,UAAU,EAAA,EAAI;AACtD,QAAA,MAAA,CAAO,IAAI,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,EAAI,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,MACzC;AAAA,IACL,CAAC,CAAA;AAAA,EACN;AAEA,EAAA,OAAO,MAAA;AACZ,CAAA;;;AC1JO,IAAM,UAAA,GAAa,CAA2B,KAAA,KAAuE;AAE3H,EAAA,MAAM,EAAE,OAAA,GAAU,EAAC,EAAG,MAAA,EAAQ,aAAa,QAAA,EAAU,OAAA,EAAS,MAAA,EAAQ,SAAA,EAAW,SAAS,SAAA,GAAY,IAAA,EAAM,QAAA,EAAU,aAAA,GAAgB,KAAI,GAAI,KAAA;AAE9I,EAAA,MAAM,EAAE,IAAA,EAAM,WAAA,GAAc,GAAG,KAAA,EAAO,YAAA,GAAe,IAAI,KAAA,EAAO,YAAA,GAAe,EAAC,EAAG,MAAA,EAAQ,gBAAgB,EAAC,EAAG,OAAO,YAAA,GAAe,IAAG,GAAI,OAAA;AAG5I,EAAA,MAAM,CAAC,IAAA,EAAM,YAAY,CAAA,GAAI,SAAS,WAAW,CAAA;AACjD,EAAA,MAAM,CAAC,KAAA,EAAO,aAAa,CAAA,GAAI,SAAS,YAAY,CAAA;AACpD,EAAA,MAAM,CAAC,KAAA,EAAO,aAAa,CAAA,GAAI,SAAuB,YAAY,CAAA;AAClE,EAAA,MAAM,CAAC,MAAA,EAAQ,cAAc,CAAA,GAAI,SAAkC,aAAa,CAAA;AAChF,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAkC,aAAa,CAAA;AAC7F,EAAA,MAAM,CAAC,KAAA,EAAO,aAAa,CAAA,GAAI,SAAkC,YAAY,CAAA;AAC7E,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,QAAA,CAAc,EAAE,CAAA;AAC1C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,CAAC,CAAA;AAGpC,EAAA,MAAM,OAAA,GAAU,OAAO,IAAI,CAAA;AAC3B,EAAA,MAAM,UAAA,GAAa,OAAO,CAAC,CAAA;AAC3B,EAAA,MAAM,gBAAA,GAAmB,OAA6C,IAAI,CAAA;AAG1E,EAAA,MAAM,SAAA,GAAY,OAAO,MAAM,CAAA;AAC/B,EAAA,MAAM,YAAA,GAAe,OAAO,SAAS,CAAA;AACrC,EAAA,MAAM,UAAA,GAAa,OAAO,OAAO,CAAA;AACjC,EAAA,MAAM,UAAA,GAAa,OAAO,OAAO,CAAA;AAGjC,EAAA,SAAA,CAAU,OAAA,GAAU,MAAA;AACpB,EAAA,YAAA,CAAa,OAAA,GAAU,SAAA;AACvB,EAAA,UAAA,CAAW,OAAA,GAAU,OAAA;AACrB,EAAA,UAAA,CAAW,OAAA,GAAU,OAAA;AAGrB,EAAA,MAAM,QAAA,GAAW,YAAY,MAAwB;AACpD,IAAA,MAAM,KAAA,GAA0B;AAAA,MAC/B,MAAA,EAAQ,OAAA;AAAA,MACR,IAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA,EAAQ,eAAA;AAAA,MACR;AAAA,KACD;AAEA,IAAA,IAAI,WAAW,OAAA,EAAS;AACvB,MAAA,KAAA,CAAM,eAAe,UAAA,CAAW,OAAA,CAAQ,MAAA,CAAsB,CAAC,KAAK,CAAA,KAAM;AACzE,QAAA,IAAI,EAAE,aAAA,EAAe,GAAA,CAAI,CAAA,CAAE,EAAE,IAAI,CAAA,CAAE,aAAA;AACnC,QAAA,OAAO,GAAA;AAAA,MACR,CAAA,EAAG,EAAE,CAAA;AAAA,IACN;AAEA,IAAA,OAAO,KAAA;AAAA,EACR,GAAG,CAAC,IAAA,EAAM,OAAO,KAAA,EAAO,eAAA,EAAiB,KAAK,CAAC,CAAA;AAG/C,EAAA,MAAM,SAAA,GAAY,YAAY,YAAY;AACzC,IAAA,MAAM,OAAA,GAAU,EAAE,UAAA,CAAW,OAAA;AAC7B,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,QAAA,CAAS,IAAI,CAAA;AAEb,IAAA,IAAI;AACH,MAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,MAAA,MAAM,MAAA,GAAU,MAAM,SAAA,CAAU,OAAA,CAAQ,KAAK,CAAA;AAG7C,MAAA,IAAI,OAAA,KAAY,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAExD,MAAA,QAAA,CAAS,OAAO,KAAK,CAAA;AACrB,MAAA,QAAA,CAAS,OAAO,aAAa,CAAA;AAC7B,MAAA,YAAA,CAAa,UAAU,MAAM,CAAA;AAAA,IAC9B,SAAS,GAAA,EAAK;AACb,MAAA,IAAI,OAAA,KAAY,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAExD,MAAA,MAAM,UAAA,GAAa,eAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA;AACrE,MAAA,QAAA,CAAS,UAAU,CAAA;AACnB,MAAA,UAAA,CAAW,UAAU,UAAU,CAAA;AAAA,IAChC,CAAA,SAAE;AACD,MAAA,IAAI,OAAA,KAAY,UAAA,CAAW,OAAA,IAAW,OAAA,CAAQ,OAAA,EAAS;AACtD,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACnB;AAAA,IACD;AAAA,EACD,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAGb,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,IAAI,gBAAA,CAAiB,OAAA,EAAS,YAAA,CAAa,gBAAA,CAAiB,OAAO,CAAA;AAEnE,IAAA,gBAAA,CAAiB,OAAA,GAAU,WAAW,MAAM;AAC3C,MAAA,kBAAA,CAAmB,MAAM,CAAA;AAAA,IAC1B,GAAG,aAAa,CAAA;AAEhB,IAAA,OAAO,MAAM;AACZ,MAAA,IAAI,gBAAA,CAAiB,OAAA,EAAS,YAAA,CAAa,gBAAA,CAAiB,OAAO,CAAA;AAAA,IACpE,CAAA;AAAA,EACD,CAAA,EAAG,CAAC,MAAA,EAAQ,aAAa,CAAC,CAAA;AAG1B,EAAA,MAAM,OAAA,GAAU,YAAY,CAAC,OAAA,KAAoB,aAAa,OAAO,CAAA,EAAG,EAAE,CAAA;AAE1E,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,CAAC,QAAA,KAAqB;AAClD,IAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,IAAA,YAAA,CAAa,CAAC,CAAA;AAAA,EACf,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAU,WAAA,CAAY,CAAC,IAAA,EAAc,KAAA,EAAsB,SAAS,KAAA,KAAU;AACnF,IAAA,aAAA,CAAc,CAAA,IAAA,KAAQ;AACrB,MAAA,IAAI,KAAA,KAAU,MAAM,OAAO,IAAA,CAAK,OAAO,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,IAAI,CAAA;AAC3D,MAAA,IAAI,CAAC,MAAA,EAAQ,OAAO,CAAC,EAAE,IAAA,EAAM,OAAO,CAAA;AAEpC,MAAA,MAAM,WAAW,IAAA,CAAK,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,IAAI,CAAA;AAC/C,MAAA,IAAI,QAAA,EAAU,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,IAAA,GAAO,EAAE,GAAG,CAAA,EAAG,KAAA,KAAU,CAAE,CAAA;AAC1E,MAAA,OAAO,CAAC,GAAG,IAAA,EAAM,EAAE,IAAA,EAAM,OAAO,CAAA;AAAA,IACjC,CAAC,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,QAAA,GAAW,YAAY,CAAC,QAAA,KAA2B,cAAc,QAAQ,CAAA,EAAG,EAAE,CAAA;AAEpF,EAAA,MAAM,SAAA,GAAY,WAAA,CAAY,CAAC,GAAA,EAAa,KAAA,KAAmB;AAC9D,IAAA,cAAA,CAAe,CAAA,IAAA,MAAS,EAAE,GAAG,IAAA,EAAM,CAAC,GAAG,GAAG,OAAM,CAAE,CAAA;AAClD,IAAA,YAAA,CAAa,CAAC,CAAA;AAAA,EACf,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,CAACC,QAAAA,KAAqC;AACpE,IAAA,cAAA,CAAe,WAAS,EAAE,GAAG,IAAA,EAAM,GAAGA,UAAQ,CAAE,CAAA;AAChD,IAAA,YAAA,CAAa,CAAC,CAAA;AAAA,EACf,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAe,YAAY,MAAM;AACtC,IAAA,cAAA,CAAe,EAAE,CAAA;AACjB,IAAA,YAAA,CAAa,CAAC,CAAA;AAAA,EACf,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,CAAC,GAAA,EAAa,KAAA,KAAmB;AAC7D,IAAA,aAAA,CAAc,CAAA,IAAA,MAAS,EAAE,GAAG,IAAA,EAAM,CAAC,GAAG,GAAG,OAAM,CAAE,CAAA;AACjD,IAAA,YAAA,CAAa,CAAC,CAAA;AAAA,EACf,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,OAAA,GAAU,YAAY,YAAY;AACvC,IAAA,MAAM,SAAA,EAAU;AAAA,EACjB,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAGd,EAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,CAAC,SAAA,KAAmB;AACtD,IAAA,QAAA,CAAS,SAAS,CAAA;AAAA,EACnB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,SAAA,GAAY,WAAA,CAAY,CAAC,KAAA,EAAe,IAAA,KAAY;AACzD,IAAA,QAAA,CAAS,CAAA,IAAA,KAAQ;AAChB,MAAA,IAAI,KAAA,GAAQ,CAAA,IAAK,KAAA,IAAS,IAAA,CAAK,QAAQ,OAAO,IAAA;AAC9C,MAAA,MAAM,IAAA,GAAO,CAAC,GAAG,IAAI,CAAA;AACrB,MAAA,IAAA,CAAK,KAAK,CAAA,GAAI,IAAA;AACd,MAAA,OAAO,IAAA;AAAA,IACR,CAAC,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAe,WAAA,CAAY,CAAC,KAAA,KAAkB;AACnD,IAAA,QAAA,CAAS,CAAA,IAAA,KAAQ,KAAK,MAAA,CAAO,CAAC,GAAG,CAAA,KAAM,CAAA,KAAM,KAAK,CAAC,CAAA;AAAA,EACpD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,CAAC,IAAA,EAAS,WAAkB,CAAA,KAAM;AAC9D,IAAA,QAAA,CAAS,CAAA,IAAA,KAAS,QAAA,KAAa,CAAA,GAAI,CAAC,IAAA,EAAM,GAAG,IAAI,CAAA,GAAI,CAAC,GAAG,IAAA,EAAM,IAAI,CAAE,CAAA;AAAA,EACtE,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,CAAC,aAAA,KAAuB;AACtD,IAAA,IAAI,aAAA,CAAc,WAAW,CAAA,EAAG;AAChC,IAAA,MAAM,QAAA,GAAW,IAAI,GAAA,CAAI,aAAa,CAAA;AACtC,IAAA,QAAA,CAAS,CAAA,IAAA,KAAQ,KAAK,MAAA,CAAO,CAAA,EAAA,KAAM,CAAC,QAAA,CAAS,GAAA,CAAI,EAAE,CAAC,CAAC,CAAA;AAAA,EACtD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC/B,IAAA,YAAA,CAAa,WAAW,CAAA;AACxB,IAAA,aAAA,CAAc,YAAY,CAAA;AAC1B,IAAA,aAAA,CAAc,YAAY,CAAA;AAC1B,IAAA,cAAA,CAAe,aAAa,CAAA;AAC5B,IAAA,kBAAA,CAAmB,aAAa,CAAA;AAChC,IAAA,aAAA,CAAc,YAAY,CAAA;AAAA,EAC3B,GAAG,CAAC,WAAA,EAAa,cAAc,YAAA,EAAc,aAAA,EAAe,YAAY,CAAC,CAAA;AAGzE,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,IAAI,UAAA,KAAe,eAAA,IAAmB,OAAO,MAAA,KAAW,WAAA,EAAa;AAGrE,IAAA,MAAM,QAAA,GAAW,cAAA,CAAe,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA;AAEtD,IAAA,IAAI,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,SAAS,CAAA,EAAG;AACrC,MAAA,IAAI,QAAA,CAAS,IAAA,EAAM,YAAA,CAAa,QAAA,CAAS,IAAI,CAAA;AAC7C,MAAA,IAAI,QAAA,CAAS,KAAA,EAAO,aAAA,CAAc,QAAA,CAAS,KAAK,CAAA;AAChD,MAAA,IAAI,QAAA,CAAS,KAAA,EAAO,aAAA,CAAc,QAAA,CAAS,KAAK,CAAA;AAChD,MAAA,IAAI,SAAS,MAAA,EAAQ;AACpB,QAAA,cAAA,CAAe,WAAS,EAAE,GAAG,MAAM,GAAG,QAAA,CAAS,QAAO,CAAE,CAAA;AACxD,QAAA,kBAAA,CAAmB,WAAS,EAAE,GAAG,MAAM,GAAG,QAAA,CAAS,QAAO,CAAE,CAAA;AAAA,MAC7D;AACA,MAAA,IAAI,QAAA,CAAS,KAAA,EAAO,aAAA,CAAc,CAAA,IAAA,MAAS,EAAE,GAAG,IAAA,EAAM,GAAG,QAAA,CAAS,KAAA,EAAM,CAAE,CAAA;AAAA,IAC3E;AAGA,IAAA,MAAM,iBAAiB,MAAM;AAC5B,MAAA,MAAM,WAAA,GAAc,cAAA,CAAe,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA;AAEzD,MAAA,YAAA,CAAa,WAAA,CAAY,QAAQ,WAAW,CAAA;AAC5C,MAAA,aAAA,CAAc,WAAA,CAAY,SAAS,YAAY,CAAA;AAC/C,MAAA,aAAA,CAAc,WAAA,CAAY,SAAS,YAAY,CAAA;AAC/C,MAAA,cAAA,CAAe,EAAE,GAAG,aAAA,EAAe,GAAG,WAAA,CAAY,QAAQ,CAAA;AAC1D,MAAA,kBAAA,CAAmB,EAAE,GAAG,aAAA,EAAe,GAAG,WAAA,CAAY,QAAQ,CAAA;AAC9D,MAAA,aAAA,CAAc,EAAE,GAAG,YAAA,EAAc,GAAG,WAAA,CAAY,OAAO,CAAA;AAAA,IACxD,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,YAAY,cAAc,CAAA;AAClD,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,UAAA,EAAY,cAAc,CAAA;AAAA,EACnE,CAAA,EAAG,CAAC,UAAA,EAAY,WAAA,EAAa,cAAc,YAAA,EAAc,aAAA,EAAe,YAAY,CAAC,CAAA;AAGrF,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,IAAI,UAAA,KAAe,eAAA,IAAmB,OAAO,MAAA,KAAW,WAAA,EAAa;AAErE,IAAA,MAAM,MAAA,GAAS,iBAAiB,EAAE,IAAA,EAAM,OAAO,KAAA,EAAO,MAAA,EAAQ,OAAO,CAAA;AACrE,IAAA,MAAM,SAAA,GAAY,OAAO,QAAA,EAAS;AAClC,IAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,MAAM,CAAC,CAAA;AAEpD,IAAA,IAAI,cAAc,aAAA,EAAe;AAChC,MAAA,MAAM,SAAS,SAAA,GAAY,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,GAAK,OAAO,QAAA,CAAS,QAAA;AAC7D,MAAA,MAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,IAAA,EAAM,EAAA,EAAI,MAAM,CAAA;AAAA,IAC1C;AAAA,EACD,CAAA,EAAG,CAAC,IAAA,EAAM,KAAA,EAAO,OAAO,MAAA,EAAQ,KAAA,EAAO,UAAU,CAAC,CAAA;AAGlD,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,IAAI,WAAW,SAAA,EAAU;AAAA,EAC1B,CAAA,EAAG,CAAC,IAAA,EAAM,KAAA,EAAO,OAAO,eAAA,EAAiB,KAAA,EAAO,SAAA,EAAW,SAAS,CAAC,CAAA;AAGrE,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,IAAA,OAAO,MAAM;AACZ,MAAA,OAAA,CAAQ,OAAA,GAAU,KAAA;AAAA,IACnB,CAAA;AAAA,EACD,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,WAAA,GAAc,OAAO,KAAA,GAAQ,KAAA;AAEnC,EAAA,OAAO;AAAA,IACN,IAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA,EAAc,OAAA,EAAS,MAAA,CAAsB,CAAC,KAAK,CAAA,KAAM;AACxD,MAAA,IAAI,EAAE,aAAA,EAAe,GAAA,CAAI,CAAA,CAAE,EAAE,IAAI,CAAA,CAAE,aAAA;AACnC,MAAA,OAAO,GAAA;AAAA,IACR,CAAA,EAAG,EAAE,CAAA;AAAA,IACL,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA,EAAO,EAAE,SAAA,EAAW,KAAA,EAAO,WAAA,EAAY;AAAA,IACvC,OAAA,EAAS;AAAA,MACR,OAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA,EAAU,cAAA;AAAA,MACV,SAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA;AACD,GACD;AACD;ACpRO,IAAM,YAAA,GAAe,CAAa,eAAA,GAAuB,EAAC,KAA8B;AAE1F,EAAA,MAAM,CAAC,aAAa,cAAc,CAAA,GAAIC,SAAiB,IAAI,GAAA,CAAI,eAAe,CAAC,CAAA;AAG/E,EAAA,MAAM,MAAA,GAASC,WAAAA,CAAY,CAAC,EAAA,KAAU;AACjC,IAAA,cAAA,CAAe,CAAC,SAAS,IAAI,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA,CAAI,EAAE,CAAC,CAAA;AAAA,EACnD,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,QAAA,GAAWA,WAAAA,CAAY,CAAC,EAAA,KAAU;AACnC,IAAA,cAAA,CAAe,CAAC,IAAA,KAAS;AACpB,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,MAAA,IAAA,CAAK,OAAO,EAAE,CAAA;AACd,MAAA,OAAO,IAAA;AAAA,IACZ,CAAC,CAAA;AAAA,EACN,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,MAAA,GAASA,WAAAA,CAAY,CAAC,EAAA,KAAU;AACjC,IAAA,cAAA,CAAe,CAAC,IAAA,KAAS;AACpB,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,MAAA,IAAI,KAAK,GAAA,CAAI,EAAE,CAAA,EAAG,IAAA,CAAK,OAAO,EAAE,CAAA;AAAA,WAC3B,IAAA,CAAK,IAAI,EAAE,CAAA;AAChB,MAAA,OAAO,IAAA;AAAA,IACZ,CAAC,CAAA;AAAA,EACN,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,SAAA,GAAYA,WAAAA,CAAY,CAAC,GAAA,KAAa;AACvC,IAAA,cAAA,CAAe,IAAI,GAAA,CAAI,GAAG,CAAC,CAAA;AAAA,EAChC,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,WAAA,GAAcA,YAAY,MAAM;AACjC,IAAA,cAAA,iBAAe,IAAI,KAAK,CAAA;AAAA,EAC7B,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,SAAA,GAAYA,WAAAA,CAAY,CAAC,GAAA,KAAa;AACvC,IAAA,cAAA,CAAe,CAAC,IAAA,KAAS;AAEpB,MAAA,IAAI,GAAA,CAAI,KAAA,CAAM,CAAC,EAAA,KAAO,IAAA,CAAK,GAAA,CAAI,EAAE,CAAC,CAAA,EAAG,uBAAO,IAAI,GAAA,EAAI;AAEpD,MAAA,OAAO,IAAI,IAAI,GAAG,CAAA;AAAA,IACvB,CAAC,CAAA;AAAA,EACN,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,UAAA,GAAaA,WAAAA,CAAY,CAAC,EAAA,KAAU,WAAA,CAAY,IAAI,EAAE,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAG5E,EAAA,MAAM,gBAAA,GAAmBA,YAAY,MAAM,KAAA,CAAM,KAAK,WAAW,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAGjF,EAAA,MAAM,aAAA,GAAgB,QAAQ,MAAM,WAAA,CAAY,OAAO,CAAA,EAAG,CAAC,WAAA,CAAY,IAAI,CAAC,CAAA;AAC5E,EAAA,MAAM,eAAA,GAAkB,OAAA,CAAQ,MAAM,KAAA,EAAO,EAAE,CAAA;AAE/C,EAAA,OAAO;AAAA,IACF,WAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACL;AACL;AAGO,IAAM,qBAAA,GAAwB,CAChC,UAAA,EACA,eAAA,GAAuB,EAAC,KAKxB;AAEA,EAAA,MAAM,SAAA,GAAY,aAAgB,eAAe,CAAA;AAGjD,EAAA,MAAM,aAAA,GAAgB,OAAA;AAAA,IACjB,MAAM,UAAA,CAAW,MAAA,GAAS,CAAA,IAAK,UAAA,CAAW,KAAA,CAAM,CAAC,EAAA,KAAO,SAAA,CAAU,WAAA,CAAY,GAAA,CAAI,EAAE,CAAC,CAAA;AAAA,IACrF,CAAC,UAAA,EAAY,SAAA,CAAU,WAAW;AAAA,GACvC;AAEA,EAAA,MAAM,eAAA,GAAkB,OAAA;AAAA,IACnB,MAAM,UAAU,WAAA,CAAY,IAAA,GAAO,KAAK,SAAA,CAAU,WAAA,CAAY,OAAO,UAAA,CAAW,MAAA;AAAA,IAChF,CAAC,UAAA,CAAW,MAAA,EAAQ,SAAA,CAAU,YAAY,IAAI;AAAA,GACnD;AAGA,EAAA,MAAM,SAAA,GAAYA,YAAY,MAAM;AAC/B,IAAA,IAAI,aAAA,YAAyB,WAAA,EAAY;AAAA,SACpC,SAAA,CAAU,UAAU,UAAU,CAAA;AAAA,EACxC,CAAA,EAAG,CAAC,aAAA,EAAe,SAAA,EAAW,UAAU,CAAC,CAAA;AAEzC,EAAA,OAAO;AAAA,IACF,GAAG,SAAA;AAAA,IACH,aAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACL;AACL;ACnGA,IAAM,QAAQ,CAAC,KAAA,EAAe,GAAA,KAA0B,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,GAAA,GAAM,KAAA,GAAQ,GAAE,EAAG,CAAC,CAAA,EAAG,GAAA,KAAQ,MAAM,KAAK,CAAA;AAEhH,IAAM,aAAA,GAAgB,CAC5B,KAAA,KAO0B;AAE1B,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,YAAA,GAAe,GAAE,GAAI,KAAA;AAGjD,EAAA,MAAM,cAAA,GAAiBC,OAAAA,CAAQ,MAAM,mBAAA,CAAoB,IAAA,EAAM,KAAA,EAAO,KAAK,CAAA,EAAG,CAAC,IAAA,EAAM,KAAA,EAAO,KAAK,CAAC,CAAA;AAGlG,EAAA,MAAM,KAAA,GAAQA,QAAQ,MAAM;AAC3B,IAAA,MAAM,EAAE,YAAW,GAAI,cAAA;AAGvB,IAAA,MAAM,gBAAA,GAAmB,eAAe,CAAA,GAAI,CAAA;AAG5C,IAAA,IAAI,gBAAA,IAAoB,UAAA,EAAY,OAAO,KAAA,CAAM,GAAG,UAAU,CAAA;AAE9D,IAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,GAAA,CAAI,IAAA,GAAO,cAAc,CAAC,CAAA;AACxD,IAAA,MAAM,iBAAA,GAAoB,IAAA,CAAK,GAAA,CAAI,IAAA,GAAO,cAAc,UAAU,CAAA;AAElE,IAAA,MAAM,yBAAyB,gBAAA,GAAmB,CAAA;AAClD,IAAA,MAAM,uBAAA,GAA0B,oBAAoB,UAAA,GAAa,CAAA;AAGjE,IAAA,IAAI,CAAC,0BAA0B,uBAAA,EAAyB;AACvD,MAAA,MAAM,SAAA,GAAY,KAAA,CAAM,CAAA,EAAG,CAAA,GAAI,IAAI,YAAY,CAAA;AAC/C,MAAA,OAAO,CAAC,GAAG,SAAA,EAAW,UAAA,EAAqB,UAAU,CAAA;AAAA,IACtD;AAGA,IAAA,IAAI,sBAAA,IAA0B,CAAC,uBAAA,EAAyB;AACvD,MAAA,MAAM,aAAa,KAAA,CAAM,UAAA,IAAc,IAAI,CAAA,GAAI,YAAA,CAAA,GAAgB,GAAG,UAAU,CAAA;AAC5E,MAAA,OAAO,CAAC,CAAA,EAAG,UAAA,EAAqB,GAAG,UAAU,CAAA;AAAA,IAC9C;AAGA,IAAA,IAAI,0BAA0B,uBAAA,EAAyB;AACtD,MAAA,MAAM,WAAA,GAAc,KAAA,CAAM,gBAAA,EAAkB,iBAAiB,CAAA;AAC7D,MAAA,OAAO,CAAC,CAAA,EAAG,UAAA,EAAqB,GAAG,WAAA,EAAa,YAAqB,UAAU,CAAA;AAAA,IAChF;AAEA,IAAA,OAAO,KAAA,CAAM,GAAG,UAAU,CAAA;AAAA,EAC3B,CAAA,EAAG,CAAC,cAAA,EAAgB,IAAA,EAAM,YAAY,CAAC,CAAA;AAEvC,EAAA,OAAO;AAAA,IACN,GAAG,cAAA;AAAA,IACH,KAAA;AAAA,IACA,SAAA,EAAW,CAAA;AAAA,IACX,UAAU,cAAA,CAAe;AAAA,GAC1B;AACD;AClEO,IAAM,uBAAuB,MAAgC;AAC/D,EAAA,MAAM,OAAA,GAAU,cAAiD,IAAI,CAAA;AAGrE,EAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAGlB;AACF,IAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,KAAA;AAC5B,IAAA,uBAAO,GAAA,CAAC,OAAA,CAAQ,QAAA,EAAR,EAAiB,OAAe,QAAA,EAAS,CAAA;AAAA,EACtD,CAAA;AAGA,EAAA,MAAM,oBAAoB,MAAkC;AACvD,IAAA,MAAM,OAAA,GAAU,WAAW,OAAO,CAAA;AAClC,IAAA,IAAI,CAAC,OAAA,EAAS;AACT,MAAA,MAAM,IAAI,MAAM,yDAAyD,CAAA;AAAA,IAC9E;AACA,IAAA,OAAO,OAAA;AAAA,EACZ,CAAA;AAEA,EAAA,OAAO,EAAE,eAAA,EAAiB,iBAAA,EAAmB,OAAA,EAAQ;AAC1D;AAGA,IAAM;AAAA,EACD,eAAA,EAAiB,sBAAA;AAAA,EACjB,iBAAA,EAAmB,wBAAA;AAAA,EACnB,OAAA,EAAS;AACd,CAAA,GAAI,oBAAA;ACvCJ,SAAS,KAAA,CAAM,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkC;AAClE,EAAA,uBACKC,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,iBAAA,EAAkB,SAAA,EAAU,mCACtC,QAAA,kBAAAA,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACI,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACT,EACL,CAAA;AAEV;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkC;AACxE,EAAA,uBACKA,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACI,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA;AAAA,MACzC,GAAG;AAAA;AAAA,GACT;AAEV;AAEA,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkC;AACtE,EAAA,uBACKA,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACI,WAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA;AAAA,MACpD,GAAG;AAAA;AAAA,GACT;AAEV;AAeA,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AAClE,EAAA,uBACKA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACI,WAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACN,uLAAA;AAAA,QACA;AAAA,OACL;AAAA,MACC,GAAG;AAAA;AAAA,GACT;AAEV;AAEA,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACnE,EAAA,uBACKA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACI,WAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACN,qKAAA;AAAA,QACA;AAAA,OACL;AAAA,MACC,GAAG;AAAA;AAAA,GACT;AAEV;AAEA,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACnE,EAAA,uBACKA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACI,WAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACN,wGAAA;AAAA,QACA;AAAA,OACL;AAAA,MACC,GAAG;AAAA;AAAA,GACT;AAEV;AC/EA,SAAS,QAAA,CAAS;AAAA,EACb,SAAA;AAAA,EACA,GAAG;AACR,CAAA,EAAwD;AACnD,EAAA,uBACKA,GAAAA;AAAA,IAAmB,iBAAA,CAAA,IAAA;AAAA,IAAlB;AAAA,MACI,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACN,orBAAA;AAAA,QACA;AAAA,OACL;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA;AAAA,QAAmB,iBAAA,CAAA,SAAA;AAAA,QAAlB;AAAA,UACI,WAAA,EAAU,oBAAA;AAAA,UACV,SAAA,EAAU,wDAAA;AAAA,UAEV,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,UAAA,EAAW;AAAA;AAAA;AACrC;AAAA,GACL;AAEV;ACtBA,SAAS,QACJ,KAAA,EACH;AACG,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAClE;AAEA,SAAS,eACJ,KAAA,EACH;AACG,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,OAAA,EAAjB,EAAyB,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AAC7E;AAEA,SAAS,cAAA,CAAe;AAAA,EACnB,SAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,SAAA;AAAA,EACA,GAAG;AACR,CAAA,EAEG;AACE,EAAA,uBACKA,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EAAwB,SAAA,EAAW,SAAA,IAAa,QAC5C,QAAA,kBAAAA,GAAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACI,WAAA,EAAU,iBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACN,6hBAAA;AAAA,QACA;AAAA,OACL;AAAA,MACC,GAAG;AAAA;AAAA,GACT,EACL,CAAA;AAEV;ACnCA,SAAS,YAAA,CAAa;AAAA,EACjB,GAAG;AACR,CAAA,EAA4D;AACvD,EAAA,uBAAOA,GAAAA,CAAuB,qBAAA,CAAA,IAAA,EAAtB,EAA2B,WAAA,EAAU,eAAA,EAAiB,GAAG,KAAA,EAAO,CAAA;AAC7E;AAUA,SAAS,mBAAA,CAAoB;AAAA,EACxB,GAAG;AACR,CAAA,EAA+D;AAC1D,EAAA,uBACKA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,OAAA;AAAA,IAAtB;AAAA,MACI,WAAA,EAAU,uBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACT;AAEV;AAEA,SAAS,mBAAA,CAAoB;AAAA,EACxB,SAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,SAAA;AAAA,EACA,GAAG;AACR,CAAA,EAEG;AACE,EAAA,uBACKA,GAAAA,CAAuB,qBAAA,CAAA,MAAA,EAAtB,EAA6B,SAAA,EAAW,SAAA,IAAa,QACjD,QAAA,kBAAAA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,OAAA;AAAA,IAAtB;AAAA,MACI,WAAA,EAAU,uBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACN,qnBAAA;AAAA,QACA;AAAA,OACL;AAAA,MACC,GAAG;AAAA;AAAA,GACT,EACL,CAAA;AAEV;AAUA,SAAS,gBAAA,CAAiB;AAAA,EACrB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,GAAG;AACR,CAAA,EAGG;AACE,EAAA,uBACKA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,IAAA;AAAA,IAAtB;AAAA,MACI,WAAA,EAAU,oBAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,cAAA,EAAc,OAAA;AAAA,MACd,SAAA,EAAW,EAAA;AAAA,QACN,g0BAAA;AAAA,QACA;AAAA,OACL;AAAA,MACC,GAAG;AAAA;AAAA,GACT;AAEV;AC9EA,SAAS,MAAA,CAAO;AAAA,EACZ,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAsD;AAClD,EAAA,uBACIA,GAAAA;AAAA,IAAiB,eAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACG,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACP,2WAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA;AAAA,QAAiB,eAAA,CAAA,KAAA;AAAA,QAAhB;AAAA,UACG,WAAA,EAAU,cAAA;AAAA,UACV,SAAA,EAAW,EAAA;AAAA,YACP;AAAA;AACJ;AAAA;AACJ;AAAA,GACJ;AAER;ACrBA,IAAM,cAAA,GAAiB,GAAA;AAAA,EAClB,ybAAA;AAAA,EACA;AAAA,IACK,QAAA,EAAU;AAAA,MACL,OAAA,EAAS;AAAA,QACJ,OAAA,EAAS,qGAAA;AAAA,QACT,WAAA,EACK,8EAAA;AAAA,QACL,OAAA,EACK,0JAAA;AAAA,QACL,SAAA,EACK,wGAAA;AAAA,QACL,KAAA,EACK,uFAAA;AAAA,QACL,IAAA,EAAM;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACD,OAAA,EAAS,+BAAA;AAAA,QACT,EAAA,EAAI,+CAAA;AAAA,QACJ,EAAA,EAAI,sCAAA;AAAA,QACJ,IAAA,EAAM,QAAA;AAAA,QACN,SAAA,EAAW,QAAA;AAAA,QACX,SAAA,EAAW;AAAA;AAChB,KACL;AAAA,IACA,eAAA,EAAiB;AAAA,MACZ,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACX;AAEV,CAAA;AAEA,IAAM,MAAA,GAAeC,MAAA,CAAA,UAAA,CAMnB,SAASC,OAAAA,CACN;AAAA,EACK,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,SAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,GAAG;AACR,CAAA,EACA,GAAA,EACH;AACG,EAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,QAAA;AAE9B,EAAA,uBACKF,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACI,GAAA;AAAA,MACA,WAAA,EAAU,QAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,MACzD,GAAG;AAAA;AAAA,GACT;AAEV,CAAC,CAAA;AAED,MAAA,CAAO,WAAA,GAAc,QAAA;AC5DrB,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACtE,EAAA,uBACIA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,IAAA,EAAK,YAAA;AAAA,MACL,YAAA,EAAW,YAAA;AAAA,MACX,WAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,SAAS,CAAA;AAAA,MAC9B,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACvB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAA+B;AAC3B,EAAA,uBACIA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,oBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,kCAAA,EAAoC,SAAS,CAAA;AAAA,MAC1D,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,cAAA,CAAe,EAAE,GAAG,KAAA,EAAM,EAA+B;AAC9D,EAAA,uBAAOA,GAAAA,CAAC,IAAA,EAAA,EAAG,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AACtD;AAOA,SAAS,cAAA,CAAe;AAAA,EACpB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,MAAA;AAAA,EACP,IAAA,GAAO,QAAA;AAAA,EACP,GAAG;AACP,CAAA,EAAwB;AACpB,EAAA,uBACIA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACG,cAAA,EAAc,WAAW,MAAA,GAAS,MAAA;AAAA,MAClC,WAAA,EAAU,iBAAA;AAAA,MACV,aAAA,EAAa,WAAW,MAAA,GAAS,OAAA;AAAA,MACjC,SAAA,EAAW,EAAA;AAAA,QACP,cAAA,CAAe;AAAA,UACX,OAAA,EAAS,WAAW,SAAA,GAAY,OAAA;AAAA,UAChC;AAAA,SACH,CAAA;AAAA,QACD;AAAA,OACJ;AAAA,MACA,IAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,kBAAA,CAAmB;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAgD;AAC5C,EAAA,uBACIG,IAAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACG,YAAA,EAAW,qBAAA;AAAA,MACX,IAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA;AAAA,MAChD,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,QAAA,EAAS,eAAY,MAAA,EAAO,CAAA;AAAA,wBACnDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAkB,QAAA,EAAA,UAAA,EAAQ;AAAA;AAAA;AAAA,GAC9C;AAER;AAEA,SAAS,cAAA,CAAe;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAgD;AAC5C,EAAA,uBACIG,IAAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACG,YAAA,EAAW,iBAAA;AAAA,MACX,IAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA;AAAA,MAChD,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EAAkB,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,wBACtCA,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,QAAA,EAAS,eAAY,MAAA,EAAO;AAAA;AAAA;AAAA,GACxD;AAER;AAEA,SAAS,kBAAA,CAAmB;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAiC;AAC7B,EAAA,uBACIG,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACG,aAAA,EAAY,MAAA;AAAA,MACZ,WAAA,EAAU,qBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA;AAAA,MACjE,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,QAAA,EAAS,eAAY,MAAA,EAAO,CAAA;AAAA,wBACtDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,YAAA,EAAU;AAAA;AAAA;AAAA,GACxC;AAER;AC3GA,SAAS,MAAA,CAAO;AAAA,EACX,GAAG;AACR,CAAA,EAAsD;AACjD,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,IAAA,EAAhB,EAAqB,WAAA,EAAU,QAAA,EAAU,GAAG,KAAA,EAAO,CAAA;AAChE;AAQA,SAAS,WAAA,CAAY;AAAA,EAChB,GAAG;AACR,CAAA,EAAuD;AAClD,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,KAAA,EAAhB,EAAsB,WAAA,EAAU,cAAA,EAAgB,GAAG,KAAA,EAAO,CAAA;AACvE;AAEA,SAAS,aAAA,CAAc;AAAA,EAClB,SAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,GAAG;AACR,CAAA,EAEG;AACE,EAAA,uBACKG,IAAAA;AAAA,IAAiB,eAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACI,WAAA,EAAU,gBAAA;AAAA,MACV,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,EAAA;AAAA,QACN,q9BAAA;AAAA,QACA;AAAA,OACL;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDH,GAAAA,CAAiB,eAAA,CAAA,IAAA,EAAhB,EAAqB,OAAA,EAAO,IAAA,EACxB,QAAA,kBAAAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAU,mBAAA,EAAoB,CAAA,EACpD;AAAA;AAAA;AAAA,GACL;AAEV;AAEA,SAAS,aAAA,CAAc;AAAA,EAClB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,cAAA;AAAA,EACX,KAAA,GAAQ,QAAA;AAAA,EACR,SAAA;AAAA,EACA,GAAG;AACR,CAAA,EAEG;AACE,EAAA,uBACKA,GAAAA,CAAiB,eAAA,CAAA,MAAA,EAAhB,EAAuB,SAAA,EAAW,SAAA,IAAa,QAC3C,QAAA,kBAAAG,IAAAA;AAAA,IAAiB,eAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACI,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACN,4mBAAA;AAAA,QACA,aAAa,QAAA,IACb,iIAAA;AAAA,QACA;AAAA,OACL;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAH,IAAC,oBAAA,EAAA,EAAqB,CAAA;AAAA,wBACtBA,GAAAA;AAAA,UAAiB,eAAA,CAAA,QAAA;AAAA,UAAhB;AAAA,YACI,SAAA,EAAW,EAAA;AAAA,cACN,KAAA;AAAA,cACA,aAAa,QAAA,IACb;AAAA,aACL;AAAA,YAEC;AAAA;AAAA,SACN;AAAA,wBACAA,IAAC,sBAAA,EAAA,EAAuB;AAAA;AAAA;AAAA,GAC7B,EACL,CAAA;AAEV;AAeA,SAAS,UAAA,CAAW;AAAA,EACf,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACR,CAAA,EAAsD;AACjD,EAAA,uBACKG,IAAAA;AAAA,IAAiB,eAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACI,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACN,4fAAA;AAAA,QACA;AAAA,OACL;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAH,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACI,WAAA,EAAU,uBAAA;AAAA,YACV,SAAA,EAAU,4DAAA;AAAA,YAEV,QAAA,kBAAAA,GAAAA,CAAiB,eAAA,CAAA,aAAA,EAAhB,EACI,QAAA,kBAAAA,IAACI,SAAAA,EAAA,EAAU,SAAA,EAAU,QAAA,EAAS,CAAA,EACnC;AAAA;AAAA,SACL;AAAA,wBACAJ,GAAAA,CAAiB,eAAA,CAAA,QAAA,EAAhB,EAA0B,QAAA,EAAS;AAAA;AAAA;AAAA,GACzC;AAEV;AAeA,SAAS,oBAAA,CAAqB;AAAA,EACzB,SAAA;AAAA,EACA,GAAG;AACR,CAAA,EAAgE;AAC3D,EAAA,uBACKA,GAAAA;AAAA,IAAiB,eAAA,CAAA,cAAA;AAAA,IAAhB;AAAA,MACI,WAAA,EAAU,yBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACN,sDAAA;AAAA,QACA;AAAA,OACL;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,GACvC;AAEV;AAEA,SAAS,sBAAA,CAAuB;AAAA,EAC3B,SAAA;AAAA,EACA,GAAG;AACR,CAAA,EAAkE;AAC7D,EAAA,uBACKA,GAAAA;AAAA,IAAiB,eAAA,CAAA,gBAAA;AAAA,IAAhB;AAAA,MACI,WAAA,EAAU,2BAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACN,sDAAA;AAAA,QACA;AAAA,OACL;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,GACzC;AAEV;ACjIA,IAAM,WAAA,GAAc,CAGlB,KAAA,KAoBK;AAEH,EAAA,MAAM;AAAA,IACF,MAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA,EAAO,OAAA;AAAA,IACP,UAAU,EAAC;AAAA,IACX,UAAA;AAAA,IACA,KAAA,EAAO,YAAA;AAAA,IACP,KAAA,EAAO,WAAA;AAAA,IACP,SAAA;AAAA,IACA,SAAA,GAAY,IAAA;AAAA,IACZ,UAAAK,SAAAA,GAAW,GAAA;AAAA,IACX,QAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAQ,UAAA,GAAa,QAAA;AAAA,IACrB,YAAY,cAAA,GAAiB,QAAA;AAAA,IAC7B;AAAA,GACJ,GAAI,KAAA;AAMJ,EAAA,MAAM,QAAA,GAAWC,OAAuB,IAAI,CAAA;AAC5C,EAAA,MAAM,WAAA,GAAcA,OAA8C,IAAI,CAAA;AAGtE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIT,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,SAAwB,IAAI,CAAA;AACtE,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,SAAS,KAAK,CAAA;AAC5D,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,IAAIA,QAAAA,iBAA0C,IAAI,KAAK,CAAA;AAGrF,EAAA,MAAM,mBAAmB,QAAA,CAAS,OAAA;AAGlC,EAAA,MAAM,WAAA,GAAcC,WAAAA,CAAY,CAAC,KAAA,KAAsC;AACnE,IAAA,OAAO,SAAA,CAAU,GAAA,CAAI,KAAK,CAAA,IAAM,YAAA;AAAA,EACpC,CAAA,EAAG,CAAC,SAAA,EAAW,YAAY,CAAC,CAAA;AAE5B,EAAA,MAAM,WAAA,GAAcA,WAAAA,CAAY,CAAC,KAAA,EAAwB,OAAA,KAA6C;AAClG,IAAA,YAAA,CAAa,CAAA,IAAA,KAAQ;AACjB,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,IAAM,YAAA;AACpC,MAAA,MAAM,WAAW,OAAO,OAAA,KAAY,UAAA,GAC7B,OAAA,CAAgD,OAAO,CAAA,GACxD,OAAA;AACN,MAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,IAAI,CAAA;AAC3B,MAAA,MAAA,CAAO,GAAA,CAAI,OAAO,QAAQ,CAAA;AAC1B,MAAA,OAAO,MAAA;AAAA,IACX,CAAC,CAAA;AAAA,EACL,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAGjB,EAAA,MAAM,UAAU,UAAA,CAA2B;AAAA,IACvC,MAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA,EAAAO,SAAAA;AAAA,IACA,MAAA,EAAQ,UAAA;AAAA,IACR,OAAA,EAAS;AAAA,MACL,KAAA,EAAO,aAAa,OAAA,IAAW,EAAA;AAAA,MAC/B,KAAA,EAAO,SAAS,EAAC;AAAA,MACjB,KAAA,EAAO,OAAA,CAAQ,MAAA,CAA0C,CAAC,KAAK,GAAA,KAAQ;AACnE,QAAA,IAAI,GAAA,CAAI,QAAA,IAAY,GAAA,CAAI,QAAA,CAAS,YAAY,CAAA,EAAG;AAC5C,UAAA,GAAA,CAAI,IAAA,CAAK,EAAE,IAAA,EAAM,GAAA,CAAI,QAAA,CAAS,MAAM,KAAA,EAAO,GAAA,CAAI,QAAA,CAAS,OAAA,EAAmB,CAAA;AAAA,QAC/E;AACA,QAAA,OAAO,GAAA;AAAA,MACX,CAAA,EAAG,EAAE,CAAA;AAAA,MACL,MAAA,EAAQ,OAAA,CAAQ,MAAA,CAAgC,CAAC,KAAK,CAAA,KAAM;AACxD,QAAA,IAAI,EAAE,YAAA,KAAiB,MAAA,MAAe,CAAA,CAAE,EAAE,IAAI,CAAA,CAAE,YAAA;AAChD,QAAA,OAAO,GAAA;AAAA,MACX,CAAA,EAAG,EAAE;AAAA;AACT,GACH,CAAA;AACD,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAO,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAO,YAAA,EAAc,GAAG,CAAA;AACpH,EAAA,MAAM,SAAA,GAAY,sBAAuC,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAC,IAAA,KAAS,IAAA,CAAK,EAAE,CAAC,CAAA;AAG7F,EAAA,MAAM,aAAA,GAAgB,UAAU,WAAA,CAAY,IAAA;AAC5C,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,MAAA,IAAU,UAAA,EAAY,UAAU,CAAA,GAAI,CAAA,CAAA;AAC5D,EAAA,MAAM,YAAA,GAAeJ,eAAAA,CAAM,OAAA,CAAQ,MAAM;AACrC,IAAA,MAAM,eAAA,GAAkB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,GAAG,CAAA;AACxC,IAAA,MAAM,eAAe,OAAA,CAAQ,KAAA;AAC7B,IAAA,IAAI,CAAC,eAAA,CAAgB,QAAA,CAAS,YAAY,CAAA,EAAG;AACzC,MAAA,OAAO,CAAC,GAAG,eAAA,EAAiB,YAAY,CAAA,CAAE,KAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AAAA,IAClE;AACA,IAAA,OAAO,eAAA;AAAA,EACX,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAGlB,EAAA,MAAM,UAAA,GAAaH,WAAAA,CAAY,CAAC,IAAA,KAAiB;AAC7C,IAAA,MAAM,WAAA,GAAc,QAAQ,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,IAAI,CAAA;AAC7D,IAAA,MAAM,SAAA,GAAY,aAAa,KAAA,KAAU,CAAA,GAAI,KAAK,WAAA,EAAa,KAAA,KAAU,KAAK,IAAA,GAAO,CAAA;AACrF,IAAA,OAAA,CAAQ,OAAA,CAAQ,OAAA,CAAQ,IAAA,EAAM,SAAS,CAAA;AAAA,EAC3C,GAAG,CAAC,OAAA,CAAQ,KAAA,EAAO,OAAA,CAAQ,OAAO,CAAC,CAAA;AAEnC,EAAA,MAAM,qBAAA,GAAwBA,WAAAA,CAAY,OAAO,SAAA,KAAsB;AACnE,IAAA,IAAI,CAAC,UAAA,EAAY,OAAA,GAAU,SAAS,KAAK,aAAA,EAAe;AACxD,IAAA,gBAAA,CAAiB,SAAS,CAAA;AAC1B,IAAA,kBAAA,CAAmB,KAAK,CAAA;AACxB,IAAA,IAAI;AACA,MAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,SAAS,SAAA,CAAU,UAAA,CAAW,IAAA,CAAK,EAAE,CAAC,CAAA;AAClF,MAAA,MAAM,SAAS,MAAM,UAAA,CAAW,QAAQ,SAAS,CAAA,CAAE,SAAS,aAAa,CAAA;AACzE,MAAA,IAAI,MAAA,CAAO,CAAC,CAAA,EAAG;AACX,QAAA,MAAM,IAAA,GAAO,OAAO,CAAC,CAAA;AACrB,QAAA,IAAI,IAAA,CAAK,WAAA,EAAa,SAAA,CAAU,WAAA,EAAY;AAC5C,QAAA,MAAM,OAAA,CAAQ,QAAQ,OAAA,EAAQ;AAAA,MAClC;AAAA,IACJ,SAAS,KAAA,EAAO;AACZ,MAAA,OAAA,CAAQ,KAAA,CAAM,4BAA4B,KAAK,CAAA;AAAA,IACnD,CAAA,SAAE;AACE,MAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,IACzB;AAAA,EACJ,CAAA,EAAG,CAAC,UAAA,EAAY,OAAA,EAAS,aAAA,EAAe,QAAQ,KAAA,EAAO,SAAA,EAAW,OAAA,CAAQ,OAAO,CAAC,CAAA;AAElF,EAAA,MAAM,kBAAA,GAAqBA,YAAY,MAAM;AACzC,IAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAA,KAAM;AACnB,MAAA,OAAA,CAAQ,OAAA,CAAQ,SAAA,CAAU,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,iBAAiB,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,KAAA,GAAQ,EAAA,CAAG,CAAA;AAAA,IACzF,CAAC,CAAA;AAAA,EACL,CAAA,EAAG,CAAC,OAAA,EAAS,OAAA,CAAQ,OAAO,CAAC,CAAA;AAE7B,EAAA,MAAM,aAAaA,WAAAA,CAAY,CAAC,SAAiB,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,IAAI,CAAA,EAAG,KAAA,IAAS,MAAM,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAG3H,EAAAS,UAAU,MAAM;AACZ,IAAA,IAAI,UAAA,EAAY;AACZ,MAAA,UAAA,CAAW,OAAA,GAAU;AAAA,QACjB,QAAA,EAAU,QAAQ,OAAA,CAAQ,QAAA;AAAA,QAC1B,WAAA,EAAa,QAAQ,OAAA,CAAQ,OAAA;AAAA,QAC7B,UAAA,EAAY,QAAQ,OAAA,CAAQ,UAAA;AAAA,QAC5B,gBAAA,EAAkB,MAAM,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,SAAA,CAAU,UAAA,CAAW,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,QACpF,cAAA,EAAgB,MAAM,SAAA,CAAU,WAAA;AAAY,OAChD;AAAA,IACJ;AAAA,EACJ,CAAA,EAAG,CAAC,UAAA,EAAY,OAAA,CAAQ,SAAS,OAAA,CAAQ,KAAA,EAAO,SAAS,CAAC,CAAA;AAE1D,EAAAA,UAAU,MAAM;AACZ,IAAA,IAAI,CAAC,QAAA,CAAS,OAAA,IAAW,CAAC,eAAA,EAAiB;AAC3C,IAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,MACjB,CAAC,YAAY,OAAA,CAAQ,CAAC,KAAK,YAAA,CAAa,OAAA,CAAQ,CAAC,CAAA,CAAE,cAAc,CAAA;AAAA,MACjE,EAAE,WAAW,GAAA;AAAI,KACrB;AACA,IAAA,MAAM,aAAa,QAAA,CAAS,OAAA;AAC5B,IAAA,QAAA,CAAS,QAAQ,UAAU,CAAA;AAC3B,IAAA,OAAO,MAAM;AAAE,MAAA,IAAI,UAAA,EAAY,QAAA,CAAS,SAAA,CAAU,UAAU,CAAA;AAAA,IAAG,CAAA;AAAA,EACnE,CAAA,EAAG,CAAC,eAAe,CAAC,CAAA;AAEpB,EAAAA,UAAU,MAAM;AACZ,IAAA,IAAI,YAAY,OAAA,EAAS;AACrB,MAAA,aAAA,CAAc,YAAY,OAAO,CAAA;AACjC,MAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAAA,IAC1B;AACA,IAAA,IAAI,mBAAmB,SAAA,EAAW;AAC9B,MAAA,WAAA,CAAY,OAAA,GAAU,WAAA,CAAY,OAAA,CAAQ,OAAA,CAAQ,SAAS,eAAe,CAAA;AAAA,IAC9E;AACA,IAAA,OAAO,MAAM;AAAE,MAAA,IAAI,WAAA,CAAY,OAAA,EAAS,aAAA,CAAc,WAAA,CAAY,OAAO,CAAA;AAAA,IAAG,CAAA;AAAA,EAChF,GAAG,CAAC,eAAA,EAAiB,SAAA,EAAW,OAAA,CAAQ,OAAO,CAAC,CAAA;AAEhD,EAAAA,UAAU,MAAM;AAAE,IAAA,SAAA,CAAU,WAAA,EAAY;AAAA,EAAG,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAA,CAAM,MAAM,CAAC,CAAA;AAGpE,EAAA,uBACIJ,KAAC,KAAA,EAAA,EAAI,GAAA,EAAK,UAAU,SAAA,EAAW,CAAA,UAAA,EAAa,SAAA,IAAa,EAAE,CAAA,CAAA,EAEvD,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACX,QAAA,EAAA;AAAA,sBAAAH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACV,QAAA,EAAA,OAAA,CAAQ,MAAA,GAAS,CAAA,oBACdG,IAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,YAAA,EAAc,cAAc,eAAA,EACvC,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACnB,QAAA,kBAAAG,KAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAC3B,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,eAAA,EAAgB,CAAA;AAAA,UAAE;AAAA,SAAA,EAExC,CAAA,EACJ,CAAA;AAAA,wBACAG,KAAC,cAAA,EAAA,EAAe,KAAA,EAAM,SAAQ,SAAA,EAAU,MAAA,EAAO,WAAW,gBAAA,EACtD,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACV,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,qBACVG,IAAAA,CAAC,KAAA,EAAA,EAAe,SAAA,EAAU,cAAA,EACtB,QAAA,EAAA;AAAA,4BAAAH,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,qBAAA,EAAuB,YAAE,KAAA,EAAM,CAAA;AAAA,YAC/C,CAAA,CAAE,IAAA,KAAS,MAAA,oBACRA,GAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACG,IAAA,EAAK,MAAA;AAAA,gBACL,SAAA,EAAU,oGAAA;AAAA,gBACV,aAAa,CAAA,CAAE,WAAA;AAAA,gBACf,KAAA,EAAQ,OAAA,CAAQ,MAAA,CAAO,CAAA,CAAE,EAAE,CAAA,IAAgB,EAAA;AAAA,gBAC3C,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,OAAA,CAAQ,UAAU,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,MAAA,CAAO,KAAK;AAAA;AAAA,aACnE;AAAA,YAEH,CAAA,CAAE,IAAA,KAAS,QAAA,oBACRG,IAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACG,OAAO,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,CAAE,EAAE,KAAK,SAAS,CAAA;AAAA,gBAC/C,aAAA,EAAe,CAAC,CAAA,KAAM,OAAA,CAAQ,OAAA,CAAQ,SAAA,CAAU,CAAA,CAAE,EAAA,EAAI,CAAA,KAAM,SAAA,GAAY,EAAA,GAAK,CAAC,CAAA;AAAA,gBAE9E,QAAA,EAAA;AAAA,kCAAAH,GAAAA,CAAC,aAAA,EAAA,EAAc,QAAA,kBAAAA,GAAAA,CAAC,eAAY,CAAA,EAAE,CAAA;AAAA,kCAC9BG,IAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAW,gBAAA,EACtB,QAAA,EAAA;AAAA,oCAAAH,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAM,SAAA,EAAU,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,oBAC9B,CAAA,CAAE,OAAA,EAAS,GAAA,CAAI,CAAC,sBACbA,GAAAA,CAAC,UAAA,EAAA,EAAsB,KAAA,EAAO,EAAE,EAAA,EAAK,QAAA,EAAA,CAAA,CAAE,KAAA,EAAA,EAAtB,CAAA,CAAE,EAA0B,CAChD;AAAA,mBAAA,EACL;AAAA;AAAA;AAAA,aACJ;AAAA,YAEH,EAAE,IAAA,KAAS,SAAA,oBACRG,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mCAAA,EACX,QAAA,EAAA;AAAA,8BAAAH,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA,CAAA,CAAE,eAAe,QAAA,EAAS,CAAA;AAAA,8BAC3EA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACG,SAAS,OAAA,CAAQ,OAAA,CAAQ,MAAA,CAAO,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,kBACrC,eAAA,EAAiB,CAAC,CAAA,KAAM,OAAA,CAAQ,QAAQ,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC;AAAA;AAAA;AAC7D,aAAA,EACJ;AAAA,WAAA,EAAA,EAhCE,CAAA,CAAE,EAkCZ,CACH,CAAA,EACL,CAAA;AAAA,0BACAG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACX,QAAA,EAAA;AAAA,4BAAAH,GAAAA,CAAC,UAAO,OAAA,EAAQ,SAAA,EAAU,MAAK,IAAA,EAAK,OAAA,EAAS,oBAAoB,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,4BACtEA,GAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,IAAA,EAAK,SAAS,MAAM,eAAA,CAAgB,KAAK,CAAA,EAAG,QAAA,EAAA,MAAA,EAAI;AAAA,WAAA,EACjE;AAAA,SAAA,EACJ;AAAA,OAAA,EACJ,CAAA,EAER,CAAA;AAAA,sBAEAG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACX,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oCAAA,EACX,QAAA,EAAA;AAAA,UAAA,OAAA,CAAQ,KAAA,CAAM,MAAA;AAAA,UAAO,MAAA;AAAA,UAAK,OAAA,CAAQ;AAAA,SAAA,EACvC,CAAA;AAAA,wBACAA,KAAC,MAAA,EAAA,EAAO,KAAA,EAAO,OAAO,OAAA,CAAQ,KAAK,GAAG,aAAA,EAAe,CAAC,MAAM,OAAA,CAAQ,OAAA,CAAQ,SAAS,MAAA,CAAO,CAAC,CAAC,CAAA,EAAG,QAAA,EAAU,OAAA,CAAQ,KAAA,CAAM,SAAA,EACrH,QAAA,EAAA;AAAA,0BAAAH,IAAC,aAAA,EAAA,EAAc,SAAA,EAAU,QAAO,QAAA,kBAAAA,GAAAA,CAAC,eAAY,CAAA,EAAE,CAAA;AAAA,0BAC/CA,GAAAA,CAAC,aAAA,EAAA,EAAc,WAAW,gBAAA,EACrB,QAAA,EAAA,YAAA,CAAa,IAAI,CAAC,CAAA,qBACfA,GAAAA,CAAC,UAAA,EAAA,EAAmB,OAAO,MAAA,CAAO,CAAC,GAAI,QAAA,EAAA,CAAA,EAAA,EAAtB,CAAwB,CAC5C,CAAA,EACL;AAAA,SAAA,EACJ;AAAA,OAAA,EACJ;AAAA,KAAA,EACJ,CAAA;AAAA,oBAGAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,+DAA+D,QAAA,KAAa,SAAA,GAAY,YAAA,GAAe,QAAA,GAAW,EAAA,GAAK,YAAY,CAAA,CAAA,EAC/I,QAAA,kBAAAG,KAAC,KAAA,EAAA,EACG,QAAA,EAAA;AAAA,sBAAAH,GAAAA,CAAC,WAAA,EAAA,EACG,QAAA,kBAAAG,IAAAA,CAAC,QAAA,EAAA,EACI,QAAA,EAAA;AAAA,QAAA,UAAA,EAAY,OAAA,oBACTH,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,QACjB,QAAA,kBAAAG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACX,QAAA,EAAA;AAAA,0BAAAH,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACG,OAAA,EAAS,SAAA,CAAU,eAAA,GAAkB,eAAA,GAAkB,SAAA,CAAU,aAAA;AAAA,cACjE,eAAA,EAAiB,MAAM,SAAA,CAAU,SAAA;AAAU;AAAA,WAC/C;AAAA,UACC,UAAA,CAAW,OAAA,IAAW,MAAA,CAAO,IAAA,CAAK,WAAW,OAAO,CAAA,CAAE,MAAA,GAAS,CAAA,oBAC5DG,IAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,cAAc,kBAAA,EAC/C,QAAA,EAAA;AAAA,4BAAAH,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EACxB,QAAA,kBAAAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACG,OAAA,EAAQ,OAAA;AAAA,gBACR,IAAA,EAAK,MAAA;AAAA,gBACL,SAAA,EAAU,QAAA;AAAA,gBACV,QAAA,EAAU,aAAA,KAAkB,CAAA,IAAK,CAAC,CAAC,aAAA;AAAA,gBAElC,QAAA,EAAA,aAAA,mBAAgBA,GAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,qBAAA,EAAsB,CAAA,mBAAKA,GAAAA,CAACQ,cAAAA,EAAA,EAAe,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,aACtG,EACJ,CAAA;AAAA,4BACAR,GAAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAM,OAAA,EAAQ,WAAW,gBAAA,EACzC,QAAA,EAAA,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,KAAKS,OAAM,CAAA,qBACjDT,GAAAA,CAAC,oBAA2B,QAAA,EAAU,CAAC,CAAC,aAAA,EAAe,UAAU,MAAM,qBAAA,CAAsB,GAAG,CAAA,EAC3F,4BAAkB,GAAA,GAAM,eAAA,GAAaS,QAAO,IAAA,EAAA,EAD1B,GAEvB,CACH,CAAA,EACL;AAAA,WAAA,EACJ;AAAA,SAAA,EAER,CAAA,EACJ,CAAA;AAAA,QAEH,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,EAAK,GAAA,qBACfT,GAAAA,CAACC,eAAAA,CAAM,QAAA,EAAN,EACI,QAAA,EAAA,GAAA,CAAI,QAAA,mBACDD,IAAC,SAAA,EAAA,EAAW,GAAIC,eAAAA,CAAM,cAAA,CAAe,GAAA,CAAI,IAAI,CAAA,GAAK,GAAA,CAAI,IAAA,CAAK,KAAA,GAAmB,EAAC,EAC3E,QAAA,kBAAAE,IAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACG,OAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAU,OAAA;AAAA,YACV,OAAA,EAAS,MAAM,UAAA,CAAW,GAAA,CAAI,SAAU,IAAI,CAAA;AAAA,YAE3C,QAAA,EAAA;AAAA,cAAAF,eAAAA,CAAM,eAAe,GAAA,CAAI,IAAI,IAAK,GAAA,CAAI,IAAA,CAA4D,KAAA,CAAM,QAAA,GAAW,GAAA,CAAI,IAAA;AAAA,cACvH,UAAA,CAAW,GAAA,CAAI,QAAA,CAAU,IAAI,CAAA,KAAM,qBAAKD,GAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,cACzE,UAAA,CAAW,GAAA,CAAI,QAAA,CAAU,IAAI,CAAA,KAAM,sBAAMA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA;AAAA,SACjF,EACJ,CAAA,GAEA,GAAA,CAAI,IAAA,EAAA,EAfS,GAiBrB,CACH;AAAA,OAAA,EACL,CAAA,EACJ,CAAA;AAAA,sBACAA,GAAAA,CAAC,SAAA,EAAA,EACI,QAAA,EAAA,OAAA,CAAQ,MAAM,SAAA,mBACXA,GAAAA,CAAC,QAAA,EAAA,EACG,0BAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,OAAA,EAAkB,SAAA,EAAU,oBACnC,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,6BAAA,EAA8B,CAAA,EACrD,CAAA,EACJ,CAAA,GACA,QAAQ,KAAA,CAAM,KAAA,mBACdA,GAAAA,CAAC,YACG,QAAA,kBAAAG,IAAAA,CAAC,SAAA,EAAA,EAAU,OAAA,EAAkB,WAAU,+BAAA,EAAgC,QAAA,EAAA;AAAA,QAAA,SAAA;AAAA,QAC3D,OAAA,CAAQ,MAAM,KAAA,CAAM;AAAA,OAAA,EAChC,CAAA,EACJ,IACA,OAAA,CAAQ,KAAA,CAAM,WAAW,CAAA,mBACzBH,GAAAA,CAAC,QAAA,EAAA,EACG,QAAA,kBAAAA,GAAAA,CAAC,aAAU,OAAA,EAAkB,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,mBAAA,EAEhF,CAAA,EACJ,CAAA,GAEA,QAAQ,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,GAAA,KAAQ;AAC7B,QAAA,MAAM,KAAA,GAAQ,KAAK,EAAA,IAAM,GAAA;AACzB,QAAA,uBACIG,KAAC,QAAA,EAAA,EACI,QAAA,EAAA;AAAA,UAAA,UAAA,EAAY,OAAA,oBACTH,GAAAA,CAAC,SAAA,EAAA,EACG,QAAA,kBAAAA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACG,OAAA,EAAS,SAAA,CAAU,UAAA,CAAW,IAAA,CAAK,EAAE,CAAA;AAAA,cACrC,eAAA,EAAiB,MAAM,SAAA,CAAU,MAAA,CAAO,KAAK,EAAE;AAAA;AAAA,WACnD,EACJ,CAAA;AAAA,UAEH,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,EAAK,MAAA,qBACfA,GAAAA,CAACC,eAAAA,CAAM,QAAA,EAAN,EACI,QAAA,EAAA,GAAA,CAAI,IAAA,CAAK;AAAA,YACN,IAAA;AAAA,YACA,KAAA,EAAO,GAAA;AAAA,YACP,KAAA,EAAO,YAAY,KAAK,CAAA;AAAA,YACxB,QAAA,EAAU,CAAC,OAAA,KAAY,WAAA,CAAY,OAAO,OAAO,CAAA;AAAA,YACjD,SAAS,CAAC,WAAA,KAAgB,QAAQ,OAAA,CAAQ,SAAA,CAAU,KAAK,WAAW,CAAA;AAAA,YACpE,UAAA,EAAY,MAAM,OAAA,CAAQ,OAAA,CAAQ,aAAa,GAAG;AAAA,WACrD,CAAA,EAAA,EARgB,MASrB,CACH;AAAA,SAAA,EAAA,EApBU,KAqBf,CAAA;AAAA,MAER,CAAC,CAAA,EAET;AAAA,KAAA,EACJ,CAAA,EACJ,CAAA;AAAA,oBAGAE,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACX,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACX,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAgC,QAAA,EAAA;AAAA,UAAA,OAAA;AAAA,UACnC,OAAA,CAAQ,IAAA;AAAA,UAAK,MAAA;AAAA,UAAK,UAAA,CAAW;AAAA,SAAA,EACvC,CAAA;AAAA,QACC,UAAA,EAAY,WAAW,aAAA,GAAgB,CAAA,oBACpCA,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,yBAAA,EACR,QAAA,EAAA;AAAA,UAAA,aAAA;AAAA,UAAc;AAAA,SAAA,EACnB;AAAA,OAAA,EAER,CAAA;AAAA,sBACAH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,sBACxBA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACV,QAAA,EAAA,cAAA,KAAmB,QAAA,mBAChBG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACX,QAAA,EAAA;AAAA,wBAAAH,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACG,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,QAAA,EAAU,CAAC,UAAA,CAAW,WAAA,IAAe,QAAQ,KAAA,CAAM,SAAA;AAAA,YACnD,SAAS,MAAM,OAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,YAEvD,QAAA,kBAAAA,GAAAA,CAACU,WAAAA,EAAA,EAAY,WAAU,QAAA,EAAS;AAAA;AAAA,SACpC;AAAA,wBACAV,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACG,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,QAAA,EAAU,CAAC,UAAA,CAAW,WAAA,IAAe,QAAQ,KAAA,CAAM,SAAA;AAAA,YACnD,SAAS,MAAM,OAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,YAEvD,QAAA,kBAAAA,GAAAA,CAACW,YAAAA,EAAA,EAAa,WAAU,QAAA,EAAS;AAAA;AAAA;AACrC,OAAA,EACJ,CAAA,mBAEAX,GAAAA,CAAC,UAAA,EAAA,EAAW,WAAU,QAAA,EAClB,QAAA,kBAAAG,KAAC,iBAAA,EAAA,EACG,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,iBAAA,EACtB,QAAA,kBAAAA,GAAAA;AAAA,UAAC,kBAAA;AAAA,UAAA;AAAA,YACG,QAAA,EAAU,CAAC,UAAA,CAAW,WAAA,IAAe,QAAQ,KAAA,CAAM,SAAA;AAAA,YACnD,SAAS,MAAM,OAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAC;AAAA;AAAA,SAC3D,EACJ,CAAA;AAAA,wBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,aACtB,QAAA,kBAAAA,GAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACG,QAAA,EAAU,CAAC,UAAA,CAAW,WAAA,IAAe,QAAQ,KAAA,CAAM,SAAA;AAAA,YACnD,SAAS,MAAM,OAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,YAEvD,QAAA,kBAAAA,GAAAA,CAACU,WAAAA,EAAA,EAAY,WAAU,QAAA,EAAS;AAAA;AAAA,SACpC,EACJ,CAAA;AAAA,QACC,WAAW,KAAA,CAAM,GAAA,CAAI,CAAC,OAAA,EAAS,wBAC5BV,GAAAA,CAAC,cAAA,EAAA,EAAyB,SAAA,EAAU,mBAC/B,QAAA,EAAA,OAAA,KAAY,UAAA,mBACTA,GAAAA,CAAC,kBAAA,EAAA,EAAmB,oBAEpBA,GAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACG,QAAA,EAAU,YAAY,OAAA,CAAQ,IAAA;AAAA,YAC9B,QAAA,EAAU,QAAQ,KAAA,CAAM,SAAA;AAAA,YACxB,OAAA,EAAS,MAAM,OAAA,CAAQ,OAAA,CAAQ,QAAQ,OAAiB,CAAA;AAAA,YAEvD,QAAA,EAAA;AAAA;AAAA,SACL,EAAA,EAVa,GAYrB,CACH,CAAA;AAAA,wBACDA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,WAAA,EACtB,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iDAAA,EACX,QAAA,EAAA,OAAA,CAAQ,IAAA,EACb,CAAA,EACJ,CAAA;AAAA,wBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,mBACtB,QAAA,kBAAAA,GAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACG,QAAA,EAAU,CAAC,UAAA,CAAW,WAAA,IAAe,QAAQ,KAAA,CAAM,SAAA;AAAA,YACnD,SAAS,MAAM,OAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAC;AAAA;AAAA,SAC3D,EACJ,CAAA;AAAA,wBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,aACtB,QAAA,kBAAAA,GAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACG,QAAA,EAAU,CAAC,UAAA,CAAW,WAAA,IAAe,QAAQ,KAAA,CAAM,SAAA;AAAA,YACnD,SAAS,MAAM,OAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,YAEvD,QAAA,kBAAAA,GAAAA,CAACW,YAAAA,EAAA,EAAa,WAAU,QAAA,EAAS;AAAA;AAAA,SACrC,EACJ;AAAA,OAAA,EACJ,GACJ,CAAA,EAER;AAAA,KAAA,EACJ;AAAA,GAAA,EACJ,CAAA;AAER,CAAA;AAE4B,MAAA,CAAO,MAAA,CAAO,WAAA,EAAa;AAAA,EACnD,IAAA,EAAM,SAAA;AAAA,EACN,IAAA,EAAM;AACV,CAAC;ACneD,IAAM,YAAA,GAAe,CAEnB,KAAA,EAcE,GAAA,KAAoF;AAEpF,EAAA,MAAM;AAAA,IACF,MAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAU,EAAC;AAAA,IACX,KAAA,EAAO,WAAA;AAAA,IACP,cAAc,EAAC;AAAA,IACf,SAAA;AAAA,IACA,SAAA,GAAY,IAAA;AAAA,IACZ,UAAAN,SAAAA,GAAW,GAAA;AAAA,IACX,eAAA;AAAA,IACA,QAAQ,UAAA,GAAa,QAAA;AAAA,IACrB,MAAA,GAAS,KAAA;AAAA,IACT,YAAY,cAAA,GAAiB,QAAA;AAAA,IAC7B;AAAA,GACJ,GAAI,KAAA;AAMJ,EAAA,MAAM,YAAA,GAAeC,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,WAAA,GAAcA,OAA8C,IAAI,CAAA;AAGtE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIT,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAS,KAAK,CAAA;AAGtD,EAAA,MAAM,mBAAmB,YAAA,CAAa,OAAA;AAGtC,EAAA,MAAM,UAAU,UAAA,CAA2B;AAAA,IACvC,MAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA,EAAAQ,SAAAA;AAAA,IACA,MAAA,EAAQ,UAAA;AAAA,IACR,OAAA,EAAS;AAAA,MACL,KAAA,EAAO,aAAa,OAAA,IAAW,EAAA;AAAA,MAC/B,KAAA,EAAO,SAAS,EAAC;AAAA,MACjB,KAAA,EAAO,WAAA;AAAA,MACP,MAAA,EAAQ,OAAA,CAAQ,MAAA,CAAgC,CAAC,KAAK,CAAA,KAAM;AACxD,QAAA,IAAI,EAAE,YAAA,KAAiB,MAAA,MAAe,CAAA,CAAE,EAAE,IAAI,CAAA,CAAE,YAAA;AAChD,QAAA,OAAO,GAAA;AAAA,MACX,CAAA,EAAG,EAAE;AAAA;AACT,GACH,CAAA;AACD,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAO,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAO,YAAA,EAAc,GAAG,CAAA;AACpH,EAAA,MAAM,YAAA,GAAeJ,eAAAA,CAAM,OAAA,CAAQ,MAAM;AACrC,IAAA,MAAM,eAAA,GAAkB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,GAAG,CAAA;AACxC,IAAA,MAAM,eAAe,OAAA,CAAQ,KAAA;AAC7B,IAAA,IAAI,CAAC,eAAA,CAAgB,QAAA,CAAS,YAAY,CAAA,EAAG;AACzC,MAAA,OAAO,CAAC,GAAG,eAAA,EAAiB,YAAY,CAAA,CAAE,KAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AAAA,IAClE;AACA,IAAA,OAAO,eAAA;AAAA,EACX,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAGlB,EAAAA,gBAAM,mBAAA,CAAoB,GAAA,EAAK,MAAM,OAAA,EAAmD,CAAC,OAAO,CAAC,CAAA;AAGjG,EAAA,MAAM,kBAAA,GAAqBH,YAAY,MAAM;AACzC,IAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAA,KAAM;AACnB,MAAA,OAAA,CAAQ,OAAA,CAAQ,SAAA,CAAU,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,iBAAiB,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,KAAA,GAAQ,EAAA,CAAG,CAAA;AAAA,IACzF,CAAC,CAAA;AAAA,EACL,CAAA,EAAG,CAAC,OAAA,EAAS,OAAA,CAAQ,OAAO,CAAC,CAAA;AAG7B,EAAAS,UAAU,MAAM;AACZ,IAAA,IAAI,CAAC,YAAA,CAAa,OAAA,IAAW,CAAC,eAAA,EAAiB;AAC/C,IAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,MACjB,CAAC,YAAY,OAAA,CAAQ,CAAC,KAAK,YAAA,CAAa,OAAA,CAAQ,CAAC,CAAA,CAAE,cAAc,CAAA;AAAA,MACjE,EAAE,WAAW,GAAA;AAAI,KACrB;AACA,IAAA,MAAM,aAAa,YAAA,CAAa,OAAA;AAChC,IAAA,QAAA,CAAS,QAAQ,UAAU,CAAA;AAC3B,IAAA,OAAO,MAAM;AAAE,MAAA,IAAI,UAAA,EAAY,QAAA,CAAS,SAAA,CAAU,UAAU,CAAA;AAAA,IAAG,CAAA;AAAA,EACnE,CAAA,EAAG,CAAC,eAAe,CAAC,CAAA;AAEpB,EAAAA,UAAU,MAAM;AACZ,IAAA,IAAI,YAAY,OAAA,EAAS;AACrB,MAAA,aAAA,CAAc,YAAY,OAAO,CAAA;AACjC,MAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAAA,IAC1B;AACA,IAAA,IAAI,mBAAmB,SAAA,EAAW;AAC9B,MAAA,WAAA,CAAY,OAAA,GAAU,WAAA,CAAY,OAAA,CAAQ,OAAA,CAAQ,SAAS,eAAe,CAAA;AAAA,IAC9E;AACA,IAAA,OAAO,MAAM;AAAE,MAAA,IAAI,WAAA,CAAY,OAAA,EAAS,aAAA,CAAc,WAAA,CAAY,OAAO,CAAA;AAAA,IAAG,CAAA;AAAA,EAChF,GAAG,CAAC,eAAA,EAAiB,SAAA,EAAW,OAAA,CAAQ,OAAO,CAAC,CAAA;AAGhD,EAAA,uBACIJ,KAAC,KAAA,EAAA,EAAI,GAAA,EAAK,cAAc,SAAA,EAAW,CAAA,UAAA,EAAa,SAAA,IAAa,EAAE,CAAA,CAAA,EAE3D,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACX,QAAA,EAAA;AAAA,sBAAAH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACV,QAAA,EAAA,OAAA,CAAQ,MAAA,GAAS,CAAA,oBACdG,IAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,YAAA,EAAc,cAAc,eAAA,EACvC,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACnB,QAAA,kBAAAG,KAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAC3B,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAACY,MAAAA,EAAA,EAAO,SAAA,EAAU,eAAA,EAAgB,CAAA;AAAA,UAAE;AAAA,SAAA,EAExC,CAAA,EACJ,CAAA;AAAA,wBACAT,KAAC,cAAA,EAAA,EAAe,KAAA,EAAM,SAAQ,SAAA,EAAU,MAAA,EAAO,WAAW,gBAAA,EACtD,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACV,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,qBACVG,IAAAA,CAAC,KAAA,EAAA,EAAe,SAAA,EAAU,cAAA,EACtB,QAAA,EAAA;AAAA,4BAAAH,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,qBAAA,EAAuB,YAAE,KAAA,EAAM,CAAA;AAAA,YAC/C,CAAA,CAAE,IAAA,KAAS,MAAA,oBACRA,GAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACG,IAAA,EAAK,MAAA;AAAA,gBACL,SAAA,EAAU,oGAAA;AAAA,gBACV,aAAa,CAAA,CAAE,WAAA;AAAA,gBACf,KAAA,EAAQ,OAAA,CAAQ,MAAA,CAAO,CAAA,CAAE,EAAE,CAAA,IAAgB,EAAA;AAAA,gBAC3C,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,OAAA,CAAQ,UAAU,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,MAAA,CAAO,KAAK;AAAA;AAAA,aACnE;AAAA,YAEH,CAAA,CAAE,IAAA,KAAS,QAAA,oBACRG,IAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACG,OAAO,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,CAAE,EAAE,KAAK,SAAS,CAAA;AAAA,gBAC/C,aAAA,EAAe,CAAC,CAAA,KAAM,OAAA,CAAQ,OAAA,CAAQ,SAAA,CAAU,CAAA,CAAE,EAAA,EAAI,CAAA,KAAM,SAAA,GAAY,EAAA,GAAK,CAAC,CAAA;AAAA,gBAE9E,QAAA,EAAA;AAAA,kCAAAH,GAAAA,CAAC,aAAA,EAAA,EAAc,QAAA,kBAAAA,GAAAA,CAAC,eAAY,CAAA,EAAE,CAAA;AAAA,kCAC9BG,IAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAW,gBAAA,EACtB,QAAA,EAAA;AAAA,oCAAAH,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAM,SAAA,EAAU,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,oBAC9B,CAAA,CAAE,OAAA,EAAS,GAAA,CAAI,CAAC,sBACbA,GAAAA,CAAC,UAAA,EAAA,EAAsB,KAAA,EAAO,EAAE,EAAA,EAAK,QAAA,EAAA,CAAA,CAAE,KAAA,EAAA,EAAtB,CAAA,CAAE,EAA0B,CAChD;AAAA,mBAAA,EACL;AAAA;AAAA;AAAA,aACJ;AAAA,YAEH,EAAE,IAAA,KAAS,SAAA,oBACRG,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mCAAA,EACX,QAAA,EAAA;AAAA,8BAAAH,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA,CAAA,CAAE,eAAe,QAAA,EAAS,CAAA;AAAA,8BAC3EA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACG,SAAS,OAAA,CAAQ,OAAA,CAAQ,MAAA,CAAO,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,kBACrC,eAAA,EAAiB,CAAC,CAAA,KAAM,OAAA,CAAQ,QAAQ,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC;AAAA;AAAA;AAC7D,aAAA,EACJ;AAAA,WAAA,EAAA,EAhCE,CAAA,CAAE,EAkCZ,CACH,CAAA,EACL,CAAA;AAAA,0BACAG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACX,QAAA,EAAA;AAAA,4BAAAH,GAAAA,CAAC,UAAO,OAAA,EAAQ,SAAA,EAAU,MAAK,IAAA,EAAK,OAAA,EAAS,oBAAoB,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,4BACtEA,GAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,IAAA,EAAK,SAAS,MAAM,eAAA,CAAgB,KAAK,CAAA,EAAG,QAAA,EAAA,MAAA,EAAI;AAAA,WAAA,EACjE;AAAA,SAAA,EACJ;AAAA,OAAA,EACJ,CAAA,EAER,CAAA;AAAA,sBAEAG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACX,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oCAAA,EACX,QAAA,EAAA;AAAA,UAAA,OAAA,CAAQ,KAAA,CAAM,MAAA;AAAA,UAAO,MAAA;AAAA,UAAK,OAAA,CAAQ;AAAA,SAAA,EACvC,CAAA;AAAA,wBACAA,KAAC,MAAA,EAAA,EAAO,KAAA,EAAO,OAAO,OAAA,CAAQ,KAAK,GAAG,aAAA,EAAe,CAAC,MAAM,OAAA,CAAQ,OAAA,CAAQ,SAAS,MAAA,CAAO,CAAC,CAAC,CAAA,EAAG,QAAA,EAAU,OAAA,CAAQ,KAAA,CAAM,SAAA,EACrH,QAAA,EAAA;AAAA,0BAAAH,IAAC,aAAA,EAAA,EAAc,SAAA,EAAU,QAAO,QAAA,kBAAAA,GAAAA,CAAC,eAAY,CAAA,EAAE,CAAA;AAAA,0BAC/CA,GAAAA,CAAC,aAAA,EAAA,EAAc,WAAW,gBAAA,EACrB,QAAA,EAAA,YAAA,CAAa,IAAI,CAAC,CAAA,qBACfA,GAAAA,CAAC,UAAA,EAAA,EAAmB,OAAO,MAAA,CAAO,CAAC,GAAI,QAAA,EAAA,CAAA,EAAA,EAAtB,CAAwB,CAC5C,CAAA,EACL;AAAA,SAAA,EACJ;AAAA,OAAA,EACJ;AAAA,KAAA,EACJ,CAAA;AAAA,IAGC,SACG,QAAA,CAAS,OAAO,CAAA,mBAEhBA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACV,QAAA,EAAA,OAAA,CAAQ,MAAM,SAAA,mBACXA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCACX,QAAA,kBAAAA,GAAAA,CAACa,OAAAA,EAAA,EAAQ,WAAU,2CAAA,EAA4C,CAAA,EACnE,CAAA,GACA,OAAA,CAAQ,MAAM,MAAA,KAAW,CAAA,mBACzBb,GAAAA,CAAC,SAAI,SAAA,EAAU,6DAAA,EAA8D,+BAE7E,CAAA,GAEA,QAAA,CAAS,OAAO,CAAA,EAExB,CAAA;AAAA,oBAIJG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACX,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAgC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QACnC,OAAA,CAAQ,IAAA;AAAA,QAAK,MAAA;AAAA,QAAK,UAAA,CAAW;AAAA,OAAA,EACvC,CAAA;AAAA,MACC,mBAAmB,QAAA,mBAChBA,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACX,QAAA,EAAA;AAAA,wBAAAH,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACG,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,QAAA,EAAU,CAAC,UAAA,CAAW,WAAA,IAAe,QAAQ,KAAA,CAAM,SAAA;AAAA,YACnD,SAAS,MAAM,OAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,YAEvD,QAAA,kBAAAA,GAAAA,CAACU,WAAAA,EAAA,EAAY,WAAU,QAAA,EAAS;AAAA;AAAA,SACpC;AAAA,wBACAV,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACG,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,QAAA,EAAU,CAAC,UAAA,CAAW,WAAA,IAAe,QAAQ,KAAA,CAAM,SAAA;AAAA,YACnD,SAAS,MAAM,OAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,YAEvD,QAAA,kBAAAA,GAAAA,CAACW,YAAAA,EAAA,EAAa,WAAU,QAAA,EAAS;AAAA;AAAA;AACrC,OAAA,EACJ,CAAA,mBAEAX,GAAAA,CAAC,UAAA,EAAA,EAAW,WAAU,aAAA,EAClB,QAAA,kBAAAG,KAAC,iBAAA,EAAA,EACG,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,iBAAA,EACtB,QAAA,kBAAAA,GAAAA;AAAA,UAAC,kBAAA;AAAA,UAAA;AAAA,YACG,QAAA,EAAU,CAAC,UAAA,CAAW,WAAA,IAAe,QAAQ,KAAA,CAAM,SAAA;AAAA,YACnD,SAAS,MAAM,OAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAC;AAAA;AAAA,SAC3D,EACJ,CAAA;AAAA,wBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,aACtB,QAAA,kBAAAA,GAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACG,QAAA,EAAU,CAAC,UAAA,CAAW,WAAA,IAAe,QAAQ,KAAA,CAAM,SAAA;AAAA,YACnD,SAAS,MAAM,OAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,YAEvD,QAAA,kBAAAA,GAAAA,CAACU,WAAAA,EAAA,EAAY,WAAU,QAAA,EAAS;AAAA;AAAA,SACpC,EACJ,CAAA;AAAA,QACC,WAAW,KAAA,CAAM,GAAA,CAAI,CAAC,OAAA,EAAS,wBAC5BV,GAAAA,CAAC,cAAA,EAAA,EAAyB,SAAA,EAAU,mBAC/B,QAAA,EAAA,OAAA,KAAY,UAAA,mBACTA,GAAAA,CAAC,kBAAA,EAAA,EAAmB,oBAEpBA,GAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACG,QAAA,EAAU,YAAY,OAAA,CAAQ,IAAA;AAAA,YAC9B,QAAA,EAAU,QAAQ,KAAA,CAAM,SAAA;AAAA,YACxB,OAAA,EAAS,MAAM,OAAA,CAAQ,OAAA,CAAQ,QAAQ,OAAO,CAAA;AAAA,YAE7C,QAAA,EAAA;AAAA;AAAA,SACL,EAAA,EAVa,GAYrB,CACH,CAAA;AAAA,wBACDA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,WAAA,EACtB,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iDAAA,EACX,QAAA,EAAA,OAAA,CAAQ,IAAA,EACb,CAAA,EACJ,CAAA;AAAA,wBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,mBACtB,QAAA,kBAAAA,GAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACG,QAAA,EAAU,CAAC,UAAA,CAAW,WAAA,IAAe,QAAQ,KAAA,CAAM,SAAA;AAAA,YACnD,SAAS,MAAM,OAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAC;AAAA;AAAA,SAC3D,EACJ,CAAA;AAAA,wBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,aACtB,QAAA,kBAAAA,GAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACG,QAAA,EAAU,CAAC,UAAA,CAAW,WAAA,IAAe,QAAQ,KAAA,CAAM,SAAA;AAAA,YACnD,SAAS,MAAM,OAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,YAEvD,QAAA,kBAAAA,GAAAA,CAACW,YAAAA,EAAA,EAAa,WAAU,QAAA,EAAS;AAAA;AAAA,SACrC,EACJ;AAAA,OAAA,EACJ,CAAA,EACJ;AAAA,KAAA,EAER;AAAA,GAAA,EACJ,CAAA;AAER,CAAA;AAEO,IAAM,OAAA,GAAUV,eAAAA,CAAM,UAAA,CAAW,YAAY","file":"index.js","sourcesContent":["/**\n * next-data-kit - Server Utilities\n */\n\nimport type { TMongoFilterQuery, TSortEntry, TPaginationInfo } from '../types';\n\n/**\n * Check if a value is provided (not undefined, null, or empty string)\n */\nexport const isProvided = (value: unknown): boolean => value !== undefined && value !== null && value !== '';\n\n/**\n * Get a nested value from an object by path (e.g., 'user.name')\n */\nexport const getValueByPath = (obj: unknown, path: string): unknown => {\n\tif (!path) return undefined;\n\tconst parts = path.split('.');\n\tlet current: unknown = obj;\n\tfor (const part of parts) {\n\t\tif (current && typeof current === 'object' && part in (current as Record<string, unknown>)) {\n\t\t\tcurrent = (current as Record<string, unknown>)[part];\n\t\t} else {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\treturn current;\n};\n\n/**\n * Check if a value matches exactly (supports array inclusion)\n */\nexport const matchesExact = (rowValue: unknown, needle: unknown): boolean => {\n\tif (Array.isArray(needle)) return needle.includes(rowValue as never);\n\treturn rowValue === needle;\n};\n\n/**\n * Check if a value matches a regex-like pattern (case-insensitive)\n */\nexport const matchesRegexLike = (rowValue: unknown, needle: unknown): boolean => {\n\tif (!isProvided(needle)) return true;\n\tif (rowValue === undefined || rowValue === null) return false;\n\tconst hay = String(rowValue);\n\n\tif (needle instanceof RegExp) return needle.test(hay);\n\tconst n = String(needle);\n\treturn hay.toLowerCase().includes(n.toLowerCase());\n};\n\n/**\n * Compare two values for sorting\n */\nexport const compareValues = (a: unknown, b: unknown): number => {\n\tif (a === b) return 0;\n\tif (a === undefined || a === null) return -1;\n\tif (b === undefined || b === null) return 1;\n\n\tif (typeof a === 'number' && typeof b === 'number') return a - b;\n\tif (typeof a === 'bigint' && typeof b === 'bigint') return a < b ? -1 : 1;\n\n\tconst as = String(a);\n\tconst bs = String(b);\n\treturn as.localeCompare(bs);\n};\n\n/**\n * Normalize and validate sort entries\n */\nexport const normalizeSorts = (sorts: TSortEntry[] | undefined): TSortEntry[] => (Array.isArray(sorts) ? sorts.filter(s => !!s?.path && (s.value === 1 || s.value === -1)) : []);\n\n/**\n * Check if a key is safe (not a prototype pollution key)\n */\nexport const isSafeKey = (key: string): boolean => {\n\tconst unsafeKeys = ['__proto__', 'constructor', 'prototype'];\n\treturn !unsafeKeys.includes(key);\n};\n\n/**\n * Helper to escape regex special characters in a string\n */\nexport const escapeRegex = (str: string): string => {\n\treturn str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\n\n/**\n * Create a search filter for multiple fields\n *\n * @example\n * ```typescript\n * filterCustom: {\n * search: createSearchFilter(['name', 'email', 'phone'])\n * }\n * ```\n */\nexport const createSearchFilter = <T>(fields: (keyof T | string)[]): ((value: unknown) => TMongoFilterQuery<T>) => {\n\treturn (value: unknown): TMongoFilterQuery<T> => {\n\t\tif (!value || typeof value !== 'string') {\n\t\t\treturn {} as TMongoFilterQuery<T>;\n\t\t}\n\n\t\tconst escapedValue = escapeRegex(value);\n\t\treturn {\n\t\t\t$or: fields.map(field => ({\n\t\t\t\t[field]: { $regex: escapedValue, $options: 'i' },\n\t\t\t})),\n\t\t} as TMongoFilterQuery<T>;\n\t};\n};\n/**\n * Calculate pagination info from page, limit, and total\n */\nexport const calculatePagination = (page: number, limit: number, total: number): TPaginationInfo => ({\n\tcurrentPage: page,\n\ttotalPages: Math.ceil(total / limit),\n\ttotalItems: total,\n\titemsPerPage: limit,\n\thasNextPage: page * limit < total,\n\thasPrevPage: page > 1,\n});\n","/**\n * next-data-kit - Mongoose Adapter\n *\n * Database adapter for Mongoose/MongoDB.\n */\n\nimport type { TMongoModel, TMongoFilterQuery, TSortOrder, TSortOptions, TFilterCustomConfigWithFilter, TDataKitAdapter } from '../../types';\nimport { escapeRegex, isProvided, isSafeKey } from '../utils';\n\nexport const mongooseAdapter = <DocType = unknown>(\n\tmodel: TMongoModel<DocType>,\n\toptions: Readonly<{\n\t\tfilter?: ((filterInput?: Record<string, unknown>) => TMongoFilterQuery<DocType>) | TMongoFilterQuery<DocType>;\n\t\tfilterCustom?: TFilterCustomConfigWithFilter<DocType, TMongoFilterQuery<DocType>>;\n\t\tdefaultSort?: TSortOptions<DocType>;\n\t}> = {},\n): TDataKitAdapter<DocType> => {\n\t// ** Deconstruct options\n\tconst { filter: customFilter, filterCustom, defaultSort = { _id: -1 } as TSortOptions<DocType> } = options;\n\n\treturn async ({ filter, sorts, limit, skip, input }) => {\n\t\t// ** Normalize sort\n\t\tlet sortOption: Record<string, TSortOrder>;\n\n\t\tif (input.sort && Object.keys(input.sort).length > 0) {\n\t\t\tsortOption = input.sort as Record<string, TSortOrder>;\n\t\t} else if (sorts && sorts.length > 0) {\n\t\t\tsortOption = sorts.reduce<Record<string, TSortOrder>>((acc, s) => {\n\t\t\t\tif (s?.path && (s.value === 1 || s.value === -1)) {\n\t\t\t\t\tacc[s.path] = s.value;\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t}, {});\n\t\t} else {\n\t\t\tsortOption = defaultSort as Record<string, TSortOrder>;\n\t\t}\n\n\t\t// ** Construct filter query\n\t\tlet filterQuery: TMongoFilterQuery<DocType> = {};\n\n\t\t// ** Query params (exact match)\n\t\tif (input.query) {\n\t\t\tObject.entries(input.query).forEach(([key, value]) => {\n\t\t\t\tif (isProvided(value) && isSafeKey(key)) {\n\t\t\t\t\t(filterQuery as Record<string, unknown>)[key] = value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// ** Custom filter function or object\n\t\tif (customFilter) {\n\t\t\tconst customQuery = typeof customFilter === 'function' ? customFilter(filter) : customFilter;\n\t\t\tfilterQuery = { ...filterQuery, ...customQuery };\n\t\t}\n\n\t\t// ** User defined filters\n\t\tif (filter && !customFilter) {\n\t\t\tif (input.filterConfig) {\n\t\t\t\tObject.entries(filter).forEach(([key, value]) => {\n\t\t\t\t\t// Skip if handled by filterCustom\n\t\t\t\t\tif (filterCustom && filterCustom[key]) return;\n\n\t\t\t\t\tif (isProvided(value) && isSafeKey(key) && input.filterConfig?.[key]) {\n\t\t\t\t\t\tconst config = input.filterConfig[key];\n\t\t\t\t\t\tconst fieldName = config?.field ?? key;\n\n\t\t\t\t\t\tif (config?.type === 'REGEX') {\n\t\t\t\t\t\t\t(filterQuery as Record<string, unknown>)[fieldName] = {\n\t\t\t\t\t\t\t\t$regex: escapeRegex(String(value)),\n\t\t\t\t\t\t\t\t$options: 'i',\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (config?.type === 'EXACT') {\n\t\t\t\t\t\t\t(filterQuery as Record<string, unknown>)[fieldName] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// ** Default automatic filtering\n\t\t\t\tObject.entries(filter).forEach(([key, value]) => {\n\t\t\t\t\t// Skip if handled by filterCustom\n\t\t\t\t\tif (filterCustom && filterCustom[key]) return;\n\n\t\t\t\t\tif (isProvided(value) && isSafeKey(key)) {\n\t\t\t\t\t\tif (typeof value === 'string') {\n\t\t\t\t\t\t\t(filterQuery as Record<string, unknown>)[key] = {\n\t\t\t\t\t\t\t\t$regex: escapeRegex(value),\n\t\t\t\t\t\t\t\t$options: 'i',\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (typeof value === 'number' || typeof value === 'boolean') {\n\t\t\t\t\t\t\t(filterQuery as Record<string, unknown>)[key] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// ** Custom filter logic (filterCustom)\n\t\tif (filterCustom && filter) {\n\t\t\tObject.entries(filter).forEach(([key, value]) => {\n\t\t\t\tif (isProvided(value) && isSafeKey(key) && filterCustom[key]) {\n\t\t\t\t\tconst customFilter = filterCustom[key]!(value);\n\t\t\t\t\tfilterQuery = { ...filterQuery, ...customFilter };\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// ** Execute queries\n\t\tconst total = await model.countDocuments(filterQuery as TMongoFilterQuery<unknown>);\n\t\tconst items = (await model\n\t\t\t.find(filterQuery as TMongoFilterQuery<unknown>)\n\t\t\t.sort(sortOption)\n\t\t\t.limit(limit)\n\t\t\t.skip(skip)) as unknown as DocType[];\n\n\t\treturn { items, total };\n\t};\n};\n","/**\n * next-data-kit - Server Action\n *\n * The main server-side function for handling table data fetching\n * with pagination, filtering, and sorting.\n */\n\nimport { mongooseAdapter } from './adapters/mongoose';\nimport type { Model } from 'mongoose';\nimport type { TDataKitInput, TDataKitResult, TDataKitAdapter, TMongoModel, TExtractDocType, TMongooseOptions, TAdapterOptions } from '../types';\n\n/**\n * Core execution logic shared by both overloads\n */\nasync function executeDataKit<TDoc, R>(input: TDataKitInput<TDoc>, adapter: TDataKitAdapter<TDoc>, item: (item: TDoc) => Promise<R> | R, maxLimit: number, filterAllowed?: string[], queryAllowed?: (keyof TDoc | string)[], sortAllowed?: (keyof TDoc | string)[]): Promise<TDataKitResult<R>> {\n\t// Check Query\n\tif (input.query) {\n\t\tconst safeQuery: Record<string, string | number | boolean> = {};\n\t\tObject.keys(input.query).forEach(key => {\n\t\t\tif (queryAllowed && !queryAllowed.includes(key)) {\n\t\t\t\tthrow new Error(`[Security] Query field '${key}' is not allowed.`);\n\t\t\t}\n\t\t\tconst val = input.query![key];\n\t\t\tif (val !== null && typeof val === 'object') {\n\t\t\t\tthrow new Error(`[Security] Query value for '${key}' must be a primitive.`);\n\t\t\t}\n\t\t\tif (val !== undefined) {\n\t\t\t\tsafeQuery[key] = val;\n\t\t\t}\n\t\t});\n\t\tinput.query = safeQuery;\n\t}\n\n\t// Check Filter\n\tif (input.filter) {\n\t\tconst safeFilter: Record<string, string | number | boolean | null> = {};\n\t\tObject.keys(input.filter).forEach(key => {\n\t\t\tif (filterAllowed && !filterAllowed.includes(key)) {\n\t\t\t\tthrow new Error(`[Security] Filter field '${key}' is not allowed.`);\n\t\t\t}\n\t\t\tconst val = input.filter![key];\n\t\t\tif (val !== null && typeof val === 'object') {\n\t\t\t\tthrow new Error(`[Security] Filter value for '${key}' must be a primitive.`);\n\t\t\t}\n\t\t\tif (val !== undefined) {\n\t\t\t\tsafeFilter[key] = val;\n\t\t\t}\n\t\t});\n\t\tinput.filter = safeFilter;\n\t}\n\n\t// Check Sort\n\tif (input.sorts && sortAllowed) {\n\t\tinput.sorts.forEach(sort => {\n\t\t\tif (!sortAllowed.includes(sort.path)) {\n\t\t\t\tthrow new Error(`[Security] Sort field '${sort.path}' is not allowed.`);\n\t\t\t}\n\t\t});\n\t}\n\n\t// Handle action\n\tswitch (input.action ?? 'FETCH') {\n\t\tcase 'FETCH': {\n\t\t\tif (!input.limit || !input.page) {\n\t\t\t\tthrow new Error('Invalid input: missing limit or page');\n\t\t\t}\n\n\t\t\tconst limit = Math.min(input.limit, maxLimit);\n\t\t\tconst skip = limit * (input.page - 1);\n\n\t\t\tconst { items, total } = await adapter({\n\t\t\t\tfilter: input.filter ?? {},\n\t\t\t\tsorts: input.sorts ?? [],\n\t\t\t\tlimit,\n\t\t\t\tpage: input.page,\n\t\t\t\tskip,\n\t\t\t\tinput,\n\t\t\t});\n\n\t\t\tconst processedItems = await Promise.all(items.map(dataItem => item(dataItem)));\n\n\t\t\treturn {\n\t\t\t\ttype: 'ITEMS',\n\t\t\t\titems: processedItems,\n\t\t\t\tdocumentTotal: total,\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\tthrow new Error(`Unsupported action: ${(input as { action?: string }).action}`);\n\t}\n}\n\n/**\n * Server action with Mongoose model (auto-infers document type)\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport async function dataKitServerAction<M extends Model<any>, R = unknown>(props: Readonly<TMongooseOptions<M, TExtractDocType<M>, R>>): Promise<TDataKitResult<R>>;\n\n/**\n * Server action with custom adapter\n */\nexport async function dataKitServerAction<TDoc, R = unknown>(props: Readonly<TAdapterOptions<TDoc, R>>): Promise<TDataKitResult<R>>;\n\n/**\n * Implementation\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport async function dataKitServerAction<M extends Model<any>, TDoc = any, R = unknown>(props: Readonly<TMongooseOptions<M, TDoc, R> | TAdapterOptions<TDoc, R>>): Promise<TDataKitResult<R>> {\n\tconst { input, item, maxLimit = 100, queryAllowed, filterAllowed: explicitFilterAllowed, sortAllowed } = props;\n\n\t// Determine filterAllowed\n\tconst filterAllowed = explicitFilterAllowed;\n\n\t// Determine adapter\n\tlet finalAdapter: TDataKitAdapter<TDoc>;\n\n\tif ('adapter' in props && props.adapter) {\n\t\tfinalAdapter = props.adapter;\n\t} else if ('model' in props && props.model) {\n\t\tconst model = props.model as unknown as TMongoModel<TDoc>;\n\t\tfinalAdapter = mongooseAdapter(model, {\n\t\t\tfilter: props.filter,\n\t\t\tfilterCustom: props.filterCustom,\n\t\t\tdefaultSort: props.defaultSort,\n\t\t}) as TDataKitAdapter<TDoc>;\n\t} else {\n\t\tthrow new Error('Either model or adapter must be provided');\n\t}\n\n\treturn executeDataKit(input, finalAdapter, item, maxLimit, filterAllowed, queryAllowed, sortAllowed);\n}\n","/**\n * next-data-kit - Memory Adapter\n *\n * In-memory adapter for demos, tests, and local playgrounds.\n * Implements the React Data Kit adapter contract over an array dataset.\n */\n\nimport type { TFilterConfig, TDataKitAdapter } from '../../types';\nimport { isProvided, getValueByPath, matchesExact, matchesRegexLike, compareValues, normalizeSorts } from '../utils';\n\n/**\n * Creates an adapter that pages/filters/sorts an in-memory dataset.\n */\nexport const adapterMemory = <T extends Record<string, unknown>>(\n\tdataset: ReadonlyArray<T>,\n\toptions: Readonly<{\n\t\t/** default behavior for filter keys not present in filterConfig */\n\t\tdefaultFilterType?: 'regex' | 'exact';\n\t}> = {},\n): TDataKitAdapter<T> => {\n\tconst { defaultFilterType = 'exact' } = options;\n\n\treturn async ({ filter, sorts, limit, skip, input }) => {\n\t\tconst filterConfig: TFilterConfig | undefined = input.filterConfig;\n\t\tconst query = input.query ?? {};\n\n\t\t// 1) Apply query (exact match)\n\t\tlet rows = dataset.filter(row => {\n\t\t\tfor (const [key, value] of Object.entries(query)) {\n\t\t\t\tif (!isProvided(value)) continue;\n\t\t\t\tconst rowValue = getValueByPath(row, key);\n\t\t\t\tif (!matchesExact(rowValue, value)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\t// 2) Apply filter (via filterConfig when present)\n\t\tconst effectiveFilter = filter ?? {};\n\t\trows = rows.filter(row => {\n\t\t\tfor (const [key, value] of Object.entries(effectiveFilter)) {\n\t\t\t\tif (!isProvided(value)) continue;\n\n\t\t\t\tconst config = filterConfig?.[key];\n\t\t\t\tconst field = config?.field ?? key;\n\t\t\t\tconst rowValue = getValueByPath(row, field);\n\n\t\t\t\tconst type = config?.type ?? defaultFilterType;\n\t\t\t\tif (type === 'regex') {\n\t\t\t\t\tif (!matchesRegexLike(rowValue, value)) return false;\n\t\t\t\t} else {\n\t\t\t\t\tif (!matchesExact(rowValue, value)) return false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\t// 3) Sort\n\t\tconst normalizedSorts = normalizeSorts(sorts);\n\t\tif (normalizedSorts.length > 0) {\n\t\t\trows = [...rows].sort((ra, rb) => {\n\t\t\t\tfor (const s of normalizedSorts) {\n\t\t\t\t\tconst av = getValueByPath(ra, s.path);\n\t\t\t\t\tconst bv = getValueByPath(rb, s.path);\n\t\t\t\t\tconst cmp = compareValues(av, bv);\n\t\t\t\t\tif (cmp !== 0) return s.value === 1 ? cmp : -cmp;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t}\n\n\t\tconst total = rows.length;\n\t\tconst items = rows.slice(skip, skip + limit);\n\t\treturn { items, total };\n\t};\n};\n","import { z } from 'zod';\n\nexport const dataKitSchemaZod = z.object({\n\taction: z.literal('FETCH').optional(),\n\tpage: z.number().int().positive().optional(),\n\tlimit: z.number().int().positive().optional(),\n\tquery: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional(),\n\tfilter: z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(),\n\tfilterConfig: z\n\t\t.record(\n\t\t\tz.string(),\n\t\t\tz.object({\n\t\t\t\ttype: z.enum(['REGEX', 'EXACT']),\n\t\t\t\tfield: z.string().optional(),\n\t\t\t}),\n\t\t)\n\t\t.optional(),\n\tsorts: z\n\t\t.array(\n\t\t\tz.object({\n\t\t\t\tpath: z.string().max(100), // Limit path length to prevent abuse\n\t\t\t\tvalue: z.literal(-1).or(z.literal(1)),\n\t\t\t}),\n\t\t)\n\t\t.max(5)\n\t\t.optional(), // Limit to 5 sort fields\n\tsort: z.record(z.string(), z.literal(1).or(z.literal(-1))).optional(),\n});\n\nexport type TDataKitSchemaZod = z.infer<typeof dataKitSchemaZod>;\n","'use client';\n\ntype ClassPrimitive = string | number | boolean | null | undefined;\ntype ClassDictionary = Record<string, boolean | undefined | null>;\ntype ClassArray = ClassValue[];\nexport type ClassValue = ClassPrimitive | ClassDictionary | ClassArray;\n\nconst toClassString = (input: ClassValue): string => {\n if (!input) return '';\n\n if (typeof input === 'string' || typeof input === 'number') return String(input);\n\n if (Array.isArray(input)) {\n return input.map(toClassString).filter(Boolean).join(' ');\n }\n\n if (typeof input === 'object') {\n return Object.entries(input)\n .filter(([, value]) => Boolean(value))\n .map(([key]) => key)\n .join(' ');\n }\n\n return '';\n};\n\n/**\n * Minimal `cn` helper (shadcn-style) without external deps.\n */\nexport const cn = (...inputs: ClassValue[]): string => inputs.map(toClassString).filter(Boolean).join(' ');\n","/**\n * next-data-kit - Utility Functions\n *\n * Helper utilities for client-side operations.\n */\n\nimport type { TDataKitColumn, TSortEntry } from '../../types';\n\nexport { cn, type ClassValue } from './cn';\n\n\n/**\n * Get the value from an item using a column accessor\n */\nexport const getColumnValue = <T>(item: T, column: TDataKitColumn<T>): unknown => {\n const { accessor } = column;\n return typeof accessor === 'function' ? accessor(item) : item[accessor as keyof T];\n};\n\n/**\n * Get the sort value for a column\n */\nexport const getSortValue = (sorts: TSortEntry[], path: string): 1 | -1 | null => {\n const sort = sorts.find((s) => s.path === path);\n return sort?.value ?? null;\n};\n\n/**\n * Get the next sort value in the cycle: null -> 1 -> -1 -> null\n */\nexport const getNextSortValue = (current: 1 | -1 | null): 1 | -1 | null => {\n if (current === null) return 1;\n if (current === 1) return -1;\n return null;\n};\n\n\n/**\n * Format a number with commas\n */\nexport const formatNumber = (num: number): string => num.toLocaleString();\n\n\n/**\n * Debounce a function\n */\nexport const debounce = <T extends (...args: unknown[]) => unknown>(\n fn: T,\n delay: number\n): ((...args: Parameters<T>) => void) => {\n let timeoutId: ReturnType<typeof setTimeout>;\n return (...args: Parameters<T>) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n};\n\n/**\n * Throttle a function\n */\nexport const throttle = <T extends (...args: unknown[]) => unknown>(\n fn: T,\n limit: number\n): ((...args: Parameters<T>) => void) => {\n let inThrottle = false;\n return (...args: Parameters<T>) => {\n if (!inThrottle) {\n fn(...args);\n inThrottle = true;\n setTimeout(() => { inThrottle = false; }, limit);\n }\n };\n};\n\n\n/**\n * Create a stable object key from sort entries\n */\nexport const sortEntriesToKey = (sorts: TSortEntry[]): string =>\n sorts.map((s) => `${s.path}:${s.value}`).join(',');\n\n/**\n * Parse a sort key back to sort entries\n */\nexport const keyToSortEntries = (key: string): TSortEntry[] => {\n if (!key) return [];\n return key.split(',').map((part) => {\n const [path, value] = part.split(':');\n return { path: path ?? '', value: parseInt(value ?? '1', 10) as 1 | -1 };\n });\n};\n\n\n/**\n * Parse URL search params into tabler state\n */\nexport const parseUrlParams = (search: string): {\n page?: number;\n limit?: number;\n sorts?: TSortEntry[];\n filter?: Record<string, unknown>;\n query?: Record<string, unknown>;\n} => {\n const params = new URLSearchParams(search);\n const state: ReturnType<typeof parseUrlParams> = {};\n\n // ** Page\n const page = params.get('page');\n if (page) state.page = parseInt(page, 10);\n\n // ** Limit\n const limit = params.get('limit');\n if (limit) state.limit = parseInt(limit, 10);\n\n // ** Sorts\n const sort = params.get('sort');\n if (sort) state.sorts = keyToSortEntries(sort);\n\n // ** Filter (f_key) and Query (q_key)\n const filter: Record<string, unknown> = {};\n const query: Record<string, unknown> = {};\n\n params.forEach((value, key) => {\n if (key.startsWith('f_')) filter[key.slice(2)] = value;\n else if (key.startsWith('q_')) query[key.slice(2)] = value;\n });\n\n if (Object.keys(filter).length > 0) state.filter = filter;\n if (Object.keys(query).length > 0) state.query = query;\n\n return state;\n};\n\n/**\n * Convert tabler state to URL search params\n */\nexport const stateToUrlParams = (state: {\n page?: number;\n limit?: number;\n sorts?: TSortEntry[];\n filter?: Record<string, unknown>;\n query?: Record<string, unknown>;\n}): URLSearchParams => {\n const params = new URLSearchParams();\n\n if (state.page && state.page > 1) params.set('page', state.page.toString());\n if (state.limit) params.set('limit', state.limit.toString());\n if (state.sorts && state.sorts.length > 0) params.set('sort', sortEntriesToKey(state.sorts));\n\n if (state.filter) {\n Object.entries(state.filter).forEach(([key, value]) => {\n if (value !== undefined && value !== null && value !== '') {\n params.set(`f_${key}`, String(value));\n }\n });\n }\n\n if (state.query) {\n Object.entries(state.query).forEach(([key, value]) => {\n if (value !== undefined && value !== null && value !== '') {\n params.set(`q_${key}`, String(value));\n }\n });\n }\n\n return params;\n};\n","/**\n * next-data-kit - useDataKit Hook\n *\n * React hook for managing next-data-kit state and actions.\n */\n\n'use client';\n\nimport { useState, useCallback, useEffect, useRef } from 'react';\nimport type { TDataKitInput, TDataKitResult, TUseDataKitOptions, TSortEntry, TUseDataKitReturn, TFilterConfig } from '../../types';\nimport { parseUrlParams, stateToUrlParams } from '../utils';\n\nexport const useDataKit = <T = unknown, R = unknown>(props: Readonly<TUseDataKitOptions<T, R>>): TUseDataKitReturn<T, R> => {\n\t// ** Deconstruct Props\n\tconst { initial = {}, memory: memoryMode = 'memory', filters, action, onSuccess, onError, autoFetch = true, debounce: debounceDelay = 300 } = props;\n\n\tconst { page: initialPage = 1, limit: initialLimit = 10, sorts: initialSorts = [], filter: initialFilter = {}, query: initialQuery = {} } = initial;\n\n\t// ** State\n\tconst [page, setPageState] = useState(initialPage);\n\tconst [limit, setLimitState] = useState(initialLimit);\n\tconst [sorts, setSortsState] = useState<TSortEntry[]>(initialSorts);\n\tconst [filter, setFilterState] = useState<Record<string, unknown>>(initialFilter);\n\tconst [debouncedFilter, setDebouncedFilter] = useState<Record<string, unknown>>(initialFilter);\n\tconst [query, setQueryState] = useState<Record<string, unknown>>(initialQuery);\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [error, setError] = useState<Error | null>(null);\n\tconst [items, setItems] = useState<R[]>([]);\n\tconst [total, setTotal] = useState(0);\n\n\t// ** Refs\n\tconst mounted = useRef(true);\n\tconst fetchIdRef = useRef(0);\n\tconst debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n\t// ** Refs for props to prevent infinite loops and stale closures\n\tconst actionRef = useRef(action);\n\tconst onSuccessRef = useRef(onSuccess);\n\tconst onErrorRef = useRef(onError);\n\tconst filtersRef = useRef(filters);\n\n\t// ** Update refs on every render\n\tactionRef.current = action;\n\tonSuccessRef.current = onSuccess;\n\tonErrorRef.current = onError;\n\tfiltersRef.current = filters;\n\n\t// ** Get current input\n\tconst getInput = useCallback((): TDataKitInput<T> => {\n\t\tconst input: TDataKitInput<T> = {\n\t\t\taction: 'FETCH',\n\t\t\tpage,\n\t\t\tlimit,\n\t\t\tsorts,\n\t\t\tfilter: debouncedFilter as Record<string, string | number | boolean | null>,\n\t\t\tquery: query as Record<string, string | number | boolean>,\n\t\t};\n\n\t\tif (filtersRef.current) {\n\t\t\tinput.filterConfig = filtersRef.current.reduce<TFilterConfig>((acc, f) => {\n\t\t\t\tif (f.configuration) acc[f.id] = f.configuration;\n\t\t\t\treturn acc;\n\t\t\t}, {});\n\t\t}\n\n\t\treturn input;\n\t}, [page, limit, sorts, debouncedFilter, query]);\n\n\t// ** Fetch data\n\tconst fetchData = useCallback(async () => {\n\t\tconst fetchId = ++fetchIdRef.current;\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\n\t\ttry {\n\t\t\tconst input = getInput();\n\t\t\tconst result = (await actionRef.current(input)) as TDataKitResult<R>;\n\n\t\t\t// ** Check if this is still the latest fetch\n\t\t\tif (fetchId !== fetchIdRef.current || !mounted.current) return;\n\n\t\t\tsetItems(result.items);\n\t\t\tsetTotal(result.documentTotal);\n\t\t\tonSuccessRef.current?.(result);\n\t\t} catch (err) {\n\t\t\tif (fetchId !== fetchIdRef.current || !mounted.current) return;\n\n\t\t\tconst fetchError = err instanceof Error ? err : new Error(String(err));\n\t\t\tsetError(fetchError);\n\t\t\tonErrorRef.current?.(fetchError);\n\t\t} finally {\n\t\t\tif (fetchId === fetchIdRef.current && mounted.current) {\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t}\n\t}, [getInput]);\n\n\t// ** Debounce filter changes\n\tuseEffect(() => {\n\t\tif (debounceTimerRef.current) clearTimeout(debounceTimerRef.current);\n\n\t\tdebounceTimerRef.current = setTimeout(() => {\n\t\t\tsetDebouncedFilter(filter);\n\t\t}, debounceDelay);\n\n\t\treturn () => {\n\t\t\tif (debounceTimerRef.current) clearTimeout(debounceTimerRef.current);\n\t\t};\n\t}, [filter, debounceDelay]);\n\n\t// ** Actions\n\tconst setPage = useCallback((newPage: number) => setPageState(newPage), []);\n\n\tconst setLimit = useCallback((newLimit: number) => {\n\t\tsetLimitState(newLimit);\n\t\tsetPageState(1);\n\t}, []);\n\n\tconst setSort = useCallback((path: string, value: 1 | -1 | null, append = false) => {\n\t\tsetSortsState(prev => {\n\t\t\tif (value === null) return prev.filter(s => s.path !== path);\n\t\t\tif (!append) return [{ path, value }];\n\n\t\t\tconst existing = prev.find(s => s.path === path);\n\t\t\tif (existing) return prev.map(s => (s.path === path ? { ...s, value } : s));\n\t\t\treturn [...prev, { path, value }];\n\t\t});\n\t}, []);\n\n\tconst setSorts = useCallback((newSorts: TSortEntry[]) => setSortsState(newSorts), []);\n\n\tconst setFilter = useCallback((key: string, value: unknown) => {\n\t\tsetFilterState(prev => ({ ...prev, [key]: value }));\n\t\tsetPageState(1);\n\t}, []);\n\n\tconst setFilters = useCallback((filters: Record<string, unknown>) => {\n\t\tsetFilterState(prev => ({ ...prev, ...filters }));\n\t\tsetPageState(1);\n\t}, []);\n\n\tconst clearFilters = useCallback(() => {\n\t\tsetFilterState({});\n\t\tsetPageState(1);\n\t}, []);\n\n\tconst setQuery = useCallback((key: string, value: unknown) => {\n\t\tsetQueryState(prev => ({ ...prev, [key]: value }));\n\t\tsetPageState(1);\n\t}, []);\n\n\tconst refresh = useCallback(async () => {\n\t\tawait fetchData();\n\t}, [fetchData]);\n\n\t// ** Item mutations (optional helpers)\n\tconst setItemsAction = useCallback((nextItems: R[]) => {\n\t\tsetItems(nextItems);\n\t}, []);\n\n\tconst setItemAt = useCallback((index: number, item: R) => {\n\t\tsetItems(prev => {\n\t\t\tif (index < 0 || index >= prev.length) return prev;\n\t\t\tconst next = [...prev];\n\t\t\tnext[index] = item;\n\t\t\treturn next;\n\t\t});\n\t}, []);\n\n\tconst deleteItemAt = useCallback((index: number) => {\n\t\tsetItems(prev => prev.filter((_, i) => i !== index));\n\t}, []);\n\n\tconst itemPush = useCallback((item: R, position: 0 | 1 = 1) => {\n\t\tsetItems(prev => (position === 0 ? [item, ...prev] : [...prev, item]));\n\t}, []);\n\n\tconst deleteBulk = useCallback((itemsToDelete: R[]) => {\n\t\tif (itemsToDelete.length === 0) return;\n\t\tconst toDelete = new Set(itemsToDelete);\n\t\tsetItems(prev => prev.filter(it => !toDelete.has(it)));\n\t}, []);\n\n\tconst reset = useCallback(() => {\n\t\tsetPageState(initialPage);\n\t\tsetLimitState(initialLimit);\n\t\tsetSortsState(initialSorts);\n\t\tsetFilterState(initialFilter);\n\t\tsetDebouncedFilter(initialFilter);\n\t\tsetQueryState(initialQuery);\n\t}, [initialPage, initialLimit, initialSorts, initialFilter, initialQuery]);\n\n\t// ** Sync with URL if memoryMode is 'search-params'\n\tuseEffect(() => {\n\t\tif (memoryMode !== 'search-params' || typeof window === 'undefined') return;\n\n\t\t// ** Initial load from URL\n\t\tconst urlState = parseUrlParams(window.location.search);\n\n\t\tif (Object.keys(urlState).length > 0) {\n\t\t\tif (urlState.page) setPageState(urlState.page);\n\t\t\tif (urlState.limit) setLimitState(urlState.limit);\n\t\t\tif (urlState.sorts) setSortsState(urlState.sorts);\n\t\t\tif (urlState.filter) {\n\t\t\t\tsetFilterState(prev => ({ ...prev, ...urlState.filter }));\n\t\t\t\tsetDebouncedFilter(prev => ({ ...prev, ...urlState.filter }));\n\t\t\t}\n\t\t\tif (urlState.query) setQueryState(prev => ({ ...prev, ...urlState.query }));\n\t\t}\n\n\t\t// ** Listen for popstate (back/forward)\n\t\tconst handlePopState = () => {\n\t\t\tconst newUrlState = parseUrlParams(window.location.search);\n\n\t\t\tsetPageState(newUrlState.page ?? initialPage);\n\t\t\tsetLimitState(newUrlState.limit ?? initialLimit);\n\t\t\tsetSortsState(newUrlState.sorts ?? initialSorts);\n\t\t\tsetFilterState({ ...initialFilter, ...newUrlState.filter });\n\t\t\tsetDebouncedFilter({ ...initialFilter, ...newUrlState.filter });\n\t\t\tsetQueryState({ ...initialQuery, ...newUrlState.query });\n\t\t};\n\n\t\twindow.addEventListener('popstate', handlePopState);\n\t\treturn () => window.removeEventListener('popstate', handlePopState);\n\t}, [memoryMode, initialPage, initialLimit, initialSorts, initialFilter, initialQuery]);\n\n\t// ** Update URL when state changes\n\tuseEffect(() => {\n\t\tif (memoryMode !== 'search-params' || typeof window === 'undefined') return;\n\n\t\tconst params = stateToUrlParams({ page, limit, sorts, filter, query });\n\t\tconst newSearch = params.toString();\n\t\tconst currentSearch = window.location.search.slice(1);\n\n\t\tif (newSearch !== currentSearch) {\n\t\t\tconst newUrl = newSearch ? `?${newSearch}` : window.location.pathname;\n\t\t\twindow.history.pushState(null, '', newUrl);\n\t\t}\n\t}, [page, limit, sorts, filter, query, memoryMode]);\n\n\t// ** Auto-fetch on mount and when dependencies change\n\tuseEffect(() => {\n\t\tif (autoFetch) fetchData();\n\t}, [page, limit, sorts, debouncedFilter, query, autoFetch, fetchData]);\n\n\t// ** Cleanup\n\tuseEffect(() => {\n\t\tmounted.current = true;\n\t\treturn () => {\n\t\t\tmounted.current = false;\n\t\t};\n\t}, []);\n\n\t// ** Calculate hasNextPage\n\tconst hasNextPage = page * limit < total;\n\n\treturn {\n\t\tpage,\n\t\tlimit,\n\t\tsorts,\n\t\tfilter,\n\t\tfilterConfig: filters?.reduce<TFilterConfig>((acc, f) => {\n\t\t\tif (f.configuration) acc[f.id] = f.configuration;\n\t\t\treturn acc;\n\t\t}, {}),\n\t\tquery,\n\t\titems,\n\t\ttotal,\n\t\tstate: { isLoading, error, hasNextPage },\n\t\tactions: {\n\t\t\tsetPage,\n\t\t\tsetLimit,\n\t\t\tsetSort,\n\t\t\tsetSorts,\n\t\t\tsetFilter,\n\t\t\tsetFilters,\n\t\t\tclearFilters,\n\t\t\tsetQuery,\n\t\t\trefresh,\n\t\t\treset,\n\t\t\tgetInput,\n\t\t\tsetItems: setItemsAction,\n\t\t\tsetItemAt,\n\t\t\tdeleteItemAt,\n\t\t\titemPush,\n\t\t\tdeleteBulk,\n\t\t},\n\t};\n};\n\nexport type { TUseDataKitOptions };\n","/**\n * next-data-kit - useSelection Hook\n *\n * React hook for managing table row selection.\n */\n\n'use client';\n\nimport { useState, useCallback, useMemo } from 'react';\nimport type { TUseSelectionReturn } from '../../types';\n\n\nexport const useSelection = <T = string>(initialSelected: T[] = []): TUseSelectionReturn<T> => {\n // ** State\n const [selectedIds, setSelectedIds] = useState<Set<T>>(new Set(initialSelected));\n\n // ** Select a single item\n const select = useCallback((id: T) => {\n setSelectedIds((prev) => new Set(prev).add(id));\n }, []);\n\n // ** Deselect a single item\n const deselect = useCallback((id: T) => {\n setSelectedIds((prev) => {\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }, []);\n\n // ** Toggle selection of a single item\n const toggle = useCallback((id: T) => {\n setSelectedIds((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n }, []);\n\n // ** Select all items\n const selectAll = useCallback((ids: T[]) => {\n setSelectedIds(new Set(ids));\n }, []);\n\n // ** Deselect all items\n const deselectAll = useCallback(() => {\n setSelectedIds(new Set());\n }, []);\n\n // ** Toggle all items selection\n const toggleAll = useCallback((ids: T[]) => {\n setSelectedIds((prev) => {\n // ** If all are selected, deselect all\n if (ids.every((id) => prev.has(id))) return new Set();\n // ** Otherwise, select all\n return new Set(ids);\n });\n }, []);\n\n // ** Check if an item is selected\n const isSelected = useCallback((id: T) => selectedIds.has(id), [selectedIds]);\n\n // ** Get array of selected IDs\n const getSelectedArray = useCallback(() => Array.from(selectedIds), [selectedIds]);\n\n // ** Calculate derived state\n const isAllSelected = useMemo(() => selectedIds.size > 0, [selectedIds.size]);\n const isIndeterminate = useMemo(() => false, []);\n\n return {\n selectedIds,\n isAllSelected,\n isIndeterminate,\n select,\n deselect,\n toggle,\n selectAll,\n deselectAll,\n toggleAll,\n isSelected,\n getSelectedArray,\n };\n};\n\n\nexport const useSelectionWithTotal = <T = string>(\n totalItems: T[],\n initialSelected: T[] = []\n): Omit<TUseSelectionReturn<T>, 'toggleAll'> & {\n isAllSelected: boolean;\n isIndeterminate: boolean;\n toggleAll: () => void;\n} => {\n // ** Base selection hook\n const selection = useSelection<T>(initialSelected);\n\n // ** Calculate derived state\n const isAllSelected = useMemo(\n () => totalItems.length > 0 && totalItems.every((id) => selection.selectedIds.has(id)),\n [totalItems, selection.selectedIds]\n );\n\n const isIndeterminate = useMemo(\n () => selection.selectedIds.size > 0 && selection.selectedIds.size < totalItems.length,\n [totalItems.length, selection.selectedIds.size]\n );\n\n // ** Override toggleAll to use totalItems\n const toggleAll = useCallback(() => {\n if (isAllSelected) selection.deselectAll();\n else selection.selectAll(totalItems);\n }, [isAllSelected, selection, totalItems]);\n\n return {\n ...selection,\n isAllSelected,\n isIndeterminate,\n toggleAll,\n };\n};\n","/**\n * next-data-kit - usePagination Hook\n *\n * React hook for calculating pagination state.\n */\n\n'use client';\n\nimport { useMemo } from 'react';\nimport type { TPaginationInfo } from '../../types';\nimport { calculatePagination } from '../../server/utils';\n\nexport type TUsePaginationReturn = TPaginationInfo & {\n\t// ** Array of page numbers/ellipsis to display\n\tpages: (number | 'ellipsis')[];\n\t// ** First page number\n\tfirstPage: number;\n\t// ** Last page number\n\tlastPage: number;\n};\n\nconst range = (start: number, end: number): number[] => Array.from({ length: end - start + 1 }, (_, idx) => idx + start);\n\nexport const usePagination = (\n\tprops: Readonly<{\n\t\tpage: number;\n\t\tlimit: number;\n\t\ttotal: number;\n\t\t// ** Number of page buttons to show on each side of current page\n\t\tsiblingCount?: number;\n\t}>,\n): TUsePaginationReturn => {\n\t// ** Deconstruct Props\n\tconst { page, limit, total, siblingCount = 1 } = props;\n\n\t// ** Calculate pagination info\n\tconst paginationInfo = useMemo(() => calculatePagination(page, limit, total), [page, limit, total]);\n\n\t// ** Calculate page numbers to display\n\tconst pages = useMemo(() => {\n\t\tconst { totalPages } = paginationInfo;\n\n\t\t// ** Total number of page buttons = siblings on both sides + first + last + current + 2 ellipsis\n\t\tconst totalPageNumbers = siblingCount * 2 + 5;\n\n\t\t// ** If total pages is less than page numbers we want to show\n\t\tif (totalPageNumbers >= totalPages) return range(1, totalPages);\n\n\t\tconst leftSiblingIndex = Math.max(page - siblingCount, 1);\n\t\tconst rightSiblingIndex = Math.min(page + siblingCount, totalPages);\n\n\t\tconst shouldShowLeftEllipsis = leftSiblingIndex > 2;\n\t\tconst shouldShowRightEllipsis = rightSiblingIndex < totalPages - 1;\n\n\t\t// ** No left ellipsis, but right ellipsis\n\t\tif (!shouldShowLeftEllipsis && shouldShowRightEllipsis) {\n\t\t\tconst leftRange = range(1, 3 + 2 * siblingCount);\n\t\t\treturn [...leftRange, 'ellipsis' as const, totalPages];\n\t\t}\n\n\t\t// ** Left ellipsis, no right ellipsis\n\t\tif (shouldShowLeftEllipsis && !shouldShowRightEllipsis) {\n\t\t\tconst rightRange = range(totalPages - (3 + 2 * siblingCount) + 1, totalPages);\n\t\t\treturn [1, 'ellipsis' as const, ...rightRange];\n\t\t}\n\n\t\t// ** Both ellipsis\n\t\tif (shouldShowLeftEllipsis && shouldShowRightEllipsis) {\n\t\t\tconst middleRange = range(leftSiblingIndex, rightSiblingIndex);\n\t\t\treturn [1, 'ellipsis' as const, ...middleRange, 'ellipsis' as const, totalPages];\n\t\t}\n\n\t\treturn range(1, totalPages);\n\t}, [paginationInfo, page, siblingCount]);\n\n\treturn {\n\t\t...paginationInfo,\n\t\tpages,\n\t\tfirstPage: 1,\n\t\tlastPage: paginationInfo.totalPages,\n\t};\n};\n","/**\n * next-data-kit - DataKitContext\n *\n * React context for sharing next-data-kit state across components.\n */\n\n'use client';\n\nimport { createContext, useContext, type ReactNode } from 'react';\nimport type { TUseDataKitReturn } from '../../types';\n\n\nexport type TDataKitContextValue<T = unknown, R = unknown> = TUseDataKitReturn<T, R>;\n\n\nexport const createDataKitContext = <T = unknown, R = unknown>() => {\n const Context = createContext<TDataKitContextValue<T, R> | null>(null);\n\n // ** Provider component for next-data-kit context\n const DataKitProvider = (props: Readonly<{\n value: TDataKitContextValue<T, R>;\n children: ReactNode;\n }>) => {\n const { value, children } = props;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n // ** Hook to access next-data-kit context\n const useDataKitContext = (): TDataKitContextValue<T, R> => {\n const context = useContext(Context);\n if (!context) {\n throw new Error('useDataKitContext must be used within a DataKitProvider');\n }\n return context;\n };\n\n return { DataKitProvider, useDataKitContext, Context };\n};\n\n\nconst {\n DataKitProvider: DefaultDataKitProvider,\n useDataKitContext: useDefaultDataKitContext,\n Context: DefaultDataKitContext,\n} = createDataKitContext();\n\nexport {\n DefaultDataKitProvider as DataKitProvider,\n useDefaultDataKitContext as useDataKitContext,\n DefaultDataKitContext as DataKitContext,\n};\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../utils';\n\nfunction Table({ className, ...props }: React.ComponentProps<'table'>) {\n return (\n <div data-slot=\"table-container\" className=\"relative w-full overflow-x-auto\">\n <table\n data-slot=\"table\"\n className={cn('w-full caption-bottom text-sm', className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn('[&_tr]:border-b', className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n 'bg-gray-50/70 dark:bg-gray-900/40 border-t border-gray-200 dark:border-gray-800 font-medium [&>tr]:last:border-b-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n 'hover:bg-gray-50 dark:hover:bg-gray-900/50 data-[state=selected]:bg-gray-50 dark:data-[state=selected]:bg-gray-900/50 border-b border-gray-100 dark:border-gray-900 transition-colors',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n 'text-gray-900 dark:text-gray-100 h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n 'p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<'caption'>) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn('text-gray-500 dark:text-gray-400 mt-4 text-sm', className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","'use client';\n\nimport * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '../../utils';\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'peer border-gray-200 bg-white text-gray-900 dark:border-gray-800 dark:bg-gray-950 dark:text-gray-100 data-[state=checked]:bg-gray-900 data-[state=checked]:text-white dark:data-[state=checked]:bg-gray-100 dark:data-[state=checked]:text-gray-900 data-[state=checked]:border-gray-900 dark:data-[state=checked]:border-gray-100 focus-visible:border-gray-900 dark:focus-visible:border-gray-200 focus-visible:ring-black/20 dark:focus-visible:ring-white/20 aria-invalid:ring-red-500/20 dark:aria-invalid:ring-red-500/30 aria-invalid:border-red-500 size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","'use client';\n\nimport * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '../../utils';\n\nfunction Popover(\n props: React.ComponentProps<typeof PopoverPrimitive.Root>\n) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger(\n props: React.ComponentProps<typeof PopoverPrimitive.Trigger>\n) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n container,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content> & {\n container?: HTMLElement | null;\n}) {\n return (\n <PopoverPrimitive.Portal container={container ?? undefined}>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-100 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border border-gray-200 dark:border-gray-800 p-4 shadow-md outline-hidden',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor(\n props: React.ComponentProps<typeof PopoverPrimitive.Anchor>\n) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { cn } from '../../utils';\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n container,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content> & {\n container?: HTMLElement | null;\n}) {\n return (\n <DropdownMenuPrimitive.Portal container={container ?? undefined}>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-100 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-gray-200 dark:border-gray-800 p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-gray-50 dark:focus:bg-gray-900 focus:text-gray-900 dark:focus:text-gray-100 data-[variant=destructive]:text-red-600 dark:data-[variant=destructive]:text-red-500 data-[variant=destructive]:focus:bg-red-500/10 dark:data-[variant=destructive]:focus:bg-red-500/15 data-[variant=destructive]:focus:text-red-700 dark:data-[variant=destructive]:focus:text-red-400 data-[variant=destructive]:*:[svg]:!text-red-600 dark:data-[variant=destructive]:*:[svg]:!text-red-500 [&_svg:not([class*='text-'])]:text-gray-500 dark:[&_svg:not([class*='text-'])]:text-gray-400 relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-gray-50 dark:focus:bg-gray-900 focus:text-gray-900 dark:focus:text-gray-100 relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-gray-50 dark:focus:bg-gray-900 focus:text-gray-900 dark:focus:text-gray-100 relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-gray-100 dark:bg-gray-900 -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-gray-500 dark:text-gray-400 ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-gray-50 dark:focus:bg-gray-900 focus:text-gray-900 dark:focus:text-gray-100 data-[state=open]:bg-gray-50 dark:data-[state=open]:bg-gray-900 data-[state=open]:text-gray-900 dark:data-[state=open]:text-gray-100 [&_svg:not([class*='text-'])]:text-gray-500 dark:[&_svg:not([class*='text-'])]:text-gray-400 flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-100 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border border-gray-200 dark:border-gray-800 p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\nimport { cn } from \"../../utils\"\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from '../../utils';\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-black/20 dark:focus-visible:ring-white/20 focus-visible:ring-[3px] aria-invalid:ring-red-500/20 dark:aria-invalid:ring-red-500/30 aria-invalid:border-red-500\",\n {\n variants: {\n variant: {\n default: \"bg-gray-900 text-white hover:bg-gray-800 dark:bg-gray-100 dark:text-gray-900 dark:hover:bg-gray-200\",\n destructive:\n \"bg-red-600 text-white hover:bg-red-700 dark:bg-red-600 dark:hover:bg-red-500\",\n outline:\n \"border border-gray-200 bg-white text-gray-900 shadow-xs hover:bg-gray-50 dark:border-gray-800 dark:bg-gray-950 dark:text-gray-100 dark:hover:bg-gray-900\",\n secondary:\n \"bg-gray-100 text-gray-900 hover:bg-gray-200 dark:bg-gray-900 dark:text-gray-100 dark:hover:bg-gray-800\",\n ghost:\n \"hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-gray-900 dark:hover:text-gray-100\",\n link: \"text-gray-900 underline-offset-4 hover:underline dark:text-gray-100\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst Button = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }\n>(function Button(\n {\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n },\n ref\n) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n})\n\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","'use client';\r\n\r\nimport * as React from 'react';\r\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react';\r\n\r\nimport { cn } from '../../utils';\r\nimport { buttonVariants, type Button } from './button';\r\n\r\nfunction Pagination({ className, ...props }: React.ComponentProps<'nav'>) {\r\n return (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"pagination\"\r\n data-slot=\"pagination\"\r\n className={cn('flex', className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction PaginationContent({\r\n className,\r\n ...props\r\n}: React.ComponentProps<'ul'>) {\r\n return (\r\n <ul\r\n data-slot=\"pagination-content\"\r\n className={cn('flex flex-row items-center gap-1', className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction PaginationItem({ ...props }: React.ComponentProps<'li'>) {\r\n return <li data-slot=\"pagination-item\" {...props} />;\r\n}\r\n\r\ntype PaginationLinkProps = {\r\n isActive?: boolean;\r\n} & Pick<React.ComponentProps<typeof Button>, 'size' | 'disabled' | 'onClick' | 'type'> &\r\n Omit<React.ComponentProps<'button'>, 'type' | 'onClick' | 'disabled'>;\r\n\r\nfunction PaginationLink({\r\n className,\r\n isActive,\r\n size = 'icon',\r\n type = 'button',\r\n ...props\r\n}: PaginationLinkProps) {\r\n return (\r\n <button\r\n aria-current={isActive ? 'page' : undefined}\r\n data-slot=\"pagination-link\"\r\n data-active={isActive ? 'true' : 'false'}\r\n className={cn(\r\n buttonVariants({\r\n variant: isActive ? 'outline' : 'ghost',\r\n size,\r\n }),\r\n className\r\n )}\r\n type={type}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction PaginationPrevious({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) {\r\n return (\r\n <PaginationLink\r\n aria-label=\"Go to previous page\"\r\n size=\"default\"\r\n className={cn('gap-1 px-2.5 sm:pl-2.5', className)}\r\n {...props}\r\n >\r\n <ChevronLeft className=\"size-4\" aria-hidden=\"true\" />\r\n <span className=\"hidden sm:block\">Previous</span>\r\n </PaginationLink>\r\n );\r\n}\r\n\r\nfunction PaginationNext({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) {\r\n return (\r\n <PaginationLink\r\n aria-label=\"Go to next page\"\r\n size=\"default\"\r\n className={cn('gap-1 px-2.5 sm:pr-2.5', className)}\r\n {...props}\r\n >\r\n <span className=\"hidden sm:block\">Next</span>\r\n <ChevronRight className=\"size-4\" aria-hidden=\"true\" />\r\n </PaginationLink>\r\n );\r\n}\r\n\r\nfunction PaginationEllipsis({\r\n className,\r\n ...props\r\n}: React.ComponentProps<'span'>) {\r\n return (\r\n <span\r\n aria-hidden=\"true\"\r\n data-slot=\"pagination-ellipsis\"\r\n className={cn('flex size-9 items-center justify-center', className)}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"size-4\" aria-hidden=\"true\" />\r\n <span className=\"sr-only\">More pages</span>\r\n </span>\r\n );\r\n}\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationPrevious,\r\n PaginationNext,\r\n PaginationEllipsis,\r\n};\r\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from '../../utils';\n\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-gray-200 dark:border-gray-800 data-[placeholder]:text-gray-500 dark:data-[placeholder]:text-gray-400 [&_svg:not([class*='text-'])]:text-gray-500 dark:[&_svg:not([class*='text-'])]:text-gray-400 focus-visible:border-gray-900 dark:focus-visible:border-gray-200 focus-visible:ring-black/20 dark:focus-visible:ring-white/20 aria-invalid:ring-red-500/20 dark:aria-invalid:ring-red-500/30 aria-invalid:border-red-500 bg-white dark:bg-gray-950 hover:bg-gray-50 dark:hover:bg-gray-900 flex w-fit items-center justify-between gap-2 rounded-md border px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n container,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content> & {\n container?: HTMLElement | null;\n}) {\n return (\n <SelectPrimitive.Portal container={container ?? undefined}>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-100 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-gray-200 dark:border-gray-800 shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-gray-500 dark:text-gray-400 px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-gray-50 dark:focus:bg-gray-900 focus:text-gray-900 dark:focus:text-gray-100 [&_svg:not([class*='text-'])]:text-gray-500 dark:[&_svg:not([class*='text-'])]:text-gray-400 relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span\n data-slot=\"select-item-indicator\"\n className=\"absolute right-2 flex size-3.5 items-center justify-center\"\n >\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-gray-100 dark:bg-gray-900 pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","'use client';\n\nimport React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { ArrowDown, ArrowUp, ChevronLeft, ChevronRight, Filter, Loader2, MoreHorizontal } from 'lucide-react';\nimport { useDataKit } from '../hooks/useDataKit';\nimport { useSelectionWithTotal } from '../hooks/useSelection';\nimport { usePagination } from '../hooks/usePagination';\nimport {\n Button,\n Checkbox,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Popover,\n PopoverContent,\n PopoverTrigger,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Switch,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from './ui';\nimport type {\n TDataKitInput,\n TDataKitResult,\n TDataKitComponentColumn,\n TDataKitFilterItem,\n TDataKitBulkAction,\n TDataKitController,\n TDataKitMemoryMode,\n TExtractDataKitItemType,\n\n TDataKitSelectableItem,\n} from '../../types';\n\n\nconst DataKitRoot = <\n TAction extends (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TDataKitSelectableItem>>,\n TRowState = unknown\n>(props: Readonly<{\n action: TAction;\n query?: Record<string, unknown>;\n\n table: TDataKitComponentColumn<TExtractDataKitItemType<TAction>, TRowState>[];\n filters?: TDataKitFilterItem[];\n selectable?: {\n enabled: boolean;\n actions?: Record<string, TDataKitBulkAction<TExtractDataKitItemType<TAction>>>;\n };\n state?: TRowState;\n limit?: { default: number };\n className?: string;\n autoFetch?: boolean;\n debounce?: number;\n bordered?: boolean | 'rounded';\n refetchInterval?: number;\n memory?: TDataKitMemoryMode;\n pagination?: 'SIMPLE' | 'NUMBER';\n controller?: React.MutableRefObject<TDataKitController<TExtractDataKitItemType<TAction>> | null>;\n}>) => {\n // ** Deconstruct Props\n const {\n action,\n query,\n table: columns,\n filters = [],\n selectable,\n state: initialState,\n limit: limitConfig,\n className,\n autoFetch = true,\n debounce = 300,\n bordered,\n refetchInterval,\n memory: memoryMode = 'memory',\n pagination: paginationType = 'NUMBER',\n controller,\n } = props;\n\n // ** Type\n type TItem = TExtractDataKitItemType<TAction>;\n\n // ** Ref\n const tableRef = useRef<HTMLDivElement>(null);\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n // ** State\n const [isVisible, setIsVisible] = useState(false);\n const [isFilterOpen, setIsFilterOpen] = useState(false);\n const [actionLoading, setActionLoading] = useState<string | null>(null);\n const [actionsMenuOpen, setActionsMenuOpen] = useState(false);\n const [rowStates, setRowStates] = useState<Map<string | number, TRowState>>(new Map());\n\n // ** Variable\n const overlayContainer = tableRef.current;\n\n // ** Helper functions for row state management\n const getRowState = useCallback((rowId: string | number): TRowState => {\n return rowStates.get(rowId) ?? (initialState as TRowState);\n }, [rowStates, initialState]);\n\n const setRowState = useCallback((rowId: string | number, updater: React.SetStateAction<TRowState>) => {\n setRowStates(prev => {\n const current = prev.get(rowId) ?? (initialState as TRowState);\n const newState = typeof updater === 'function'\n ? (updater as (prevState: TRowState) => TRowState)(current)\n : updater;\n const newMap = new Map(prev);\n newMap.set(rowId, newState);\n return newMap;\n });\n }, [initialState]);\n\n // ** Hooks\n const dataKit = useDataKit<unknown, TItem>({\n action: action as unknown as (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TItem>>,\n filters,\n autoFetch,\n debounce,\n memory: memoryMode,\n initial: {\n limit: limitConfig?.default ?? 10,\n query: query ?? {},\n sorts: columns.reduce<{ path: string; value: 1 | -1 }[]>((acc, col) => {\n if (col.sortable && col.sortable.default !== 0) {\n acc.push({ path: col.sortable.path, value: col.sortable.default as 1 | -1 });\n }\n return acc;\n }, []),\n filter: filters.reduce<Record<string, unknown>>((acc, f) => {\n if (f.defaultValue !== undefined) acc[f.id] = f.defaultValue;\n return acc;\n }, {}),\n },\n });\n const pagination = usePagination({ page: dataKit.page, limit: dataKit.limit, total: dataKit.total, siblingCount: 1 });\n const selection = useSelectionWithTotal<string | number>(dataKit.items.map((item) => item.id));\n\n // ** Variable\n const selectedCount = selection.selectedIds.size;\n const colSpan = columns.length + (selectable?.enabled ? 1 : 0);\n const limitOptions = React.useMemo(() => {\n const standardOptions = [10, 25, 50, 100];\n const currentLimit = dataKit.limit;\n if (!standardOptions.includes(currentLimit)) {\n return [...standardOptions, currentLimit].sort((a, b) => a - b);\n }\n return standardOptions;\n }, [dataKit.limit]);\n\n // ** Handlers\n const handleSort = useCallback((path: string) => {\n const currentSort = dataKit.sorts.find((s) => s.path === path);\n const nextValue = currentSort?.value === 1 ? -1 : currentSort?.value === -1 ? null : 1;\n dataKit.actions.setSort(path, nextValue);\n }, [dataKit.sorts, dataKit.actions]);\n\n const handleSelectionAction = useCallback(async (actionKey: string) => {\n if (!selectable?.actions?.[actionKey] || actionLoading) return;\n setActionLoading(actionKey);\n setActionsMenuOpen(false);\n try {\n const selectedItems = dataKit.items.filter((item) => selection.isSelected(item.id));\n const result = await selectable.actions[actionKey].function(selectedItems);\n if (result[0]) {\n const data = result[1] as { deselectAll?: boolean };\n if (data.deselectAll) selection.deselectAll();\n await dataKit.actions.refresh();\n }\n } catch (error) {\n console.error('Selection action failed:', error);\n } finally {\n setActionLoading(null);\n }\n }, [selectable?.actions, actionLoading, dataKit.items, selection, dataKit.actions]);\n\n const handleResetFilters = useCallback(() => {\n filters.forEach((f) => {\n dataKit.actions.setFilter(f.id, f.defaultValue ?? (f.type === 'BOOLEAN' ? false : ''));\n });\n }, [filters, dataKit.actions]);\n\n const getSortFor = useCallback((path: string) => dataKit.sorts.find((s) => s.path === path)?.value ?? null, [dataKit.sorts]);\n\n // ** Effects\n useEffect(() => {\n if (controller) {\n controller.current = {\n itemPush: dataKit.actions.itemPush,\n refetchData: dataKit.actions.refresh,\n deleteBulk: dataKit.actions.deleteBulk,\n getSelectedItems: () => dataKit.items.filter((item) => selection.isSelected(item.id)),\n clearSelection: () => selection.deselectAll(),\n };\n }\n }, [controller, dataKit.actions, dataKit.items, selection]);\n\n useEffect(() => {\n if (!tableRef.current || !refetchInterval) return;\n const observer = new IntersectionObserver(\n (entries) => entries[0] && setIsVisible(entries[0].isIntersecting),\n { threshold: 0.1 }\n );\n const currentRef = tableRef.current;\n observer.observe(currentRef);\n return () => { if (currentRef) observer.unobserve(currentRef); };\n }, [refetchInterval]);\n\n useEffect(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n if (refetchInterval && isVisible) {\n intervalRef.current = setInterval(dataKit.actions.refresh, refetchInterval);\n }\n return () => { if (intervalRef.current) clearInterval(intervalRef.current); };\n }, [refetchInterval, isVisible, dataKit.actions]);\n\n useEffect(() => { selection.deselectAll(); }, [dataKit.items.length]);\n\n // ** Render\n return (\n <div ref={tableRef} className={`space-y-3 ${className ?? ''}`}>\n {/* Toolbar */}\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n {filters.length > 0 && (\n <Popover open={isFilterOpen} onOpenChange={setIsFilterOpen}>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n <Filter className=\"mr-1.5 size-4\" />\n Filters\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"w-80\" container={overlayContainer}>\n <div className=\"grid gap-3\">\n {filters.map((f) => (\n <div key={f.id} className=\"grid gap-1.5\">\n <label className=\"text-sm font-medium\">{f.label}</label>\n {f.type === 'TEXT' && (\n <input\n type=\"text\"\n className=\"h-9 w-full rounded-md border bg-transparent px-3 text-sm outline-none focus:ring-2 focus:ring-ring\"\n placeholder={f.placeholder}\n value={(dataKit.filter[f.id] as string) ?? ''}\n onChange={(e) => dataKit.actions.setFilter(f.id, e.target.value)}\n />\n )}\n {f.type === 'SELECT' && (\n <Select\n value={String(dataKit.filter[f.id] || '__all__')}\n onValueChange={(v) => dataKit.actions.setFilter(f.id, v === '__all__' ? '' : v)}\n >\n <SelectTrigger><SelectValue /></SelectTrigger>\n <SelectContent container={overlayContainer}>\n <SelectItem value=\"__all__\">All</SelectItem>\n {f.dataset?.map((d) => (\n <SelectItem key={d.id} value={d.id}>{d.label}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n {f.type === 'BOOLEAN' && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">{f.placeholder ?? 'Enable'}</span>\n <Switch\n checked={Boolean(dataKit.filter[f.id])}\n onCheckedChange={(c) => dataKit.actions.setFilter(f.id, c)}\n />\n </div>\n )}\n </div>\n ))}\n </div>\n <div className=\"mt-4 flex justify-between border-t pt-3\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleResetFilters}>Reset</Button>\n <Button size=\"sm\" onClick={() => setIsFilterOpen(false)}>Done</Button>\n </div>\n </PopoverContent>\n </Popover>\n )}\n </div>\n\n <div className=\"flex items-center gap-1\">\n <span className=\"mr-2 text-sm text-muted-foreground\">\n {dataKit.items.length} of {dataKit.total}\n </span>\n <Select value={String(dataKit.limit)} onValueChange={(v) => dataKit.actions.setLimit(Number(v))} disabled={dataKit.state.isLoading}>\n <SelectTrigger className=\"w-16\"><SelectValue /></SelectTrigger>\n <SelectContent container={overlayContainer}>\n {limitOptions.map((v) => (\n <SelectItem key={v} value={String(v)}>{v}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n {/* Table */}\n <div className={`overflow-hidden border border-gray-200 dark:border-gray-800 ${bordered === 'rounded' ? 'rounded-lg' : bordered ? '' : 'rounded-lg'}`}>\n <Table>\n <TableHeader>\n <TableRow>\n {selectable?.enabled && (\n <TableHead className=\"w-12\">\n <div className=\"flex items-center gap-2\">\n <Checkbox\n checked={selection.isIndeterminate ? 'indeterminate' : selection.isAllSelected}\n onCheckedChange={() => selection.toggleAll()}\n />\n {selectable.actions && Object.keys(selectable.actions).length > 0 && (\n <DropdownMenu open={actionsMenuOpen} onOpenChange={setActionsMenuOpen}>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-6\"\n disabled={selectedCount === 0 || !!actionLoading}\n >\n {actionLoading ? <Loader2 className=\"size-4 animate-spin\" /> : <MoreHorizontal className=\"size-4\" />}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" container={overlayContainer}>\n {Object.entries(selectable.actions).map(([key, action]) => (\n <DropdownMenuItem key={key} disabled={!!actionLoading} onSelect={() => handleSelectionAction(key)}>\n {actionLoading === key ? 'Working…' : action.name}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </TableHead>\n )}\n {columns.map((col, idx) => (\n <React.Fragment key={idx}>\n {col.sortable ? (\n <TableHead {...(React.isValidElement(col.head) ? (col.head.props as object) : {})}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-3\"\n onClick={() => handleSort(col.sortable!.path)}\n >\n {React.isValidElement(col.head) ? (col.head as React.ReactElement<{ children?: React.ReactNode }>).props.children : col.head}\n {getSortFor(col.sortable!.path) === 1 && <ArrowUp className=\"ml-1 size-4\" />}\n {getSortFor(col.sortable!.path) === -1 && <ArrowDown className=\"ml-1 size-4\" />}\n </Button>\n </TableHead>\n ) : (\n col.head\n )}\n </React.Fragment>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {dataKit.state.isLoading ? (\n <TableRow>\n <TableCell colSpan={colSpan} className=\"h-24 text-center\">\n <Loader2 className=\"mx-auto size-5 animate-spin\" />\n </TableCell>\n </TableRow>\n ) : dataKit.state.error ? (\n <TableRow>\n <TableCell colSpan={colSpan} className=\"h-24 text-center text-red-500\">\n Error: {dataKit.state.error.message}\n </TableCell>\n </TableRow>\n ) : dataKit.items.length === 0 ? (\n <TableRow>\n <TableCell colSpan={colSpan} className=\"h-24 text-center text-muted-foreground\">\n No results found.\n </TableCell>\n </TableRow>\n ) : (\n dataKit.items.map((item, idx) => {\n const rowId = item.id ?? idx;\n return (\n <TableRow key={rowId}>\n {selectable?.enabled && (\n <TableCell>\n <Checkbox\n checked={selection.isSelected(item.id)}\n onCheckedChange={() => selection.toggle(item.id)}\n />\n </TableCell>\n )}\n {columns.map((col, colIdx) => (\n <React.Fragment key={colIdx}>\n {col.body({\n item,\n index: idx,\n state: getRowState(rowId),\n setState: (updater) => setRowState(rowId, updater),\n setItem: (updatedItem) => dataKit.actions.setItemAt(idx, updatedItem),\n deleteItem: () => dataKit.actions.deleteItemAt(idx),\n })}\n </React.Fragment>\n ))}\n </TableRow>\n );\n })\n )}\n </TableBody>\n </Table>\n </div>\n\n {/* Footer */}\n <div className=\"flex items-center gap-4 justify-between\">\n <div className=\"min-w-[140px]\">\n <p className=\"text-sm text-muted-foreground\">\n Page {dataKit.page} of {pagination.totalPages}\n </p>\n {selectable?.enabled && selectedCount > 0 && (\n <p className=\"text-sm text-foreground\">\n {selectedCount} selected\n </p>\n )}\n </div>\n <div className=\"flex-1\" />\n <div className=\"flex justify-end w-full\">\n {paginationType === 'SIMPLE' ? (\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n >\n <ChevronLeft className=\"size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n >\n <ChevronRight className=\"size-4\" />\n </Button>\n </div>\n ) : (\n <Pagination className=\"w-auto\">\n <PaginationContent>\n <PaginationItem className=\"hidden sm:block\">\n <PaginationPrevious\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n />\n </PaginationItem>\n <PaginationItem className=\"sm:hidden\">\n <PaginationLink\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n >\n <ChevronLeft className=\"size-4\" />\n </PaginationLink>\n </PaginationItem>\n {pagination.pages.map((pageNum, idx) => (\n <PaginationItem key={idx} className=\"hidden sm:block\">\n {pageNum === 'ellipsis' ? (\n <PaginationEllipsis />\n ) : (\n <PaginationLink\n isActive={pageNum === dataKit.page}\n disabled={dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(pageNum as number)}\n >\n {pageNum}\n </PaginationLink>\n )}\n </PaginationItem>\n ))}\n <PaginationItem className=\"sm:hidden\">\n <span className=\"flex size-9 items-center justify-center text-sm\">\n {dataKit.page}\n </span>\n </PaginationItem>\n <PaginationItem className=\"hidden sm:block\">\n <PaginationNext\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n />\n </PaginationItem>\n <PaginationItem className=\"sm:hidden\">\n <PaginationLink\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n >\n <ChevronRight className=\"size-4\" />\n </PaginationLink>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport const DataKitTable = Object.assign(DataKitRoot, {\n Cell: TableCell,\n Head: TableHead,\n});\n","'use client';\n\nimport React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { ChevronLeft, ChevronRight, Filter, Loader2 } from 'lucide-react';\nimport { useDataKit } from '../hooks/useDataKit';\nimport { usePagination } from '../hooks/usePagination';\nimport {\n Button,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Popover,\n PopoverContent,\n PopoverTrigger,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Switch,\n} from './ui';\nimport type {\n TDataKitInput,\n TDataKitResult,\n TDataKitFilterItem,\n TDataKitSelectableItem,\n TDataKitMemoryMode,\n TExtractDataKitItemType,\n TUseDataKitReturn,\n TDataKitRef,\n} from '../../types';\n\n\nconst DataKitInner = <\n TAction extends (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TDataKitSelectableItem>>\n>(props: Readonly<{\n action: TAction;\n query?: Record<string, unknown>;\n filters?: TDataKitFilterItem[];\n limit?: { default: number };\n defaultSort?: { path: string; value: 1 | -1 }[];\n className?: string;\n autoFetch?: boolean;\n debounce?: number;\n refetchInterval?: number;\n memory?: TDataKitMemoryMode;\n manual?: boolean;\n pagination?: 'SIMPLE' | 'NUMBER';\n children: (dataKit: TUseDataKitReturn<unknown, TExtractDataKitItemType<TAction>>) => React.ReactNode;\n}>, ref: React.ForwardedRef<TDataKitRef<unknown, TExtractDataKitItemType<TAction>>>) => {\n // ** Deconstruct Props\n const {\n action,\n query,\n filters = [],\n limit: limitConfig,\n defaultSort = [],\n className,\n autoFetch = true,\n debounce = 300,\n refetchInterval,\n memory: memoryMode = 'memory',\n manual = false,\n pagination: paginationType = 'NUMBER',\n children,\n } = props;\n\n // ** Type\n type TItem = TExtractDataKitItemType<TAction>;\n\n // ** Ref\n const containerRef = useRef<HTMLDivElement>(null);\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n // ** State\n const [isVisible, setIsVisible] = useState(false);\n const [isFilterOpen, setIsFilterOpen] = useState(false);\n\n // ** Variable\n const overlayContainer = containerRef.current;\n\n // ** Hooks\n const dataKit = useDataKit<unknown, TItem>({\n action: action as unknown as (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TItem>>,\n filters,\n autoFetch,\n debounce,\n memory: memoryMode,\n initial: {\n limit: limitConfig?.default ?? 10,\n query: query ?? {},\n sorts: defaultSort,\n filter: filters.reduce<Record<string, unknown>>((acc, f) => {\n if (f.defaultValue !== undefined) acc[f.id] = f.defaultValue;\n return acc;\n }, {}),\n },\n });\n const pagination = usePagination({ page: dataKit.page, limit: dataKit.limit, total: dataKit.total, siblingCount: 1 });\n const limitOptions = React.useMemo(() => {\n const standardOptions = [10, 25, 50, 100];\n const currentLimit = dataKit.limit;\n if (!standardOptions.includes(currentLimit)) {\n return [...standardOptions, currentLimit].sort((a, b) => a - b);\n }\n return standardOptions;\n }, [dataKit.limit]);\n\n // ** Imperative Handle\n React.useImperativeHandle(ref, () => dataKit as unknown as TDataKitRef<unknown, TItem>, [dataKit]);\n\n // ** Handlers\n const handleResetFilters = useCallback(() => {\n filters.forEach((f) => {\n dataKit.actions.setFilter(f.id, f.defaultValue ?? (f.type === 'BOOLEAN' ? false : ''));\n });\n }, [filters, dataKit.actions]);\n\n // ** Effects\n useEffect(() => {\n if (!containerRef.current || !refetchInterval) return;\n const observer = new IntersectionObserver(\n (entries) => entries[0] && setIsVisible(entries[0].isIntersecting),\n { threshold: 0.1 }\n );\n const currentRef = containerRef.current;\n observer.observe(currentRef);\n return () => { if (currentRef) observer.unobserve(currentRef); };\n }, [refetchInterval]);\n\n useEffect(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n if (refetchInterval && isVisible) {\n intervalRef.current = setInterval(dataKit.actions.refresh, refetchInterval);\n }\n return () => { if (intervalRef.current) clearInterval(intervalRef.current); };\n }, [refetchInterval, isVisible, dataKit.actions]);\n\n // ** Render\n return (\n <div ref={containerRef} className={`space-y-3 ${className ?? ''}`}>\n {/* Toolbar */}\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n {filters.length > 0 && (\n <Popover open={isFilterOpen} onOpenChange={setIsFilterOpen}>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n <Filter className=\"mr-1.5 size-4\" />\n Filters\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"w-80\" container={overlayContainer}>\n <div className=\"grid gap-3\">\n {filters.map((f) => (\n <div key={f.id} className=\"grid gap-1.5\">\n <label className=\"text-sm font-medium\">{f.label}</label>\n {f.type === 'TEXT' && (\n <input\n type=\"text\"\n className=\"h-9 w-full rounded-md border bg-transparent px-3 text-sm outline-none focus:ring-2 focus:ring-ring\"\n placeholder={f.placeholder}\n value={(dataKit.filter[f.id] as string) ?? ''}\n onChange={(e) => dataKit.actions.setFilter(f.id, e.target.value)}\n />\n )}\n {f.type === 'SELECT' && (\n <Select\n value={String(dataKit.filter[f.id] || '__all__')}\n onValueChange={(v) => dataKit.actions.setFilter(f.id, v === '__all__' ? '' : v)}\n >\n <SelectTrigger><SelectValue /></SelectTrigger>\n <SelectContent container={overlayContainer}>\n <SelectItem value=\"__all__\">All</SelectItem>\n {f.dataset?.map((d) => (\n <SelectItem key={d.id} value={d.id}>{d.label}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n {f.type === 'BOOLEAN' && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">{f.placeholder ?? 'Enable'}</span>\n <Switch\n checked={Boolean(dataKit.filter[f.id])}\n onCheckedChange={(c) => dataKit.actions.setFilter(f.id, c)}\n />\n </div>\n )}\n </div>\n ))}\n </div>\n <div className=\"mt-4 flex justify-between border-t pt-3\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleResetFilters}>Reset</Button>\n <Button size=\"sm\" onClick={() => setIsFilterOpen(false)}>Done</Button>\n </div>\n </PopoverContent>\n </Popover>\n )}\n </div>\n\n <div className=\"flex items-center gap-1\">\n <span className=\"mr-2 text-sm text-muted-foreground\">\n {dataKit.items.length} of {dataKit.total}\n </span>\n <Select value={String(dataKit.limit)} onValueChange={(v) => dataKit.actions.setLimit(Number(v))} disabled={dataKit.state.isLoading}>\n <SelectTrigger className=\"w-16\"><SelectValue /></SelectTrigger>\n <SelectContent container={overlayContainer}>\n {limitOptions.map((v) => (\n <SelectItem key={v} value={String(v)}>{v}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n {/* Content (user-provided) */}\n {manual ? (\n children(dataKit)\n ) : (\n <div className=\"min-h-[200px]\">\n {dataKit.state.isLoading ? (\n <div className=\"flex h-48 items-center justify-center\">\n <Loader2 className=\"size-6 animate-spin text-muted-foreground\" />\n </div>\n ) : dataKit.items.length === 0 ? (\n <div className=\"flex h-48 items-center justify-center text-muted-foreground\">\n No results found.\n </div>\n ) : (\n children(dataKit)\n )}\n </div>\n )}\n\n {/* Footer */}\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm text-muted-foreground\">\n Page {dataKit.page} of {pagination.totalPages}\n </p>\n {paginationType === 'SIMPLE' ? (\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n >\n <ChevronLeft className=\"size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n >\n <ChevronRight className=\"size-4\" />\n </Button>\n </div>\n ) : (\n <Pagination className=\"mx-0 w-auto\">\n <PaginationContent>\n <PaginationItem className=\"hidden sm:block\">\n <PaginationPrevious\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n />\n </PaginationItem>\n <PaginationItem className=\"sm:hidden\">\n <PaginationLink\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n >\n <ChevronLeft className=\"size-4\" />\n </PaginationLink>\n </PaginationItem>\n {pagination.pages.map((pageNum, idx) => (\n <PaginationItem key={idx} className=\"hidden sm:block\">\n {pageNum === 'ellipsis' ? (\n <PaginationEllipsis />\n ) : (\n <PaginationLink\n isActive={pageNum === dataKit.page}\n disabled={dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(pageNum)}\n >\n {pageNum}\n </PaginationLink>\n )}\n </PaginationItem>\n ))}\n <PaginationItem className=\"sm:hidden\">\n <span className=\"flex size-9 items-center justify-center text-sm\">\n {dataKit.page}\n </span>\n </PaginationItem>\n <PaginationItem className=\"hidden sm:block\">\n <PaginationNext\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n />\n </PaginationItem>\n <PaginationItem className=\"sm:hidden\">\n <PaginationLink\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n >\n <ChevronRight className=\"size-4\" />\n </PaginationLink>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n )}\n </div>\n </div>\n );\n};\n\nexport const DataKit = React.forwardRef(DataKitInner) as unknown as <\n TAction extends (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TDataKitSelectableItem>>\n>(\n props: Readonly<{\n action: TAction;\n query?: Record<string, unknown>;\n filters?: TDataKitFilterItem[];\n limit?: { default: number };\n defaultSort?: { path: string; value: 1 | -1 }[];\n className?: string;\n autoFetch?: boolean;\n debounce?: number;\n refetchInterval?: number;\n memory?: TDataKitMemoryMode;\n manual?: boolean;\n pagination?: 'SIMPLE' | 'NUMBER';\n children: (dataKit: TUseDataKitReturn<unknown, TExtractDataKitItemType<TAction>>) => React.ReactNode;\n ref?: React.Ref<TDataKitRef<unknown, TExtractDataKitItemType<TAction>>>;\n }>\n) => React.ReactElement;\n"]}