@pstdio/ui 0.21.0 → 0.22.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.
Files changed (111) hide show
  1. package/dist/{MermaidComponent-BVMyKttu.js → MermaidComponent-D92GMhht.js} +3 -3
  2. package/dist/{MermaidComponent-BVMyKttu.js.map → MermaidComponent-D92GMhht.js.map} +1 -1
  3. package/dist/chat-ui.d.ts +2 -0
  4. package/dist/chat-ui.js +2 -2
  5. package/dist/components/data-table/build-columns.d.ts +1 -0
  6. package/dist/components/data-table/data-table-column-menu.d.ts +2 -0
  7. package/dist/components/data-table/data-table-row-display.d.ts +11 -0
  8. package/dist/components/data-table/data-table-table-parts.d.ts +1 -0
  9. package/dist/components/data-table/edit-mode-data-table-body.d.ts +1 -0
  10. package/dist/components/data-table/edit-mode-data-table-cell.d.ts +1 -0
  11. package/dist/components/data-table/edit-mode-data-table-header.d.ts +1 -0
  12. package/dist/components/diff-viewer/code-editor.d.ts +8 -2
  13. package/dist/components/kanban-renderer/collection-badge.d.ts +7 -0
  14. package/dist/components/kanban-renderer/index.d.ts +1 -1
  15. package/dist/components/kanban-renderer/kanban-renderer-helpers.d.ts +2 -1
  16. package/dist/components/kanban-renderer/types.d.ts +20 -1
  17. package/dist/components/list-row/list-row-content.d.ts +1 -0
  18. package/dist/components/param-editor/param-editor-presentation.d.ts +1 -1
  19. package/dist/components/param-editor/param-editor.types.d.ts +5 -193
  20. package/dist/components/rich-text/shared/markdown-ast.d.ts +1 -0
  21. package/dist/components/rich-text/shared/markdown-source-document.d.ts +7 -0
  22. package/dist/components/rich-text/shared/markdown-source-links.d.ts +11 -0
  23. package/dist/components/rich-text/shared/markdown-source-map.d.ts +10 -0
  24. package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
  25. package/dist/components/tag-editor/tag-editor-row.d.ts +1 -1
  26. package/dist/components/tag-editor/tag-editor.types.d.ts +12 -0
  27. package/dist/components/tag-editor/tag-settings-panel.d.ts +1 -1
  28. package/dist/components/tree-list/tree-list-drag-provider.d.ts +13 -0
  29. package/dist/components/tree-list/tree-list-order.store.d.ts +4 -1
  30. package/dist/components/tree-list/tree-list-reorder.d.ts +14 -3
  31. package/dist/components/tree-list/tree-list-sortable.d.ts +2 -0
  32. package/dist/components/tree-list/tree-list-visibility-filter.d.ts +2 -2
  33. package/dist/components/tree-list/tree-list.d.ts +3 -0
  34. package/dist/components/tree-list/tree-list.types.d.ts +4 -0
  35. package/dist/data-table.d.ts +2 -0
  36. package/dist/data-table.js +806 -793
  37. package/dist/data-table.js.map +1 -1
  38. package/dist/diff.d.ts +2 -0
  39. package/dist/diff.js +529 -533
  40. package/dist/diff.js.map +1 -1
  41. package/dist/edit-mode-data-table-DGgRuSW3.js +846 -0
  42. package/dist/edit-mode-data-table-DGgRuSW3.js.map +1 -0
  43. package/dist/index.d.ts +2 -0
  44. package/dist/index.js +1516 -1413
  45. package/dist/index.js.map +1 -1
  46. package/dist/{kanban-renderer-toolbar-CpegGbwq.js → kanban-renderer-toolbar-Bl8xXdwU.js} +527 -469
  47. package/dist/kanban-renderer-toolbar-Bl8xXdwU.js.map +1 -0
  48. package/dist/kanban-renderer.d.ts +2 -0
  49. package/dist/kanban-renderer.js +21 -21
  50. package/dist/kanban-renderer.js.map +1 -1
  51. package/dist/lazy-markdown-editor-CCOchoJX.js +235 -0
  52. package/dist/lazy-markdown-editor-CCOchoJX.js.map +1 -0
  53. package/dist/list-row-DCgdza1i.js +812 -0
  54. package/dist/list-row-DCgdza1i.js.map +1 -0
  55. package/dist/markdown-CASvn1Z2.js +1643 -0
  56. package/dist/markdown-CASvn1Z2.js.map +1 -0
  57. package/dist/markdown-editor-C4GCyebp.js +1019 -0
  58. package/dist/markdown-editor-C4GCyebp.js.map +1 -0
  59. package/dist/{mermaid-renderer-H3IhLqnQ.js → mermaid-renderer-CVnuKs-A.js} +2 -2
  60. package/dist/{mermaid-renderer-H3IhLqnQ.js.map → mermaid-renderer-CVnuKs-A.js.map} +1 -1
  61. package/dist/mermaid.d.ts +2 -0
  62. package/dist/mermaid.js +1 -1
  63. package/dist/monaco-browser-CgvlArN7.js +21 -0
  64. package/dist/monaco-browser-CgvlArN7.js.map +1 -0
  65. package/dist/{param-editor-B8Ff9Nm8.js → param-editor-CkDq623X.js} +2 -2
  66. package/dist/{param-editor-B8Ff9Nm8.js.map → param-editor-CkDq623X.js.map} +1 -1
  67. package/dist/param-editor-field-DRgbnL7-.js +2809 -0
  68. package/dist/param-editor-field-DRgbnL7-.js.map +1 -0
  69. package/dist/rich-message-DARuDVOX.js +628 -0
  70. package/dist/{rich-message-DdFYRzTo.js.map → rich-message-DARuDVOX.js.map} +1 -1
  71. package/dist/rich-text.d.ts +2 -0
  72. package/dist/rich-text.js +48 -47
  73. package/dist/rich-text.js.map +1 -1
  74. package/dist/style.css +1 -1
  75. package/dist/terminal.d.ts +2 -0
  76. package/dist/theme/primitives/sizes.d.ts +9 -0
  77. package/dist/{theme-BH4fSst9.js → theme-B-l5_a6F.js} +69 -50
  78. package/dist/theme-B-l5_a6F.js.map +1 -0
  79. package/dist/theme-preference-Bpobguh4.js +114 -0
  80. package/dist/theme-preference-Bpobguh4.js.map +1 -0
  81. package/dist/theme.d.ts +2 -0
  82. package/dist/theme.js +1 -1
  83. package/dist/tree-list-AlO5ZmxQ.js +1262 -0
  84. package/dist/tree-list-AlO5ZmxQ.js.map +1 -0
  85. package/dist/utils/theme-preference.d.ts +4 -1
  86. package/dist/workspace-badge-BR_GgsAG.js +175 -0
  87. package/dist/workspace-badge-BR_GgsAG.js.map +1 -0
  88. package/package.json +5 -42
  89. package/dist/dialog-accept-shortcut-DAEBsoWW.js +0 -7
  90. package/dist/dialog-accept-shortcut-DAEBsoWW.js.map +0 -1
  91. package/dist/edit-mode-data-table-D6NeiDJx.js +0 -775
  92. package/dist/edit-mode-data-table-D6NeiDJx.js.map +0 -1
  93. package/dist/editor-config-D9OksZ93.js +0 -2416
  94. package/dist/editor-config-D9OksZ93.js.map +0 -1
  95. package/dist/kanban-renderer-toolbar-CpegGbwq.js.map +0 -1
  96. package/dist/lazy-markdown-editor-B7uP2ALS.js +0 -26
  97. package/dist/lazy-markdown-editor-B7uP2ALS.js.map +0 -1
  98. package/dist/list-row-9oxy-F0v.js +0 -796
  99. package/dist/list-row-9oxy-F0v.js.map +0 -1
  100. package/dist/monaco-browser-CO0NxK_Z.js +0 -19
  101. package/dist/monaco-browser-CO0NxK_Z.js.map +0 -1
  102. package/dist/number-input-WUfejtNx.js +0 -343
  103. package/dist/number-input-WUfejtNx.js.map +0 -1
  104. package/dist/param-editor-field-Cu4pto_a.js +0 -2845
  105. package/dist/param-editor-field-Cu4pto_a.js.map +0 -1
  106. package/dist/rich-message-DdFYRzTo.js +0 -658
  107. package/dist/theme-BH4fSst9.js.map +0 -1
  108. package/dist/theme-preference-DyymrYpR.js +0 -123
  109. package/dist/theme-preference-DyymrYpR.js.map +0 -1
  110. package/dist/tree-list-uV4UFj0x.js +0 -1116
  111. package/dist/tree-list-uV4UFj0x.js.map +0 -1
@@ -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/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 getRowActions?: (row: RowData) => 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 mergeRowActions = (rowActions: DataTableRowAction[], dynamicActions: DataTableRowAction[]) => {\n const dynamicLabels = new Set(dynamicActions.map((action) => action.label));\n return [...dynamicActions, ...rowActions.filter((action) => !dynamicLabels.has(action.label))];\n};\n\nconst RowActionsCell = (\n props: CellContext<RowData, unknown> & {\n actions: DataTableRowAction[];\n getActions?: (row: RowData) => DataTableRowAction[];\n },\n) => {\n const { row, actions, getActions } = props;\n const resolvedActions = mergeRowActions(actions, getActions?.(row.original) ?? []);\n\n if (resolvedActions.length === 0) return null;\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 {resolvedActions.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 getRowActions,\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} getActions={getRowActions} />,\n enableResizing: false,\n enableSorting: false,\n size: 36,\n });\n\n return [\n rowIndexColumn,\n ...(enableSelection ? [selectionColumn] : []),\n ...dataColumns,\n ...(rowActions.length > 0 || getRowActions ? [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 getRowActions,\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 getRowActions,\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","mergeRowActions","rowActions","dynamicActions","dynamicLabels","Set","action","has","RowActionsCell","actions","getActions","T3","bb0","resolvedActions","original","Menu","IconButton","ChevronDown","Positioner","Content","ListRow","destructive","icon","onSelect","FormattedCell","displayValue","formatDisplayValue","chakra","DataCell","renderer","resolveDataCellStyle","buildColumns","data","columnKeys","options","columnIcons","columnDescriptions","compactHeaders","enableSelection","getRowActions","columnRenderers","rowIndexColumn","columnHelper","accessor","_row","rowIndex","header","enableResizing","size","cell","info","getValue","selectionColumn","display","enableSorting","dataColumns","fallBackKey","columnValues","customIcon","headerIcon","getIcon","columnDescription","headerLabel","jsxs","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","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","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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"}
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 getRowActions?: (row: RowData) => DataTableRowAction[];\n selectedRowIds?: RowSelectionState;\n columnRenderers?: Partial<Record<string, DataTableColumnRenderer>>;\n wrapRows?: boolean;\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 mergeRowActions = (rowActions: DataTableRowAction[], dynamicActions: DataTableRowAction[]) => {\n const dynamicLabels = new Set(dynamicActions.map((action) => action.label));\n return [...dynamicActions, ...rowActions.filter((action) => !dynamicLabels.has(action.label))];\n};\n\nconst RowActionsCell = (\n props: CellContext<RowData, unknown> & {\n actions: DataTableRowAction[];\n getActions?: (row: RowData) => DataTableRowAction[];\n },\n) => {\n const { row, actions, getActions } = props;\n const resolvedActions = mergeRowActions(actions, getActions?.(row.original) ?? []);\n\n if (resolvedActions.length === 0) return null;\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 {resolvedActions.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 wrapRows: boolean;\n}\n\nconst FormattedCell = (props: FormattedCellProps) => {\n const { value, wrapRows } = props;\n const displayValue = formatDisplayValue(value);\n\n if (isValidElement(displayValue)) {\n return (\n <chakra.span\n display=\"inline-flex\"\n maxWidth=\"full\"\n minW=\"0\"\n overflow={wrapRows ? \"visible\" : \"hidden\"}\n overflowWrap={wrapRows ? \"anywhere\" : undefined}\n whiteSpace={wrapRows ? \"normal\" : \"nowrap\"}\n >\n {wrapRows ? displayValue : toSingleLineElement(displayValue)}\n </chakra.span>\n );\n }\n\n return (\n <Text\n maxWidth=\"full\"\n overflow={wrapRows ? \"visible\" : \"hidden\"}\n overflowWrap={wrapRows ? \"anywhere\" : undefined}\n textOverflow={wrapRows ? undefined : \"ellipsis\"}\n textStyle=\"paragraph/S/regular\"\n whiteSpace={wrapRows ? \"normal\" : \"nowrap\"}\n >\n {displayValue}\n </Text>\n );\n};\n\ninterface DataCellProps {\n columnLabel: string;\n renderer?: DataTableColumnRenderer;\n value: unknown;\n wrapRows: boolean;\n}\n\nconst DataCell = (props: DataCellProps) => {\n const { columnLabel, renderer, value, wrapRows } = 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} wrapRows={wrapRows} />\n </CategoricalColorCell>\n );\n }\n }\n\n return <FormattedCell value={value} wrapRows={wrapRows} />;\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 getRowActions,\n selectedRowIds,\n columnRenderers,\n wrapRows = false,\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) => (\n <DataCell columnLabel={fallBackKey} renderer={renderer} value={info.getValue()} wrapRows={wrapRows} />\n ),\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} getActions={getRowActions} />,\n enableResizing: false,\n enableSorting: false,\n size: 36,\n });\n\n return [\n rowIndexColumn,\n ...(enableSelection ? [selectionColumn] : []),\n ...dataColumns,\n ...(rowActions.length > 0 || getRowActions ? [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\";\nimport { DataTableRowDisplaySwitch } from \"./data-table-row-display\";\n\ninterface DataTableColumnMenuColumn {\n id: string;\n label: string;\n}\n\ninterface DataTableColumnMenuProps {\n columns: DataTableColumnMenuColumn[];\n visibleColumnIds: Set<string>;\n wrapRows: boolean;\n showStats: boolean;\n statsAvailable: boolean;\n onColumnVisibilityChange: (columnId: string, visible: boolean) => void;\n onColumnReorder: (activeColumnId: string, overColumnId: string) => void;\n onWrapRowsChange: (wrapRows: boolean) => 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 wrapRows,\n showStats,\n statsAvailable,\n onColumnVisibilityChange,\n onColumnReorder,\n onWrapRowsChange,\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 <DataTableRowDisplaySwitch showDivider wrapRows={wrapRows} onWrapRowsChange={onWrapRowsChange} />\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 wrapRows: boolean;\n getCellContextMenuActions?: DataTableProps[\"getCellContextMenuActions\"];\n}\n\ninterface DataTableColumnMeta {\n getCellStyle?: (value: unknown) => CSSProperties | undefined;\n}\n\nconst DataTableCellView = (props: DataTableCellViewProps) => {\n const { cell, row, wrapRows, 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 overflowWrap={wrapRows ? \"anywhere\" : undefined}\n padding=\"xs\"\n height={wrapRows ? undefined : \"10\"}\n maxHeight={wrapRows ? undefined : \"10\"}\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={wrapRows ? undefined : \"ellipsis\"}\n verticalAlign={wrapRows ? \"top\" : \"middle\"}\n whiteSpace={wrapRows ? \"normal\" : \"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 wrapRows: boolean;\n onRowClick?: DataTableProps[\"onRowClick\"];\n getCellContextMenuActions?: DataTableProps[\"getCellContextMenuActions\"];\n}\n\nexport const DataTableBodyRow = (props: DataTableBodyRowProps) => {\n const {\n row,\n noBorder,\n rowIsInteractive,\n rowIsActive,\n rowIsSelected,\n wrapRows,\n onRowClick,\n getCellContextMenuActions,\n } = 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 height={wrapRows ? undefined : \"10\"}\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\n key={cell.id}\n cell={cell}\n row={row}\n wrapRows={wrapRows}\n getCellContextMenuActions={getCellContextMenuActions}\n />\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 buildColumnMenuColumns = (columnKeys: string[], compactHeaders?: Partial<Record<string, string>>) =>\n columnKeys.map((columnId) => ({ id: columnId, label: compactHeaders?.[columnId] ?? columnId }));\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 getRowActions,\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 [wrapRows, setWrapRows] = useState(false);\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 getRowActions,\n selectedRowIds: rowSelection,\n columnRenderers,\n wrapRows,\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={buildColumnMenuColumns(orderedBaseColumnKeys, compactHeaders)}\n visibleColumnIds={visibleColumnIds}\n wrapRows={wrapRows}\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 onWrapRowsChange={setWrapRows}\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 wrapRows={wrapRows}\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","mergeRowActions","rowActions","dynamicActions","dynamicLabels","Set","action","has","RowActionsCell","actions","getActions","T3","bb0","resolvedActions","original","Menu","IconButton","ChevronDown","Positioner","Content","ListRow","destructive","icon","onSelect","FormattedCell","wrapRows","displayValue","formatDisplayValue","chakra","DataCell","renderer","resolveDataCellStyle","buildColumns","data","columnKeys","options","columnIcons","columnDescriptions","compactHeaders","enableSelection","getRowActions","columnRenderers","rowIndexColumn","columnHelper","accessor","_row","rowIndex","header","enableResizing","size","cell","info","getValue","selectionColumn","display","enableSorting","dataColumns","fallBackKey","columnValues","customIcon","headerIcon","getIcon","columnDescription","headerLabel","jsxs","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","onWrapRowsChange","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","DataTableRowDisplaySwitch","Switch","role","SearchableMenuInput","column_1","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","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","buildColumnMenuColumns","DatasetPagination","pagination","pageSizeOptions","getPageCount","pageIndex","pageSize","setPageIndex","setPageSize","PaginationFooter","DatasetDataTable","hiddenColumns","isRowInteractive","activeRowId","initialPageSize","getRowId","toolbarStorageKey","enableRowActivation","sorting","setSorting","setPagination","resolveInitialPageSize","rowSelection","setRowSelection","setShowStats","setWrapRows","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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"}