@pstdio/ui 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{MermaidComponent-BPiVFNYK.js → MermaidComponent-AmAjWLPm.js} +3 -3
- package/dist/{MermaidComponent-BPiVFNYK.js.map → MermaidComponent-AmAjWLPm.js.map} +1 -1
- package/dist/browser-storage-DPtOQJx0.js +127 -0
- package/dist/browser-storage-DPtOQJx0.js.map +1 -0
- package/dist/chat-ui.js +19 -20
- package/dist/chat-ui.js.map +1 -1
- package/dist/components/data-table/data-table-header.d.ts +3 -1
- package/dist/components/data-table/edit-mode-data-table-body.d.ts +29 -0
- package/dist/components/data-table/edit-mode-data-table-cell.d.ts +15 -0
- package/dist/components/data-table/edit-mode-data-table-editors.d.ts +19 -0
- package/dist/components/data-table/edit-mode-data-table-header.d.ts +23 -0
- package/dist/components/data-table/edit-mode-data-table-selection.d.ts +12 -0
- package/dist/components/data-table/edit-mode-data-table.d.ts +2 -0
- package/dist/components/data-table/edit-mode-story.d.ts +5 -0
- package/dist/components/data-table/index.d.ts +1 -1
- package/dist/components/data-table/pagination-footer.d.ts +8 -5
- package/dist/components/data-table/types.d.ts +24 -0
- package/dist/components/rich-text/index.d.ts +2 -0
- package/dist/components/rich-text/markdown-editor/markdown-editor.d.ts +7 -0
- package/dist/components/rich-text/markdown-editor/markdown-table.story-fixture.d.ts +3 -0
- package/dist/components/rich-text/markdown-editor/plugins/MarkdownSectionNavigationPlugin.d.ts +8 -0
- package/dist/components/rich-text/markdown-editor/plugins/MarkdownSlashCommandPlugin.d.ts +1 -0
- package/dist/components/rich-text/markdown-editor/plugins/markdown-history-plugin.d.ts +1 -0
- package/dist/components/rich-text/markdown-editor/plugins/markdown-section-navigation.d.ts +20 -0
- package/dist/components/rich-text/rich-message/rich-message.d.ts +2 -0
- package/dist/components/rich-text/shared/markdown-ast.d.ts +6 -0
- package/dist/components/rich-text/shared/markdown-codec.d.ts +3 -0
- package/dist/components/rich-text/shared/markdown-export.d.ts +2 -0
- package/dist/components/rich-text/shared/markdown-import.d.ts +2 -0
- package/dist/components/rich-text/shared/markdown-inline.d.ts +5 -0
- package/dist/components/rich-text/shared/markdown-table.d.ts +41 -0
- package/dist/components/rich-text/shared/markdown-url-context.d.ts +9 -0
- package/dist/components/rich-text/shared/markdown-url.d.ts +3 -0
- package/dist/components/rich-text/shared/nodes/DataTableNode.d.ts +13 -11
- package/dist/components/rich-text/shared/nodes/MarkdownImageNode.d.ts +35 -0
- package/dist/components/rich-text/shared/nodes/MarkdownLinkNode.d.ts +18 -0
- package/dist/components/rich-text/shared/nodes/RawHtmlNode.d.ts +31 -0
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/floating-toolbar-buttons.d.ts +4 -2
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/resolve-block-type.d.ts +1 -1
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.d.ts +1 -1
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +1 -0
- package/dist/components/rich-text/shared/transformers/markdown-transformers.d.ts +2 -3
- package/dist/data-table.js +723 -923
- package/dist/data-table.js.map +1 -1
- package/dist/diff.js +4 -4
- package/dist/edit-mode-data-table-4GMiDy75.js +775 -0
- package/dist/edit-mode-data-table-4GMiDy75.js.map +1 -0
- package/dist/editor-config-Dyh8n5A2.js +2416 -0
- package/dist/editor-config-Dyh8n5A2.js.map +1 -0
- package/dist/index.js +142 -144
- package/dist/index.js.map +1 -1
- package/dist/{kanban-renderer-toolbar-Bcj_N1qr.js → kanban-renderer-toolbar-BcUZvGyY.js} +359 -361
- package/dist/kanban-renderer-toolbar-BcUZvGyY.js.map +1 -0
- package/dist/kanban-renderer.js +28 -27
- package/dist/kanban-renderer.js.map +1 -1
- package/dist/{lazy-markdown-editor-DwhqQ-NN.js → lazy-markdown-editor-CWSREEhf.js} +2 -2
- package/dist/{lazy-markdown-editor-DwhqQ-NN.js.map → lazy-markdown-editor-CWSREEhf.js.map} +1 -1
- package/dist/{list-row-BtoVJpFs.js → list-row-B8L4TGsh.js} +2 -2
- package/dist/{list-row-BtoVJpFs.js.map → list-row-B8L4TGsh.js.map} +1 -1
- package/dist/{mermaid-renderer-DZo3qj6D.js → mermaid-renderer-H3IhLqnQ.js} +3 -3
- package/dist/{mermaid-renderer-DZo3qj6D.js.map → mermaid-renderer-H3IhLqnQ.js.map} +1 -1
- package/dist/mermaid.js +1 -1
- package/dist/number-input-WUfejtNx.js +343 -0
- package/dist/number-input-WUfejtNx.js.map +1 -0
- package/dist/param-editor-field-C8zRDStn.js +2845 -0
- package/dist/param-editor-field-C8zRDStn.js.map +1 -0
- package/dist/{param-editor-XRjSu6MT.js → param-editor-w3xH-t8A.js} +2 -2
- package/dist/{param-editor-XRjSu6MT.js.map → param-editor-w3xH-t8A.js.map} +1 -1
- package/dist/rich-message-jZ2oPQhU.js +658 -0
- package/dist/rich-message-jZ2oPQhU.js.map +1 -0
- package/dist/rich-text.js +182 -110
- package/dist/rich-text.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/theme/recipes/button.d.ts +11 -0
- package/dist/{theme-7PDdD9OD.js → theme-J8K8KbZi.js} +12 -1
- package/dist/theme-J8K8KbZi.js.map +1 -0
- package/dist/{theme-preference-DOzHx64J.js → theme-preference-DyymrYpR.js} +2 -2
- package/dist/{theme-preference-DOzHx64J.js.map → theme-preference-DyymrYpR.js.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{tree-list-B2L0cTj2.js → tree-list-CC13pOYi.js} +2 -2
- package/dist/{tree-list-B2L0cTj2.js.map → tree-list-CC13pOYi.js.map} +1 -1
- package/package.json +9 -1
- package/dist/browser-storage-BinyFNJX.js +0 -40
- package/dist/browser-storage-BinyFNJX.js.map +0 -1
- package/dist/checkbox-B2zYVemL.js +0 -70
- package/dist/checkbox-B2zYVemL.js.map +0 -1
- package/dist/components/data-table/editable-cells-story.d.ts +0 -9
- package/dist/kanban-renderer-toolbar-Bcj_N1qr.js.map +0 -1
- package/dist/markdown-DDd2ESoH.js +0 -743
- package/dist/markdown-DDd2ESoH.js.map +0 -1
- package/dist/markdown-editor-CYVkzt8t.js +0 -741
- package/dist/markdown-editor-CYVkzt8t.js.map +0 -1
- package/dist/param-editor-field-B9lEPq8c.js +0 -3028
- package/dist/param-editor-field-B9lEPq8c.js.map +0 -1
- package/dist/resource-badge-CuItchgL.js +0 -98
- package/dist/resource-badge-CuItchgL.js.map +0 -1
- package/dist/rich-message--eRzjWYK.js +0 -730
- package/dist/rich-message--eRzjWYK.js.map +0 -1
- package/dist/scroll-area-BMbg1WcD.js +0 -91
- package/dist/scroll-area-BMbg1WcD.js.map +0 -1
- package/dist/theme-7PDdD9OD.js.map +0 -1
package/dist/data-table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.js","sources":["../src/components/data-table/categorical-color-cell.tsx","../src/components/data-table/color-cell-style.ts","../src/components/data-table/color-scale-cell.tsx","../src/components/data-table/helpers.tsx","../src/components/data-table/friendly-json-display.tsx","../src/components/data-table/json-cell.tsx","../src/components/data-table/build-columns.tsx","../src/components/data-table/data-table-column-menu.tsx","../src/components/data-table/data-table-header.tsx","../src/components/data-table/data-table-state.ts","../src/components/data-table/data-table-stat-chart.tsx","../src/components/data-table/data-table-stats.ts","../src/components/data-table/data-table-stats-row.tsx","../src/components/data-table/data-table-table-parts.tsx","../src/components/data-table/pagination-footer.tsx","../src/components/data-table/selection-toolbar.tsx","../src/components/data-table/data-table.tsx","../src/components/data-table/data-table-skeleton.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { DataTableCategoricalColor } from \"./types\";\n\ninterface CategoricalColorCellProps {\n children: ReactNode;\n}\n\nexport const resolveCategoricalColor = (value: unknown, categories: DataTableCategoricalColor[]) => {\n return categories.find((category) => Object.is(category.value, value))?.color ?? null;\n};\n\nexport const CategoricalColorCell = (props: CategoricalColorCellProps) => {\n const { children } = props;\n\n return children;\n};\n","import type { DataTableThemeColor } from \"./types\";\n\ninterface RgbColor {\n r: number;\n g: number;\n b: number;\n}\n\nconst darkTextColor = \"#111827\";\nconst lightTextColor = \"#ffffff\";\nconst darkColorTarget = \"#000000\";\nconst readableContrastRatio = 4.5;\n\nconst expandShortHex = (hex: string) =>\n hex\n .split(\"\")\n .map((character) => character + character)\n .join(\"\");\n\nexport const parseHexColor = (color: string) => {\n const normalized = color.trim();\n const hex = normalized.startsWith(\"#\") ? normalized.slice(1) : normalized;\n const expandedHex = hex.length === 3 ? expandShortHex(hex) : hex;\n if (!/^[\\da-f]{6}$/i.test(expandedHex)) return null;\n\n return {\n r: Number.parseInt(expandedHex.slice(0, 2), 16),\n g: Number.parseInt(expandedHex.slice(2, 4), 16),\n b: Number.parseInt(expandedHex.slice(4, 6), 16),\n };\n};\n\nconst toLinearChannel = (channel: number) => {\n const normalized = channel / 255;\n return normalized <= 0.03928 ? normalized / 12.92 : ((normalized + 0.055) / 1.055) ** 2.4;\n};\n\nconst relativeLuminance = (color: RgbColor) =>\n 0.2126 * toLinearChannel(color.r) + 0.7152 * toLinearChannel(color.g) + 0.0722 * toLinearChannel(color.b);\n\nconst contrastRatio = (foreground: RgbColor, background: RgbColor) => {\n const foregroundLuminance = relativeLuminance(foreground);\n const backgroundLuminance = relativeLuminance(background);\n const lighter = Math.max(foregroundLuminance, backgroundLuminance);\n const darker = Math.min(foregroundLuminance, backgroundLuminance);\n return (lighter + 0.05) / (darker + 0.05);\n};\n\nconst toHexColor = (color: RgbColor) => {\n const toHexChannel = (channel: number) => Math.round(channel).toString(16).padStart(2, \"0\");\n return `#${toHexChannel(color.r)}${toHexChannel(color.g)}${toHexChannel(color.b)}`;\n};\n\nconst mixRgbColors = (start: RgbColor, end: RgbColor, endWeight: number) => ({\n r: start.r * (1 - endWeight) + end.r * endWeight,\n g: start.g * (1 - endWeight) + end.g * endWeight,\n b: start.b * (1 - endWeight) + end.b * endWeight,\n});\n\nexport const contrastRatioForHexColors = (foregroundColor: string, backgroundColor: string) => {\n const foreground = parseHexColor(foregroundColor);\n const background = parseHexColor(backgroundColor);\n if (!foreground || !background) return 0;\n return contrastRatio(foreground, background);\n};\n\nconst findMatchingForeground = (background: RgbColor, target: RgbColor) => {\n for (let step = 1; step <= 50; step += 1) {\n const candidate = mixRgbColors(background, target, step / 50);\n if (contrastRatio(candidate, background) >= readableContrastRatio) {\n return { color: toHexColor(candidate), step };\n }\n }\n\n return { color: toHexColor(target), step: 50 };\n};\n\nexport const resolveReadableTextColor = (backgroundColor: string) => {\n const background = parseHexColor(backgroundColor);\n if (!background) return darkTextColor;\n\n const darkText = parseHexColor(darkColorTarget)!;\n const lightText = parseHexColor(lightTextColor)!;\n const darkerMatch = findMatchingForeground(background, darkText);\n const lighterMatch = findMatchingForeground(background, lightText);\n\n return darkerMatch.step <= lighterMatch.step ? darkerMatch.color : lighterMatch.color;\n};\n\nexport const mixHexColors = (startColor: string, endColor: string, startWeight: number) => {\n const start = parseHexColor(startColor);\n const end = parseHexColor(endColor);\n if (!start || !end) return null;\n\n return toHexColor(mixRgbColors(start, end, 1 - startWeight));\n};\n\nexport const resolveColorCellStyle = (color: DataTableThemeColor) => {\n const lightForeground = color.foreground?.light ?? resolveReadableTextColor(color.light);\n const darkForeground = color.foreground?.dark ?? resolveReadableTextColor(color.dark);\n\n return {\n backgroundColor: `light-dark(${color.light}, ${color.dark})`,\n color: `light-dark(${lightForeground}, ${darkForeground})`,\n };\n};\n","import { Text } from \"@chakra-ui/react\";\nimport { mixHexColors } from \"./color-cell-style\";\nimport type { DataTableColorScaleStop, DataTableThemeColor } from \"./types\";\n\ninterface ColorScaleCellProps {\n value: number;\n}\n\nconst toDisplayPercent = (value: number) => Math.round(value * 100) / 100;\n\nconst mixColors = (startColor: string, endColor: string, startWeight: number) => {\n const mixedColor = mixHexColors(startColor, endColor, startWeight);\n if (mixedColor) return mixedColor;\n\n return `color-mix(in srgb, ${startColor} ${toDisplayPercent(startWeight * 100)}%, ${endColor})`;\n};\n\nconst mixThemeColors = (start: DataTableThemeColor, end: DataTableThemeColor, startWeight: number) => {\n const foreground =\n start.foreground && end.foreground\n ? {\n light: mixColors(start.foreground.light, end.foreground.light, startWeight),\n dark: mixColors(start.foreground.dark, end.foreground.dark, startWeight),\n }\n : undefined;\n\n return {\n light: mixColors(start.light, end.light, startWeight),\n dark: mixColors(start.dark, end.dark, startWeight),\n ...(foreground ? { foreground } : {}),\n };\n};\n\nexport const resolveColorScaleValue = (value: unknown, stops: DataTableColorScaleStop[]) => {\n if (typeof value !== \"number\" || !Number.isFinite(value) || stops.length < 2) return null;\n\n const firstStop = stops[0]!;\n const lastStop = stops[stops.length - 1]!;\n const range = lastStop.value - firstStop.value;\n if (range <= 0) return null;\n\n if (value <= firstStop.value) return firstStop.color;\n if (value >= lastStop.value) return lastStop.color;\n\n const endIndex = stops.findIndex((stop) => value <= stop.value);\n const startStop = stops[endIndex - 1]!;\n const endStop = stops[endIndex]!;\n const segmentProgress = (value - startStop.value) / (endStop.value - startStop.value);\n const startWeight = 1 - segmentProgress;\n return mixThemeColors(startStop.color, endStop.color, startWeight);\n};\n\nexport const ColorScaleCell = (props: ColorScaleCellProps) => {\n const { value } = props;\n\n return (\n <Text textStyle=\"paragraph/S/medium\" fontVariantNumeric=\"tabular-nums\" truncate>\n {value}\n </Text>\n );\n};\n","import { Icon as ChakraIcon } from \"@chakra-ui/react\";\nimport { createColumnHelper } from \"@tanstack/react-table\";\nimport { CalendarClock, CheckCircle2, Hash, Type } from \"lucide-react\";\nimport { isValidElement, type ReactElement, type ReactNode } from \"react\";\n\nimport type { ColumnType, DisplayValue, RowData } from \"./types\";\n\nexport const isDisplayValue = (value: unknown): value is DisplayValue =>\n typeof value === \"object\" && value !== null && \"display\" in value;\n\nexport const isString = (v: unknown): v is string => typeof v === \"string\" || v instanceof String;\nexport const isNumber = (v: unknown): v is number => typeof v === \"number\" || v instanceof Number;\nexport const isBoolean = (v: unknown): v is boolean => typeof v === \"boolean\" || v instanceof Boolean;\n\nexport const getType = (values: unknown[]): ColumnType => {\n const comparableValues = values\n .map((value) => {\n if (isDisplayValue(value)) return value.sortValue ?? null;\n if (value instanceof String || value instanceof Number || value instanceof Boolean) return value.valueOf();\n if (isValidElement(value)) return null;\n return value;\n })\n .filter((value) => value !== null && value !== undefined);\n\n if (comparableValues.length === 0) return \"unknown\";\n if (comparableValues.every((v) => isString(v) && !Number.isNaN(Date.parse(v.toString())))) return \"date\";\n if (comparableValues.every((v) => isNumber(v))) return \"number\";\n if (comparableValues.every((v) => isBoolean(v))) return \"boolean\";\n if (comparableValues.every((v) => isString(v))) return \"string\";\n return \"unknown\";\n};\n\nconst headerIconProps = {\n boxSize: \"14px\",\n marginRight: \"2px\",\n};\n\nexport const getIcon = (values: unknown[]): ReactElement | null => {\n const type = getType(values);\n if (type === \"date\") return <ChakraIcon as={CalendarClock} {...headerIconProps} />;\n if (type === \"string\") return <ChakraIcon as={Type} {...headerIconProps} />;\n if (type === \"number\") return <ChakraIcon as={Hash} {...headerIconProps} />;\n if (type === \"boolean\") return <ChakraIcon as={CheckCircle2} {...headerIconProps} />;\n return null;\n};\n\nexport function formatDisplayValue(value: unknown): ReactNode {\n if (isDisplayValue(value)) return value.display;\n if (isValidElement(value)) return value;\n\n if (value instanceof String || value instanceof Number || value instanceof Boolean) {\n value = value.valueOf();\n }\n\n switch (typeof value) {\n case \"boolean\":\n return value ? \"TRUE\" : \"FALSE\";\n case \"number\":\n return value;\n case \"object\":\n return value !== null ? JSON.stringify(value) : \"-\";\n case \"undefined\":\n return \"-\";\n default:\n return value ? String(value) : \"-\";\n }\n}\n\nexport const columnHelper = createColumnHelper<RowData>();\n","import { ParamEditor } from \"@/components/param-editor\";\n\ninterface JsonField {\n label: string;\n value: unknown;\n}\n\nexport interface FriendlyJsonDisplayProps {\n value: unknown;\n}\n\nconst imageExtensionPattern = /\\.(avif|bmp|gif|jpe?g|png|svg|webp)$/i;\nconst imageLabelPattern = /(^|\\s)(avatar|image|logo|photo|picture|thumbnail)(\\s|$)/i;\n\nconst humanizeKey = (key: string) => {\n const words = key\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .trim()\n .toLowerCase();\n\n return words ? `${words[0]?.toUpperCase()}${words.slice(1)}` : \"Details\";\n};\n\nconst formatPath = (path: string[]) => path.map((part) => (/^\\d+$/.test(part) ? part : humanizeKey(part))).join(\" / \");\n\nconst isPrimitiveArray = (value: unknown[]) => value.every((item) => item === null || typeof item !== \"object\");\n\nconst appendJsonFields = (value: unknown, path: string[], fields: JsonField[]) => {\n if (Array.isArray(value)) {\n if (value.length === 0 || isPrimitiveArray(value)) {\n fields.push({ label: formatPath(path), value });\n return;\n }\n\n value.forEach((item, index) => {\n appendJsonFields(item, [...path, String(index + 1)], fields);\n });\n return;\n }\n\n if (value !== null && typeof value === \"object\") {\n const entries = Object.entries(value);\n if (entries.length === 0) {\n fields.push({ label: formatPath(path), value: null });\n return;\n }\n\n entries.forEach(([key, item]) => {\n appendJsonFields(item, [...path, key], fields);\n });\n return;\n }\n\n fields.push({ label: formatPath(path), value });\n};\n\nexport const parseJsonCellValue = (value: unknown) => {\n if (typeof value !== \"string\") return value;\n\n try {\n return JSON.parse(value) as unknown;\n } catch {\n return value;\n }\n};\n\nexport const buildJsonFields = (value: unknown) => {\n const fields: JsonField[] = [];\n appendJsonFields(parseJsonCellValue(value), [], fields);\n return fields.map((field) => ({ ...field, label: field.label || \"Value\" }));\n};\n\nexport const isJsonImageValue = (value: unknown, label: string) => {\n if (typeof value !== \"string\") return false;\n if (value.startsWith(\"data:image/\")) return true;\n\n try {\n const url = new URL(value);\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") return false;\n return imageExtensionPattern.test(url.pathname) || imageLabelPattern.test(label);\n } catch {\n return false;\n }\n};\n\nexport const isJsonImageArray = (value: unknown, label: string) => {\n return Array.isArray(value) && value.length > 0 && value.every((item) => isJsonImageValue(item, label));\n};\n\nconst formatJsonPrimitive = (value: unknown) => {\n if (value === null || value === undefined || value === \"\") return \"Not provided\";\n if (typeof value === \"boolean\") return value ? \"Yes\" : \"No\";\n return String(value);\n};\n\nconst formatJsonValue = (value: unknown) => {\n if (Array.isArray(value)) return value.length === 0 ? \"None\" : value.map(formatJsonPrimitive).join(\", \");\n return formatJsonPrimitive(value);\n};\n\nexport const getJsonCellSummary = (value: unknown) => {\n const parsedValue = parseJsonCellValue(value);\n if (Array.isArray(parsedValue) && parsedValue.length === 0) return \"No details\";\n if (parsedValue !== null && typeof parsedValue === \"object\" && Object.keys(parsedValue).length === 0) {\n return \"No details\";\n }\n\n const fields = buildJsonFields(value).filter(\n (field) => !isJsonImageValue(field.value, field.label) && !isJsonImageArray(field.value, field.label),\n );\n if (fields.length === 0) return \"No details\";\n\n const visibleValues = fields.slice(0, 2).map((field) => formatJsonValue(field.value));\n const remainingCount = fields.length - visibleValues.length;\n return [...visibleValues, remainingCount > 0 ? `${remainingCount} more` : null].filter(Boolean).join(\" · \");\n};\n\nconst toReadOnlyValue = (field: JsonField) => {\n const { label, value } = field;\n if (isJsonImageValue(value, label)) {\n return { type: \"image\" as const, src: String(value), alt: `${label} preview` };\n }\n if (Array.isArray(value) && isJsonImageArray(value, label)) {\n return {\n type: \"image-gallery\" as const,\n images: value.map((image, index) => ({ src: String(image), alt: `${label} ${index + 1} preview` })),\n };\n }\n if (Array.isArray(value)) return value as Array<string | number | boolean | null>;\n if (value === undefined) return null;\n return value as string | number | boolean | null;\n};\n\nexport const buildFriendlyJsonParams = (value: unknown) =>\n buildJsonFields(value).map((field, index) => ({\n id: `friendly-json-${index}`,\n name: field.label,\n type: \"readOnly\" as const,\n value: toReadOnlyValue(field),\n }));\n\nexport const FriendlyJsonDisplay = (props: FriendlyJsonDisplayProps) => {\n const { value } = props;\n return <ParamEditor params={buildFriendlyJsonParams(value)} readOnly fullWidth />;\n};\n","import { Button, HStack, Image, Popover, Portal, Text } from \"@chakra-ui/react\";\nimport { Braces, ChevronRight } from \"lucide-react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport {\n buildJsonFields,\n FriendlyJsonDisplay,\n getJsonCellSummary,\n isJsonImageArray,\n isJsonImageValue,\n} from \"./friendly-json-display\";\n\ninterface JsonCellProps {\n columnLabel: string;\n value: unknown;\n}\n\nconst stopRowActivation = (event: { stopPropagation: () => void }) => event.stopPropagation();\n\nexport const JsonCell = (props: JsonCellProps) => {\n const { columnLabel, value } = props;\n const fields = buildJsonFields(value);\n const imageFields = fields\n .flatMap((field) => {\n if (isJsonImageValue(field.value, field.label)) return [field];\n if (!Array.isArray(field.value) || !isJsonImageArray(field.value, field.label)) return [];\n return field.value.map((image, index) => ({ label: `${field.label} ${index + 1}`, value: image }));\n })\n .slice(0, 2);\n const summary = getJsonCellSummary(value);\n\n return (\n <Popover.Root positioning={{ placement: \"bottom-start\", offset: { mainAxis: 6 } }}>\n <Popover.Trigger asChild>\n <Button\n aria-label={`View ${columnLabel} details`}\n variant=\"ghost\"\n size=\"xs\"\n width=\"full\"\n minWidth=\"0\"\n height=\"28px\"\n paddingX=\"2xs\"\n justifyContent=\"flex-start\"\n onClick={stopRowActivation}\n >\n {imageFields.length > 0 ? (\n <HStack gap=\"-1\" flexShrink=\"0\">\n {imageFields.map((field) => (\n <Image\n key={field.label}\n src={String(field.value)}\n alt={`${field.label} preview`}\n boxSize=\"22px\"\n borderRadius=\"xs\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n objectFit=\"cover\"\n />\n ))}\n </HStack>\n ) : (\n <Braces size={14} />\n )}\n <Text flex=\"1\" minWidth=\"0\" textAlign=\"left\" textStyle=\"paragraph/S/regular\" truncate>\n {summary}\n </Text>\n <ChevronRight size={12} />\n </Button>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content width=\"min(380px, calc(100vw - 32px))\" padding=\"0\" background=\"bg\" overflow=\"hidden\">\n <ScrollArea maxH=\"360px\" viewportProps={{ overscrollBehavior: \"contain\" }}>\n <FriendlyJsonDisplay value={value} />\n </ScrollArea>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Icon as ChakraIcon, chakra, IconButton, Menu, Portal, Text } from \"@chakra-ui/react\";\nimport type { CellContext, HeaderContext, RowSelectionState } from \"@tanstack/react-table\";\nimport { Check, ChevronDown, CircleHelp, Minus } from \"lucide-react\";\nimport { type CSSProperties, cloneElement, isValidElement, type ReactNode } from \"react\";\n\nimport { Checkbox } from \"@/components/primitives/checkbox\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { ListRow } from \"../list-row/list-row\";\nimport { CategoricalColorCell, resolveCategoricalColor } from \"./categorical-color-cell\";\nimport { resolveColorCellStyle } from \"./color-cell-style\";\nimport { ColorScaleCell, resolveColorScaleValue } from \"./color-scale-cell\";\nimport { columnHelper, formatDisplayValue, getIcon, isDisplayValue } from \"./helpers\";\nimport { JsonCell } from \"./json-cell\";\nimport type { DataTableColumnRenderer, DataTableRowAction, RowData } from \"./types\";\n\nconst getSortValue = (value: unknown) => {\n return isDisplayValue(value) ? value.sortValue : value;\n};\n\nconst compareValues = (valueA: unknown, valueB: unknown) => {\n if (valueA === valueB) return 0;\n if (valueA === null || valueA === undefined) return 1;\n if (valueB === null || valueB === undefined) return -1;\n\n if (typeof valueA === \"number\" && typeof valueB === \"number\") {\n return valueA - valueB;\n }\n\n return String(valueA).localeCompare(String(valueB));\n};\n\nconst toSingleLineElement = (element: ReactNode) => {\n if (!isValidElement<{ style?: CSSProperties }>(element)) return element;\n\n return cloneElement(element, {\n style: {\n ...element.props.style,\n flexWrap: \"nowrap\",\n minWidth: 0,\n whiteSpace: \"nowrap\",\n },\n });\n};\n\ninterface BuildColumnsOptions {\n columnIcons?: Partial<Record<string, ReactNode>>;\n columnDescriptions?: Partial<Record<string, string>>;\n compactHeaders?: Partial<Record<string, string>>;\n enableSelection?: boolean;\n rowActions?: DataTableRowAction[];\n selectedRowIds?: RowSelectionState;\n columnRenderers?: Partial<Record<string, DataTableColumnRenderer>>;\n}\n\nconst stopControlPropagation = (event: { stopPropagation: () => void }) => {\n event.stopPropagation();\n};\n\nconst SelectionHeader = (props: HeaderContext<RowData, unknown>) => {\n const { table } = props;\n const checked = table.getIsAllRowsSelected();\n const isIndeterminate = !checked && table.getIsSomeRowsSelected();\n\n return (\n <Checkbox\n checked={checked ? true : isIndeterminate ? \"indeterminate\" : false}\n aria-label=\"Select all\"\n icon={<ChakraIcon as={isIndeterminate ? Minus : Check} boxSize=\"12px\" strokeWidth=\"3\" />}\n onClick={stopControlPropagation}\n onCheckedChange={(details) => table.toggleAllRowsSelected(details.checked === true)}\n />\n );\n};\n\nconst SelectionCell = (props: CellContext<RowData, unknown> & { selectedRowIds?: RowSelectionState }) => {\n const { row, selectedRowIds } = props;\n\n return (\n <Checkbox\n checked={Boolean(selectedRowIds?.[row.id])}\n aria-label=\"Select row\"\n icon={<ChakraIcon as={Check} boxSize=\"12px\" strokeWidth=\"3\" />}\n onClick={stopControlPropagation}\n onCheckedChange={(details) => row.toggleSelected(details.checked === true)}\n />\n );\n};\n\nconst RowActionsCell = (props: CellContext<RowData, unknown> & { actions: DataTableRowAction[] }) => {\n const { row, actions } = props;\n\n return (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton aria-label=\"Row actions\" size=\"2xs\" variant=\"ghost\" onClick={stopControlPropagation}>\n <ChakraIcon as={ChevronDown} boxSize=\"14px\" />\n </IconButton>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content zIndex=\"popover\" bg=\"bg\">\n {actions.map((action) => (\n <Menu.Item key={action.label} value={action.label} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n tone={action.destructive ? \"danger\" : \"default\"}\n label={action.label}\n icon={action.icon}\n onClick={stopControlPropagation}\n onActivate={() => action.onSelect(row.original)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n\ninterface FormattedCellProps {\n value: unknown;\n}\n\nconst FormattedCell = (props: FormattedCellProps) => {\n const { value } = props;\n const displayValue = formatDisplayValue(value);\n\n if (isValidElement(displayValue)) {\n return (\n <chakra.span display=\"inline-flex\" maxWidth=\"full\" minW=\"0\" overflow=\"hidden\" whiteSpace=\"nowrap\">\n {toSingleLineElement(displayValue)}\n </chakra.span>\n );\n }\n\n return (\n <Text maxWidth=\"full\" overflow=\"hidden\" textOverflow=\"ellipsis\" textStyle=\"paragraph/S/regular\" whiteSpace=\"nowrap\">\n {displayValue}\n </Text>\n );\n};\n\ninterface DataCellProps {\n columnLabel: string;\n renderer?: DataTableColumnRenderer;\n value: unknown;\n}\n\nconst DataCell = (props: DataCellProps) => {\n const { columnLabel, renderer, value } = props;\n\n if (renderer?.type === \"json\") return <JsonCell columnLabel={columnLabel} value={value} />;\n\n if (renderer?.type === \"color-scale\") {\n const color = resolveColorScaleValue(value, renderer.stops);\n if (color && typeof value === \"number\") return <ColorScaleCell value={value} />;\n }\n\n if (renderer?.type === \"categorical-color\") {\n const color = resolveCategoricalColor(value, renderer.categories);\n if (color) {\n return (\n <CategoricalColorCell>\n <FormattedCell value={value} />\n </CategoricalColorCell>\n );\n }\n }\n\n return <FormattedCell value={value} />;\n};\n\nconst resolveDataCellStyle = (value: unknown, renderer?: DataTableColumnRenderer) => {\n if (renderer?.type === \"color-scale\") {\n const color = resolveColorScaleValue(value, renderer.stops);\n if (color && typeof value === \"number\") return resolveColorCellStyle(color);\n }\n\n if (renderer?.type === \"categorical-color\") {\n const color = resolveCategoricalColor(value, renderer.categories);\n if (color) return resolveColorCellStyle(color);\n }\n};\n\nexport function buildColumns(data: RowData[], columnKeys: string[], options: BuildColumnsOptions = {}) {\n const {\n columnIcons,\n columnDescriptions,\n compactHeaders,\n enableSelection = false,\n rowActions = [],\n selectedRowIds,\n columnRenderers,\n } = options;\n const rowIndexColumn = columnHelper.accessor((_row, rowIndex) => rowIndex + 1, {\n header: \"\",\n id: \"rowIndex\",\n enableResizing: false,\n size: 20,\n cell: (info) => (\n <chakra.span display={\"block\"} textStyle={\"paragraph/S/regular\"} textAlign={\"center\"}>\n {info.getValue()}\n </chakra.span>\n ),\n });\n\n const selectionColumn = columnHelper.display({\n id: \"rowSelection\",\n header: SelectionHeader,\n cell: (info) => <SelectionCell {...info} selectedRowIds={selectedRowIds} />,\n enableResizing: false,\n enableSorting: false,\n size: 36,\n });\n\n const dataColumns = columnKeys.map((key) => {\n const fallBackKey = key || \"-\";\n const columnValues = data.map((row) => row[fallBackKey]);\n const renderer = columnRenderers?.[fallBackKey];\n const customIcon = columnIcons?.[fallBackKey];\n const headerIcon = customIcon === undefined ? getIcon(columnValues) : customIcon;\n const columnDescription = columnDescriptions?.[fallBackKey];\n\n return columnHelper.accessor((row) => row[fallBackKey], {\n id: fallBackKey,\n header: () => {\n const headerLabel = compactHeaders?.[fallBackKey] ?? fallBackKey;\n return (\n <chakra.span display=\"inline-flex\" alignItems=\"center\" gap=\"4px\" minW=\"0\" maxW=\"full\" overflow=\"hidden\">\n {headerIcon}\n <chakra.span overflow=\"hidden\" textOverflow=\"ellipsis\" whiteSpace=\"nowrap\">\n {headerLabel}\n </chakra.span>\n {columnDescription ? (\n <Tooltip content={columnDescription}>\n <ChakraIcon\n as={CircleHelp}\n aria-label={`About ${headerLabel}`}\n boxSize=\"12px\"\n color=\"fg.muted\"\n cursor=\"help\"\n flexShrink={0}\n opacity={0.6}\n tabIndex={0}\n />\n </Tooltip>\n ) : null}\n </chakra.span>\n );\n },\n cell: (info) => <DataCell columnLabel={fallBackKey} renderer={renderer} value={info.getValue()} />,\n meta: {\n getCellStyle: (value: unknown) => resolveDataCellStyle(value, renderer),\n },\n sortingFn: (rowA, rowB) => {\n const valueA = getSortValue(rowA.original[fallBackKey]);\n const valueB = getSortValue(rowB.original[fallBackKey]);\n return compareValues(valueA, valueB);\n },\n });\n });\n\n const rowActionsColumn = columnHelper.display({\n id: \"rowActions\",\n header: \"\",\n cell: (info) => <RowActionsCell {...info} actions={rowActions} />,\n enableResizing: false,\n enableSorting: false,\n size: 36,\n });\n\n return [\n rowIndexColumn,\n ...(enableSelection ? [selectionColumn] : []),\n ...dataColumns,\n ...(rowActions.length > 0 ? [rowActionsColumn] : []),\n ];\n}\n","import { Box, HStack, Icon, IconButton, Popover, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { closestCenter, DndContext, type DragEndEvent, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { SortableContext, useSortable, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { Check, GripVertical, Settings2 } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\n\nimport { SearchableMenuInput } from \"@/components/overlays/searchable-menu-input\";\nimport { Checkbox } from \"@/components/primitives/checkbox\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { Switch } from \"@/components/primitives/switch\";\n\ninterface DataTableColumnMenuColumn {\n id: string;\n label: string;\n}\n\ninterface DataTableColumnMenuProps {\n columns: DataTableColumnMenuColumn[];\n visibleColumnIds: Set<string>;\n showStats: boolean;\n statsAvailable: boolean;\n onColumnVisibilityChange: (columnId: string, visible: boolean) => void;\n onColumnReorder: (activeColumnId: string, overColumnId: string) => void;\n onStatsVisibilityChange: (showStats: boolean) => void;\n}\n\ninterface DataTableColumnMenuRowProps {\n column: DataTableColumnMenuColumn;\n checked: boolean;\n onColumnVisibilityChange: (columnId: string, visible: boolean) => void;\n}\n\nconst DataTableColumnMenuRow = (props: DataTableColumnMenuRowProps) => {\n const { column, checked, onColumnVisibilityChange } = props;\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id: column.id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n };\n\n return (\n <HStack\n ref={setNodeRef}\n style={style}\n gap=\"2xs\"\n minW=\"0\"\n width=\"full\"\n borderRadius=\"xs\"\n px=\"xs\"\n py=\"2xs\"\n _hover={{ bg: \"bg.hover\" }}\n >\n <Box as=\"span\" display=\"inline-flex\" cursor=\"grab\" color=\"fg.muted\" {...attributes} {...listeners}>\n <GripVertical size={14} />\n </Box>\n <Checkbox\n checked={checked}\n flex=\"1\"\n minW=\"0\"\n width=\"full\"\n flexDirection=\"row-reverse\"\n justifyContent=\"space-between\"\n size=\"sm\"\n icon={<Icon as={Check} boxSize=\"12px\" strokeWidth=\"3\" />}\n onCheckedChange={(details) => onColumnVisibilityChange(column.id, details.checked === true)}\n >\n <Text as=\"span\" textStyle=\"label/S/regular\" truncate>\n {column.label}\n </Text>\n </Checkbox>\n </HStack>\n );\n};\n\nexport const DataTableColumnMenu = (props: DataTableColumnMenuProps) => {\n const {\n columns,\n visibleColumnIds,\n showStats,\n statsAvailable,\n onColumnVisibilityChange,\n onColumnReorder,\n onStatsVisibilityChange,\n } = props;\n const triggerRef = useRef<HTMLButtonElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState(\"\");\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));\n const normalizedQuery = query.trim().toLowerCase();\n const filteredColumns = normalizedQuery\n ? columns.filter((column) => column.label.toLowerCase().includes(normalizedQuery))\n : columns;\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n\n onColumnReorder(String(active.id), String(over.id));\n };\n\n useEffect(() => {\n if (!open) return;\n\n const closeOnOutsidePointerDown = (event: PointerEvent) => {\n const target = event.target;\n if (!(target instanceof Node)) return;\n if (contentRef.current?.contains(target) || triggerRef.current?.contains(target)) return;\n\n setOpen(false);\n };\n const closeOnEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"pointerdown\", closeOnOutsidePointerDown);\n document.addEventListener(\"keydown\", closeOnEscape, true);\n return () => {\n document.removeEventListener(\"pointerdown\", closeOnOutsidePointerDown);\n document.removeEventListener(\"keydown\", closeOnEscape, true);\n };\n }, [open]);\n\n return (\n <Popover.Root\n open={open}\n closeOnInteractOutside={false}\n positioning={{\n placement: \"bottom-end\",\n offset: { mainAxis: 8 },\n getAnchorElement: () => triggerRef.current,\n }}\n >\n <Popover.Trigger asChild>\n <IconButton\n ref={triggerRef}\n aria-label=\"Display settings\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setOpen((current) => !current)}\n >\n <Icon as={Settings2} boxSize=\"14px\" />\n </IconButton>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content ref={contentRef} width=\"min(320px, calc(100vw - 32px))\" p=\"0\" bg=\"bg\" overflow=\"hidden\">\n <Stack gap=\"0\">\n {statsAvailable ? (\n <Box borderBottomWidth=\"1px\" borderColor=\"border.subtle\" padding=\"xs\">\n <Switch\n checked={showStats}\n inputProps={{ role: \"switch\" }}\n width=\"full\"\n flexDirection=\"row-reverse\"\n justifyContent=\"space-between\"\n onCheckedChange={(details) => onStatsVisibilityChange(details.checked === true)}\n >\n <Text as=\"span\" textStyle=\"label/S/regular\">\n Statistics\n </Text>\n </Switch>\n </Box>\n ) : null}\n <SearchableMenuInput value={query} placeholder=\"Search columns\" onValueChange={setQuery} />\n <ScrollArea maxH=\"280px\" viewportProps={{ overscrollBehavior: \"contain\" }}>\n <Box padding=\"2xs\">\n <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext items={columns.map((column) => column.id)} strategy={verticalListSortingStrategy}>\n <Stack gap=\"1px\">\n {filteredColumns.map((column) => (\n <DataTableColumnMenuRow\n key={column.id}\n column={column}\n checked={visibleColumnIds.has(column.id)}\n onColumnVisibilityChange={onColumnVisibilityChange}\n />\n ))}\n </Stack>\n </SortableContext>\n </DndContext>\n </Box>\n </ScrollArea>\n </Stack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import type { ReactNode } from \"react\";\nimport { KanbanRendererToolbar } from \"../kanban-renderer/kanban-renderer-toolbar\";\nimport type { AttributeDescriptor, KanbanRendererRow } from \"../kanban-renderer/types\";\n\ninterface DataTableHeaderProps {\n rows: KanbanRendererRow[];\n attributes: AttributeDescriptor[];\n storageKey: string;\n columnControl: ReactNode;\n}\n\nexport const DataTableHeader = (props: DataTableHeaderProps) => {\n const { rows, attributes, storageKey, columnControl } = props;\n\n return (\n <KanbanRendererToolbar\n rows={rows}\n storageKey={storageKey}\n attributes={attributes}\n defaultSettings={{ viewMode: \"list\" }}\n displayControl={columnControl}\n />\n );\n};\n","import type {\n AttributeDescriptor,\n KanbanRendererFilterState,\n KanbanRendererRow,\n} from \"@/components/kanban-renderer/types\";\nimport { filterRows } from \"../kanban-renderer/kanban-renderer-grouping\";\nimport { isDisplayValue } from \"./helpers\";\nimport type { DataTableProps, DataTableSelectionAction, RowData } from \"./types\";\n\nexport const defaultPageSize = 30;\n\nexport interface DataTableRendererRow extends KanbanRendererRow {\n sourceRow: RowData;\n}\n\nexport const resolveDataTableRowId = (row: RowData, index: number, getRowId?: DataTableProps[\"getRowId\"]) => {\n if (getRowId) return getRowId(row, index);\n return typeof row.id === \"string\" ? row.id : String(index);\n};\n\nexport const resolveInitialPageSize = (props: Pick<DataTableProps, \"initialPageSize\">) => {\n if (typeof props.initialPageSize === \"number\" && props.initialPageSize > 0) return props.initialPageSize;\n return defaultPageSize;\n};\n\nexport const getSelectedOriginalRows = (rows: Array<{ original: RowData }>) => rows.map((row) => row.original);\n\nexport const resolveSelectionActions = (\n props: Pick<DataTableProps, \"selectionActions\" | \"onCSVDownload\" | \"getRowId\">,\n) => {\n const actions: DataTableSelectionAction[] = [...(props.selectionActions ?? [])];\n\n if (props.onCSVDownload) {\n actions.push({\n label: \"Download CSV\",\n onSelect: (rows) => {\n props.onCSVDownload?.(rows.map((row, index) => resolveDataTableRowId(row, index, props.getRowId)));\n },\n });\n }\n\n return actions;\n};\n\nexport const shouldEnableSelection = (\n props: Pick<DataTableProps, \"selectionMode\" | \"selectionActions\" | \"onCSVDownload\">,\n) => props.selectionMode === \"multiple\" || Boolean(props.onCSVDownload) || Boolean(props.selectionActions?.length);\n\nexport const shouldHighlightActiveRow = (props: {\n enableRowActivation?: boolean;\n activeRowId?: string | null;\n rowId: string;\n}) => props.enableRowActivation === true && props.activeRowId === props.rowId;\n\nconst toAttributeValue = (value: unknown) => {\n const raw = isDisplayValue(value) ? value.sortValue : value;\n if (typeof raw === \"boolean\") return String(raw);\n return raw;\n};\n\nconst isNumberColumn = (rows: RowData[], columnKey: string) => {\n const values = rows\n .map((row) => toAttributeValue(row[columnKey]))\n .filter((value) => value !== null && value !== undefined);\n return values.length > 0 && values.every((value) => typeof value === \"number\");\n};\n\nconst resolveAttributeType = (rows: RowData[], columnKey: string): AttributeDescriptor[\"type\"] => {\n if (isNumberColumn(rows, columnKey)) return { kind: \"number\" };\n return { kind: \"string\" };\n};\n\nexport const buildDataTableRendererAttributes = (\n rows: RowData[],\n columnKeys: string[],\n compactHeaders?: Partial<Record<string, string>>,\n): AttributeDescriptor[] =>\n columnKeys.map((columnKey) => ({\n id: columnKey,\n label: compactHeaders?.[columnKey] ?? columnKey,\n type: resolveAttributeType(rows, columnKey),\n filterable: true,\n sortable: true,\n displayable: true,\n }));\n\nexport const buildDataTableRendererRows = (\n rows: RowData[],\n columnKeys: string[],\n getRowId?: DataTableProps[\"getRowId\"],\n): DataTableRendererRow[] =>\n rows.map((row, index) => {\n const attributes = Object.fromEntries(columnKeys.map((columnKey) => [columnKey, toAttributeValue(row[columnKey])]));\n const rowId = resolveDataTableRowId(row, index, getRowId);\n const firstValue = columnKeys.length > 0 ? toAttributeValue(row[columnKeys[0]!]) : rowId;\n\n return {\n id: rowId,\n title: String(firstValue ?? rowId),\n attributes,\n sourceRow: row,\n };\n });\n\nexport const filterDataTableRows = (\n rows: DataTableRendererRow[],\n filters: KanbanRendererFilterState,\n attributes: AttributeDescriptor[],\n) => filterRows(rows, filters, attributes) as DataTableRendererRow[];\n\nexport const resolveDataTableColumnOrder = (availableColumnIds: string[], requestedColumnOrder: string[]) => {\n const availableColumnIdSet = new Set(availableColumnIds);\n const orderedColumnIds = requestedColumnOrder.filter((columnId) => availableColumnIdSet.has(columnId));\n const orderedColumnIdSet = new Set(orderedColumnIds);\n const missingColumnIds = availableColumnIds.filter((columnId) => !orderedColumnIdSet.has(columnId));\n\n return [...orderedColumnIds, ...missingColumnIds];\n};\n\nexport const reorderDataTableColumns = (columnIds: string[], activeColumnId: string, overColumnId: string) => {\n const activeIndex = columnIds.indexOf(activeColumnId);\n const overIndex = columnIds.indexOf(overColumnId);\n\n if (activeIndex < 0 || overIndex < 0 || activeIndex === overIndex) return columnIds;\n\n const nextColumnIds = [...columnIds];\n const [activeColumn] = nextColumnIds.splice(activeIndex, 1);\n if (!activeColumn) return columnIds;\n\n nextColumnIds.splice(overIndex, 0, activeColumn);\n return nextColumnIds;\n};\n\nexport const resolveDataTableToolbarStorageKey = (props: { toolbarStorageKey?: string; columnKeys: string[] }) =>\n props.toolbarStorageKey ?? `data-table:${props.columnKeys.join(\"|\") || \"empty\"}`;\n","import { Chart, type UseChartProps, useChart } from \"@chakra-ui/charts\";\nimport type { ReactNode } from \"react\";\nimport {\n Bar,\n BarChart,\n Tooltip as RechartsTooltip,\n useActiveTooltipCoordinate,\n usePlotArea,\n XAxis,\n YAxis,\n} from \"recharts\";\n\ntype ChartSeries<T> = NonNullable<UseChartProps<T>[\"series\"]>[number];\ntype StringKeyOf<T> = Extract<keyof T, string>;\n\nconst StatChartCrosshair = () => {\n const coordinate = useActiveTooltipCoordinate();\n const plotArea = usePlotArea();\n\n if (!coordinate || !plotArea) return null;\n\n return (\n <g pointerEvents=\"none\" stroke=\"var(--chakra-colors-border-emphasized)\" strokeWidth=\"1\">\n <line x1={coordinate.x} x2={coordinate.x} y1={plotArea.y} y2={plotArea.y + plotArea.height} />\n <line x1={plotArea.x} x2={plotArea.x + plotArea.width} y1={coordinate.y} y2={coordinate.y} />\n </g>\n );\n};\n\ninterface DataTableStatChartProps<T extends object> {\n data: T[];\n dataKey: StringKeyOf<T>;\n color: ChartSeries<T>[\"color\"];\n height: string;\n ariaLabel: string;\n tooltipLabel: (datum: T) => ReactNode;\n tooltipValue: (value: string | number) => ReactNode;\n tooltipSeriesLabel: string;\n layout?: \"horizontal\" | \"vertical\";\n categoryKey?: StringKeyOf<T>;\n domain?: [number, number];\n barSize?: number;\n barCategoryGap?: number;\n}\n\nexport const DataTableStatChart = <T extends object>(props: DataTableStatChartProps<T>) => {\n const {\n data,\n dataKey,\n color,\n height,\n ariaLabel,\n tooltipLabel,\n tooltipValue,\n tooltipSeriesLabel,\n layout = \"horizontal\",\n categoryKey,\n domain,\n barSize,\n barCategoryGap = 1,\n } = props;\n const chart = useChart({ data, series: [{ name: dataKey, color }] });\n const getBarValue = (datum: T) => datum[dataKey] as string | number;\n const getCategoryValue = categoryKey ? (datum: T) => datum[categoryKey] as string | number : undefined;\n\n return (\n <Chart.Root chart={chart} height={height} aspectRatio=\"auto\" cursor=\"crosshair\" aria-label={ariaLabel}>\n <BarChart\n responsive\n data={chart.data}\n layout={layout}\n margin={{ top: 2, right: 0, bottom: 0, left: 0 }}\n barCategoryGap={barCategoryGap}\n >\n {layout === \"vertical\" ? (\n <>\n <XAxis type=\"number\" domain={domain} hide />\n <YAxis type=\"category\" dataKey={getCategoryValue} hide />\n </>\n ) : null}\n <Bar dataKey={getBarValue} fill={chart.color(color)} barSize={barSize} isAnimationActive={false} />\n <RechartsTooltip\n allowEscapeViewBox={{ x: true, y: true }}\n content={\n <Chart.Tooltip\n labelFormatter={(label, payload) => {\n const datum = payload[0]?.payload as T | undefined;\n return datum ? tooltipLabel(datum) : label;\n }}\n formatter={(value) => [tooltipValue(value), tooltipSeriesLabel]}\n />\n }\n cursor={<StatChartCrosshair />}\n isAnimationActive={false}\n wrapperStyle={{ zIndex: 1800 }}\n />\n </BarChart>\n </Chart.Root>\n );\n};\n","import { isDisplayValue } from \"./helpers\";\nimport type { RowData } from \"./types\";\n\nexport interface HistogramBin {\n start: number;\n end: number;\n count: number;\n}\n\nexport interface HistogramStat {\n min: number;\n max: number;\n bins: HistogramBin[];\n}\n\nexport interface TopValueStat {\n label: string;\n count: number;\n percentage: number;\n}\n\nconst getStatValue = (value: unknown) => (isDisplayValue(value) ? value.sortValue : value);\n\nconst getColumnStatValues = (rows: RowData[], columnId: string) =>\n rows\n .map((row) => getStatValue(row[columnId]))\n .filter((value) => value !== null && value !== undefined && value !== \"\");\n\nexport const countUniqueStatValues = (rows: RowData[], columnId: string) =>\n new Set(getColumnStatValues(rows, columnId)).size;\n\nexport const buildTopValuesStat = (rows: RowData[], columnId: string, limit: number) => {\n const values = getColumnStatValues(rows, columnId);\n const counts = new Map<unknown, number>();\n\n for (const value of values) {\n counts.set(value, (counts.get(value) ?? 0) + 1);\n }\n\n const groups: TopValueStat[] = [...counts.entries()]\n .map(([value, count]) => ({\n label: String(value),\n count,\n percentage: Math.round((count / values.length) * 100),\n }))\n .sort((left, right) => right.count - left.count || left.label.localeCompare(right.label));\n const topGroups = groups.slice(0, limit);\n const otherCount = groups.slice(limit).reduce((total, group) => total + group.count, 0);\n\n if (otherCount === 0) return topGroups;\n\n return [\n ...topGroups,\n {\n label: \"Other\",\n count: otherCount,\n percentage: Math.round((otherCount / values.length) * 100),\n },\n ];\n};\n\nexport const buildHistogramStat = (rows: RowData[], columnId: string, binCount: number): HistogramStat | null => {\n const values = getColumnStatValues(rows, columnId).filter((value): value is number => typeof value === \"number\");\n if (values.length === 0) return null;\n\n const min = Math.min(...values);\n const max = Math.max(...values);\n const binWidth = (max - min) / binCount;\n const bins = Array.from({ length: binCount }, (_, index) => ({\n start: min + binWidth * index,\n end: min + binWidth * (index + 1),\n count: 0,\n }));\n\n for (const value of values) {\n const binIndex = value === max || binWidth === 0 ? binCount - 1 : Math.floor((value - min) / binWidth);\n bins[binIndex]!.count += 1;\n }\n\n return { min, max, bins };\n};\n","import { Box, Flex, Table, Text } from \"@chakra-ui/react\";\nimport type { Header, HeaderGroup } from \"@tanstack/react-table\";\nimport { DataTableStatChart } from \"./data-table-stat-chart\";\nimport { buildHistogramStat, buildTopValuesStat, countUniqueStatValues } from \"./data-table-stats\";\nimport type { DataTableColumnStat, RowData } from \"./types\";\n\nconst formatNumber = new Intl.NumberFormat(undefined, { maximumFractionDigits: 2 }).format;\nconst STAT_CHART_COLOR = \"vis.categorical.1\";\n\ninterface SingleValueStatProps {\n value: string;\n count: number;\n}\n\nconst SingleValueStat = (props: SingleValueStatProps) => {\n const { value, count } = props;\n\n return (\n <Flex data-single-value-stat direction=\"column\" gap=\"2xs\" alignItems=\"flex-start\" minWidth=\"0\">\n <Text textStyle=\"label/L/medium\" lineHeight=\"1\" maxWidth=\"100%\" truncate>\n {value}\n </Text>\n <Text textStyle=\"label/XS\" color=\"fg.muted\">\n {formatNumber(count)} {count === 1 ? \"value\" : \"values\"}\n </Text>\n </Flex>\n );\n};\n\ninterface UniqueStatProps {\n rows: RowData[];\n columnId: string;\n}\n\nconst UniqueStat = (props: UniqueStatProps) => {\n const { rows, columnId } = props;\n const count = countUniqueStatValues(rows, columnId);\n\n return (\n <Flex direction=\"column\" gap=\"2xs\" alignItems=\"flex-start\">\n <Text textStyle=\"label/L/medium\" lineHeight=\"1\">\n {formatNumber(count)}\n </Text>\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n unique values\n </Text>\n </Flex>\n );\n};\n\ninterface HistogramStatProps {\n rows: RowData[];\n columnId: string;\n binCount: number;\n}\n\nconst HistogramStat = (props: HistogramStatProps) => {\n const { rows, columnId, binCount } = props;\n const histogram = buildHistogramStat(rows, columnId, binCount);\n\n if (!histogram) {\n return (\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n No numeric values\n </Text>\n );\n }\n\n const valueCount = histogram.bins.reduce((total, bin) => total + bin.count, 0);\n if (histogram.min === histogram.max) {\n return <SingleValueStat value={formatNumber(histogram.min)} count={valueCount} />;\n }\n\n return (\n <Flex direction=\"column\" width=\"100%\" gap=\"2xs\">\n <DataTableStatChart\n data={histogram.bins}\n dataKey=\"count\"\n color={STAT_CHART_COLOR}\n height=\"40px\"\n ariaLabel={`Distribution for ${columnId}`}\n tooltipLabel={(bin) => `${formatNumber(bin.start)} – ${formatNumber(bin.end)}`}\n tooltipValue={(value) => `${formatNumber(Number(value))} values`}\n tooltipSeriesLabel=\"Count\"\n />\n <Flex justifyContent=\"space-between\" gap=\"xs\">\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n {formatNumber(histogram.min)}\n </Text>\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n {formatNumber(histogram.max)}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\ninterface TopValuesStatProps {\n rows: RowData[];\n columnId: string;\n limit: number;\n}\n\nconst TopValuesStat = (props: TopValuesStatProps) => {\n const { rows, columnId, limit } = props;\n const groups = buildTopValuesStat(rows, columnId, limit);\n\n if (groups.length === 1 && groups[0]) {\n return <SingleValueStat value={groups[0].label} count={groups[0].count} />;\n }\n\n return (\n <Flex direction=\"column\" width=\"100%\" gap=\"2xs\">\n {groups.map((group) => (\n <Box key={group.label} position=\"relative\" height=\"18px\">\n <DataTableStatChart\n data={[group]}\n dataKey=\"percentage\"\n categoryKey=\"label\"\n color={STAT_CHART_COLOR}\n height=\"18px\"\n ariaLabel={`${group.label}: ${group.percentage}%`}\n layout=\"vertical\"\n domain={[0, 100]}\n barSize={18}\n tooltipLabel={(datum) => `${datum.label} · ${formatNumber(datum.count)} values`}\n tooltipValue={(value) => `${formatNumber(Number(value))}%`}\n tooltipSeriesLabel=\"Share\"\n />\n <Flex\n position=\"absolute\"\n inset=\"0\"\n paddingX=\"2xs\"\n justifyContent=\"space-between\"\n gap=\"xs\"\n pointerEvents=\"none\"\n >\n <Text textStyle=\"label/2XS\" color=\"fg.inverted\" truncate>\n {group.label}\n </Text>\n <Text textStyle=\"label/2XS/medium\" color=\"fg.muted\">\n {group.percentage}%\n </Text>\n </Flex>\n </Box>\n ))}\n </Flex>\n );\n};\n\ninterface DataTableStatProps {\n rows: RowData[];\n columnId: string;\n stat: DataTableColumnStat;\n}\n\nconst DataTableStat = (props: DataTableStatProps) => {\n const { rows, columnId, stat } = props;\n\n if (stat.type === \"unique\") return <UniqueStat rows={rows} columnId={columnId} />;\n if (stat.type === \"histogram\") {\n return <HistogramStat rows={rows} columnId={columnId} binCount={stat.bins ?? 10} />;\n }\n return <TopValuesStat rows={rows} columnId={columnId} limit={stat.limit ?? 2} />;\n};\n\ninterface DataTableStatCellProps {\n header: Header<RowData, unknown>;\n headerGroup: HeaderGroup<RowData>;\n rows: RowData[];\n columnStats: Partial<Record<string, DataTableColumnStat>>;\n fullWidth?: boolean;\n}\n\nconst DataTableStatCell = (props: DataTableStatCellProps) => {\n const { header, headerGroup, rows, columnStats, fullWidth } = props;\n const stat = columnStats[header.column.id];\n\n return (\n <Table.ColumnHeader\n data-column-id={header.column.id}\n data-stat-type={stat?.type}\n borderRight=\"1px solid\"\n _last={{ borderRight: \"none\" }}\n borderColor=\"border.subtle\"\n padding=\"xs\"\n verticalAlign=\"middle\"\n overflow=\"hidden\"\n style={{\n width:\n fullWidth && headerGroup.headers.indexOf(header) === headerGroup.headers.length - 1\n ? undefined\n : `calc(var(--header-${header.id}-size) * 1px)`,\n }}\n >\n {stat ? <DataTableStat rows={rows} columnId={header.column.id} stat={stat} /> : null}\n </Table.ColumnHeader>\n );\n};\n\ninterface DataTableStatsRowProps {\n headerGroup: HeaderGroup<RowData>;\n rows: RowData[];\n columnStats: Partial<Record<string, DataTableColumnStat>>;\n fullWidth?: boolean;\n noBorder?: boolean;\n}\n\nexport const DataTableStatsRow = (props: DataTableStatsRowProps) => {\n const { headerGroup, rows, columnStats, fullWidth, noBorder } = props;\n const hasVisibleStats = headerGroup.headers.some((header) => columnStats[header.column.id]);\n\n if (!hasVisibleStats) return null;\n\n return (\n <Table.Row\n className=\"data-table-stats-row\"\n borderRight={noBorder ? \"none\" : \"1px solid\"}\n borderColor=\"border.subtle\"\n >\n {headerGroup.headers.map((header) => (\n <DataTableStatCell\n key={header.id}\n header={header}\n headerGroup={headerGroup}\n rows={rows}\n columnStats={columnStats}\n fullWidth={fullWidth}\n />\n ))}\n </Table.Row>\n );\n};\n","import { Icon as ChakraIcon, Flex, IconButton, Menu, Portal, Table, Text } from \"@chakra-ui/react\";\nimport {\n type Cell,\n flexRender,\n type Header,\n type HeaderGroup,\n type Row,\n type Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport { ArrowDownAZ, ArrowUpAZ, MoreVertical } from \"lucide-react\";\nimport type { CSSProperties } from \"react\";\nimport { ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { DataTableCellContext, DataTableProps, RowData } from \"./types\";\n\nconst utilityColumnIds = new Set([\"rowIndex\", \"rowSelection\", \"rowActions\"]);\n\nconst getSortMenuIcon = (sortDirection: false | \"asc\" | \"desc\") => {\n if (sortDirection === \"asc\") return ArrowUpAZ;\n if (sortDirection === \"desc\") return ArrowDownAZ;\n return MoreVertical;\n};\n\ninterface DataTableColumnHeaderProps {\n header: Header<RowData, unknown>;\n headerGroup: HeaderGroup<RowData>;\n table: TanStackTable<RowData>;\n fullWidth?: boolean;\n hasDescription?: boolean;\n}\n\nexport const DataTableColumnHeader = (props: DataTableColumnHeaderProps) => {\n const { header, headerGroup, table, fullWidth, hasDescription } = props;\n const sortDirection = header.column.getIsSorted();\n const canSortColumn = !utilityColumnIds.has(header.column.id) && table.getCoreRowModel().rows.length > 1;\n const SortIcon = getSortMenuIcon(sortDirection);\n const tooltipContent =\n header.column.id === \"rowSelection\"\n ? \"Select all\"\n : flexRender(header.column.columnDef.header, header.getContext());\n\n return (\n <Table.ColumnHeader\n data-column-id={header.column.id}\n textTransform=\"none\"\n borderRight=\"1px solid\"\n _last={{ borderRight: \"none\" }}\n borderColor=\"border.subtle\"\n paddingX=\"xs\"\n paddingY=\"xs\"\n key={header.id}\n overflow=\"hidden\"\n position=\"relative\"\n verticalAlign=\"middle\"\n whiteSpace=\"nowrap\"\n style={{\n width:\n fullWidth && headerGroup.headers.indexOf(header) === headerGroup.headers.length - 1\n ? undefined\n : `calc(var(--header-${header.id}-size) * 1px)`,\n }}\n >\n <Tooltip content={tooltipContent} disabled={hasDescription}>\n <Flex className=\"group\" alignItems=\"center\" justifyContent=\"space-between\" gap=\"1\" flex=\"1\" minW=\"0\">\n <Text as=\"div\" textStyle=\"label/S/medium\" lineHeight=\"1.2\" truncate>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Text>\n {canSortColumn && (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton\n ml=\"2px\"\n size=\"2xs\"\n aria-label={sortDirection ? `Sorted ${sortDirection}` : \"Sort column\"}\n variant=\"ghost\"\n visibility={sortDirection ? \"visible\" : \"hidden\"}\n _groupHover={{ visibility: \"visible\" }}\n >\n <ChakraIcon as={SortIcon} boxSize=\"14px\" />\n </IconButton>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content zIndex=\"popover\" bg=\"bg\">\n <Menu.Item value=\"sort-asc\" asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label=\"Sort ascending\"\n icon={<ChakraIcon as={ArrowUpAZ} boxSize=\"16px\" />}\n disabled={sortDirection === \"asc\"}\n onActivate={() => header.column.toggleSorting(false)}\n />\n </Menu.Item>\n <Menu.Item value=\"sort-desc\" asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label=\"Sort descending\"\n icon={<ChakraIcon as={ArrowDownAZ} boxSize=\"16px\" />}\n disabled={sortDirection === \"desc\"}\n onActivate={() => header.column.toggleSorting(true)}\n />\n </Menu.Item>\n {sortDirection && (\n <Menu.Item value=\"clear-sort\" asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label=\"Clear sort\"\n onActivate={() => header.column.clearSorting()}\n />\n </Menu.Item>\n )}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n )}\n {header.column.getCanResize() && (\n <span\n {...{\n onDoubleClick: () => header.column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: `resizer ${header.column.getIsResizing() ? \"isResizing\" : \"\"}`,\n }}\n />\n )}\n </Flex>\n </Tooltip>\n </Table.ColumnHeader>\n );\n};\n\ninterface DataTableCellViewProps {\n cell: Cell<RowData, unknown>;\n row: Row<RowData>;\n getCellContextMenuActions?: DataTableProps[\"getCellContextMenuActions\"];\n}\n\ninterface DataTableColumnMeta {\n getCellStyle?: (value: unknown) => CSSProperties | undefined;\n}\n\nconst DataTableCellView = (props: DataTableCellViewProps) => {\n const { cell, row, getCellContextMenuActions } = props;\n const columnMeta = cell.column.columnDef.meta as DataTableColumnMeta | undefined;\n const cellStyle = columnMeta?.getCellStyle?.(cell.getValue());\n const cellContext: DataTableCellContext = {\n row: row.original,\n rowId: row.id,\n columnId: cell.column.id,\n value: cell.getValue(),\n };\n const contextActions =\n getCellContextMenuActions?.(cellContext).map((action) => ({\n key: action.label,\n label: action.label,\n icon: action.icon,\n onClick: () => action.onSelect(cellContext),\n })) ?? [];\n const cellElement = (\n <Table.Cell\n data-column-id={cell.column.id}\n width=\"fit-content\"\n maxWidth=\"12rem\"\n overflow=\"hidden\"\n padding=\"xs\"\n borderRight=\"1px solid\"\n borderColor=\"border.subtle\"\n _last={{ borderRight: \"none\" }}\n borderBottom=\"none\"\n key={cell.id}\n textStyle=\"paragraph/S/regular\"\n textOverflow=\"ellipsis\"\n whiteSpace=\"nowrap\"\n style={cellStyle}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n );\n\n if (contextActions.length === 0) return cellElement;\n\n return (\n <ResourceContextMenu key={cell.id} actions={contextActions}>\n {cellElement}\n </ResourceContextMenu>\n );\n};\n\ninterface DataTableBodyRowProps {\n row: Row<RowData>;\n noBorder?: boolean;\n rowIsInteractive: boolean;\n rowIsActive: boolean;\n rowIsSelected: boolean;\n onRowClick?: DataTableProps[\"onRowClick\"];\n getCellContextMenuActions?: DataTableProps[\"getCellContextMenuActions\"];\n}\n\nexport const DataTableBodyRow = (props: DataTableBodyRowProps) => {\n const { row, noBorder, rowIsInteractive, rowIsActive, rowIsSelected, onRowClick, getCellContextMenuActions } = props;\n\n return (\n <Table.Row\n key={row.id}\n data-active={rowIsActive ? \"true\" : undefined}\n data-selected={rowIsSelected ? \"true\" : undefined}\n aria-selected={rowIsSelected ? \"true\" : undefined}\n cursor={rowIsInteractive ? \"pointer\" : undefined}\n onClick={rowIsInteractive ? () => onRowClick?.(row.original) : undefined}\n borderTop={noBorder ? \"none\" : \"1px solid\"}\n borderBottom=\"1px solid\"\n borderRight={noBorder ? \"none\" : \"1px solid\"}\n _last={{ borderBottom: noBorder ? \"none\" : \"1px solid\", borderColor: \"border.subtle\" }}\n borderColor=\"border.subtle\"\n background={rowIsActive ? \"bg.active\" : \"bg\"}\n >\n {row.getVisibleCells().map((cell) => (\n <DataTableCellView key={cell.id} cell={cell} row={row} getCellContextMenuActions={getCellContextMenuActions} />\n ))}\n </Table.Row>\n );\n};\n","import { Button, Icon as ChakraIcon, Flex, IconButton, Menu, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport type { useReactTable } from \"@tanstack/react-table\";\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from \"lucide-react\";\n\nimport { NumberInputField, NumberInputRoot } from \"@/components/primitives/number-input\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { RowData } from \"./types\";\n\nexport function PaginationFooter({\n table,\n pageIndex,\n pageSize,\n pageSizeOptions,\n}: {\n table: ReturnType<typeof useReactTable<RowData>>;\n pageIndex: number;\n pageSize: number;\n pageSizeOptions: number[];\n}) {\n const totalPages = Math.max(table.getPageCount(), 1);\n const canGoBack = pageIndex > 0;\n const canGoForward = pageIndex < totalPages - 1;\n\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"space-between\"\n borderTop=\"1px solid\"\n borderColor={\"border.subtle\"}\n paddingX=\"xs\"\n >\n <Text textStyle=\"label/S/regular\">{table.getCoreRowModel().rows.length} rows</Text>\n <Stack alignItems=\"center\" direction=\"row\" justifyContent=\"flex-end\" paddingY=\"xs\">\n <Flex alignItems=\"center\" gap=\"xs\" marginRight=\"sm\">\n <Text textStyle=\"label/S/regular\">Rows per page</Text>\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button size=\"xs\" variant=\"outline\">\n {pageSize}\n </Button>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content bg=\"bg\">\n {pageSizeOptions.map((option) => (\n <Menu.Item key={option} value={`${option}`} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label={`${option}`}\n isSelected={option === pageSize}\n onActivate={() => table.setPageSize(option)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n </Flex>\n <IconButton size=\"xs\" aria-label=\"Go to first page\" onClick={() => table.setPageIndex(0)} disabled={!canGoBack}>\n <ChakraIcon as={ChevronsLeft} boxSize=\"14px\" />\n </IconButton>\n <IconButton\n size=\"xs\"\n aria-label=\"Go to previous page\"\n onClick={() => table.setPageIndex(pageIndex - 1)}\n disabled={!canGoBack}\n >\n <ChakraIcon as={ChevronLeft} boxSize=\"14px\" />\n </IconButton>\n <IconButton\n size=\"xs\"\n aria-label=\"Go to next page\"\n onClick={() => table.setPageIndex(pageIndex + 1)}\n disabled={!canGoForward}\n >\n <ChakraIcon as={ChevronRight} boxSize=\"14px\" />\n </IconButton>\n <IconButton\n size=\"xs\"\n aria-label=\"Go to last page\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!canGoForward}\n >\n <ChakraIcon as={ChevronsRight} boxSize=\"14px\" />\n </IconButton>\n <Flex alignItems=\"center\" height=\"100%\" marginLeft=\"sm\" marginRight=\"md\" gap=\"xs\">\n <Text>Page</Text>\n <NumberInputRoot\n margin=\"2xs\"\n width=\"3rem\"\n size=\"xs\"\n min={1}\n max={totalPages}\n value={`${pageIndex + 1}`}\n onValueChange={(details) => {\n const next = Number.isNaN(details.valueAsNumber) ? 1 : details.valueAsNumber;\n const clamped = Math.min(totalPages, Math.max(1, next));\n table.setPageIndex(clamped - 1);\n }}\n >\n <NumberInputField className=\"nodrag\" />\n </NumberInputRoot>\n <Text>of {totalPages}</Text>\n </Flex>\n </Stack>\n </Flex>\n );\n}\n","import { Button, Icon as ChakraIcon, Flex, IconButton, Menu, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { X } from \"lucide-react\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { DataTableSelectionAction, RowData } from \"./types\";\n\ninterface SelectionToolbarProps {\n selectedCount: number;\n totalCount: number;\n onClearSelection: () => void;\n onSelectAll: () => void;\n actions: DataTableSelectionAction[];\n selectedRows: RowData[];\n}\n\nexport function SelectionToolbar(props: SelectionToolbarProps) {\n const { selectedCount, totalCount, onClearSelection, onSelectAll, actions, selectedRows } = props;\n const actionLabel = actions.length === 1 ? actions[0]?.label : \"Actions\";\n\n return (\n <Flex position=\"absolute\" insetX=\"sm\" bottom=\"sm\" zIndex=\"popover\" justifyContent=\"center\" pointerEvents=\"none\">\n <Stack\n role=\"toolbar\"\n aria-label=\"Selection actions\"\n direction=\"row\"\n alignItems=\"center\"\n layerStyle=\"floatingBar\"\n pointerEvents=\"auto\"\n maxWidth=\"100%\"\n overflowX=\"auto\"\n >\n <IconButton aria-label=\"clear-selection\" onClick={onClearSelection} size=\"xs\">\n <ChakraIcon as={X} boxSize=\"16px\" />\n </IconButton>\n <Text>{selectedCount} rows selected</Text>\n {selectedCount !== totalCount && (\n <Button size=\"xs\" onClick={onSelectAll}>\n Select all {totalCount} rows\n </Button>\n )}\n {actions.length === 1 && actions[0] ? (\n <Button size=\"xs\" onClick={() => actions[0]?.onSelect(selectedRows)}>\n {actionLabel}\n </Button>\n ) : null}\n {actions.length > 1 ? (\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button size=\"xs\">{actionLabel}</Button>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content bg=\"bg\">\n {actions.map((action) => (\n <Menu.Item key={action.label} value={action.label} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n tone={action.destructive ? \"danger\" : \"default\"}\n label={action.label}\n icon={action.icon}\n onActivate={() => action.onSelect(selectedRows)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n ) : null}\n </Stack>\n </Flex>\n );\n}\n","import \"./data-table.css\";\n\nimport { Box, Flex, Table } from \"@chakra-ui/react\";\nimport {\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type RowSelectionState,\n type SortingState,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { Fragment, useEffect, useState } from \"react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { useKanbanRendererStore } from \"../kanban-renderer/use-kanban-renderer-store\";\nimport { buildColumns } from \"./build-columns\";\nimport { DataTableColumnMenu } from \"./data-table-column-menu\";\nimport { DataTableHeader } from \"./data-table-header\";\nimport {\n buildDataTableRendererAttributes,\n buildDataTableRendererRows,\n filterDataTableRows,\n getSelectedOriginalRows,\n reorderDataTableColumns,\n resolveDataTableColumnOrder,\n resolveDataTableRowId,\n resolveDataTableToolbarStorageKey,\n resolveInitialPageSize,\n resolveSelectionActions,\n shouldEnableSelection,\n shouldHighlightActiveRow,\n} from \"./data-table-state\";\nimport { DataTableStatsRow } from \"./data-table-stats-row\";\nimport { DataTableBodyRow, DataTableColumnHeader } from \"./data-table-table-parts\";\nimport { PaginationFooter } from \"./pagination-footer\";\nimport { SelectionToolbar } from \"./selection-toolbar\";\nimport type { DataTableProps } from \"./types\";\n\nexport const DataTable = (props: DataTableProps) => {\n const {\n data,\n noBorder,\n fullWidth,\n hiddenColumns,\n onRowClick,\n isRowInteractive,\n activeRowId,\n columnIcons,\n columnDescriptions,\n compactHeaders,\n columnStats,\n columnRenderers,\n initialPageSize,\n pageSizeOptions = [10, 20, 30, 50, 100],\n rowActions = [],\n getRowId,\n toolbarStorageKey,\n enableRowActivation = false,\n getCellContextMenuActions,\n } = props;\n const [sorting, setSorting] = useState<SortingState>([]);\n const [pagination, setPagination] = useState<PaginationState>(() => ({\n pageIndex: 0,\n pageSize: resolveInitialPageSize({ initialPageSize }),\n }));\n const [rowSelection, setRowSelection] = useState<RowSelectionState>({});\n const [showStats, setShowStats] = useState(true);\n const [columnOrder, setColumnOrder] = useState<string[]>(() => {\n const propHiddenColumnsSet = new Set(hiddenColumns ?? []);\n return Object.keys(data[0] || {}).filter((key) => !propHiddenColumnsSet.has(key));\n });\n const [hiddenColumnMenuIds, setHiddenColumnMenuIds] = useState<Set<string>>(() => new Set());\n const hiddenColumnsSet = new Set(hiddenColumns ?? []);\n const baseColumnKeys = Object.keys(data[0] || {}).filter((key) => !hiddenColumnsSet.has(key));\n const orderedBaseColumnKeys = resolveDataTableColumnOrder(baseColumnKeys, columnOrder);\n const visibleColumnIds = new Set(orderedBaseColumnKeys.filter((key) => !hiddenColumnMenuIds.has(key)));\n const columnKeys = orderedBaseColumnKeys.filter((key) => visibleColumnIds.has(key));\n const enableSelection = shouldEnableSelection(props);\n const selectionActions = resolveSelectionActions(props);\n const rendererAttributes = buildDataTableRendererAttributes(data, orderedBaseColumnKeys, compactHeaders);\n const rendererRows = buildDataTableRendererRows(data, orderedBaseColumnKeys, getRowId);\n const resolvedToolbarStorageKey = resolveDataTableToolbarStorageKey({\n toolbarStorageKey,\n columnKeys: baseColumnKeys,\n });\n const filters = useKanbanRendererStore(resolvedToolbarStorageKey, (state) => state.filters, {\n settings: { viewMode: \"list\" },\n });\n const filteredRendererRows = filterDataTableRows(rendererRows, filters, rendererAttributes);\n const filteredData = filteredRendererRows.map((row) => row.sourceRow);\n const columns = buildColumns(data, columnKeys, {\n columnIcons,\n columnDescriptions,\n compactHeaders,\n enableSelection,\n rowActions,\n selectedRowIds: rowSelection,\n columnRenderers,\n });\n\n const table = useReactTable({\n data: filteredData,\n columns,\n defaultColumn: { size: 150, minSize: 40, maxSize: 800 },\n state: { sorting, pagination, rowSelection },\n getRowId: (row, index) => resolveDataTableRowId(row, index, getRowId),\n columnResizeMode: \"onChange\",\n columnResizeDirection: \"ltr\",\n onSortingChange: setSorting,\n onPaginationChange: setPagination,\n onRowSelectionChange: setRowSelection,\n getSortedRowModel: getSortedRowModel(),\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n enableMultiRowSelection: enableSelection,\n enableRowSelection: enableSelection,\n autoResetAll: false,\n });\n\n useEffect(() => {\n const pageCount = table.getPageCount();\n if (pageCount === 0 || pagination.pageIndex < pageCount) return;\n\n setPagination((current) => ({\n ...current,\n pageIndex: Math.max(pageCount - 1, 0),\n }));\n }, [pagination.pageIndex, table]);\n\n const columnSizeVars = (() => {\n const headers = table.getFlatHeaders();\n const colSizes: Record<string, number> = {};\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i]!;\n colSizes[`--header-${header.id}-size`] = header.getSize();\n colSizes[`--col-${header.column.id}-size`] = header.column.getSize();\n }\n return colSizes;\n })();\n\n const selectedRows = table.getSelectedRowModel().rows;\n const allRows = table.getCoreRowModel().rows;\n const selectedOriginalRows = getSelectedOriginalRows(selectedRows);\n const columnControl = (\n <DataTableColumnMenu\n columns={orderedBaseColumnKeys.map((columnId) => ({\n id: columnId,\n label: compactHeaders?.[columnId] ?? columnId,\n }))}\n visibleColumnIds={visibleColumnIds}\n showStats={showStats}\n statsAvailable={Boolean(columnStats)}\n onColumnVisibilityChange={(columnId, visible) =>\n setHiddenColumnMenuIds((current) => {\n const next = new Set(current);\n if (visible) {\n next.delete(columnId);\n } else {\n next.add(columnId);\n }\n return next;\n })\n }\n onColumnReorder={(activeColumnId, overColumnId) =>\n setColumnOrder((current) =>\n reorderDataTableColumns(resolveDataTableColumnOrder(baseColumnKeys, current), activeColumnId, overColumnId),\n )\n }\n onStatsVisibilityChange={setShowStats}\n />\n );\n\n return (\n <Flex direction=\"column\" height=\"100%\" width=\"100%\">\n <DataTableHeader\n rows={rendererRows}\n storageKey={resolvedToolbarStorageKey}\n attributes={rendererAttributes}\n columnControl={columnControl}\n />\n <Box position=\"relative\" flex=\"1\" minHeight=\"0\">\n <ScrollArea height=\"100%\" maxWidth=\"unset\" showHorizontalScrollbar>\n <Table.Root\n className={`data-table${fullWidth ? \" full-width\" : \"\"}`}\n style={{ ...columnSizeVars, width: fullWidth ? \"100%\" : table.getTotalSize() }}\n >\n <Table.Header>\n {table.getHeaderGroups().map((headerGroup) => (\n <Fragment key={headerGroup.id}>\n <Table.Row\n className=\"data-table-column-header-row\"\n borderRight={noBorder ? \"none\" : \"1px solid\"}\n borderColor=\"border.subtle\"\n >\n {headerGroup.headers.map((header) => (\n <DataTableColumnHeader\n key={header.id}\n header={header}\n headerGroup={headerGroup}\n table={table}\n fullWidth={fullWidth}\n hasDescription={Boolean(columnDescriptions?.[header.column.id])}\n />\n ))}\n </Table.Row>\n {columnStats && showStats ? (\n <DataTableStatsRow\n headerGroup={headerGroup}\n rows={filteredData}\n columnStats={columnStats}\n noBorder={noBorder}\n fullWidth={fullWidth}\n />\n ) : null}\n </Fragment>\n ))}\n </Table.Header>\n <Table.Body>\n {table.getRowModel().rows.map((row) => {\n const rowIsInteractive = onRowClick ? (isRowInteractive?.(row.original) ?? true) : false;\n const rowIsActive = shouldHighlightActiveRow({ enableRowActivation, activeRowId, rowId: row.id });\n const rowIsSelected = row.getIsSelected();\n\n return (\n <DataTableBodyRow\n key={row.id}\n row={row}\n noBorder={noBorder}\n rowIsInteractive={rowIsInteractive}\n rowIsActive={rowIsActive}\n rowIsSelected={rowIsSelected}\n onRowClick={onRowClick}\n getCellContextMenuActions={getCellContextMenuActions}\n />\n );\n })}\n </Table.Body>\n </Table.Root>\n </ScrollArea>\n {enableSelection && selectedRows.length > 0 ? (\n <SelectionToolbar\n selectedCount={selectedRows.length}\n totalCount={allRows.length}\n onClearSelection={() => table.toggleAllRowsSelected(false)}\n onSelectAll={() => table.toggleAllRowsSelected(true)}\n actions={selectionActions}\n selectedRows={selectedOriginalRows}\n />\n ) : null}\n </Box>\n {table.getPageCount() > 1 && (\n <PaginationFooter\n table={table}\n pageIndex={pagination.pageIndex}\n pageSize={pagination.pageSize}\n pageSizeOptions={pageSizeOptions}\n />\n )}\n </Flex>\n );\n};\n","import \"./data-table.css\";\n\nimport { Skeleton, Table, Text } from \"@chakra-ui/react\";\n\nexport interface DataTableSkeletonColumn {\n id: string;\n label: string;\n}\n\ninterface DataTableSkeletonProps {\n /** Real column headers when the caller already knows them. */\n columns?: DataTableSkeletonColumn[];\n /** Placeholder column count when the headers are still unknown. */\n columnCount?: number;\n rowCount?: number;\n}\n\n// Deterministic width variation keeps the shimmer organic without re-rendering\n// to a different layout on every mount.\nconst cellWidths = [\"70%\", \"45%\", \"60%\", \"35%\", \"55%\"];\n\nexport const DataTableSkeleton = (props: DataTableSkeletonProps) => {\n const { columns, columnCount = 3, rowCount = 5 } = props;\n const headers =\n columns && columns.length > 0\n ? columns\n : Array.from({ length: columnCount }, (_, index) => ({ id: `column-${index + 1}`, label: \"\" }));\n\n return (\n <Table.Root className=\"data-table full-width\" width=\"100%\">\n <Table.Header>\n <Table.Row className=\"data-table-column-header-row\" borderRight=\"1px solid\" borderColor=\"border.subtle\">\n {headers.map((column) => (\n <Table.ColumnHeader\n key={column.id}\n textTransform=\"none\"\n borderRight=\"1px solid\"\n _last={{ borderRight: \"none\" }}\n borderColor=\"border.subtle\"\n paddingX=\"xs\"\n paddingY=\"xs\"\n whiteSpace=\"nowrap\"\n >\n {column.label ? (\n <Text as=\"div\" textStyle=\"label/S/medium\" lineHeight=\"1.2\" truncate>\n {column.label}\n </Text>\n ) : (\n <Skeleton height=\"12px\" width=\"4rem\" borderRadius=\"xs\" />\n )}\n </Table.ColumnHeader>\n ))}\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {Array.from({ length: rowCount }, (_, rowIndex) => (\n <Table.Row key={rowIndex}>\n {headers.map((column, columnIndex) => (\n <Table.Cell\n key={column.id}\n padding=\"xs\"\n borderRight=\"1px solid\"\n borderColor=\"border.subtle\"\n _last={{ borderRight: \"none\" }}\n borderBottom=\"none\"\n >\n <Skeleton\n height=\"14px\"\n width={cellWidths[(rowIndex + columnIndex) % cellWidths.length]}\n borderRadius=\"xs\"\n />\n </Table.Cell>\n ))}\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Root>\n );\n};\n"],"names":["resolveCategoricalColor","value","categories","find","category","Object","is","color","CategoricalColorCell","props","children","darkTextColor","lightTextColor","darkColorTarget","readableContrastRatio","expandShortHex","hex","split","map","character","join","parseHexColor","normalized","trim","startsWith","slice","expandedHex","length","test","r","Number","parseInt","g","b","toLinearChannel","channel","relativeLuminance","contrastRatio","foreground","background","foregroundLuminance","backgroundLuminance","lighter","Math","max","darker","min","toHexColor","toHexChannel","round","toString","padStart","mixRgbColors","start","end","endWeight","findMatchingForeground","target","step","candidate","resolveReadableTextColor","backgroundColor","darkText","lightText","darkerMatch","lighterMatch","mixHexColors","startColor","endColor","startWeight","resolveColorCellStyle","lightForeground","light","darkForeground","dark","toDisplayPercent","mixColors","mixedColor","mixThemeColors","undefined","resolveColorScaleValue","stops","isFinite","firstStop","lastStop","endIndex","findIndex","stop","startStop","endStop","ColorScaleCell","$","_c","t0","jsx","Text","isDisplayValue","isString","v","String","isNumber","isBoolean","Boolean","getType","values","comparableValues","sortValue","valueOf","isValidElement","filter","every","isNaN","Date","parse","headerIconProps","boxSize","marginRight","getIcon","type","ChakraIcon","CalendarClock","Type","Hash","CheckCircle2","formatDisplayValue","display","JSON","stringify","columnHelper","createColumnHelper","imageExtensionPattern","imageLabelPattern","humanizeKey","key","words","replace","toLowerCase","toUpperCase","formatPath","path","part","isPrimitiveArray","item","appendJsonFields","fields","Array","isArray","push","label","forEach","index","entries","parseJsonCellValue","buildJsonFields","field","isJsonImageValue","url","URL","protocol","pathname","isJsonImageArray","formatJsonPrimitive","formatJsonValue","getJsonCellSummary","parsedValue","keys","visibleValues","remainingCount","toReadOnlyValue","src","alt","images","image","buildFriendlyJsonParams","id","name","FriendlyJsonDisplay","t1","ParamEditor","stopRowActivation","event","stopPropagation","JsonCell","columnLabel","T0","T1","T2","summary","t10","t11","t2","t3","t4","t5","t6","t7","t8","t9","imageFields","flatMap","_temp","t12","Popover","Root","Symbol","for","placement","offset","mainAxis","Trigger","Button","HStack","_temp2","Braces","t13","ChevronRight","t14","t15","t16","overscrollBehavior","t17","Portal","ScrollArea","t18","field_0","Image","getSortValue","compareValues","valueA","valueB","localeCompare","toSingleLineElement","element","cloneElement","style","flexWrap","minWidth","whiteSpace","stopControlPropagation","SelectionHeader","table","checked","getIsAllRowsSelected","isIndeterminate","getIsSomeRowsSelected","Minus","Check","details","toggleAllRowsSelected","Checkbox","SelectionCell","row","selectedRowIds","toggleSelected","RowActionsCell","actions","IconButton","ChevronDown","action","Menu","ListRow","destructive","icon","onSelect","original","jsxs","FormattedCell","displayValue","bb0","chakra","DataCell","renderer","resolveDataCellStyle","buildColumns","data","columnKeys","options","columnIcons","columnDescriptions","compactHeaders","enableSelection","rowActions","columnRenderers","rowIndexColumn","accessor","_row","rowIndex","header","enableResizing","size","cell","info","getValue","selectionColumn","enableSorting","dataColumns","fallBackKey","columnValues","customIcon","headerIcon","columnDescription","headerLabel","Tooltip","CircleHelp","meta","getCellStyle","sortingFn","rowA","rowB","rowActionsColumn","DataTableColumnMenuRow","column","onColumnVisibilityChange","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Transform","opacity","bg","GripVertical","Box","Icon","DataTableColumnMenu","columns","visibleColumnIds","showStats","statsAvailable","onColumnReorder","onStatsVisibilityChange","triggerRef","useRef","contentRef","open","setOpen","useState","query","setQuery","activationConstraint","distance","sensors","useSensors","useSensor","PointerSensor","normalizedQuery","includes","filteredColumns","active","over","handleDragEnd","closeOnOutsidePointerDown","event_0","Node","current","contains","closeOnEscape","event_1","document","addEventListener","removeEventListener","useEffect","getAnchorElement","Settings2","Switch","role","SearchableMenuInput","column_1","has","Stack","SortableContext","verticalListSortingStrategy","DndContext","closestCenter","column_0","DataTableHeader","rows","storageKey","columnControl","viewMode","KanbanRendererToolbar","defaultPageSize","resolveDataTableRowId","getRowId","resolveInitialPageSize","initialPageSize","getSelectedOriginalRows","resolveSelectionActions","selectionActions","onCSVDownload","shouldEnableSelection","selectionMode","shouldHighlightActiveRow","enableRowActivation","activeRowId","rowId","toAttributeValue","raw","isNumberColumn","columnKey","resolveAttributeType","kind","buildDataTableRendererAttributes","filterable","sortable","displayable","buildDataTableRendererRows","fromEntries","firstValue","title","sourceRow","filterDataTableRows","filters","filterRows","resolveDataTableColumnOrder","availableColumnIds","requestedColumnOrder","availableColumnIdSet","Set","orderedColumnIds","columnId","orderedColumnIdSet","missingColumnIds","reorderDataTableColumns","columnIds","activeColumnId","overColumnId","activeIndex","indexOf","overIndex","nextColumnIds","activeColumn","splice","resolveDataTableToolbarStorageKey","toolbarStorageKey","StatChartCrosshair","coordinate","useActiveTooltipCoordinate","plotArea","usePlotArea","y","height","x","width","DataTableStatChart","dataKey","ariaLabel","tooltipLabel","tooltipValue","tooltipSeriesLabel","layout","categoryKey","domain","barSize","barCategoryGap","series","chart","useChart","datum","getBarValue","datum_0","getCategoryValue","top","right","bottom","left","Fragment","XAxis","YAxis","Bar","payload","datum_1","Chart","zIndex","RechartsTooltip","BarChart","t19","getStatValue","getColumnStatValues","countUniqueStatValues","buildTopValuesStat","limit","counts","Map","set","get","groups","count","percentage","sort","topGroups","otherCount","reduce","total","group","buildHistogramStat","binCount","binWidth","bins","from","_","binIndex","floor","formatNumber","Intl","NumberFormat","maximumFractionDigits","format","STAT_CHART_COLOR","SingleValueStat","Flex","UniqueStat","HistogramStat","histogram","valueCount","_temp3","TopValuesStat","_temp6","DataTableStat","stat","DataTableStatCell","headerGroup","columnStats","fullWidth","borderRight","headers","Table","DataTableStatsRow","noBorder","some","header_0","bin","bin_0","_temp4","_temp5","utilityColumnIds","getSortMenuIcon","sortDirection","ArrowUpAZ","ArrowDownAZ","MoreVertical","DataTableColumnHeader","hasDescription","canSortColumn","getIsSorted","getCoreRowModel","SortIcon","flexRender","columnDef","getContext","tooltipContent","visibility","toggleSorting","clearSorting","getCanResize","onDoubleClick","resetSize","onMouseDown","getResizeHandler","onTouchStart","className","getIsResizing","DataTableCellView","getCellContextMenuActions","columnMeta","cellStyle","cellContext","onClick","contextActions","cellElement","ResourceContextMenu","DataTableBodyRow","rowIsInteractive","rowIsActive","rowIsSelected","onRowClick","borderBottom","borderColor","getVisibleCells","PaginationFooter","pageIndex","pageSize","pageSizeOptions","getPageCount","totalPages","canGoBack","canGoForward","option","setPageSize","setPageIndex","ChevronsLeft","ChevronLeft","t20","t21","t22","t23","ChevronsRight","t24","t25","t26","t27","next","valueAsNumber","clamped","t28","NumberInputField","t29","NumberInputRoot","t30","t31","t32","t33","SelectionToolbar","selectedCount","totalCount","onClearSelection","onSelectAll","selectedRows","actionLabel","X","DataTable","hiddenColumns","isRowInteractive","sorting","setSorting","pagination","setPagination","rowSelection","setRowSelection","setShowStats","columnOrder","setColumnOrder","propHiddenColumnsSet","hiddenColumnMenuIds","setHiddenColumnMenuIds","hiddenColumnsSet","baseColumnKeys","orderedBaseColumnKeys","rendererAttributes","rendererRows","resolvedToolbarStorageKey","useKanbanRendererStore","state","settings","filteredData","useReactTable","defaultColumn","minSize","maxSize","columnResizeMode","columnResizeDirection","onSortingChange","onPaginationChange","onRowSelectionChange","getSortedRowModel","getPaginationRowModel","enableMultiRowSelection","enableRowSelection","autoResetAll","pageCount","columnSizeVars","getFlatHeaders","colSizes","i","getSize","getSelectedRowModel","allRows","selectedOriginalRows","visible","delete","add","getTotalSize","getHeaderGroups","getRowModel","getIsSelected","cellWidths","DataTableSkeleton","columnCount","rowCount","__0","columnIndex","Skeleton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-table.js","sources":["../src/components/data-table/categorical-color-cell.tsx","../src/components/data-table/color-cell-style.ts","../src/components/data-table/color-scale-cell.tsx","../src/components/data-table/friendly-json-display.tsx","../src/components/data-table/json-cell.tsx","../src/components/data-table/build-columns.tsx","../src/components/data-table/data-table-column-menu.tsx","../src/components/data-table/data-table-stat-chart.tsx","../src/components/data-table/data-table-stats.ts","../src/components/data-table/data-table-stats-row.tsx","../src/components/data-table/data-table-table-parts.tsx","../src/components/data-table/data-table.tsx","../src/components/data-table/data-table-skeleton.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { DataTableCategoricalColor } from \"./types\";\n\ninterface CategoricalColorCellProps {\n children: ReactNode;\n}\n\nexport const resolveCategoricalColor = (value: unknown, categories: DataTableCategoricalColor[]) => {\n return categories.find((category) => Object.is(category.value, value))?.color ?? null;\n};\n\nexport const CategoricalColorCell = (props: CategoricalColorCellProps) => {\n const { children } = props;\n\n return children;\n};\n","import type { DataTableThemeColor } from \"./types\";\n\ninterface RgbColor {\n r: number;\n g: number;\n b: number;\n}\n\nconst darkTextColor = \"#111827\";\nconst lightTextColor = \"#ffffff\";\nconst darkColorTarget = \"#000000\";\nconst readableContrastRatio = 4.5;\n\nconst expandShortHex = (hex: string) =>\n hex\n .split(\"\")\n .map((character) => character + character)\n .join(\"\");\n\nexport const parseHexColor = (color: string) => {\n const normalized = color.trim();\n const hex = normalized.startsWith(\"#\") ? normalized.slice(1) : normalized;\n const expandedHex = hex.length === 3 ? expandShortHex(hex) : hex;\n if (!/^[\\da-f]{6}$/i.test(expandedHex)) return null;\n\n return {\n r: Number.parseInt(expandedHex.slice(0, 2), 16),\n g: Number.parseInt(expandedHex.slice(2, 4), 16),\n b: Number.parseInt(expandedHex.slice(4, 6), 16),\n };\n};\n\nconst toLinearChannel = (channel: number) => {\n const normalized = channel / 255;\n return normalized <= 0.03928 ? normalized / 12.92 : ((normalized + 0.055) / 1.055) ** 2.4;\n};\n\nconst relativeLuminance = (color: RgbColor) =>\n 0.2126 * toLinearChannel(color.r) + 0.7152 * toLinearChannel(color.g) + 0.0722 * toLinearChannel(color.b);\n\nconst contrastRatio = (foreground: RgbColor, background: RgbColor) => {\n const foregroundLuminance = relativeLuminance(foreground);\n const backgroundLuminance = relativeLuminance(background);\n const lighter = Math.max(foregroundLuminance, backgroundLuminance);\n const darker = Math.min(foregroundLuminance, backgroundLuminance);\n return (lighter + 0.05) / (darker + 0.05);\n};\n\nconst toHexColor = (color: RgbColor) => {\n const toHexChannel = (channel: number) => Math.round(channel).toString(16).padStart(2, \"0\");\n return `#${toHexChannel(color.r)}${toHexChannel(color.g)}${toHexChannel(color.b)}`;\n};\n\nconst mixRgbColors = (start: RgbColor, end: RgbColor, endWeight: number) => ({\n r: start.r * (1 - endWeight) + end.r * endWeight,\n g: start.g * (1 - endWeight) + end.g * endWeight,\n b: start.b * (1 - endWeight) + end.b * endWeight,\n});\n\nexport const contrastRatioForHexColors = (foregroundColor: string, backgroundColor: string) => {\n const foreground = parseHexColor(foregroundColor);\n const background = parseHexColor(backgroundColor);\n if (!foreground || !background) return 0;\n return contrastRatio(foreground, background);\n};\n\nconst findMatchingForeground = (background: RgbColor, target: RgbColor) => {\n for (let step = 1; step <= 50; step += 1) {\n const candidate = mixRgbColors(background, target, step / 50);\n if (contrastRatio(candidate, background) >= readableContrastRatio) {\n return { color: toHexColor(candidate), step };\n }\n }\n\n return { color: toHexColor(target), step: 50 };\n};\n\nexport const resolveReadableTextColor = (backgroundColor: string) => {\n const background = parseHexColor(backgroundColor);\n if (!background) return darkTextColor;\n\n const darkText = parseHexColor(darkColorTarget)!;\n const lightText = parseHexColor(lightTextColor)!;\n const darkerMatch = findMatchingForeground(background, darkText);\n const lighterMatch = findMatchingForeground(background, lightText);\n\n return darkerMatch.step <= lighterMatch.step ? darkerMatch.color : lighterMatch.color;\n};\n\nexport const mixHexColors = (startColor: string, endColor: string, startWeight: number) => {\n const start = parseHexColor(startColor);\n const end = parseHexColor(endColor);\n if (!start || !end) return null;\n\n return toHexColor(mixRgbColors(start, end, 1 - startWeight));\n};\n\nexport const resolveColorCellStyle = (color: DataTableThemeColor) => {\n const lightForeground = color.foreground?.light ?? resolveReadableTextColor(color.light);\n const darkForeground = color.foreground?.dark ?? resolveReadableTextColor(color.dark);\n\n return {\n backgroundColor: `light-dark(${color.light}, ${color.dark})`,\n color: `light-dark(${lightForeground}, ${darkForeground})`,\n };\n};\n","import { Text } from \"@chakra-ui/react\";\nimport { mixHexColors } from \"./color-cell-style\";\nimport type { DataTableColorScaleStop, DataTableThemeColor } from \"./types\";\n\ninterface ColorScaleCellProps {\n value: number;\n}\n\nconst toDisplayPercent = (value: number) => Math.round(value * 100) / 100;\n\nconst mixColors = (startColor: string, endColor: string, startWeight: number) => {\n const mixedColor = mixHexColors(startColor, endColor, startWeight);\n if (mixedColor) return mixedColor;\n\n return `color-mix(in srgb, ${startColor} ${toDisplayPercent(startWeight * 100)}%, ${endColor})`;\n};\n\nconst mixThemeColors = (start: DataTableThemeColor, end: DataTableThemeColor, startWeight: number) => {\n const foreground =\n start.foreground && end.foreground\n ? {\n light: mixColors(start.foreground.light, end.foreground.light, startWeight),\n dark: mixColors(start.foreground.dark, end.foreground.dark, startWeight),\n }\n : undefined;\n\n return {\n light: mixColors(start.light, end.light, startWeight),\n dark: mixColors(start.dark, end.dark, startWeight),\n ...(foreground ? { foreground } : {}),\n };\n};\n\nexport const resolveColorScaleValue = (value: unknown, stops: DataTableColorScaleStop[]) => {\n if (typeof value !== \"number\" || !Number.isFinite(value) || stops.length < 2) return null;\n\n const firstStop = stops[0]!;\n const lastStop = stops[stops.length - 1]!;\n const range = lastStop.value - firstStop.value;\n if (range <= 0) return null;\n\n if (value <= firstStop.value) return firstStop.color;\n if (value >= lastStop.value) return lastStop.color;\n\n const endIndex = stops.findIndex((stop) => value <= stop.value);\n const startStop = stops[endIndex - 1]!;\n const endStop = stops[endIndex]!;\n const segmentProgress = (value - startStop.value) / (endStop.value - startStop.value);\n const startWeight = 1 - segmentProgress;\n return mixThemeColors(startStop.color, endStop.color, startWeight);\n};\n\nexport const ColorScaleCell = (props: ColorScaleCellProps) => {\n const { value } = props;\n\n return (\n <Text textStyle=\"paragraph/S/medium\" fontVariantNumeric=\"tabular-nums\" truncate>\n {value}\n </Text>\n );\n};\n","import { ParamEditor } from \"@/components/param-editor\";\n\ninterface JsonField {\n label: string;\n value: unknown;\n}\n\nexport interface FriendlyJsonDisplayProps {\n value: unknown;\n}\n\nconst imageExtensionPattern = /\\.(avif|bmp|gif|jpe?g|png|svg|webp)$/i;\nconst imageLabelPattern = /(^|\\s)(avatar|image|logo|photo|picture|thumbnail)(\\s|$)/i;\n\nconst humanizeKey = (key: string) => {\n const words = key\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .trim()\n .toLowerCase();\n\n return words ? `${words[0]?.toUpperCase()}${words.slice(1)}` : \"Details\";\n};\n\nconst formatPath = (path: string[]) => path.map((part) => (/^\\d+$/.test(part) ? part : humanizeKey(part))).join(\" / \");\n\nconst isPrimitiveArray = (value: unknown[]) => value.every((item) => item === null || typeof item !== \"object\");\n\nconst appendJsonFields = (value: unknown, path: string[], fields: JsonField[]) => {\n if (Array.isArray(value)) {\n if (value.length === 0 || isPrimitiveArray(value)) {\n fields.push({ label: formatPath(path), value });\n return;\n }\n\n value.forEach((item, index) => {\n appendJsonFields(item, [...path, String(index + 1)], fields);\n });\n return;\n }\n\n if (value !== null && typeof value === \"object\") {\n const entries = Object.entries(value);\n if (entries.length === 0) {\n fields.push({ label: formatPath(path), value: null });\n return;\n }\n\n entries.forEach(([key, item]) => {\n appendJsonFields(item, [...path, key], fields);\n });\n return;\n }\n\n fields.push({ label: formatPath(path), value });\n};\n\nexport const parseJsonCellValue = (value: unknown) => {\n if (typeof value !== \"string\") return value;\n\n try {\n return JSON.parse(value) as unknown;\n } catch {\n return value;\n }\n};\n\nexport const buildJsonFields = (value: unknown) => {\n const fields: JsonField[] = [];\n appendJsonFields(parseJsonCellValue(value), [], fields);\n return fields.map((field) => ({ ...field, label: field.label || \"Value\" }));\n};\n\nexport const isJsonImageValue = (value: unknown, label: string) => {\n if (typeof value !== \"string\") return false;\n if (value.startsWith(\"data:image/\")) return true;\n\n try {\n const url = new URL(value);\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") return false;\n return imageExtensionPattern.test(url.pathname) || imageLabelPattern.test(label);\n } catch {\n return false;\n }\n};\n\nexport const isJsonImageArray = (value: unknown, label: string) => {\n return Array.isArray(value) && value.length > 0 && value.every((item) => isJsonImageValue(item, label));\n};\n\nconst formatJsonPrimitive = (value: unknown) => {\n if (value === null || value === undefined || value === \"\") return \"Not provided\";\n if (typeof value === \"boolean\") return value ? \"Yes\" : \"No\";\n return String(value);\n};\n\nconst formatJsonValue = (value: unknown) => {\n if (Array.isArray(value)) return value.length === 0 ? \"None\" : value.map(formatJsonPrimitive).join(\", \");\n return formatJsonPrimitive(value);\n};\n\nexport const getJsonCellSummary = (value: unknown) => {\n const parsedValue = parseJsonCellValue(value);\n if (Array.isArray(parsedValue) && parsedValue.length === 0) return \"No details\";\n if (parsedValue !== null && typeof parsedValue === \"object\" && Object.keys(parsedValue).length === 0) {\n return \"No details\";\n }\n\n const fields = buildJsonFields(value).filter(\n (field) => !isJsonImageValue(field.value, field.label) && !isJsonImageArray(field.value, field.label),\n );\n if (fields.length === 0) return \"No details\";\n\n const visibleValues = fields.slice(0, 2).map((field) => formatJsonValue(field.value));\n const remainingCount = fields.length - visibleValues.length;\n return [...visibleValues, remainingCount > 0 ? `${remainingCount} more` : null].filter(Boolean).join(\" · \");\n};\n\nconst toReadOnlyValue = (field: JsonField) => {\n const { label, value } = field;\n if (isJsonImageValue(value, label)) {\n return { type: \"image\" as const, src: String(value), alt: `${label} preview` };\n }\n if (Array.isArray(value) && isJsonImageArray(value, label)) {\n return {\n type: \"image-gallery\" as const,\n images: value.map((image, index) => ({ src: String(image), alt: `${label} ${index + 1} preview` })),\n };\n }\n if (Array.isArray(value)) return value as Array<string | number | boolean | null>;\n if (value === undefined) return null;\n return value as string | number | boolean | null;\n};\n\nexport const buildFriendlyJsonParams = (value: unknown) =>\n buildJsonFields(value).map((field, index) => ({\n id: `friendly-json-${index}`,\n name: field.label,\n type: \"readOnly\" as const,\n value: toReadOnlyValue(field),\n }));\n\nexport const FriendlyJsonDisplay = (props: FriendlyJsonDisplayProps) => {\n const { value } = props;\n return <ParamEditor params={buildFriendlyJsonParams(value)} readOnly fullWidth />;\n};\n","import { Button, HStack, Image, Popover, Portal, Text } from \"@chakra-ui/react\";\nimport { Braces, ChevronRight } from \"lucide-react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport {\n buildJsonFields,\n FriendlyJsonDisplay,\n getJsonCellSummary,\n isJsonImageArray,\n isJsonImageValue,\n} from \"./friendly-json-display\";\n\ninterface JsonCellProps {\n columnLabel: string;\n value: unknown;\n}\n\nconst stopRowActivation = (event: { stopPropagation: () => void }) => event.stopPropagation();\n\nexport const JsonCell = (props: JsonCellProps) => {\n const { columnLabel, value } = props;\n const fields = buildJsonFields(value);\n const imageFields = fields\n .flatMap((field) => {\n if (isJsonImageValue(field.value, field.label)) return [field];\n if (!Array.isArray(field.value) || !isJsonImageArray(field.value, field.label)) return [];\n return field.value.map((image, index) => ({ label: `${field.label} ${index + 1}`, value: image }));\n })\n .slice(0, 2);\n const summary = getJsonCellSummary(value);\n\n return (\n <Popover.Root positioning={{ placement: \"bottom-start\", offset: { mainAxis: 6 } }}>\n <Popover.Trigger asChild>\n <Button\n aria-label={`View ${columnLabel} details`}\n variant=\"ghost\"\n size=\"xs\"\n width=\"full\"\n minWidth=\"0\"\n height=\"28px\"\n paddingX=\"2xs\"\n justifyContent=\"flex-start\"\n onClick={stopRowActivation}\n >\n {imageFields.length > 0 ? (\n <HStack gap=\"-1\" flexShrink=\"0\">\n {imageFields.map((field) => (\n <Image\n key={field.label}\n src={String(field.value)}\n alt={`${field.label} preview`}\n boxSize=\"22px\"\n borderRadius=\"xs\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n objectFit=\"cover\"\n />\n ))}\n </HStack>\n ) : (\n <Braces size={14} />\n )}\n <Text flex=\"1\" minWidth=\"0\" textAlign=\"left\" textStyle=\"paragraph/S/regular\" truncate>\n {summary}\n </Text>\n <ChevronRight size={12} />\n </Button>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content width=\"min(380px, calc(100vw - 32px))\" padding=\"0\" background=\"bg\" overflow=\"hidden\">\n <ScrollArea maxH=\"360px\" viewportProps={{ overscrollBehavior: \"contain\" }}>\n <FriendlyJsonDisplay value={value} />\n </ScrollArea>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Icon as ChakraIcon, chakra, IconButton, Menu, Portal, Text } from \"@chakra-ui/react\";\nimport type { CellContext, HeaderContext, RowSelectionState } from \"@tanstack/react-table\";\nimport { Check, ChevronDown, CircleHelp, Minus } from \"lucide-react\";\nimport { type CSSProperties, cloneElement, isValidElement, type ReactNode } from \"react\";\n\nimport { Checkbox } from \"@/components/primitives/checkbox\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { ListRow } from \"../list-row/list-row\";\nimport { CategoricalColorCell, resolveCategoricalColor } from \"./categorical-color-cell\";\nimport { resolveColorCellStyle } from \"./color-cell-style\";\nimport { ColorScaleCell, resolveColorScaleValue } from \"./color-scale-cell\";\nimport { columnHelper, formatDisplayValue, getIcon, isDisplayValue } from \"./helpers\";\nimport { JsonCell } from \"./json-cell\";\nimport type { DataTableColumnRenderer, DataTableRowAction, RowData } from \"./types\";\n\nconst getSortValue = (value: unknown) => {\n return isDisplayValue(value) ? value.sortValue : value;\n};\n\nconst compareValues = (valueA: unknown, valueB: unknown) => {\n if (valueA === valueB) return 0;\n if (valueA === null || valueA === undefined) return 1;\n if (valueB === null || valueB === undefined) return -1;\n\n if (typeof valueA === \"number\" && typeof valueB === \"number\") {\n return valueA - valueB;\n }\n\n return String(valueA).localeCompare(String(valueB));\n};\n\nconst toSingleLineElement = (element: ReactNode) => {\n if (!isValidElement<{ style?: CSSProperties }>(element)) return element;\n\n return cloneElement(element, {\n style: {\n ...element.props.style,\n flexWrap: \"nowrap\",\n minWidth: 0,\n whiteSpace: \"nowrap\",\n },\n });\n};\n\ninterface BuildColumnsOptions {\n columnIcons?: Partial<Record<string, ReactNode>>;\n columnDescriptions?: Partial<Record<string, string>>;\n compactHeaders?: Partial<Record<string, string>>;\n enableSelection?: boolean;\n rowActions?: DataTableRowAction[];\n selectedRowIds?: RowSelectionState;\n columnRenderers?: Partial<Record<string, DataTableColumnRenderer>>;\n}\n\nconst stopControlPropagation = (event: { stopPropagation: () => void }) => {\n event.stopPropagation();\n};\n\nconst SelectionHeader = (props: HeaderContext<RowData, unknown>) => {\n const { table } = props;\n const checked = table.getIsAllRowsSelected();\n const isIndeterminate = !checked && table.getIsSomeRowsSelected();\n\n return (\n <Checkbox\n checked={checked ? true : isIndeterminate ? \"indeterminate\" : false}\n aria-label=\"Select all\"\n icon={<ChakraIcon as={isIndeterminate ? Minus : Check} boxSize=\"12px\" strokeWidth=\"3\" />}\n onClick={stopControlPropagation}\n onCheckedChange={(details) => table.toggleAllRowsSelected(details.checked === true)}\n />\n );\n};\n\nconst SelectionCell = (props: CellContext<RowData, unknown> & { selectedRowIds?: RowSelectionState }) => {\n const { row, selectedRowIds } = props;\n\n return (\n <Checkbox\n checked={Boolean(selectedRowIds?.[row.id])}\n aria-label=\"Select row\"\n icon={<ChakraIcon as={Check} boxSize=\"12px\" strokeWidth=\"3\" />}\n onClick={stopControlPropagation}\n onCheckedChange={(details) => row.toggleSelected(details.checked === true)}\n />\n );\n};\n\nconst RowActionsCell = (props: CellContext<RowData, unknown> & { actions: DataTableRowAction[] }) => {\n const { row, actions } = props;\n\n return (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton aria-label=\"Row actions\" size=\"2xs\" variant=\"ghost\" onClick={stopControlPropagation}>\n <ChakraIcon as={ChevronDown} boxSize=\"14px\" />\n </IconButton>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content zIndex=\"popover\" bg=\"bg\">\n {actions.map((action) => (\n <Menu.Item key={action.label} value={action.label} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n tone={action.destructive ? \"danger\" : \"default\"}\n label={action.label}\n icon={action.icon}\n onClick={stopControlPropagation}\n onActivate={() => action.onSelect(row.original)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n\ninterface FormattedCellProps {\n value: unknown;\n}\n\nconst FormattedCell = (props: FormattedCellProps) => {\n const { value } = props;\n const displayValue = formatDisplayValue(value);\n\n if (isValidElement(displayValue)) {\n return (\n <chakra.span display=\"inline-flex\" maxWidth=\"full\" minW=\"0\" overflow=\"hidden\" whiteSpace=\"nowrap\">\n {toSingleLineElement(displayValue)}\n </chakra.span>\n );\n }\n\n return (\n <Text maxWidth=\"full\" overflow=\"hidden\" textOverflow=\"ellipsis\" textStyle=\"paragraph/S/regular\" whiteSpace=\"nowrap\">\n {displayValue}\n </Text>\n );\n};\n\ninterface DataCellProps {\n columnLabel: string;\n renderer?: DataTableColumnRenderer;\n value: unknown;\n}\n\nconst DataCell = (props: DataCellProps) => {\n const { columnLabel, renderer, value } = props;\n\n if (renderer?.type === \"json\") return <JsonCell columnLabel={columnLabel} value={value} />;\n\n if (renderer?.type === \"color-scale\") {\n const color = resolveColorScaleValue(value, renderer.stops);\n if (color && typeof value === \"number\") return <ColorScaleCell value={value} />;\n }\n\n if (renderer?.type === \"categorical-color\") {\n const color = resolveCategoricalColor(value, renderer.categories);\n if (color) {\n return (\n <CategoricalColorCell>\n <FormattedCell value={value} />\n </CategoricalColorCell>\n );\n }\n }\n\n return <FormattedCell value={value} />;\n};\n\nconst resolveDataCellStyle = (value: unknown, renderer?: DataTableColumnRenderer) => {\n if (renderer?.type === \"color-scale\") {\n const color = resolveColorScaleValue(value, renderer.stops);\n if (color && typeof value === \"number\") return resolveColorCellStyle(color);\n }\n\n if (renderer?.type === \"categorical-color\") {\n const color = resolveCategoricalColor(value, renderer.categories);\n if (color) return resolveColorCellStyle(color);\n }\n};\n\nexport function buildColumns(data: RowData[], columnKeys: string[], options: BuildColumnsOptions = {}) {\n const {\n columnIcons,\n columnDescriptions,\n compactHeaders,\n enableSelection = false,\n rowActions = [],\n selectedRowIds,\n columnRenderers,\n } = options;\n const rowIndexColumn = columnHelper.accessor((_row, rowIndex) => rowIndex + 1, {\n header: \"\",\n id: \"rowIndex\",\n enableResizing: false,\n size: 20,\n cell: (info) => (\n <chakra.span display={\"block\"} textStyle={\"paragraph/S/regular\"} textAlign={\"center\"}>\n {info.getValue()}\n </chakra.span>\n ),\n });\n\n const selectionColumn = columnHelper.display({\n id: \"rowSelection\",\n header: SelectionHeader,\n cell: (info) => <SelectionCell {...info} selectedRowIds={selectedRowIds} />,\n enableResizing: false,\n enableSorting: false,\n size: 36,\n });\n\n const dataColumns = columnKeys.map((key) => {\n const fallBackKey = key || \"-\";\n const columnValues = data.map((row) => row[fallBackKey]);\n const renderer = columnRenderers?.[fallBackKey];\n const customIcon = columnIcons?.[fallBackKey];\n const headerIcon = customIcon === undefined ? getIcon(columnValues) : customIcon;\n const columnDescription = columnDescriptions?.[fallBackKey];\n\n return columnHelper.accessor((row) => row[fallBackKey], {\n id: fallBackKey,\n header: () => {\n const headerLabel = compactHeaders?.[fallBackKey] ?? fallBackKey;\n return (\n <chakra.span display=\"inline-flex\" alignItems=\"center\" gap=\"4px\" minW=\"0\" maxW=\"full\" overflow=\"hidden\">\n {headerIcon}\n <chakra.span overflow=\"hidden\" textOverflow=\"ellipsis\" whiteSpace=\"nowrap\">\n {headerLabel}\n </chakra.span>\n {columnDescription ? (\n <Tooltip content={columnDescription}>\n <ChakraIcon\n as={CircleHelp}\n aria-label={`About ${headerLabel}`}\n boxSize=\"12px\"\n color=\"fg.muted\"\n cursor=\"help\"\n flexShrink={0}\n opacity={0.6}\n tabIndex={0}\n />\n </Tooltip>\n ) : null}\n </chakra.span>\n );\n },\n cell: (info) => <DataCell columnLabel={fallBackKey} renderer={renderer} value={info.getValue()} />,\n meta: {\n getCellStyle: (value: unknown) => resolveDataCellStyle(value, renderer),\n },\n sortingFn: (rowA, rowB) => {\n const valueA = getSortValue(rowA.original[fallBackKey]);\n const valueB = getSortValue(rowB.original[fallBackKey]);\n return compareValues(valueA, valueB);\n },\n });\n });\n\n const rowActionsColumn = columnHelper.display({\n id: \"rowActions\",\n header: \"\",\n cell: (info) => <RowActionsCell {...info} actions={rowActions} />,\n enableResizing: false,\n enableSorting: false,\n size: 36,\n });\n\n return [\n rowIndexColumn,\n ...(enableSelection ? [selectionColumn] : []),\n ...dataColumns,\n ...(rowActions.length > 0 ? [rowActionsColumn] : []),\n ];\n}\n","import { Box, HStack, Icon, IconButton, Popover, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { closestCenter, DndContext, type DragEndEvent, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { SortableContext, useSortable, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { Check, GripVertical, Settings2 } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\n\nimport { SearchableMenuInput } from \"@/components/overlays/searchable-menu-input\";\nimport { Checkbox } from \"@/components/primitives/checkbox\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { Switch } from \"@/components/primitives/switch\";\n\ninterface DataTableColumnMenuColumn {\n id: string;\n label: string;\n}\n\ninterface DataTableColumnMenuProps {\n columns: DataTableColumnMenuColumn[];\n visibleColumnIds: Set<string>;\n showStats: boolean;\n statsAvailable: boolean;\n onColumnVisibilityChange: (columnId: string, visible: boolean) => void;\n onColumnReorder: (activeColumnId: string, overColumnId: string) => void;\n onStatsVisibilityChange: (showStats: boolean) => void;\n}\n\ninterface DataTableColumnMenuRowProps {\n column: DataTableColumnMenuColumn;\n checked: boolean;\n onColumnVisibilityChange: (columnId: string, visible: boolean) => void;\n}\n\nconst DataTableColumnMenuRow = (props: DataTableColumnMenuRowProps) => {\n const { column, checked, onColumnVisibilityChange } = props;\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id: column.id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n };\n\n return (\n <HStack\n ref={setNodeRef}\n style={style}\n gap=\"2xs\"\n minW=\"0\"\n width=\"full\"\n borderRadius=\"xs\"\n px=\"xs\"\n py=\"2xs\"\n _hover={{ bg: \"bg.hover\" }}\n >\n <Box as=\"span\" display=\"inline-flex\" cursor=\"grab\" color=\"fg.muted\" {...attributes} {...listeners}>\n <GripVertical size={14} />\n </Box>\n <Checkbox\n checked={checked}\n flex=\"1\"\n minW=\"0\"\n width=\"full\"\n flexDirection=\"row-reverse\"\n justifyContent=\"space-between\"\n size=\"sm\"\n icon={<Icon as={Check} boxSize=\"12px\" strokeWidth=\"3\" />}\n onCheckedChange={(details) => onColumnVisibilityChange(column.id, details.checked === true)}\n >\n <Text as=\"span\" textStyle=\"label/S/regular\" truncate>\n {column.label}\n </Text>\n </Checkbox>\n </HStack>\n );\n};\n\nexport const DataTableColumnMenu = (props: DataTableColumnMenuProps) => {\n const {\n columns,\n visibleColumnIds,\n showStats,\n statsAvailable,\n onColumnVisibilityChange,\n onColumnReorder,\n onStatsVisibilityChange,\n } = props;\n const triggerRef = useRef<HTMLButtonElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState(\"\");\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));\n const normalizedQuery = query.trim().toLowerCase();\n const filteredColumns = normalizedQuery\n ? columns.filter((column) => column.label.toLowerCase().includes(normalizedQuery))\n : columns;\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n\n onColumnReorder(String(active.id), String(over.id));\n };\n\n useEffect(() => {\n if (!open) return;\n\n const closeOnOutsidePointerDown = (event: PointerEvent) => {\n const target = event.target;\n if (!(target instanceof Node)) return;\n if (contentRef.current?.contains(target) || triggerRef.current?.contains(target)) return;\n\n setOpen(false);\n };\n const closeOnEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"pointerdown\", closeOnOutsidePointerDown);\n document.addEventListener(\"keydown\", closeOnEscape, true);\n return () => {\n document.removeEventListener(\"pointerdown\", closeOnOutsidePointerDown);\n document.removeEventListener(\"keydown\", closeOnEscape, true);\n };\n }, [open]);\n\n return (\n <Popover.Root\n open={open}\n closeOnInteractOutside={false}\n positioning={{\n placement: \"bottom-end\",\n offset: { mainAxis: 8 },\n getAnchorElement: () => triggerRef.current,\n }}\n >\n <Popover.Trigger asChild>\n <IconButton\n ref={triggerRef}\n aria-label=\"Display settings\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setOpen((current) => !current)}\n >\n <Icon as={Settings2} boxSize=\"14px\" />\n </IconButton>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content ref={contentRef} width=\"min(320px, calc(100vw - 32px))\" p=\"0\" bg=\"bg\" overflow=\"hidden\">\n <Stack gap=\"0\">\n {statsAvailable ? (\n <Box borderBottomWidth=\"1px\" borderColor=\"border.subtle\" padding=\"xs\">\n <Switch\n checked={showStats}\n inputProps={{ role: \"switch\" }}\n width=\"full\"\n flexDirection=\"row-reverse\"\n justifyContent=\"space-between\"\n onCheckedChange={(details) => onStatsVisibilityChange(details.checked === true)}\n >\n <Text as=\"span\" textStyle=\"label/S/regular\">\n Statistics\n </Text>\n </Switch>\n </Box>\n ) : null}\n <SearchableMenuInput value={query} placeholder=\"Search columns\" onValueChange={setQuery} />\n <ScrollArea maxH=\"280px\" viewportProps={{ overscrollBehavior: \"contain\" }}>\n <Box padding=\"2xs\">\n <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext items={columns.map((column) => column.id)} strategy={verticalListSortingStrategy}>\n <Stack gap=\"1px\">\n {filteredColumns.map((column) => (\n <DataTableColumnMenuRow\n key={column.id}\n column={column}\n checked={visibleColumnIds.has(column.id)}\n onColumnVisibilityChange={onColumnVisibilityChange}\n />\n ))}\n </Stack>\n </SortableContext>\n </DndContext>\n </Box>\n </ScrollArea>\n </Stack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Chart, type UseChartProps, useChart } from \"@chakra-ui/charts\";\nimport type { ReactNode } from \"react\";\nimport {\n Bar,\n BarChart,\n Tooltip as RechartsTooltip,\n useActiveTooltipCoordinate,\n usePlotArea,\n XAxis,\n YAxis,\n} from \"recharts\";\n\ntype ChartSeries<T> = NonNullable<UseChartProps<T>[\"series\"]>[number];\ntype StringKeyOf<T> = Extract<keyof T, string>;\n\nconst StatChartCrosshair = () => {\n const coordinate = useActiveTooltipCoordinate();\n const plotArea = usePlotArea();\n\n if (!coordinate || !plotArea) return null;\n\n return (\n <g pointerEvents=\"none\" stroke=\"var(--chakra-colors-border-emphasized)\" strokeWidth=\"1\">\n <line x1={coordinate.x} x2={coordinate.x} y1={plotArea.y} y2={plotArea.y + plotArea.height} />\n <line x1={plotArea.x} x2={plotArea.x + plotArea.width} y1={coordinate.y} y2={coordinate.y} />\n </g>\n );\n};\n\ninterface DataTableStatChartProps<T extends object> {\n data: T[];\n dataKey: StringKeyOf<T>;\n color: ChartSeries<T>[\"color\"];\n height: string;\n ariaLabel: string;\n tooltipLabel: (datum: T) => ReactNode;\n tooltipValue: (value: string | number) => ReactNode;\n tooltipSeriesLabel: string;\n layout?: \"horizontal\" | \"vertical\";\n categoryKey?: StringKeyOf<T>;\n domain?: [number, number];\n barSize?: number;\n barCategoryGap?: number;\n}\n\nexport const DataTableStatChart = <T extends object>(props: DataTableStatChartProps<T>) => {\n const {\n data,\n dataKey,\n color,\n height,\n ariaLabel,\n tooltipLabel,\n tooltipValue,\n tooltipSeriesLabel,\n layout = \"horizontal\",\n categoryKey,\n domain,\n barSize,\n barCategoryGap = 1,\n } = props;\n const chart = useChart({ data, series: [{ name: dataKey, color }] });\n const getBarValue = (datum: T) => datum[dataKey] as string | number;\n const getCategoryValue = categoryKey ? (datum: T) => datum[categoryKey] as string | number : undefined;\n\n return (\n <Chart.Root chart={chart} height={height} aspectRatio=\"auto\" cursor=\"crosshair\" aria-label={ariaLabel}>\n <BarChart\n responsive\n data={chart.data}\n layout={layout}\n margin={{ top: 2, right: 0, bottom: 0, left: 0 }}\n barCategoryGap={barCategoryGap}\n >\n {layout === \"vertical\" ? (\n <>\n <XAxis type=\"number\" domain={domain} hide />\n <YAxis type=\"category\" dataKey={getCategoryValue} hide />\n </>\n ) : null}\n <Bar dataKey={getBarValue} fill={chart.color(color)} barSize={barSize} isAnimationActive={false} />\n <RechartsTooltip\n allowEscapeViewBox={{ x: true, y: true }}\n content={\n <Chart.Tooltip\n labelFormatter={(label, payload) => {\n const datum = payload[0]?.payload as T | undefined;\n return datum ? tooltipLabel(datum) : label;\n }}\n formatter={(value) => [tooltipValue(value), tooltipSeriesLabel]}\n />\n }\n cursor={<StatChartCrosshair />}\n isAnimationActive={false}\n wrapperStyle={{ zIndex: 1800 }}\n />\n </BarChart>\n </Chart.Root>\n );\n};\n","import { isDisplayValue } from \"./helpers\";\nimport type { RowData } from \"./types\";\n\nexport interface HistogramBin {\n start: number;\n end: number;\n count: number;\n}\n\nexport interface HistogramStat {\n min: number;\n max: number;\n bins: HistogramBin[];\n}\n\nexport interface TopValueStat {\n label: string;\n count: number;\n percentage: number;\n}\n\nconst getStatValue = (value: unknown) => (isDisplayValue(value) ? value.sortValue : value);\n\nconst getColumnStatValues = (rows: RowData[], columnId: string) =>\n rows\n .map((row) => getStatValue(row[columnId]))\n .filter((value) => value !== null && value !== undefined && value !== \"\");\n\nexport const countUniqueStatValues = (rows: RowData[], columnId: string) =>\n new Set(getColumnStatValues(rows, columnId)).size;\n\nexport const buildTopValuesStat = (rows: RowData[], columnId: string, limit: number) => {\n const values = getColumnStatValues(rows, columnId);\n const counts = new Map<unknown, number>();\n\n for (const value of values) {\n counts.set(value, (counts.get(value) ?? 0) + 1);\n }\n\n const groups: TopValueStat[] = [...counts.entries()]\n .map(([value, count]) => ({\n label: String(value),\n count,\n percentage: Math.round((count / values.length) * 100),\n }))\n .sort((left, right) => right.count - left.count || left.label.localeCompare(right.label));\n const topGroups = groups.slice(0, limit);\n const otherCount = groups.slice(limit).reduce((total, group) => total + group.count, 0);\n\n if (otherCount === 0) return topGroups;\n\n return [\n ...topGroups,\n {\n label: \"Other\",\n count: otherCount,\n percentage: Math.round((otherCount / values.length) * 100),\n },\n ];\n};\n\nexport const buildHistogramStat = (rows: RowData[], columnId: string, binCount: number): HistogramStat | null => {\n const values = getColumnStatValues(rows, columnId).filter((value): value is number => typeof value === \"number\");\n if (values.length === 0) return null;\n\n const min = Math.min(...values);\n const max = Math.max(...values);\n const binWidth = (max - min) / binCount;\n const bins = Array.from({ length: binCount }, (_, index) => ({\n start: min + binWidth * index,\n end: min + binWidth * (index + 1),\n count: 0,\n }));\n\n for (const value of values) {\n const binIndex = value === max || binWidth === 0 ? binCount - 1 : Math.floor((value - min) / binWidth);\n bins[binIndex]!.count += 1;\n }\n\n return { min, max, bins };\n};\n","import { Box, Flex, Table, Text } from \"@chakra-ui/react\";\nimport type { Header, HeaderGroup } from \"@tanstack/react-table\";\nimport { DataTableStatChart } from \"./data-table-stat-chart\";\nimport { buildHistogramStat, buildTopValuesStat, countUniqueStatValues } from \"./data-table-stats\";\nimport type { DataTableColumnStat, RowData } from \"./types\";\n\nconst formatNumber = new Intl.NumberFormat(undefined, { maximumFractionDigits: 2 }).format;\nconst STAT_CHART_COLOR = \"vis.categorical.1\";\n\ninterface SingleValueStatProps {\n value: string;\n count: number;\n}\n\nconst SingleValueStat = (props: SingleValueStatProps) => {\n const { value, count } = props;\n\n return (\n <Flex data-single-value-stat direction=\"column\" gap=\"2xs\" alignItems=\"flex-start\" minWidth=\"0\">\n <Text textStyle=\"label/L/medium\" lineHeight=\"1\" maxWidth=\"100%\" truncate>\n {value}\n </Text>\n <Text textStyle=\"label/XS\" color=\"fg.muted\">\n {formatNumber(count)} {count === 1 ? \"value\" : \"values\"}\n </Text>\n </Flex>\n );\n};\n\ninterface UniqueStatProps {\n rows: RowData[];\n columnId: string;\n}\n\nconst UniqueStat = (props: UniqueStatProps) => {\n const { rows, columnId } = props;\n const count = countUniqueStatValues(rows, columnId);\n\n return (\n <Flex direction=\"column\" gap=\"2xs\" alignItems=\"flex-start\">\n <Text textStyle=\"label/L/medium\" lineHeight=\"1\">\n {formatNumber(count)}\n </Text>\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n unique values\n </Text>\n </Flex>\n );\n};\n\ninterface HistogramStatProps {\n rows: RowData[];\n columnId: string;\n binCount: number;\n}\n\nconst HistogramStat = (props: HistogramStatProps) => {\n const { rows, columnId, binCount } = props;\n const histogram = buildHistogramStat(rows, columnId, binCount);\n\n if (!histogram) {\n return (\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n No numeric values\n </Text>\n );\n }\n\n const valueCount = histogram.bins.reduce((total, bin) => total + bin.count, 0);\n if (histogram.min === histogram.max) {\n return <SingleValueStat value={formatNumber(histogram.min)} count={valueCount} />;\n }\n\n return (\n <Flex direction=\"column\" width=\"100%\" gap=\"2xs\">\n <DataTableStatChart\n data={histogram.bins}\n dataKey=\"count\"\n color={STAT_CHART_COLOR}\n height=\"40px\"\n ariaLabel={`Distribution for ${columnId}`}\n tooltipLabel={(bin) => `${formatNumber(bin.start)} – ${formatNumber(bin.end)}`}\n tooltipValue={(value) => `${formatNumber(Number(value))} values`}\n tooltipSeriesLabel=\"Count\"\n />\n <Flex justifyContent=\"space-between\" gap=\"xs\">\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n {formatNumber(histogram.min)}\n </Text>\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n {formatNumber(histogram.max)}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\ninterface TopValuesStatProps {\n rows: RowData[];\n columnId: string;\n limit: number;\n}\n\nconst TopValuesStat = (props: TopValuesStatProps) => {\n const { rows, columnId, limit } = props;\n const groups = buildTopValuesStat(rows, columnId, limit);\n\n if (groups.length === 1 && groups[0]) {\n return <SingleValueStat value={groups[0].label} count={groups[0].count} />;\n }\n\n return (\n <Flex direction=\"column\" width=\"100%\" gap=\"2xs\">\n {groups.map((group) => (\n <Box key={group.label} position=\"relative\" height=\"18px\">\n <DataTableStatChart\n data={[group]}\n dataKey=\"percentage\"\n categoryKey=\"label\"\n color={STAT_CHART_COLOR}\n height=\"18px\"\n ariaLabel={`${group.label}: ${group.percentage}%`}\n layout=\"vertical\"\n domain={[0, 100]}\n barSize={18}\n tooltipLabel={(datum) => `${datum.label} · ${formatNumber(datum.count)} values`}\n tooltipValue={(value) => `${formatNumber(Number(value))}%`}\n tooltipSeriesLabel=\"Share\"\n />\n <Flex\n position=\"absolute\"\n inset=\"0\"\n paddingX=\"2xs\"\n justifyContent=\"space-between\"\n gap=\"xs\"\n pointerEvents=\"none\"\n >\n <Text textStyle=\"label/2XS\" color=\"fg.inverted\" truncate>\n {group.label}\n </Text>\n <Text textStyle=\"label/2XS/medium\" color=\"fg.muted\">\n {group.percentage}%\n </Text>\n </Flex>\n </Box>\n ))}\n </Flex>\n );\n};\n\ninterface DataTableStatProps {\n rows: RowData[];\n columnId: string;\n stat: DataTableColumnStat;\n}\n\nconst DataTableStat = (props: DataTableStatProps) => {\n const { rows, columnId, stat } = props;\n\n if (stat.type === \"unique\") return <UniqueStat rows={rows} columnId={columnId} />;\n if (stat.type === \"histogram\") {\n return <HistogramStat rows={rows} columnId={columnId} binCount={stat.bins ?? 10} />;\n }\n return <TopValuesStat rows={rows} columnId={columnId} limit={stat.limit ?? 2} />;\n};\n\ninterface DataTableStatCellProps {\n header: Header<RowData, unknown>;\n headerGroup: HeaderGroup<RowData>;\n rows: RowData[];\n columnStats: Partial<Record<string, DataTableColumnStat>>;\n fullWidth?: boolean;\n}\n\nconst DataTableStatCell = (props: DataTableStatCellProps) => {\n const { header, headerGroup, rows, columnStats, fullWidth } = props;\n const stat = columnStats[header.column.id];\n\n return (\n <Table.ColumnHeader\n data-column-id={header.column.id}\n data-stat-type={stat?.type}\n borderRight=\"1px solid\"\n _last={{ borderRight: \"none\" }}\n borderColor=\"border.subtle\"\n padding=\"xs\"\n verticalAlign=\"middle\"\n overflow=\"hidden\"\n style={{\n width:\n fullWidth && headerGroup.headers.indexOf(header) === headerGroup.headers.length - 1\n ? undefined\n : `calc(var(--header-${header.id}-size) * 1px)`,\n }}\n >\n {stat ? <DataTableStat rows={rows} columnId={header.column.id} stat={stat} /> : null}\n </Table.ColumnHeader>\n );\n};\n\ninterface DataTableStatsRowProps {\n headerGroup: HeaderGroup<RowData>;\n rows: RowData[];\n columnStats: Partial<Record<string, DataTableColumnStat>>;\n fullWidth?: boolean;\n noBorder?: boolean;\n}\n\nexport const DataTableStatsRow = (props: DataTableStatsRowProps) => {\n const { headerGroup, rows, columnStats, fullWidth, noBorder } = props;\n const hasVisibleStats = headerGroup.headers.some((header) => columnStats[header.column.id]);\n\n if (!hasVisibleStats) return null;\n\n return (\n <Table.Row\n className=\"data-table-stats-row\"\n borderRight={noBorder ? \"none\" : \"1px solid\"}\n borderColor=\"border.subtle\"\n >\n {headerGroup.headers.map((header) => (\n <DataTableStatCell\n key={header.id}\n header={header}\n headerGroup={headerGroup}\n rows={rows}\n columnStats={columnStats}\n fullWidth={fullWidth}\n />\n ))}\n </Table.Row>\n );\n};\n","import { Icon as ChakraIcon, Flex, IconButton, Menu, Portal, Table, Text } from \"@chakra-ui/react\";\nimport {\n type Cell,\n flexRender,\n type Header,\n type HeaderGroup,\n type Row,\n type Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport { ArrowDownAZ, ArrowUpAZ, MoreVertical } from \"lucide-react\";\nimport type { CSSProperties } from \"react\";\nimport { ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { DataTableCellContext, DataTableProps, RowData } from \"./types\";\n\nconst utilityColumnIds = new Set([\"rowIndex\", \"rowSelection\", \"rowActions\"]);\n\nconst getSortMenuIcon = (sortDirection: false | \"asc\" | \"desc\") => {\n if (sortDirection === \"asc\") return ArrowUpAZ;\n if (sortDirection === \"desc\") return ArrowDownAZ;\n return MoreVertical;\n};\n\ninterface DataTableColumnHeaderProps {\n header: Header<RowData, unknown>;\n headerGroup: HeaderGroup<RowData>;\n table: TanStackTable<RowData>;\n fullWidth?: boolean;\n hasDescription?: boolean;\n}\n\nexport const DataTableColumnHeader = (props: DataTableColumnHeaderProps) => {\n const { header, headerGroup, table, fullWidth, hasDescription } = props;\n const sortDirection = header.column.getIsSorted();\n const canSortColumn = !utilityColumnIds.has(header.column.id) && table.getCoreRowModel().rows.length > 1;\n const SortIcon = getSortMenuIcon(sortDirection);\n const tooltipContent =\n header.column.id === \"rowSelection\"\n ? \"Select all\"\n : flexRender(header.column.columnDef.header, header.getContext());\n\n return (\n <Table.ColumnHeader\n data-column-id={header.column.id}\n textTransform=\"none\"\n borderRight=\"1px solid\"\n _last={{ borderRight: \"none\" }}\n borderColor=\"border.subtle\"\n paddingX=\"xs\"\n paddingY=\"xs\"\n key={header.id}\n overflow=\"hidden\"\n position=\"relative\"\n verticalAlign=\"middle\"\n whiteSpace=\"nowrap\"\n style={{\n width:\n fullWidth && headerGroup.headers.indexOf(header) === headerGroup.headers.length - 1\n ? undefined\n : `calc(var(--header-${header.id}-size) * 1px)`,\n }}\n >\n <Tooltip content={tooltipContent} disabled={hasDescription}>\n <Flex className=\"group\" alignItems=\"center\" justifyContent=\"space-between\" gap=\"1\" flex=\"1\" minW=\"0\">\n <Text as=\"div\" textStyle=\"label/S/medium\" lineHeight=\"1.2\" truncate>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Text>\n {canSortColumn && (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton\n ml=\"2px\"\n size=\"2xs\"\n aria-label={sortDirection ? `Sorted ${sortDirection}` : \"Sort column\"}\n variant=\"ghost\"\n visibility={sortDirection ? \"visible\" : \"hidden\"}\n _groupHover={{ visibility: \"visible\" }}\n >\n <ChakraIcon as={SortIcon} boxSize=\"14px\" />\n </IconButton>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content zIndex=\"popover\" bg=\"bg\">\n <Menu.Item value=\"sort-asc\" asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label=\"Sort ascending\"\n icon={<ChakraIcon as={ArrowUpAZ} boxSize=\"16px\" />}\n disabled={sortDirection === \"asc\"}\n onActivate={() => header.column.toggleSorting(false)}\n />\n </Menu.Item>\n <Menu.Item value=\"sort-desc\" asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label=\"Sort descending\"\n icon={<ChakraIcon as={ArrowDownAZ} boxSize=\"16px\" />}\n disabled={sortDirection === \"desc\"}\n onActivate={() => header.column.toggleSorting(true)}\n />\n </Menu.Item>\n {sortDirection && (\n <Menu.Item value=\"clear-sort\" asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label=\"Clear sort\"\n onActivate={() => header.column.clearSorting()}\n />\n </Menu.Item>\n )}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n )}\n {header.column.getCanResize() && (\n <span\n {...{\n onDoubleClick: () => header.column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: `resizer ${header.column.getIsResizing() ? \"isResizing\" : \"\"}`,\n }}\n />\n )}\n </Flex>\n </Tooltip>\n </Table.ColumnHeader>\n );\n};\n\ninterface DataTableCellViewProps {\n cell: Cell<RowData, unknown>;\n row: Row<RowData>;\n getCellContextMenuActions?: DataTableProps[\"getCellContextMenuActions\"];\n}\n\ninterface DataTableColumnMeta {\n getCellStyle?: (value: unknown) => CSSProperties | undefined;\n}\n\nconst DataTableCellView = (props: DataTableCellViewProps) => {\n const { cell, row, getCellContextMenuActions } = props;\n const columnMeta = cell.column.columnDef.meta as DataTableColumnMeta | undefined;\n const cellStyle = columnMeta?.getCellStyle?.(cell.getValue());\n const cellContext: DataTableCellContext = {\n row: row.original,\n rowId: row.id,\n columnId: cell.column.id,\n value: cell.getValue(),\n };\n const contextActions =\n getCellContextMenuActions?.(cellContext).map((action) => ({\n key: action.label,\n label: action.label,\n icon: action.icon,\n onClick: () => action.onSelect(cellContext),\n })) ?? [];\n const cellElement = (\n <Table.Cell\n data-column-id={cell.column.id}\n width=\"fit-content\"\n maxWidth=\"12rem\"\n overflow=\"hidden\"\n padding=\"xs\"\n borderRight=\"1px solid\"\n borderColor=\"border.subtle\"\n _last={{ borderRight: \"none\" }}\n borderBottom=\"none\"\n key={cell.id}\n textStyle=\"paragraph/S/regular\"\n textOverflow=\"ellipsis\"\n whiteSpace=\"nowrap\"\n style={cellStyle}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n );\n\n if (contextActions.length === 0) return cellElement;\n\n return (\n <ResourceContextMenu key={cell.id} actions={contextActions}>\n {cellElement}\n </ResourceContextMenu>\n );\n};\n\ninterface DataTableBodyRowProps {\n row: Row<RowData>;\n noBorder?: boolean;\n rowIsInteractive: boolean;\n rowIsActive: boolean;\n rowIsSelected: boolean;\n onRowClick?: DataTableProps[\"onRowClick\"];\n getCellContextMenuActions?: DataTableProps[\"getCellContextMenuActions\"];\n}\n\nexport const DataTableBodyRow = (props: DataTableBodyRowProps) => {\n const { row, noBorder, rowIsInteractive, rowIsActive, rowIsSelected, onRowClick, getCellContextMenuActions } = props;\n\n return (\n <Table.Row\n key={row.id}\n data-active={rowIsActive ? \"true\" : undefined}\n data-selected={rowIsSelected ? \"true\" : undefined}\n aria-selected={rowIsSelected ? \"true\" : undefined}\n cursor={rowIsInteractive ? \"pointer\" : undefined}\n onClick={rowIsInteractive ? () => onRowClick?.(row.original) : undefined}\n borderTop={noBorder ? \"none\" : \"1px solid\"}\n borderBottom=\"1px solid\"\n borderRight={noBorder ? \"none\" : \"1px solid\"}\n _last={{ borderBottom: noBorder ? \"none\" : \"1px solid\", borderColor: \"border.subtle\" }}\n borderColor=\"border.subtle\"\n background={rowIsActive ? \"bg.active\" : \"bg\"}\n >\n {row.getVisibleCells().map((cell) => (\n <DataTableCellView key={cell.id} cell={cell} row={row} getCellContextMenuActions={getCellContextMenuActions} />\n ))}\n </Table.Row>\n );\n};\n","import \"./data-table.css\";\n\nimport { Box, Flex, Table } from \"@chakra-ui/react\";\nimport {\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type RowSelectionState,\n type SortingState,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { Fragment, useEffect, useState } from \"react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { useKanbanRendererStore } from \"../kanban-renderer/use-kanban-renderer-store\";\nimport { buildColumns } from \"./build-columns\";\nimport { DataTableColumnMenu } from \"./data-table-column-menu\";\nimport { DataTableHeader } from \"./data-table-header\";\nimport {\n buildDataTableRendererAttributes,\n buildDataTableRendererRows,\n filterDataTableRows,\n getSelectedOriginalRows,\n reorderDataTableColumns,\n resolveDataTableColumnOrder,\n resolveDataTableRowId,\n resolveDataTableToolbarStorageKey,\n resolveInitialPageSize,\n resolveSelectionActions,\n shouldEnableSelection,\n shouldHighlightActiveRow,\n} from \"./data-table-state\";\nimport { DataTableStatsRow } from \"./data-table-stats-row\";\nimport { DataTableBodyRow, DataTableColumnHeader } from \"./data-table-table-parts\";\nimport { EditModeDataTable } from \"./edit-mode-data-table\";\nimport { PaginationFooter } from \"./pagination-footer\";\nimport { SelectionToolbar } from \"./selection-toolbar\";\nimport type { DataTableProps, RowData } from \"./types\";\n\ninterface DatasetPaginationProps {\n table: ReturnType<typeof useReactTable<RowData>>;\n pagination: PaginationState;\n pageSizeOptions: number[];\n}\n\nconst DatasetPagination = (props: DatasetPaginationProps) => {\n const { table, pagination, pageSizeOptions } = props;\n\n return (\n <PaginationFooter\n pageCount={table.getPageCount()}\n pageIndex={pagination.pageIndex}\n pageSize={pagination.pageSize}\n pageSizeOptions={pageSizeOptions}\n totalRows={table.getCoreRowModel().rows.length}\n onPageChange={table.setPageIndex}\n onPageSizeChange={table.setPageSize}\n />\n );\n};\n\nconst DatasetDataTable = (props: DataTableProps) => {\n const {\n data,\n noBorder,\n fullWidth,\n hiddenColumns,\n onRowClick,\n isRowInteractive,\n activeRowId,\n columnIcons,\n columnDescriptions,\n compactHeaders,\n columnStats,\n columnRenderers,\n initialPageSize,\n pageSizeOptions = [10, 20, 30, 50, 100],\n rowActions = [],\n getRowId,\n toolbarStorageKey,\n enableRowActivation = false,\n getCellContextMenuActions,\n } = props;\n const [sorting, setSorting] = useState<SortingState>([]);\n const [pagination, setPagination] = useState<PaginationState>(() => ({\n pageIndex: 0,\n pageSize: resolveInitialPageSize({ initialPageSize }),\n }));\n const [rowSelection, setRowSelection] = useState<RowSelectionState>({});\n const [showStats, setShowStats] = useState(true);\n const [columnOrder, setColumnOrder] = useState<string[]>(() => {\n const propHiddenColumnsSet = new Set(hiddenColumns ?? []);\n return Object.keys(data[0] || {}).filter((key) => !propHiddenColumnsSet.has(key));\n });\n const [hiddenColumnMenuIds, setHiddenColumnMenuIds] = useState<Set<string>>(() => new Set());\n const hiddenColumnsSet = new Set(hiddenColumns ?? []);\n const baseColumnKeys = Object.keys(data[0] || {}).filter((key) => !hiddenColumnsSet.has(key));\n const orderedBaseColumnKeys = resolveDataTableColumnOrder(baseColumnKeys, columnOrder);\n const visibleColumnIds = new Set(orderedBaseColumnKeys.filter((key) => !hiddenColumnMenuIds.has(key)));\n const columnKeys = orderedBaseColumnKeys.filter((key) => visibleColumnIds.has(key));\n const enableSelection = shouldEnableSelection(props);\n const selectionActions = resolveSelectionActions(props);\n const rendererAttributes = buildDataTableRendererAttributes(data, orderedBaseColumnKeys, compactHeaders);\n const rendererRows = buildDataTableRendererRows(data, orderedBaseColumnKeys, getRowId);\n const resolvedToolbarStorageKey = resolveDataTableToolbarStorageKey({\n toolbarStorageKey,\n columnKeys: baseColumnKeys,\n });\n const filters = useKanbanRendererStore(resolvedToolbarStorageKey, (state) => state.filters, {\n settings: { viewMode: \"list\" },\n views: props.defaultViews,\n activeViewId: props.defaultActiveViewId,\n });\n const filteredRendererRows = filterDataTableRows(rendererRows, filters, rendererAttributes);\n const filteredData = filteredRendererRows.map((row) => row.sourceRow);\n const columns = buildColumns(data, columnKeys, {\n columnIcons,\n columnDescriptions,\n compactHeaders,\n enableSelection,\n rowActions,\n selectedRowIds: rowSelection,\n columnRenderers,\n });\n\n const table = useReactTable({\n data: filteredData,\n columns,\n defaultColumn: { size: 150, minSize: 40, maxSize: 800 },\n state: { sorting, pagination, rowSelection },\n getRowId: (row, index) => resolveDataTableRowId(row, index, getRowId),\n columnResizeMode: \"onChange\",\n columnResizeDirection: \"ltr\",\n onSortingChange: setSorting,\n onPaginationChange: setPagination,\n onRowSelectionChange: setRowSelection,\n getSortedRowModel: getSortedRowModel(),\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n enableMultiRowSelection: enableSelection,\n enableRowSelection: enableSelection,\n autoResetAll: false,\n });\n\n useEffect(() => {\n const pageCount = table.getPageCount();\n if (pageCount === 0 || pagination.pageIndex < pageCount) return;\n\n setPagination((current) => ({\n ...current,\n pageIndex: Math.max(pageCount - 1, 0),\n }));\n }, [pagination.pageIndex, table]);\n\n const columnSizeVars = (() => {\n const headers = table.getFlatHeaders();\n const colSizes: Record<string, number> = {};\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i]!;\n colSizes[`--header-${header.id}-size`] = header.getSize();\n colSizes[`--col-${header.column.id}-size`] = header.column.getSize();\n }\n return colSizes;\n })();\n\n const selectedRows = table.getSelectedRowModel().rows;\n const allRows = table.getCoreRowModel().rows;\n const selectedOriginalRows = getSelectedOriginalRows(selectedRows);\n const columnControl = (\n <DataTableColumnMenu\n columns={orderedBaseColumnKeys.map((columnId) => ({\n id: columnId,\n label: compactHeaders?.[columnId] ?? columnId,\n }))}\n visibleColumnIds={visibleColumnIds}\n showStats={showStats}\n statsAvailable={Boolean(columnStats)}\n onColumnVisibilityChange={(columnId, visible) =>\n setHiddenColumnMenuIds((current) => {\n const next = new Set(current);\n if (visible) {\n next.delete(columnId);\n } else {\n next.add(columnId);\n }\n return next;\n })\n }\n onColumnReorder={(activeColumnId, overColumnId) =>\n setColumnOrder((current) =>\n reorderDataTableColumns(resolveDataTableColumnOrder(baseColumnKeys, current), activeColumnId, overColumnId),\n )\n }\n onStatsVisibilityChange={setShowStats}\n />\n );\n\n return (\n <Flex direction=\"column\" height=\"100%\" width=\"100%\">\n <DataTableHeader\n rows={rendererRows}\n storageKey={resolvedToolbarStorageKey}\n attributes={rendererAttributes}\n columnControl={columnControl}\n defaultViews={props.defaultViews}\n defaultActiveViewId={props.defaultActiveViewId}\n />\n <Box position=\"relative\" flex=\"1\" minHeight=\"0\">\n <ScrollArea height=\"100%\" maxWidth=\"unset\" showHorizontalScrollbar>\n <Table.Root\n className={`data-table${fullWidth ? \" full-width\" : \"\"}`}\n style={{ ...columnSizeVars, width: fullWidth ? \"100%\" : table.getTotalSize() }}\n >\n <Table.Header>\n {table.getHeaderGroups().map((headerGroup) => (\n <Fragment key={headerGroup.id}>\n <Table.Row\n className=\"data-table-column-header-row\"\n borderRight={noBorder ? \"none\" : \"1px solid\"}\n borderColor=\"border.subtle\"\n >\n {headerGroup.headers.map((header) => (\n <DataTableColumnHeader\n key={header.id}\n header={header}\n headerGroup={headerGroup}\n table={table}\n fullWidth={fullWidth}\n hasDescription={Boolean(columnDescriptions?.[header.column.id])}\n />\n ))}\n </Table.Row>\n {columnStats && showStats ? (\n <DataTableStatsRow\n headerGroup={headerGroup}\n rows={filteredData}\n columnStats={columnStats}\n noBorder={noBorder}\n fullWidth={fullWidth}\n />\n ) : null}\n </Fragment>\n ))}\n </Table.Header>\n <Table.Body>\n {table.getRowModel().rows.map((row) => {\n const rowIsInteractive = onRowClick ? (isRowInteractive?.(row.original) ?? true) : false;\n const rowIsActive = shouldHighlightActiveRow({ enableRowActivation, activeRowId, rowId: row.id });\n const rowIsSelected = row.getIsSelected();\n\n return (\n <DataTableBodyRow\n key={row.id}\n row={row}\n noBorder={noBorder}\n rowIsInteractive={rowIsInteractive}\n rowIsActive={rowIsActive}\n rowIsSelected={rowIsSelected}\n onRowClick={onRowClick}\n getCellContextMenuActions={getCellContextMenuActions}\n />\n );\n })}\n </Table.Body>\n </Table.Root>\n </ScrollArea>\n {enableSelection && selectedRows.length > 0 ? (\n <SelectionToolbar\n selectedCount={selectedRows.length}\n totalCount={allRows.length}\n onClearSelection={() => table.toggleAllRowsSelected(false)}\n onSelectAll={() => table.toggleAllRowsSelected(true)}\n actions={selectionActions}\n selectedRows={selectedOriginalRows}\n />\n ) : null}\n </Box>\n {table.getPageCount() > 1 && (\n <DatasetPagination table={table} pagination={pagination} pageSizeOptions={pageSizeOptions} />\n )}\n </Flex>\n );\n};\n\nexport const DataTable = (props: DataTableProps) => {\n if (props.editMode) return <EditModeDataTable {...props} />;\n return <DatasetDataTable {...props} />;\n};\n","import \"./data-table.css\";\n\nimport { Skeleton, Table, Text } from \"@chakra-ui/react\";\n\nexport interface DataTableSkeletonColumn {\n id: string;\n label: string;\n}\n\ninterface DataTableSkeletonProps {\n /** Real column headers when the caller already knows them. */\n columns?: DataTableSkeletonColumn[];\n /** Placeholder column count when the headers are still unknown. */\n columnCount?: number;\n rowCount?: number;\n}\n\n// Deterministic width variation keeps the shimmer organic without re-rendering\n// to a different layout on every mount.\nconst cellWidths = [\"70%\", \"45%\", \"60%\", \"35%\", \"55%\"];\n\nexport const DataTableSkeleton = (props: DataTableSkeletonProps) => {\n const { columns, columnCount = 3, rowCount = 5 } = props;\n const headers =\n columns && columns.length > 0\n ? columns\n : Array.from({ length: columnCount }, (_, index) => ({ id: `column-${index + 1}`, label: \"\" }));\n\n return (\n <Table.Root className=\"data-table full-width\" width=\"100%\">\n <Table.Header>\n <Table.Row className=\"data-table-column-header-row\" borderRight=\"1px solid\" borderColor=\"border.subtle\">\n {headers.map((column) => (\n <Table.ColumnHeader\n key={column.id}\n textTransform=\"none\"\n borderRight=\"1px solid\"\n _last={{ borderRight: \"none\" }}\n borderColor=\"border.subtle\"\n paddingX=\"xs\"\n paddingY=\"xs\"\n whiteSpace=\"nowrap\"\n >\n {column.label ? (\n <Text as=\"div\" textStyle=\"label/S/medium\" lineHeight=\"1.2\" truncate>\n {column.label}\n </Text>\n ) : (\n <Skeleton height=\"12px\" width=\"4rem\" borderRadius=\"xs\" />\n )}\n </Table.ColumnHeader>\n ))}\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {Array.from({ length: rowCount }, (_, rowIndex) => (\n <Table.Row key={rowIndex}>\n {headers.map((column, columnIndex) => (\n <Table.Cell\n key={column.id}\n padding=\"xs\"\n borderRight=\"1px solid\"\n borderColor=\"border.subtle\"\n _last={{ borderRight: \"none\" }}\n borderBottom=\"none\"\n >\n <Skeleton\n height=\"14px\"\n width={cellWidths[(rowIndex + columnIndex) % cellWidths.length]}\n borderRadius=\"xs\"\n />\n </Table.Cell>\n ))}\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Root>\n );\n};\n"],"names":["resolveCategoricalColor","value","categories","find","category","Object","is","color","CategoricalColorCell","props","children","darkTextColor","lightTextColor","darkColorTarget","readableContrastRatio","expandShortHex","hex","split","map","character","join","parseHexColor","normalized","trim","startsWith","slice","expandedHex","length","test","r","Number","parseInt","g","b","toLinearChannel","channel","relativeLuminance","contrastRatio","foreground","background","foregroundLuminance","backgroundLuminance","lighter","Math","max","darker","min","toHexColor","toHexChannel","round","toString","padStart","mixRgbColors","start","end","endWeight","findMatchingForeground","target","step","candidate","resolveReadableTextColor","backgroundColor","darkText","lightText","darkerMatch","lighterMatch","mixHexColors","startColor","endColor","startWeight","resolveColorCellStyle","lightForeground","light","darkForeground","dark","toDisplayPercent","mixColors","mixedColor","mixThemeColors","undefined","resolveColorScaleValue","stops","isFinite","firstStop","lastStop","endIndex","findIndex","stop","startStop","endStop","ColorScaleCell","$","_c","t0","jsx","Text","imageExtensionPattern","imageLabelPattern","humanizeKey","key","words","replace","toLowerCase","toUpperCase","formatPath","path","part","isPrimitiveArray","every","item","appendJsonFields","fields","Array","isArray","push","label","forEach","index","String","entries","parseJsonCellValue","JSON","parse","buildJsonFields","field","isJsonImageValue","url","URL","protocol","pathname","isJsonImageArray","formatJsonPrimitive","formatJsonValue","getJsonCellSummary","parsedValue","keys","filter","visibleValues","remainingCount","Boolean","toReadOnlyValue","type","src","alt","images","image","buildFriendlyJsonParams","id","name","FriendlyJsonDisplay","t1","ParamEditor","stopRowActivation","event","stopPropagation","JsonCell","columnLabel","T0","T1","T2","summary","t10","t11","t2","t3","t4","t5","t6","t7","t8","t9","imageFields","flatMap","_temp","t12","Popover","Root","Symbol","for","placement","offset","mainAxis","Trigger","Button","HStack","_temp2","Braces","t13","ChevronRight","t14","t15","t16","overscrollBehavior","t17","Portal","ScrollArea","t18","field_0","Image","getSortValue","isDisplayValue","sortValue","compareValues","valueA","valueB","localeCompare","toSingleLineElement","element","isValidElement","cloneElement","style","flexWrap","minWidth","whiteSpace","stopControlPropagation","SelectionHeader","table","checked","getIsAllRowsSelected","isIndeterminate","getIsSomeRowsSelected","Minus","Check","ChakraIcon","details","toggleAllRowsSelected","Checkbox","SelectionCell","row","selectedRowIds","toggleSelected","RowActionsCell","actions","IconButton","ChevronDown","action","Menu","ListRow","destructive","icon","onSelect","original","jsxs","FormattedCell","displayValue","bb0","formatDisplayValue","chakra","DataCell","renderer","resolveDataCellStyle","buildColumns","data","columnKeys","options","columnIcons","columnDescriptions","compactHeaders","enableSelection","rowActions","columnRenderers","rowIndexColumn","columnHelper","accessor","_row","rowIndex","header","enableResizing","size","cell","info","getValue","selectionColumn","display","enableSorting","dataColumns","fallBackKey","columnValues","customIcon","headerIcon","getIcon","columnDescription","headerLabel","Tooltip","CircleHelp","meta","getCellStyle","sortingFn","rowA","rowB","rowActionsColumn","DataTableColumnMenuRow","column","onColumnVisibilityChange","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Transform","opacity","bg","GripVertical","Box","Icon","DataTableColumnMenu","columns","visibleColumnIds","showStats","statsAvailable","onColumnReorder","onStatsVisibilityChange","triggerRef","useRef","contentRef","open","setOpen","useState","query","setQuery","activationConstraint","distance","sensors","useSensors","useSensor","PointerSensor","normalizedQuery","includes","filteredColumns","active","over","handleDragEnd","closeOnOutsidePointerDown","event_0","Node","current","contains","closeOnEscape","event_1","document","addEventListener","removeEventListener","useEffect","getAnchorElement","Settings2","Switch","role","SearchableMenuInput","column_1","has","Stack","SortableContext","verticalListSortingStrategy","DndContext","closestCenter","column_0","StatChartCrosshair","coordinate","useActiveTooltipCoordinate","plotArea","usePlotArea","y","height","x","width","DataTableStatChart","dataKey","ariaLabel","tooltipLabel","tooltipValue","tooltipSeriesLabel","layout","categoryKey","domain","barSize","barCategoryGap","series","chart","useChart","datum","getBarValue","datum_0","getCategoryValue","top","right","bottom","left","Fragment","XAxis","YAxis","Bar","payload","datum_1","Chart","zIndex","RechartsTooltip","BarChart","t19","getStatValue","getColumnStatValues","rows","columnId","countUniqueStatValues","Set","buildTopValuesStat","limit","values","counts","Map","set","get","groups","count","percentage","sort","topGroups","otherCount","reduce","total","group","buildHistogramStat","binCount","binWidth","bins","from","_","binIndex","floor","formatNumber","Intl","NumberFormat","maximumFractionDigits","format","STAT_CHART_COLOR","SingleValueStat","Flex","UniqueStat","HistogramStat","histogram","valueCount","_temp3","TopValuesStat","_temp6","DataTableStat","stat","DataTableStatCell","headerGroup","columnStats","fullWidth","borderRight","headers","indexOf","Table","DataTableStatsRow","noBorder","some","header_0","bin","bin_0","_temp4","_temp5","utilityColumnIds","getSortMenuIcon","sortDirection","ArrowUpAZ","ArrowDownAZ","MoreVertical","DataTableColumnHeader","hasDescription","canSortColumn","getIsSorted","getCoreRowModel","SortIcon","flexRender","columnDef","getContext","tooltipContent","visibility","toggleSorting","clearSorting","getCanResize","onDoubleClick","resetSize","onMouseDown","getResizeHandler","onTouchStart","className","getIsResizing","DataTableCellView","getCellContextMenuActions","columnMeta","cellStyle","cellContext","rowId","onClick","contextActions","cellElement","ResourceContextMenu","DataTableBodyRow","rowIsInteractive","rowIsActive","rowIsSelected","onRowClick","borderBottom","borderColor","getVisibleCells","DatasetPagination","pagination","pageSizeOptions","getPageCount","pageIndex","pageSize","setPageIndex","setPageSize","PaginationFooter","DatasetDataTable","hiddenColumns","isRowInteractive","activeRowId","initialPageSize","getRowId","toolbarStorageKey","enableRowActivation","sorting","setSorting","setPagination","resolveInitialPageSize","rowSelection","setRowSelection","setShowStats","columnOrder","setColumnOrder","propHiddenColumnsSet","hiddenColumnMenuIds","setHiddenColumnMenuIds","hiddenColumnsSet","baseColumnKeys","orderedBaseColumnKeys","resolveDataTableColumnOrder","shouldEnableSelection","selectionActions","resolveSelectionActions","rendererAttributes","buildDataTableRendererAttributes","rendererRows","buildDataTableRendererRows","resolvedToolbarStorageKey","resolveDataTableToolbarStorageKey","filters","useKanbanRendererStore","state","settings","viewMode","views","defaultViews","activeViewId","defaultActiveViewId","filteredData","filterDataTableRows","sourceRow","useReactTable","defaultColumn","minSize","maxSize","resolveDataTableRowId","columnResizeMode","columnResizeDirection","onSortingChange","onPaginationChange","onRowSelectionChange","getSortedRowModel","getPaginationRowModel","enableMultiRowSelection","enableRowSelection","autoResetAll","pageCount","columnSizeVars","getFlatHeaders","colSizes","i","getSize","selectedRows","getSelectedRowModel","allRows","selectedOriginalRows","getSelectedOriginalRows","columnControl","visible","next","delete","add","activeColumnId","overColumnId","reorderDataTableColumns","DataTableHeader","getTotalSize","getHeaderGroups","getRowModel","shouldHighlightActiveRow","getIsSelected","SelectionToolbar","DataTable","editMode","EditModeDataTable","cellWidths","DataTableSkeleton","columnCount","rowCount","__0","columnIndex","Skeleton"],"mappings":"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"}
|