{"version":3,"file":"AggregatedCell-BtKC5-m6.mjs","names":["Button","Dialog","DialogActions","DialogContent","DialogTitle","useEventCallback","useContext","useTranslation","DialogsContext","ReactNode","OpenDialogOptions","onClose","result","TResult","Promise","AlertOptions","title","ConfirmOptions","cancelText","DialogProps","payload","TPayload","open","OpenAlertDialog","message","options","OpenConfirmDialog","DialogComponent","React","ComponentType","OpenDialog","Component","CloseDialog","dialog","AlertDialogPayload","AlertDialogProps","AlertDialog","t0","$","_c","$i","Symbol","for","t","t1","t2","t3","t4","t5","t6","t7","t8","ConfirmDialogPayload","ConfirmDialogProps","ConfirmDialog","t9","t10","t11","t12","DialogHook","alert","confirm","close","useDialogs","undefined","message_0","options_0","Theme","formatForDisplay","Cell","CellData","Column","RowData","LayoutTableFeatures","LayoutColumnMeta","shortcutLabel","label","hotkey","AnyColumn","TData","TValue","columnLabel","column","meta","columnDef","header","id","hasColumnLabel","Boolean","columnAlign","align","moveColumn","delta","table","current","atoms","columnOrder","get","order","length","getAllLeafColumns","map","from","indexOf","to","splice","setColumnOrder","pinnedSx","isHeader","pinned","getIsPinned","position","zIndex","insetInlineStart","getStart","undefined","insetInlineEnd","getAfter","bgcolor","backgroundImage","theme","palette","action","hover","selected","getIsLastColumn","borderInlineEnd","borderInlineEndStyle","borderColor","getIsFirstColumn","borderInlineStart","borderInlineStartStyle","cellSelectionSx","cell","getIsSelected","edges","getSelectionEdges","outline","top","primary","main","bottom","left","right","filter","join","boxShadow","quoteTsv","text","test","replaceAll","toClipboardValue","value","String","Date","toISOString","JSON","stringify","toClipboardText","regions","Array","rows","cells","dayjs","formatValue","value","dateFormat","undefined","Date","format","toString","JSON","stringify","aggregationFn_count","aggregationFn_extent","aggregationFn_first","aggregationFn_last","aggregationFn_max","aggregationFn_mean","aggregationFn_median","aggregationFn_min","aggregationFn_sum","aggregationFn_unique","aggregationFn_uniqueCount","createExpandedRowModel","createFacetedMinMaxValues","createFacetedRowModel","createFacetedUniqueValues","createFilteredRowModel","createGroupedRowModel","createPaginatedRowModel","createSortedRowModel","createTableHookContexts","filterFn_arrHas","filterFn_arrIncludes","filterFn_arrIncludesAll","filterFn_arrIncludesSome","filterFn_between","filterFn_betweenInclusive","filterFn_empty","filterFn_endsWith","filterFn_equals","filterFn_equalsString","filterFn_equalsStringSensitive","filterFn_greaterThan","filterFn_greaterThanOrEqualTo","filterFn_inDateRange","filterFn_inNumberRange","filterFn_includesString","filterFn_includesStringSensitive","filterFn_lessThan","filterFn_lessThanOrEqualTo","filterFn_notEmpty","filterFn_startsWith","filterFn_weakEquals","metaHelper","sortFn_alphanumeric","sortFn_alphanumericCaseSensitive","sortFn_basic","sortFn_datetime","sortFn_text","sortFn_textCaseSensitive","stockFeatures","tableFeatures","LayoutColumnMeta","layoutTableFeatures","columnMeta","filteredRowModel","sortedRowModel","paginatedRowModel","expandedRowModel","groupedRowModel","facetedRowModel","facetedUniqueValues","facetedMinMaxValues","filterFns","arrHas","arrIncludes","arrIncludesAll","arrIncludesSome","between","betweenInclusive","empty","endsWith","equals","equalsString","equalsStringSensitive","greaterThan","greaterThanOrEqualTo","inDateRange","inNumberRange","includesString","includesStringSensitive","lessThan","lessThanOrEqualTo","notEmpty","startsWith","weakEquals","sortFns","alphanumeric","alphanumericCaseSensitive","basic","datetime","text","textCaseSensitive","aggregationFns","sum","min","max","extent","mean","median","unique","uniqueCount","count","first","last","LayoutTableFeatures","tableContext","cellContext","headerContext","useTableContext","useCellContext","useHeaderContext","TypographyProps","Typography","FC","formatValue","useCellContext","AggregatedCell","prefix","options","Intl","NumberFormatOptions","dateFormat","t0","$","_c","$i","Symbol","for","props","t1","undefined","cell","T0","t2","t3","t4","t5","t6","t7","t8","bb0","value","getValue","t9","entry","toLocaleString","format","Array","isArray","map","join"],"sources":["../src/hooks/useDialogs.tsx","../src/components/table/utils.ts","../src/components/table/formatValue.ts","../src/components/table/context.ts","../src/components/table/cells/formatters/AggregatedCell.tsx"],"sourcesContent":["import {\n  Button,\n  Dialog,\n  DialogActions,\n  DialogContent,\n  DialogTitle,\n  useEventCallback,\n} from \"@mui/material\";\nimport { useContext } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { DialogsContext } from \"../contexts/DialogsContext\";\nimport type { ReactNode } from \"react\";\n\nexport interface OpenDialogOptions<TResult> {\n  onClose?: (result: TResult) => Promise<void>;\n}\n\nexport interface AlertOptions {\n  title?: ReactNode;\n}\n\nexport interface ConfirmOptions {\n  title?: ReactNode;\n  cancelText?: ReactNode;\n}\n\nexport interface DialogProps<TPayload = undefined, TResult = void> {\n  payload: TPayload;\n  open: boolean;\n  onClose: (result: TResult) => Promise<void>;\n}\n\nexport type OpenAlertDialog = (message: ReactNode, options?: AlertOptions) => Promise<void>;\n\nexport type OpenConfirmDialog = (message: ReactNode, options?: ConfirmOptions) => Promise<boolean>;\n\nexport type DialogComponent<TPayload, TResult> = React.ComponentType<\n  DialogProps<TPayload, TResult>\n>;\n\nexport interface OpenDialog {\n  <TPayload extends undefined, TResult>(\n    Component: DialogComponent<TPayload, TResult>,\n    payload?: TPayload,\n    options?: OpenDialogOptions<TResult>,\n  ): Promise<TResult>;\n  <TPayload, TResult>(\n    Component: DialogComponent<TPayload, TResult>,\n    payload: TPayload,\n    options?: OpenDialogOptions<TResult>,\n  ): Promise<TResult>;\n}\n\nexport type CloseDialog = <TResult>(dialog: Promise<TResult>, result: TResult) => Promise<TResult>;\n\nexport interface AlertDialogPayload extends AlertOptions {\n  message: ReactNode;\n}\n\nexport type AlertDialogProps = DialogProps<AlertDialogPayload, void>;\n\nexport function AlertDialog({ open, payload, onClose }: Readonly<AlertDialogProps>) {\n  const { t } = useTranslation();\n\n  return (\n    <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose()} disableRestoreFocus>\n      <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Alert\")}</DialogTitle>\n      <DialogContent>{payload.message}</DialogContent>\n      <DialogActions>\n        <Button onClick={() => onClose()} autoFocus>\n          {t(\"Layout.Dialog.Confirm\")}\n        </Button>\n      </DialogActions>\n    </Dialog>\n  );\n}\n\nexport interface ConfirmDialogPayload extends ConfirmOptions {\n  message: ReactNode;\n}\n\nexport type ConfirmDialogProps = DialogProps<ConfirmDialogPayload, boolean>;\n\nexport function ConfirmDialog({ open, payload, onClose }: Readonly<ConfirmDialogProps>) {\n  const { t } = useTranslation();\n\n  return (\n    <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose(false)} disableRestoreFocus>\n      <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Confirm\")}</DialogTitle>\n      <DialogContent>{payload.message}</DialogContent>\n      <DialogActions>\n        <Button onClick={() => onClose(false)}>\n          {payload.cancelText ?? t(\"Layout.Dialog.Cancel\")}\n        </Button>\n        <Button onClick={() => onClose(true)} autoFocus>\n          {t(\"Layout.Dialog.Confirm\")}\n        </Button>\n      </DialogActions>\n    </Dialog>\n  );\n}\n\ninterface DialogHook {\n  alert: OpenAlertDialog;\n  confirm: OpenConfirmDialog;\n  open: OpenDialog;\n  close: CloseDialog;\n}\n\nexport function useDialogs(): DialogHook {\n  const { open, close } = useContext(DialogsContext);\n\n  const alert = useEventCallback<OpenAlertDialog>((message, { ...options } = {}) =>\n    open(AlertDialog, { ...options, message }),\n  );\n\n  const confirm = useEventCallback<OpenConfirmDialog>((message, { ...options } = {}) =>\n    open(ConfirmDialog, { ...options, message }),\n  );\n\n  return { alert, confirm, open, close };\n}\n","import type { Theme } from \"@mui/material\";\nimport { formatForDisplay } from \"@tanstack/react-hotkeys\";\nimport type { Cell, CellData, Column, RowData } from \"@tanstack/react-table\";\nimport type { LayoutTableFeatures } from \"~/components/table/context\";\nimport type { LayoutColumnMeta } from \"./types\";\n\nexport const shortcutLabel = (label: string, hotkey: string): string =>\n  `${label} (${formatForDisplay(hotkey)})`;\n\ntype AnyColumn<TData extends RowData, TValue extends CellData> = Column<\n  LayoutTableFeatures,\n  TData,\n  TValue\n>;\n\nexport const columnLabel = <TData extends RowData, TValue extends CellData>(\n  column: AnyColumn<TData, TValue>,\n): string => {\n  const meta = column.columnDef.meta as LayoutColumnMeta | undefined;\n  if (meta?.label) return meta.label;\n\n  return typeof column.columnDef.header === \"string\" ? column.columnDef.header : column.id;\n};\n\nexport const hasColumnLabel = <TData extends RowData, TValue extends CellData>(\n  column: AnyColumn<TData, TValue>,\n): boolean =>\n  Boolean((column.columnDef.meta as LayoutColumnMeta | undefined)?.label) ||\n  typeof column.columnDef.header === \"string\";\n\nexport const columnAlign = <TData extends RowData, TValue extends CellData>(\n  column: AnyColumn<TData, TValue>,\n): \"left\" | \"center\" | \"right\" =>\n  (column.columnDef.meta as LayoutColumnMeta | undefined)?.align ??\n  (hasColumnLabel(column) ? \"left\" : \"center\");\n\nexport const moveColumn = <TData extends RowData, TValue extends CellData>(\n  column: AnyColumn<TData, TValue>,\n  delta: number,\n): void => {\n  const { table } = column;\n  const current = table.atoms.columnOrder.get();\n  const order = current.length ? [...current] : table.getAllLeafColumns().map(({ id }) => id);\n  const from = order.indexOf(column.id);\n  const to = from + delta;\n  if (from < 0 || to < 0 || to >= order.length) return;\n\n  order.splice(to, 0, ...order.splice(from, 1));\n  table.setColumnOrder(order);\n};\n\nexport const pinnedSx = <TData extends RowData, TValue extends CellData>(\n  column: AnyColumn<TData, TValue>,\n  isHeader = false,\n) => {\n  const pinned = column.getIsPinned();\n  if (!pinned) return {};\n\n  return {\n    position: \"sticky\",\n    zIndex: isHeader ? 4 : 2,\n    insetInlineStart: pinned === \"start\" ? column.getStart(\"start\") : undefined,\n    insetInlineEnd: pinned === \"end\" ? column.getAfter(\"end\") : undefined,\n    bgcolor: \"background.paper\",\n    ...(!isHeader && {\n      \".MuiTableRow-root:hover > &\": {\n        backgroundImage: (theme: Theme) =>\n          `linear-gradient(${theme.palette.action.hover}, ${theme.palette.action.hover})`,\n      },\n      \".MuiTableRow-root.Mui-selected > &\": {\n        backgroundImage: (theme: Theme) =>\n          `linear-gradient(${theme.palette.action.selected}, ${theme.palette.action.selected})`,\n      },\n    }),\n    ...(pinned === \"start\" &&\n      column.getIsLastColumn(\"start\") && {\n        borderInlineEnd: 1,\n        borderInlineEndStyle: \"solid\",\n        borderColor: \"divider\",\n      }),\n    ...(pinned === \"end\" &&\n      column.getIsFirstColumn(\"end\") && {\n        borderInlineStart: 1,\n        borderInlineStartStyle: \"solid\",\n        borderColor: \"divider\",\n      }),\n  };\n};\n\nexport const cellSelectionSx = <TData extends RowData, TValue extends CellData>(\n  cell: Cell<LayoutTableFeatures, TData, TValue>,\n) => {\n  if (!cell.getIsSelected()) return {};\n\n  const edges = cell.getSelectionEdges();\n  const outline = (theme: Theme) =>\n    [\n      edges.top && `inset 0 2px 0 0 ${theme.palette.primary.main}`,\n      edges.bottom && `inset 0 -2px 0 0 ${theme.palette.primary.main}`,\n      edges.left && `inset 2px 0 0 0 ${theme.palette.primary.main}`,\n      edges.right && `inset -2px 0 0 0 ${theme.palette.primary.main}`,\n    ]\n      .filter(Boolean)\n      .join(\", \") || \"none\";\n\n  return {\n    backgroundImage: (theme: Theme) =>\n      `linear-gradient(${theme.palette.action.selected}, ${theme.palette.action.selected})`,\n    boxShadow: outline,\n  };\n};\n\n/** Spreadsheet TSV quoting, so a cell holding a tab or a newline stays one cell. */\nconst quoteTsv = (text: string): string =>\n  /[\"\\t\\n\\r]/.test(text) ? `\"${text.replaceAll('\"', '\"\"')}\"` : text;\n\nconst toClipboardValue = (value: unknown): string => {\n  if (value == null) return \"\";\n  if (typeof value === \"string\") return quoteTsv(value);\n  if (typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"bigint\")\n    return quoteTsv(String(value));\n  if (value instanceof Date) return quoteTsv(value.toISOString());\n\n  // Everything else — objects, and the odd symbol or function — as JSON or blank.\n  return quoteTsv(JSON.stringify(value) ?? \"\");\n};\n\n/**\n * Serializes `table.getSelectedCellRangesData()` as TSV, which is what Excel,\n * Google Sheets and LibreOffice all paste as a grid. Disjoint selection regions\n * are separated by a blank line.\n */\nexport const toClipboardText = (regions: Array<Array<Array<unknown>>>): string =>\n  regions\n    .map((rows) => rows.map((cells) => cells.map(toClipboardValue).join(\"\\t\")).join(\"\\n\"))\n    .join(\"\\n\\n\");\n","import dayjs from \"dayjs\";\n\nexport const formatValue = (value: unknown, dateFormat = \"L LT\"): string => {\n  if (value === null || value === undefined) return \"\";\n  if (value instanceof Date) return dayjs(value).format(dateFormat);\n  if (typeof value === \"string\") return value;\n  if (typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"bigint\") {\n    return value.toString();\n  }\n\n  return JSON.stringify(value) ?? \"\";\n};\n","import {\n  aggregationFn_count,\n  aggregationFn_extent,\n  aggregationFn_first,\n  aggregationFn_last,\n  aggregationFn_max,\n  aggregationFn_mean,\n  aggregationFn_median,\n  aggregationFn_min,\n  aggregationFn_sum,\n  aggregationFn_unique,\n  aggregationFn_uniqueCount,\n  createExpandedRowModel,\n  createFacetedMinMaxValues,\n  createFacetedRowModel,\n  createFacetedUniqueValues,\n  createFilteredRowModel,\n  createGroupedRowModel,\n  createPaginatedRowModel,\n  createSortedRowModel,\n  createTableHookContexts,\n  filterFn_arrHas,\n  filterFn_arrIncludes,\n  filterFn_arrIncludesAll,\n  filterFn_arrIncludesSome,\n  filterFn_between,\n  filterFn_betweenInclusive,\n  filterFn_empty,\n  filterFn_endsWith,\n  filterFn_equals,\n  filterFn_equalsString,\n  filterFn_equalsStringSensitive,\n  filterFn_greaterThan,\n  filterFn_greaterThanOrEqualTo,\n  filterFn_inDateRange,\n  filterFn_inNumberRange,\n  filterFn_includesString,\n  filterFn_includesStringSensitive,\n  filterFn_lessThan,\n  filterFn_lessThanOrEqualTo,\n  filterFn_notEmpty,\n  filterFn_startsWith,\n  filterFn_weakEquals,\n  metaHelper,\n  sortFn_alphanumeric,\n  sortFn_alphanumericCaseSensitive,\n  sortFn_basic,\n  sortFn_datetime,\n  sortFn_text,\n  sortFn_textCaseSensitive,\n  stockFeatures,\n  tableFeatures,\n} from \"@tanstack/react-table\";\nimport type { LayoutColumnMeta } from \"~/components/table/types\";\n\nexport const layoutTableFeatures = tableFeatures({\n  ...stockFeatures,\n  columnMeta: metaHelper<LayoutColumnMeta>(),\n  filteredRowModel: createFilteredRowModel(),\n  sortedRowModel: createSortedRowModel(),\n  paginatedRowModel: createPaginatedRowModel(),\n  expandedRowModel: createExpandedRowModel(),\n  groupedRowModel: createGroupedRowModel(),\n  facetedRowModel: createFacetedRowModel(),\n  facetedUniqueValues: createFacetedUniqueValues(),\n  facetedMinMaxValues: createFacetedMinMaxValues(),\n  filterFns: {\n    arrHas: filterFn_arrHas,\n    arrIncludes: filterFn_arrIncludes,\n    arrIncludesAll: filterFn_arrIncludesAll,\n    arrIncludesSome: filterFn_arrIncludesSome,\n    between: filterFn_between,\n    betweenInclusive: filterFn_betweenInclusive,\n    empty: filterFn_empty,\n    endsWith: filterFn_endsWith,\n    equals: filterFn_equals,\n    equalsString: filterFn_equalsString,\n    equalsStringSensitive: filterFn_equalsStringSensitive,\n    greaterThan: filterFn_greaterThan,\n    greaterThanOrEqualTo: filterFn_greaterThanOrEqualTo,\n    inDateRange: filterFn_inDateRange,\n    inNumberRange: filterFn_inNumberRange,\n    includesString: filterFn_includesString,\n    includesStringSensitive: filterFn_includesStringSensitive,\n    lessThan: filterFn_lessThan,\n    lessThanOrEqualTo: filterFn_lessThanOrEqualTo,\n    notEmpty: filterFn_notEmpty,\n    startsWith: filterFn_startsWith,\n    weakEquals: filterFn_weakEquals,\n  },\n  sortFns: {\n    alphanumeric: sortFn_alphanumeric,\n    alphanumericCaseSensitive: sortFn_alphanumericCaseSensitive,\n    basic: sortFn_basic,\n    datetime: sortFn_datetime,\n    text: sortFn_text,\n    textCaseSensitive: sortFn_textCaseSensitive,\n  },\n  aggregationFns: {\n    sum: aggregationFn_sum,\n    min: aggregationFn_min,\n    max: aggregationFn_max,\n    extent: aggregationFn_extent,\n    mean: aggregationFn_mean,\n    median: aggregationFn_median,\n    unique: aggregationFn_unique,\n    uniqueCount: aggregationFn_uniqueCount,\n    count: aggregationFn_count,\n    first: aggregationFn_first,\n    last: aggregationFn_last,\n  },\n});\n\nexport type LayoutTableFeatures = typeof layoutTableFeatures;\n\nexport const {\n  tableContext,\n  cellContext,\n  headerContext,\n  useTableContext,\n  useCellContext,\n  useHeaderContext,\n} = createTableHookContexts<LayoutTableFeatures>();\n","import type { TypographyProps } from \"@mui/material\";\nimport { Typography } from \"@mui/material\";\nimport type { FC } from \"react\";\nimport { formatValue } from \"~/components/table/formatValue\";\nimport { useCellContext } from \"~/components/table/context\";\n\nexport const AggregatedCell: FC<\n  TypographyProps & {\n    prefix?: string;\n    options?: Intl.NumberFormatOptions;\n    dateFormat?: string;\n  }\n> = ({ prefix = \"\", options, dateFormat, ...props }) => {\n  const cell = useCellContext();\n  const value = cell.getValue();\n  if (value === null || value === undefined || value === \"\") return null;\n\n  const format = (entry: unknown) =>\n    typeof entry === \"number\"\n      ? entry.toLocaleString(undefined, options)\n      : formatValue(entry, dateFormat);\n\n  return (\n    <Typography variant=\"body2\" color=\"text.secondary\" noWrap {...props}>\n      {prefix}\n      {/* `extent` — the default aggregate for anything non-numeric — is a [min, max] pair. */}\n      {Array.isArray(value) ? value.map(format).join(\" – \") : format(value)}\n    </Typography>\n  );\n};\n"],"mappings":"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"}