@dxos/react-ui-table 0.3.9-main.73167ec → 0.3.9-main.7501ea3

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.
@@ -211,7 +211,7 @@ var headPadding = "pli-2 plb-1.5";
211
211
  var gridCellFocusRing = "focus:z-[11] focus:outline outline-2 outline-primary-500 dark:outline-primary-400";
212
212
  var tableRoot = ({ fullWidth }, ...etc) => mx2("table-fixed", fullWidth && "is-full", ...etc);
213
213
  var groupTh = (_props, ...etc) => mx2("text-start font-medium", flushPadding, ...etc);
214
- var theadRoot = ({ header }, ...etc) => mx2(header ? "sticky block-start-0 z-10" : "collapse", header && fixedSurface, ...etc);
214
+ var theadRoot = ({ header }, ...etc) => mx2(header ? "sticky block-start-[--sticky-top] z-[1]" : "collapse", header && fixedSurface, ...etc);
215
215
  var theadTr = (_props, ...etc) => mx2("group", ...etc);
216
216
  var theadTh = ({ border }, ...etc) => mx2("relative text-start font-medium select-none truncate", headPadding, border && "border", border && groupBorder, ...etc);
217
217
  var theadResizeRoot = (_props, ...etc) => mx2("absolute top-0 pis-1 h-full z-[10] w-[7px] -right-[5px] cursor-col-resize select-none touch-none opacity-20 hover:opacity-100", ...etc);
@@ -372,7 +372,7 @@ TableHead.displayName = TABLE_HEAD_NAME;
372
372
 
373
373
  // packages/ui/react-ui-table/src/components/Table/Table.tsx
374
374
  var Table = (props) => {
375
- const { role, data = [], columns = [], onColumnResize, columnVisibility, header = true, footer, rowsSelectable, fullWidth, debug, onDataSelectionChange } = props;
375
+ const { role, data = [], columns = [], onColumnResize, columnVisibility, header = true, footer, rowsSelectable, fullWidth, debug, onDataSelectionChange, classNames } = props;
376
376
  const TableProvider2 = TableProvider;
377
377
  const [rowSelection = {}, directlySetRowSelection] = useControllableState({
378
378
  prop: props.rowSelection,
@@ -462,7 +462,7 @@ var Table = (props) => {
462
462
  isGrid: role === "grid" || role === "treegrid"
463
463
  }, /* @__PURE__ */ React6.createElement("table", {
464
464
  role,
465
- className: tableRoot(props),
465
+ className: tableRoot(props, classNames),
466
466
  ...!fullWidth && {
467
467
  style: {
468
468
  width: table.getTotalSize()
@@ -573,25 +573,20 @@ import { Check as Check2, ClipboardText, X as X2 } from "@phosphor-icons/react";
573
573
  import { createColumnHelper } from "@tanstack/react-table";
574
574
  import format from "date-fns/format";
575
575
  import formatDistanceToNow from "date-fns/formatDistanceToNow";
576
- import defaultsDeep from "lodash.defaultsdeep";
577
576
  import React8, { useRef as useRef2, useState as useState4 } from "react";
578
577
  import { Input as Input2, Tooltip } from "@dxos/react-ui";
579
578
  import { getSize as getSize3, mx as mx5 } from "@dxos/react-ui-theme";
580
- import { stripUndefinedValues } from "@dxos/util";
581
579
  var createColumnBuilder = () => ({
582
580
  helper: createColumnHelper(),
583
581
  builder: new ColumnBuilder()
584
582
  });
585
- var defaults = (options, ...sources) => {
586
- return stripUndefinedValues(defaultsDeep({}, options, ...sources));
587
- };
588
583
  var ComboboxBuilderCell = (cellContext) => {
589
584
  const { model, onUpdate } = cellContext.column.columnDef.meta;
590
- return /* @__PURE__ */ React8.createElement(CellCombobox, {
585
+ return model ? /* @__PURE__ */ React8.createElement(CellCombobox, {
591
586
  model,
592
587
  value: cellContext.getValue(),
593
588
  onValueChange: (value) => onUpdate?.(cellContext.row.original, cellContext.column.id, value)
594
- });
589
+ }) : null;
595
590
  };
596
591
  var StringBuilderCell = (cellContext) => {
597
592
  const { onUpdate } = cellContext.column.columnDef.meta;
@@ -697,13 +692,16 @@ var ColumnBuilder = class {
697
692
  * Combobox value
698
693
  */
699
694
  combobox({ label, classNames, model, onUpdate, ...props }) {
700
- return defaults(props, {
695
+ return {
696
+ ...props,
701
697
  minSize: 100,
702
698
  meta: {
699
+ ...props.meta,
703
700
  model,
704
701
  onUpdate,
705
702
  cell: {
706
- classNames
703
+ classNames,
704
+ ...props.meta?.cell
707
705
  }
708
706
  },
709
707
  header: (column) => {
@@ -715,17 +713,20 @@ var ColumnBuilder = class {
715
713
  className: mx5("truncate", classNames)
716
714
  }, cellValue ? model?.getText(cellValue) : "");
717
715
  }
718
- });
716
+ };
719
717
  }
720
718
  /**
721
719
  * String formats.
722
720
  */
723
721
  string({ label, classNames, onUpdate, ...props } = {}) {
724
- return defaults(props, {
722
+ return {
723
+ ...props,
725
724
  minSize: 100,
726
725
  meta: {
726
+ ...props.meta,
727
727
  onUpdate,
728
728
  cell: {
729
+ ...props.meta?.cell,
729
730
  classNames
730
731
  }
731
732
  },
@@ -739,39 +740,46 @@ var ColumnBuilder = class {
739
740
  className: mx5("truncate", textPadding, classNames)
740
741
  }, value);
741
742
  }
742
- });
743
+ };
743
744
  }
744
745
  /**
745
746
  * Number formats.
746
747
  */
747
748
  number({ label, minSize, classNames, digits, onUpdate, ...props } = {}) {
748
- return defaults(props, {
749
+ return {
750
+ ...props,
749
751
  size: 100,
750
752
  minSize: 100,
751
753
  meta: {
754
+ ...props.meta,
752
755
  onUpdate,
753
756
  digits,
754
757
  header: {
755
- classNames: "text-end"
758
+ classNames: "text-end",
759
+ ...props.meta?.header
756
760
  },
757
761
  cell: {
762
+ ...props.meta?.cell,
758
763
  classNames
759
764
  }
760
765
  },
761
766
  header: (cell) => label ?? cell.header.id,
762
767
  cell: NumberBuilderCell
763
- });
768
+ };
764
769
  }
765
770
  /**
766
771
  * Date formats.
767
772
  */
768
773
  // TODO(burdon): Date picker (pluggable renderers?)
769
774
  date({ label, format: formatSpec, relative, classNames, ...props } = {}) {
770
- return defaults(props, {
775
+ return {
776
+ ...props,
771
777
  size: 220,
772
778
  minSize: 100,
773
779
  meta: {
780
+ ...props.meta,
774
781
  cell: {
782
+ ...props.meta?.cell,
775
783
  classNames
776
784
  }
777
785
  },
@@ -790,20 +798,24 @@ var ColumnBuilder = class {
790
798
  return null;
791
799
  }
792
800
  }
793
- });
801
+ };
794
802
  }
795
803
  /**
796
804
  * PublicKey with tooltip.
797
805
  */
798
- key({ label, tooltip, ...props } = {}) {
799
- return defaults(props, {
806
+ key({ label, tooltip, classNames, ...props } = {}) {
807
+ return {
808
+ ...props,
800
809
  size: 94,
801
810
  minSize: 94,
802
811
  meta: {
812
+ ...props.meta,
803
813
  cell: {
814
+ ...props.meta?.cell,
804
815
  classNames: [
805
816
  "font-mono",
806
- textPadding
817
+ textPadding,
818
+ classNames
807
819
  ]
808
820
  }
809
821
  },
@@ -826,12 +838,12 @@ var ColumnBuilder = class {
826
838
  }
827
839
  })))));
828
840
  }
829
- });
841
+ };
830
842
  }
831
843
  /**
832
844
  * Row selector
833
845
  */
834
- selectRow({ label, classNames, onUpdate, id = "selectRow", ...props } = {}) {
846
+ selectRow({ classNames, onUpdate, id = "selectRow" } = {}) {
835
847
  return {
836
848
  id,
837
849
  size: 32,
@@ -863,12 +875,15 @@ var ColumnBuilder = class {
863
875
  * Switch
864
876
  */
865
877
  switch({ label, classNames, onUpdate, ...props } = {}) {
866
- return defaults(props, {
878
+ return {
879
+ ...props,
867
880
  size: 50,
868
881
  minSize: 50,
869
882
  meta: {
883
+ ...props.meta,
870
884
  onUpdate,
871
885
  cell: {
886
+ ...props.meta?.cell,
872
887
  classNames: [
873
888
  textPadding,
874
889
  classNames
@@ -877,7 +892,7 @@ var ColumnBuilder = class {
877
892
  },
878
893
  header: (column) => label ?? column.header.id,
879
894
  cell: SwitchBuilderCell
880
- });
895
+ };
881
896
  }
882
897
  /**
883
898
  * Icon based on boolean value.
@@ -885,7 +900,8 @@ var ColumnBuilder = class {
885
900
  icon({ label, size, on, off, ...props } = {}) {
886
901
  const IconOn = on?.Icon ?? Check2;
887
902
  const IconOff = off?.Icon ?? X2;
888
- return defaults(props, {
903
+ return {
904
+ ...props,
889
905
  size: size ?? 32,
890
906
  header: (column) => /* @__PURE__ */ React8.createElement("div", {
891
907
  className: "justify-center"
@@ -904,7 +920,7 @@ var ColumnBuilder = class {
904
920
  return null;
905
921
  }
906
922
  }
907
- });
923
+ };
908
924
  }
909
925
  };
910
926
  export {
@@ -934,6 +950,7 @@ export {
934
950
  theadResizeThumb,
935
951
  theadRoot,
936
952
  theadTh,
937
- theadTr
953
+ theadTr,
954
+ translations_default as translations
938
955
  };
939
956
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/ColumnMenu.tsx", "../../../src/schema.ts", "../../../src/components/Table/Table.tsx", "../../../src/components/Table/TableBody.tsx", "../../../src/components/Table/TableContext.tsx", "../../../src/theme.ts", "../../../src/components/Cell/Cell.tsx", "../../../src/components/Table/TableFooter.tsx", "../../../src/components/Table/TableHead.tsx", "../../../src/components/Cell/CellCombobox.tsx", "../../../src/translations.ts", "../../../src/helpers.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Check, CaretDown, Trash, X } from '@phosphor-icons/react';\nimport { type HeaderContext, type RowData } from '@tanstack/react-table';\nimport React, { type FC, type PropsWithChildren, useRef, useState } from 'react';\n\nimport { Button, DensityProvider, Input, Popover, Select, Separator } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\nimport { safeParseInt } from '@dxos/util';\n\nimport { type TableDef, type ColumnProps, columnTypes } from '../schema';\n\nexport type ColumnMenuProps<TData extends RowData, TValue> = {\n context: HeaderContext<TData, TValue>;\n tableDefs: TableDef[];\n tableDef: TableDef;\n column: ColumnProps;\n onUpdate?: (id: string, column: ColumnProps) => void;\n onDelete?: (id: string) => void;\n};\n\nexport const ColumnMenu = <TData extends RowData, TValue>({ column, ...props }: ColumnMenuProps<TData, TValue>) => {\n const title = column.label?.length ? column.label : column.id;\n\n return (\n <div className='flex grow items-center overflow-hidden'>\n <div className='truncate' title={title}>\n {title}\n </div>\n <div className='grow' />\n <div className='flex shrink-0'>\n <ColumnPanel {...props} column={column} />\n </div>\n </div>\n );\n};\n\nconst Section: FC<PropsWithChildren & { className?: string }> = ({ children, className }) => (\n <div role='none' className={mx('p-2', className)}>\n {children}\n </div>\n);\n\nexport const ColumnPanel = <TData extends RowData, TValue>({\n context,\n tableDefs,\n tableDef,\n column,\n onUpdate,\n onDelete,\n}: ColumnMenuProps<TData, TValue>) => {\n const [open, setOpen] = useState(false);\n const [prop, setProp] = useState(column.id);\n const [refTable, setRefTable] = useState(column.refTable);\n const [refProp, setRefProp] = useState(column.refProp);\n const [type, setType] = useState(String(column.type));\n const [label, setLabel] = useState(column.label);\n const [digits, setDigits] = useState(String(column.digits ?? '0'));\n const propRef = useRef<HTMLInputElement>(null);\n\n const handleCancel = () => {\n setProp(column.id);\n setOpen(false);\n };\n\n const handleSave = () => {\n // Check valid.\n if (!prop.length || !prop.match(/^[a-zA-Z_].+/i)) {\n propRef.current?.focus();\n return;\n }\n\n // If already exists then check same type.\n const current = tableDef.columns.find((c) => c.id !== column.id && c.id === prop);\n if (current) {\n // TODO(burdon): Allow multiple columns with different refProps. Ensure correct table prop is updated.\n if (current.type !== 'ref' /* || current.ref !== refTable */) {\n // TODO(burdon): Show error.\n propRef.current?.focus();\n return;\n }\n }\n\n onUpdate?.(prop, {\n id: prop, // TODO(burdon): Make unique.\n prop,\n label,\n type: type as ColumnProps['type'],\n refTable,\n refProp,\n digits: safeParseInt(digits),\n });\n\n setOpen(false);\n };\n\n return (\n <Popover.Root open={open} onOpenChange={(nextOpen) => setOpen(nextOpen)}>\n <Popover.Trigger asChild>\n <Button variant='ghost' classNames='p-0'>\n <CaretDown className={getSize(4)} />\n </Button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content>\n <Popover.Viewport classNames='w-60'>\n <DensityProvider density='fine'>\n <div className='flex flex-col gap-1'>\n <Section>\n <Input.Root>\n <Input.Label classNames='mbe-1'>Label</Input.Label>\n <Input.TextInput\n placeholder='Column label'\n value={label ?? ''}\n onChange={(event) => setLabel(event.target.value)}\n autoFocus\n />\n </Input.Root>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Property</Input.Label>\n <Input.TextInput\n ref={propRef}\n placeholder='Property key'\n // TODO(burdon): Provide hooks for value normalization, ENTER, ESC, etc.\n value={prop ?? ''}\n onChange={(event) => setProp(event.target.value.replace(/[^\\w_]/g, ''))}\n />\n </Input.Root>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Type</Input.Label>\n <Select.Root value={type} onValueChange={setType}>\n <Select.TriggerButton placeholder='Type' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {Array.from(columnTypes.entries()).map(([type, label]) => (\n <Select.Option key={type} value={type}>\n {label}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n </Section>\n\n {type === 'number' && (\n <>\n <Section>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Decimal places</Input.Label>\n {/* TODO(burdon): Constrain input to numbers. */}\n <Input.TextInput value={digits ?? ''} onChange={(event) => setDigits(event.target.value)} />\n </Input.Root>\n </Section>\n </>\n )}\n\n {/* TODO(burdon): Selectors on same line. */}\n {type === 'ref' && (\n <>\n <Section>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Table</Input.Label>\n <Select.Root value={refTable} onValueChange={setRefTable}>\n <Select.TriggerButton placeholder='Table' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {tableDefs\n .filter((t) => t.id !== tableDef.id)\n .map(({ id, name }) => (\n <Select.Option key={id} value={id}>\n {name ?? id}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n\n {refTable && (\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Table property</Input.Label>\n <Select.Root value={refProp} onValueChange={setRefProp}>\n <Select.TriggerButton placeholder='Property' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {tableDefs\n .find((tableDef) => tableDef.id === refTable)\n ?.columns.map(({ id, label }) => (\n <Select.Option key={id} value={id}>\n {label ?? id}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n )}\n </Section>\n </>\n )}\n\n <Separator classNames='mli-2' />\n\n <Section className='space-b-1.5'>\n {/* TODO(burdon): Style as DropdownMenuItem. */}\n <Button variant='primary' classNames='is-full flex gap-2' onClick={handleSave}>\n <span>Save</span>\n <div className='grow' />\n <Check className={getSize(5)} />\n </Button>\n <Button classNames='is-full flex gap-2' onClick={handleCancel}>\n <span>Cancel</span>\n <div className='grow' />\n <X className={getSize(5)} />\n </Button>\n <Button classNames='is-full flex gap-2' onClick={() => onDelete?.(column.id)}>\n <span>Delete</span>\n <div className='grow' />\n <Trash className={getSize(5)} />\n </Button>\n </Section>\n </div>\n </DensityProvider>\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport type TableDef = {\n id: string;\n name?: string; // TODO(burdon): Required?\n columns: ColumnProps[];\n};\n\nexport type ColumnType = 'number' | 'boolean' | 'date' | 'string' | 'ref';\n\nexport const columnTypes = new Map<ColumnType, string>([\n ['string', 'Text'],\n ['boolean', 'Checkbox'],\n ['number', 'Number'],\n ['date', 'Date'],\n ['ref', 'Reference'],\n]);\n\nexport type ColumnProps = {\n id: string;\n prop: string;\n type: ColumnType;\n size?: number;\n label?: string;\n\n // type = number\n digits?: number;\n\n // type = ref\n refTable?: string;\n refProp?: string;\n\n // TODO(burdon): Move to meta.\n fixed?: boolean;\n editable?: boolean;\n resizable?: boolean;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport {\n getCoreRowModel,\n getGroupedRowModel,\n useReactTable,\n type ColumnSizingInfoState,\n type ColumnSizingState,\n type GroupingState,\n type RowData,\n type RowSelectionState,\n type OnChangeFn,\n} from '@tanstack/react-table';\nimport React, { Fragment, useCallback, useEffect, useState } from 'react';\n\nimport { debounce } from '@dxos/async';\n\nimport { TableBody } from './TableBody';\nimport { TableProvider as UntypedTableProvider, type TypedTableProvider } from './TableContext';\nimport { TableFooter } from './TableFooter';\nimport { TableHead } from './TableHead';\nimport { type TableProps } from './props';\nimport { groupTh, tableRoot } from '../../theme';\n\nexport const Table = <TData extends RowData>(props: TableProps<TData>) => {\n const {\n role,\n data = [],\n columns = [],\n onColumnResize,\n columnVisibility,\n header = true,\n footer,\n rowsSelectable,\n fullWidth,\n debug,\n onDataSelectionChange,\n } = props;\n\n const TableProvider = UntypedTableProvider as TypedTableProvider<TData>;\n\n // Row selection\n const [rowSelection = {}, directlySetRowSelection] = useControllableState({\n prop: props.rowSelection,\n onChange: props.onRowSelectionChange,\n defaultProp: props.defaultRowSelection,\n });\n\n // TODO(thure): Does @tanstack/react-table really need this intervention? It did seem necessary to enforce single-selection...\n const handleRowSelectionChange = useCallback<OnChangeFn<RowSelectionState>>(\n (updaterOrValue) => {\n const nextRowSelection = typeof updaterOrValue === 'function' ? updaterOrValue(rowSelection) : updaterOrValue;\n if (rowsSelectable === 'multi') {\n directlySetRowSelection(nextRowSelection);\n } else if (rowsSelectable) {\n const nextRowSelectionKey = Object.keys(nextRowSelection).filter((id) => !rowSelection[id])[0];\n directlySetRowSelection(nextRowSelectionKey ? { [nextRowSelectionKey]: true } : {});\n } else {\n directlySetRowSelection({});\n }\n },\n [rowSelection, directlySetRowSelection],\n );\n\n // Resizing\n const [columnSizingInfo, setColumnSizingInfo] = useState<ColumnSizingInfoState>({} as ColumnSizingInfoState);\n const onColumnResizeDebounced = debounce<ColumnSizingState>((info) => onColumnResize?.(info), 500);\n useEffect(() => {\n if (columnSizingInfo.columnSizingStart?.length === 0) {\n onColumnResizeDebounced(table.getState().columnSizing);\n }\n }, [columnSizingInfo]);\n\n const [grouping, setGrouping] = useState<GroupingState>(props.grouping ?? []);\n useEffect(() => setGrouping(props.grouping ?? []), [props.grouping]);\n\n const table = useReactTable({\n // Data\n meta: {},\n data,\n\n // Columns\n columns,\n defaultColumn: {\n size: 256, // Required in order remove default width.\n maxSize: 1024,\n },\n\n // Rows\n getCoreRowModel: getCoreRowModel(),\n\n // State\n state: {\n columnVisibility,\n columnSizingInfo,\n rowSelection,\n grouping,\n },\n\n // Grouping\n getGroupedRowModel: getGroupedRowModel(),\n onGroupingChange: setGrouping,\n\n // Selection\n ...(rowsSelectable === 'multi'\n ? { enableMultiRowSelection: true }\n : rowsSelectable\n ? { enableRowSelection: true }\n : {}),\n onRowSelectionChange: handleRowSelectionChange,\n\n // Resize columns\n columnResizeMode: 'onChange',\n enableColumnResizing: true,\n onColumnSizingInfoChange: setColumnSizingInfo,\n\n // Debug\n debugTable: debug,\n });\n\n useEffect(() => {\n if (onDataSelectionChange) {\n onDataSelectionChange(Object.keys(rowSelection).map((id) => table.getRowModel().rowsById[id].original));\n }\n }, [onDataSelectionChange, rowSelection, table]);\n\n // Create additional expansion column if all columns have fixed width.\n const expand = false; // columns.map((column) => column.size).filter(Boolean).length === columns?.length;\n\n return (\n <TableProvider\n {...props}\n header={header}\n expand={expand}\n table={table}\n isGrid={role === 'grid' || role === 'treegrid'}\n >\n <table role={role} className={tableRoot(props)} {...(!fullWidth && { style: { width: table.getTotalSize() } })}>\n <TableHead />\n\n {grouping.length === 0 && <TableBody rows={table.getRowModel().rows} />}\n\n {grouping.length !== 0 &&\n table.getGroupedRowModel().rows.map((row, i) => {\n return (\n <Fragment key={i}>\n {/* TODO(burdon): Customize group header renderer. */}\n <thead>\n <tr>\n {debug && <th />}\n <th\n // TODO(burdon): Calculate row span.\n colSpan={table.getHeaderGroups()[0].headers.length}\n className={groupTh(props)}\n >\n {table.getState().grouping[0]}[{String(row.getGroupingValue(table.getState().grouping[0]))}]\n </th>\n </tr>\n </thead>\n\n <TableBody rows={row.subRows} />\n </Fragment>\n );\n })}\n\n {footer && <TableFooter />}\n </table>\n\n {debug && (\n <pre className='font-mono text-xs text-neutral-500 my-4 p-2 ring'>\n <code>{JSON.stringify(table.getState(), undefined, 2)}</code>\n </pre>\n )}\n </TableProvider>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { flexRender, type Row, type RowData } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useTableContext } from './TableContext';\nimport { tbodyTr } from '../../theme';\nimport { Cell } from '../Cell/Cell';\n\ntype TableBodyProps<TData extends RowData> = {\n rows: Row<TData>[];\n};\n\nconst TABLE_BODY_NAME = 'TableBody';\n\nconst TableBody = <TData extends RowData>({ rows }: TableBodyProps<TData>) => {\n const tableContext = useTableContext<TData>(TABLE_BODY_NAME);\n const { table, keyAccessor, debug, expand, isGrid, onDatumClick, currentDatum } = tableContext;\n const rowSelection = table.getState().rowSelection;\n const domAttributes = useArrowNavigationGroup({ axis: 'grid' });\n const canBeCurrent = !isGrid && !!onDatumClick;\n return (\n <tbody {...(isGrid && domAttributes)}>\n {rows.map((row) => {\n const isCurrent = currentDatum === row.original;\n const isSelected = rowSelection?.[row.id];\n return (\n <tr\n key={keyAccessor ? keyAccessor(row.original) : row.id}\n className={tbodyTr({ canBeCurrent })}\n {...(isCurrent && { 'aria-current': 'location' })}\n {...(isSelected && { 'aria-selected': 'true' })}\n {...(canBeCurrent && {\n tabIndex: 0,\n onClick: () => {\n onDatumClick(row.original);\n },\n onKeyUp: ({ key }) => {\n if (key === 'Enter' || key === ' ') {\n onDatumClick(row.original);\n }\n },\n })}\n >\n {debug && <td>{row.id}</td>}\n\n {row.getVisibleCells().map((cell) => {\n return (\n <Cell key={cell.id} cell={cell}>\n {flexRender(cell.column.columnDef.cell, { className: 'pli-2', ...cell.getContext() })}\n </Cell>\n );\n })}\n\n {expand && <td />}\n </tr>\n );\n })}\n </tbody>\n );\n};\n\nTableBody.displayName = TABLE_BODY_NAME;\n\nexport { TableBody };\n\nexport type { TableBodyProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { createContext } from '@radix-ui/react-context';\nimport { type RowData } from '@tanstack/react-table';\nimport { type ReactNode } from 'react';\n\nimport { type TableContextValue } from './props';\n\nexport const TABLE_NAME = 'Table';\n\ntype CreateContextResult<TData extends RowData> = Readonly<\n [TypedTableProvider<unknown>, (consumerName: string) => TableContextValue<TData>]\n>;\n\nexport type TypedTableProvider<TData extends RowData> = {\n (props: TableContextValue<TData> & { children: ReactNode }): JSX.Element;\n displayName: string;\n};\n\nconst [TableProvider, useUntypedTableContext]: CreateContextResult<unknown> =\n createContext<TableContextValue<unknown>>(TABLE_NAME);\n\nexport const useTableContext = <TData extends RowData>(consumerName: string) =>\n useUntypedTableContext(consumerName) as TableContextValue<TData>;\n\nexport { TableProvider };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type CellContext } from '@tanstack/react-table';\n\nimport {\n chromeSurface,\n fixedSurface,\n focusRing,\n ghostSelected,\n ghostSelectedCurrent,\n groupBorder,\n mx,\n} from '@dxos/react-ui-theme';\nimport { type ComponentFunction } from '@dxos/react-ui-types';\n\nimport { type TableContextValue, type TableFlags } from './components';\n\nexport const currentRow = '!bg-neutral-75 !dark:bg-neutral-850';\nexport const selectedRow = '!bg-primary-100 dark:!bg-primary-700';\nexport const flushPadding = 'pli-0 plb-0';\nexport const textPadding = 'pli-2 plb-0.5';\nexport const headPadding = 'pli-2 plb-1.5';\n\nexport const gridCellFocusRing = 'focus:z-[11] focus:outline outline-2 outline-primary-500 dark:outline-primary-400';\n\n//\n// table\n//\n\nexport type TableStyleProps = Partial<TableContextValue<any>>;\n\nexport const tableRoot: ComponentFunction<TableStyleProps> = ({ fullWidth }, ...etc) =>\n mx('table-fixed', fullWidth && 'is-full', ...etc);\n\nexport const groupTh: ComponentFunction<TableStyleProps> = (_props, ...etc) =>\n mx('text-start font-medium', flushPadding, ...etc);\n\n//\n// thead\n//\n\nexport type TheadStyleProps = Partial<TableFlags>;\n\nexport const theadRoot: ComponentFunction<TheadStyleProps> = ({ header }, ...etc) =>\n mx(header ? 'sticky block-start-0 z-10' : 'collapse', header && fixedSurface, ...etc);\n\nexport const theadTr: ComponentFunction<TheadStyleProps> = (_props, ...etc) => mx('group', ...etc);\n\nexport const theadTh: ComponentFunction<TheadStyleProps> = ({ border }, ...etc) =>\n mx(\n 'relative text-start font-medium select-none truncate',\n headPadding,\n border && 'border',\n border && groupBorder,\n ...etc,\n );\n\nexport const theadResizeRoot: ComponentFunction<TheadStyleProps> = (_props, ...etc) =>\n mx(\n 'absolute top-0 pis-1 h-full z-[10] w-[7px] -right-[5px] cursor-col-resize select-none touch-none opacity-20 hover:opacity-100',\n ...etc,\n );\n\nexport const theadResizeThumb: ComponentFunction<TheadStyleProps> = (_props, ...etc) =>\n mx('flex group-hover:bg-neutral-700 -ml-[2px] w-[1px] h-full', ...etc);\n\n//\n// tbody\n//\n\nexport type TbodyStyleProps = Partial<TableContextValue<any>>;\nexport const tbodyRoot: ComponentFunction<TbodyStyleProps> = (_props, ...etc) => mx(...etc);\n\nexport type TbodyTrStyleProps = Partial<{ canBeCurrent?: boolean }>;\nexport const tbodyTr: ComponentFunction<TbodyTrStyleProps> = ({ canBeCurrent }, ...etc) =>\n mx(\n 'group',\n canBeCurrent ? ghostSelectedCurrent : ghostSelected,\n canBeCurrent && focusRing,\n canBeCurrent && 'cursor-pointer rounded',\n ...etc,\n );\n\n//\n// td, th\n//\n\nexport const tdRoot: ComponentFunction<TbodyStyleProps> = ({ border, isGrid }, ...etc) =>\n mx('relative', flushPadding, border && 'border', border && groupBorder, isGrid && gridCellFocusRing, ...etc);\nexport const tdContent: ComponentFunction<CellContext<any, any>> = (_props, ...etc) => mx(...etc);\n\n//\n// tfoot\n//\n\nexport type TfootStyleProps = Partial<TableContextValue<any>>;\n\nexport const tfootRoot: ComponentFunction<TfootStyleProps> = (_props, ...etc) =>\n mx('sticky block-end-0 z-10', chromeSurface, ...etc);\n\nexport const tfootTr: ComponentFunction<TfootStyleProps> = (_props, ...etc) => mx(...etc);\n\nexport const tfootTh: ComponentFunction<TfootStyleProps> = ({ border }, ...etc) =>\n mx(textPadding, chromeSurface, border && groupBorder, ...etc);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { type Cell as CellType, type RowData } from '@tanstack/react-table';\nimport React, { type PropsWithChildren } from 'react';\n\nimport { tdRoot } from '../../theme';\nimport { useTableContext } from '../Table/TableContext';\n\ntype CellProps<TData extends RowData, TValue> = PropsWithChildren<{\n cell: CellType<TData, TValue>;\n}>;\n\nconst CELL_NAME = 'Cell';\n\nconst FocusableCell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const tableContext = useTableContext(CELL_NAME);\n const domAttributes = useFocusableGroup({ tabBehavior: 'limited' });\n return (\n <td tabIndex={0} {...domAttributes} className={tdRoot(tableContext, cell.column.columnDef.meta?.cell?.classNames)}>\n {children}\n </td>\n );\n};\n\nconst StaticCell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const tableContext = useTableContext(CELL_NAME);\n return <td className={tdRoot(tableContext, cell.column.columnDef.meta?.cell?.classNames)}>{children}</td>;\n};\n\nconst Cell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const { isGrid } = useTableContext(CELL_NAME);\n const Root = isGrid ? FocusableCell : StaticCell;\n return <Root cell={cell}>{children}</Root>;\n};\n\nCell.displayName = CELL_NAME;\n\nexport { Cell };\n\nexport type { CellProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { flexRender, type RowData } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useTableContext } from './TableContext';\nimport { tfootRoot, tfootTr, tfootTh } from '../../theme';\n\nexport type TableFooterProps = {};\n\nconst TABLE_FOOTER_NAME = 'TableFooter';\n\nconst TableFooter = <TData extends RowData>(props: TableFooterProps) => {\n const tableContext = useTableContext<TData>(TABLE_FOOTER_NAME);\n const { table, expand, debug } = tableContext;\n const footers = table.getFooterGroups();\n return (\n <tfoot className={tfootRoot(props)}>\n {footers.map((footerGroup) => (\n <tr key={footerGroup.id} className={tfootTr(tableContext)}>\n {debug && <th />}\n\n {footerGroup.headers.map((footer) => {\n return (\n <th key={footer.id} className={tfootTh(tableContext, footer.column.columnDef.meta?.footer?.classNames)}>\n {footer.isPlaceholder ? null : flexRender(footer.column.columnDef.footer, footer.getContext())}\n </th>\n );\n })}\n\n {expand && <th />}\n </tr>\n ))}\n </tfoot>\n );\n};\n\nTableFooter.displayName = TABLE_FOOTER_NAME;\n\nexport { TableFooter };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { flexRender, type RowData } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useTableContext } from './TableContext';\nimport { theadResizeRoot, theadResizeThumb, theadRoot, theadTh, theadTr } from '../../theme';\n\nconst TABLE_HEAD_NAME = 'TableHead';\n\ntype TableHeadProps = {};\n\nconst TableHead = <TData extends RowData>(_props: TableHeadProps) => {\n const tableContext = useTableContext<TData>(TABLE_HEAD_NAME);\n const headerGroups = tableContext.table.getHeaderGroups();\n const state = tableContext.table.getState();\n return (\n <thead className={theadRoot(tableContext)}>\n {headerGroups.map((headerGroup) => {\n return (\n // Group element to hover resize handles.\n <tr key={headerGroup.id} className={theadTr(tableContext)}>\n {/* TODO(burdon): Calc. width. */}\n {tableContext.debug && (\n <th className='font-mono' style={{ width: 32 }}>\n #\n </th>\n )}\n\n {headerGroup.headers.map((header) => {\n const isResizing = header.column.getIsResizing();\n return (\n <th\n key={header.id}\n style={{\n width: header.getSize(),\n }}\n className={theadTh(tableContext, header.column.columnDef.meta?.header?.classNames)}\n >\n {!header || header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n\n {/*\n * Resize handle.\n * https://codesandbox.io/p/sandbox/github/tanstack/table/tree/main/examples/react/column-sizing\n */}\n {header.column.columnDef.meta?.resizable && (\n <div\n className={theadResizeRoot(tableContext, isResizing && 'hidden')}\n style={{\n transform: `translateX(${isResizing ? state.columnSizingInfo.deltaOffset : 0}px)`,\n }}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n >\n <div className={mx(theadResizeThumb(tableContext))} />\n </div>\n )}\n </th>\n );\n })}\n {tableContext.expand && <th />}\n </tr>\n );\n })}\n </thead>\n );\n};\n\nTableHead.displayName = TABLE_HEAD_NAME;\n\nexport { TableHead };\n\nexport type { TableHeadProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CaretDown } from '@phosphor-icons/react';\nimport { type RowData } from '@tanstack/react-table';\nimport React, { useCallback, useState } from 'react';\n\nimport { Popover, useTranslation } from '@dxos/react-ui';\nimport { PopoverCombobox } from '@dxos/react-ui-searchlist';\nimport { descriptionText, getSize, mx, staticPlaceholderText } from '@dxos/react-ui-theme';\n\nimport { type SearchListQueryModel } from '../../helpers';\nimport { translationKey } from '../../translations';\n\nexport type ComboboxCellItems<TData extends RowData> = Record<string, { label: string; data: TData }>;\n\nconst initialItems = <TData extends RowData>(model: SearchListQueryModel<TData>, value?: TData) =>\n value\n ? {\n [model.getId(value)]: { label: model.getText(value), data: value },\n }\n : {};\n\nexport const CellCombobox = <TData extends RowData>({\n model,\n value,\n onValueChange,\n}: {\n model: SearchListQueryModel<TData>;\n value: TData;\n onValueChange: (value: TData) => void;\n}) => {\n const { t } = useTranslation(translationKey);\n const [items, setItems] = useState<ComboboxCellItems<TData>>(initialItems(model, value));\n const [loading, setLoading] = useState(false);\n const [searchInputValue, setSearchInputValue] = useState('');\n const handleSearchInputValueChange = async (text?: string) => {\n setSearchInputValue(text ?? '');\n setLoading(true);\n const items = await model.query(text);\n setItems(\n items.reduce((acc: ComboboxCellItems<TData>, item) => {\n acc[model.getId(item)] = {\n label: model.getText(item),\n data: item,\n };\n return acc;\n }, initialItems(model, value)),\n );\n setLoading(false);\n };\n\n const handleValueChange = useCallback(\n (id: string) => {\n onValueChange(items[id]?.data);\n },\n [items, onValueChange],\n );\n\n return (\n <PopoverCombobox.Root placeholder={t('no selection label')}>\n <PopoverCombobox.Trigger variant='ghost' classNames='is-full rounded-none ring-inset'>\n {value ? (\n <>\n <span\n className={mx('font-normal text-start flex-1 min-is-0 truncate mie-2', !value && staticPlaceholderText)}\n >\n {model.getText(value)}\n </span>\n <CaretDown weight='bold' className={getSize(3)} />\n </>\n ) : null}\n </PopoverCombobox.Trigger>\n <PopoverCombobox.Content shouldFilter={false} classNames='is-[--radix-popover-trigger-width]'>\n <PopoverCombobox.Input value={searchInputValue} onValueChange={handleSearchInputValueChange} />\n <PopoverCombobox.List>\n {searchInputValue.length < 1 ? (\n <p className={mx('text-center', descriptionText)}>Start typing to search</p>\n ) : loading ? (\n <p className={mx('text-center', descriptionText)}>Searching…</p>\n ) : (\n <>\n <PopoverCombobox.Empty classNames={['text-center', descriptionText]}>No results</PopoverCombobox.Empty>\n {Object.entries(items).map(([id, { label }]) => (\n <PopoverCombobox.Item key={id} value={id} onSelect={handleValueChange} classNames='truncate'>\n {label}\n </PopoverCombobox.Item>\n ))}\n </>\n )}\n </PopoverCombobox.List>\n <Popover.Arrow />\n </PopoverCombobox.Content>\n </PopoverCombobox.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const translationKey = 'table';\n\nexport default [\n {\n 'en-US': {\n [translationKey]: {\n 'no selection label': ' ',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Check, ClipboardText, type Icon, X } from '@phosphor-icons/react';\nimport {\n createColumnHelper,\n type ColumnDef,\n type ColumnMeta,\n type RowData,\n type ColumnHelper,\n type CellContext,\n} from '@tanstack/react-table';\nimport format from 'date-fns/format';\nimport formatDistanceToNow from 'date-fns/formatDistanceToNow';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport React, { useRef, useState } from 'react';\n\nimport { type PublicKey } from '@dxos/keys';\nimport { type ClassNameValue, Input, Tooltip } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\nimport { stripUndefinedValues } from '@dxos/util';\n\nimport { CellCombobox } from './components';\nimport { useTableContext } from './components/Table/TableContext';\nimport { textPadding } from './theme';\n\nexport type ValueUpdater<TData extends RowData, TValue> = (row: TData, id: string, value: TValue) => void;\n\nexport const createColumnBuilder = <TData extends RowData>() => ({\n helper: createColumnHelper<TData>(),\n builder: new ColumnBuilder<TData>(),\n});\n\n/**\n * NOTE: Can use `meta` for custom properties.\n */\nexport type BaseColumnOptions<TData, TValue> = Partial<ColumnDef<TData, TValue>> & {\n meta?: ColumnMeta<TData, TValue>;\n label?: string;\n classNames?: ClassNameValue;\n onUpdate?: ValueUpdater<TData, TValue | undefined>;\n};\n\n// TODO(burdon): Better abstraction?\nexport type SearchListQueryModel<TData extends RowData> = {\n getId(object: TData): string;\n getText(object: TData): string;\n query(text?: string): Promise<TData[]>;\n};\n\nexport type ComboboxColumnOptions<TData extends RowData> = BaseColumnOptions<TData, any> & {\n model: SearchListQueryModel<TData>;\n};\n\nexport type StringColumnOptions<TData extends RowData> = BaseColumnOptions<TData, string> & {};\nexport type SelectRowColumnOptions<TData extends RowData> = BaseColumnOptions<TData, string> & {};\n\nexport type NumberColumnOptions<TData extends RowData> = BaseColumnOptions<TData, number> & {\n digits?: number;\n};\n\nexport type KeyColumnOptions<TData extends RowData> = BaseColumnOptions<TData, PublicKey> & {\n tooltip?: boolean;\n};\n\nexport type DateColumnOptions<TData extends RowData> = BaseColumnOptions<TData, Date> & {\n format?: string;\n relative?: boolean;\n};\n\nexport type SwitchColumnOptions<TData extends RowData> = BaseColumnOptions<TData, boolean> & {};\n\nexport type IconColumnOptions<TData extends RowData> = BaseColumnOptions<TData, boolean> & {\n on?: {\n Icon?: Icon;\n className?: string;\n };\n off?: {\n Icon?: Icon;\n className?: string;\n };\n};\n\nconst defaults = <TData extends RowData, TValue>(\n options: Partial<ColumnDef<TData, TValue>>,\n ...sources: Partial<ColumnDef<TData, TValue>>[]\n): Partial<ColumnDef<TData, TValue>> => {\n return stripUndefinedValues(defaultsDeep({}, options, ...sources));\n};\n\nconst ComboboxBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, TData>) => {\n const { model, onUpdate } = cellContext.column.columnDef.meta as ColumnMeta<TData, TData>;\n return (\n <CellCombobox<TData>\n model={model!}\n value={cellContext.getValue()}\n onValueChange={(value) => onUpdate?.(cellContext.row.original, cellContext.column.id, value)}\n />\n );\n};\n\nconst StringBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, string>) => {\n const { onUpdate } = cellContext.column.columnDef.meta as ColumnMeta<TData, string>;\n // https://tanstack.com/table/v8/docs/examples/react/editable-data\n const initialValue = cellContext.getValue();\n const [value, setValue] = useState(initialValue);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleSave = () => {\n if (value === initialValue) {\n return;\n }\n onUpdate?.(cellContext.row.original, cellContext.column.id, value);\n };\n\n const handleCancel = () => {\n setValue(initialValue);\n };\n\n // Check if first input column of last row.\n const rows = cellContext.table.getRowModel().flatRows;\n const columns = cellContext.table.getVisibleFlatColumns();\n const placeholder = cellContext.row.index === rows.length - 1 && columns[0].id === cellContext.column.id;\n\n // TODO(burdon): Don't render inputs unless mouse over (Show ellipsis when div)?\n return (\n <Input.Root>\n <Input.TextInput\n ref={inputRef}\n variant='subdued'\n placeholder={placeholder ? 'Add row...' : undefined}\n classNames={['is-full', textPadding]}\n value={value ?? ''}\n onBlur={() => handleSave()}\n onChange={(event) => setValue(event.target.value)}\n onKeyDown={(event) => (event.key === 'Enter' && handleSave()) || (event.key === 'Escape' && handleCancel())}\n />\n </Input.Root>\n );\n};\n\nconst NumberBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, number>) => {\n const { onUpdate, cell, digits } = cellContext.column.columnDef.meta as ColumnMeta<TData, string>;\n const value = cellContext.getValue();\n const [text, setText] = useState<string>();\n\n const handleEdit = () => {\n if (onUpdate) {\n setText(value !== undefined ? String(value) : '');\n }\n };\n\n // TODO(burdon): Property is encoded as float (e.g., 6.1 => 6.099)\n const handleSave = () => {\n const value = text?.trim().length ? Number(text) : NaN;\n onUpdate?.(cellContext.row.original, cellContext.column.id, isNaN(value) ? undefined : value);\n setText(undefined);\n };\n\n const handleCancel = () => {\n setText(undefined);\n };\n\n if (text !== undefined) {\n return (\n <Input.Root>\n <Input.TextInput\n value={text}\n classNames={['is-full text-end font-mono']}\n onBlur={handleSave}\n onChange={(event) => setText(event.target.value)}\n onKeyDown={(event) => (event.key === 'Escape' && handleCancel()) || (event.key === 'Enter' && handleSave())}\n />\n </Input.Root>\n );\n }\n\n return (\n <div\n className={mx('is-full text-end font-mono empty:after:content-[\" \"]', textPadding, cell?.classNames)}\n onClick={handleEdit}\n >\n {value?.toLocaleString(undefined, {\n minimumFractionDigits: digits ?? 0,\n maximumFractionDigits: digits ?? 2,\n })}\n </div>\n );\n};\n\nconst RowSelectorBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, unknown>) => {\n const { cell } = cellContext.column.columnDef.meta as ColumnMeta<TData, unknown>;\n const { row } = cellContext;\n\n const checked = row.getCanSelect()\n ? row.getIsSelected()\n : row.getCanSelectSubRows() && (row.getIsSomeSelected() ? 'indeterminate' : row.getIsAllSubRowsSelected());\n return (\n <Input.Root>\n <Input.Checkbox\n size={4}\n classNames={['mli-auto', cell?.classNames]}\n checked={checked}\n onCheckedChange={(event) => {\n if (row.getCanSelect()) {\n row.getToggleSelectedHandler()(event);\n }\n }}\n disabled={!(row.getCanSelect() || row.getCanSelectSubRows())}\n />\n </Input.Root>\n );\n};\n\nconst SwitchBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, boolean>) => {\n const { onUpdate } = cellContext.column.columnDef.meta as ColumnMeta<TData, boolean>;\n const value = cellContext.getValue();\n return (\n <Input.Root>\n <Input.Switch\n classNames='block mli-auto'\n onClick={(event) => event.stopPropagation()}\n disabled={!onUpdate}\n checked={!!value}\n onCheckedChange={(value) => {\n onUpdate?.(cellContext.row.original, cellContext.column.id, !!value);\n }}\n />\n </Input.Root>\n );\n};\n\n/**\n * Util to create column definitions.\n */\nexport class ColumnBuilder<TData extends RowData> {\n /**\n * Combobox value\n */\n combobox({\n label,\n classNames,\n model,\n onUpdate,\n ...props\n }: ComboboxColumnOptions<TData>): Partial<ColumnDef<TData, any>> {\n return defaults(props, {\n minSize: 100,\n meta: {\n model,\n onUpdate,\n cell: { classNames },\n },\n header: (column) => {\n return label ?? column.header.id;\n },\n cell:\n model && onUpdate\n ? ComboboxBuilderCell\n : (cellContext) => {\n const cellValue = cellContext.getValue();\n return <div className={mx('truncate', classNames)}>{cellValue ? model?.getText(cellValue) : ''}</div>;\n },\n });\n }\n\n /**\n * String formats.\n */\n string({ label, classNames, onUpdate, ...props }: StringColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, string>\n > {\n return defaults(props, {\n minSize: 100,\n meta: { onUpdate, cell: { classNames } },\n // TODO(burdon): Default.\n header: (column) => {\n return label ?? column.header.id;\n },\n cell: onUpdate\n ? StringBuilderCell\n : (cell) => {\n const value = cell.getValue();\n return <div className={mx('truncate', textPadding, classNames)}>{value}</div>;\n },\n });\n }\n\n /**\n * Number formats.\n */\n number({ label, minSize, classNames, digits, onUpdate, ...props }: NumberColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, number>\n > {\n return defaults(props, {\n size: 100,\n minSize: 100,\n meta: { onUpdate, digits, header: { classNames: 'text-end' }, cell: { classNames } },\n header: (cell) => label ?? cell.header.id,\n cell: NumberBuilderCell,\n });\n }\n\n /**\n * Date formats.\n */\n // TODO(burdon): Date picker (pluggable renderers?)\n date({ label, format: formatSpec, relative, classNames, ...props }: DateColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, Date>\n > {\n return defaults(props, {\n size: 220, // TODO(burdon): Depends on format.\n minSize: 100,\n meta: { cell: { classNames } },\n header: (cell) => label ?? cell.header.id,\n cell: (cell) => {\n const value = cell.getValue();\n\n try {\n const str = value\n ? formatSpec\n ? format(value, formatSpec)\n : relative\n ? formatDistanceToNow(value, { addSuffix: true })\n : value.toISOString()\n : undefined;\n\n return <div className={mx(textPadding, classNames)}>{str}</div>;\n } catch (err) {\n console.log(value);\n return null;\n }\n },\n });\n }\n\n /**\n * PublicKey with tooltip.\n */\n key({ label, tooltip, ...props }: KeyColumnOptions<TData> = {}): Partial<ColumnDef<TData, PublicKey>> {\n return defaults(props, {\n size: 94,\n minSize: 94,\n meta: { cell: { classNames: ['font-mono', textPadding] } },\n header: (cell) => label ?? cell.header.id,\n cell: (cell) => {\n const value = cell.getValue();\n if (!value) {\n return;\n }\n\n // TODO(burdon): Factor out styles.\n const element = value.truncate();\n if (!tooltip) {\n return element;\n }\n\n return (\n <Tooltip.Provider>\n <Tooltip.Root>\n <Tooltip.Trigger>{element}</Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='right'>\n <Tooltip.Arrow />\n <ClipboardText\n onClick={(ev) => {\n ev.stopPropagation(); // Prevent select row.\n void navigator.clipboard.writeText(value.toHex());\n }}\n />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n </Tooltip.Provider>\n );\n },\n });\n }\n\n /**\n * Row selector\n */\n selectRow({\n label,\n classNames,\n onUpdate,\n id = 'selectRow',\n ...props\n }: SelectRowColumnOptions<TData> = {}): Parameters<ColumnHelper<TData>['display']>[0] {\n return {\n id,\n size: 32,\n minSize: 32,\n maxSize: 32,\n meta: { onUpdate, cell: { classNames } },\n header: ({ table }) => {\n const { rowsSelectable } = useTableContext('HELPER_SELECT_ROW_HEADER_CELL');\n const checked = table.getIsSomeRowsSelected() ? 'indeterminate' : table.getIsAllRowsSelected();\n return rowsSelectable === 'multi' ? (\n <Input.Root>\n <Input.Checkbox\n size={4}\n classNames={['mli-auto', classNames]}\n checked={checked}\n onCheckedChange={() => table.toggleAllRowsSelected()}\n />\n </Input.Root>\n ) : null;\n },\n cell: RowSelectorBuilderCell,\n };\n }\n\n /**\n * Switch\n */\n switch({ label, classNames, onUpdate, ...props }: SwitchColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, boolean>\n > {\n return defaults(props, {\n size: 50,\n minSize: 50,\n meta: { onUpdate, cell: { classNames: [textPadding, classNames] } },\n header: (column) => label ?? column.header.id,\n cell: SwitchBuilderCell,\n });\n }\n\n /**\n * Icon based on boolean value.\n */\n icon({ label, size, on, off, ...props }: IconColumnOptions<TData> = {}): Partial<ColumnDef<TData, boolean>> {\n const IconOn = on?.Icon ?? Check;\n const IconOff = off?.Icon ?? X;\n return defaults(props, {\n size: size ?? 32,\n header: (column) => <div className={'justify-center'}>{label ?? column.header.id}</div>,\n cell: (cell) => {\n const value = cell.getValue();\n if (value) {\n return <IconOn className={mx('block mli-auto', getSize(6), on?.className ?? 'text-green-700')} />;\n } else if (value === false) {\n return <IconOff className={mx('block mli-auto', getSize(6), off?.className ?? 'text-red-700')} />;\n } else {\n return null;\n }\n },\n });\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["Check", "CaretDown", "Trash", "X", "React", "useRef", "useState", "Button", "DensityProvider", "Input", "Popover", "Select", "Separator", "getSize", "mx", "safeParseInt", "columnTypes", "Map", "ColumnMenu", "column", "props", "title", "label", "length", "id", "div", "className", "ColumnPanel", "Section", "children", "role", "mx", "context", "tableDefs", "tableDef", "onUpdate", "onDelete", "open", "setOpen", "useState", "prop", "setProp", "refTable", "setRefTable", "refProp", "setRefProp", "type", "setType", "String", "setLabel", "digits", "setDigits", "propRef", "useRef", "handleCancel", "handleSave", "match", "current", "focus", "columns", "find", "c", "safeParseInt", "Popover", "Root", "onOpenChange", "nextOpen", "Trigger", "asChild", "Button", "variant", "classNames", "CaretDown", "getSize", "Portal", "Content", "Viewport", "DensityProvider", "density", "Input", "Label", "TextInput", "placeholder", "value", "onChange", "event", "target", "autoFocus", "ref", "replace", "Select", "onValueChange", "TriggerButton", "Array", "from", "columnTypes", "entries", "map", "Option", "key", "filter", "t", "name", "Separator", "onClick", "span", "Check", "X", "Trash", "Arrow", "useControllableState", "getCoreRowModel", "getGroupedRowModel", "useReactTable", "React", "Fragment", "useCallback", "useEffect", "useState", "debounce", "useArrowNavigationGroup", "flexRender", "React", "createContext", "TABLE_NAME", "TableProvider", "useUntypedTableContext", "createContext", "useTableContext", "consumerName", "chromeSurface", "fixedSurface", "focusRing", "ghostSelected", "ghostSelectedCurrent", "groupBorder", "mx", "currentRow", "selectedRow", "flushPadding", "textPadding", "headPadding", "gridCellFocusRing", "tableRoot", "fullWidth", "etc", "mx", "groupTh", "_props", "theadRoot", "header", "fixedSurface", "theadTr", "theadTh", "border", "groupBorder", "theadResizeRoot", "theadResizeThumb", "tbodyRoot", "tbodyTr", "canBeCurrent", "ghostSelectedCurrent", "ghostSelected", "focusRing", "tdRoot", "isGrid", "tdContent", "tfootRoot", "chromeSurface", "tfootTr", "tfootTh", "useFocusableGroup", "React", "CELL_NAME", "FocusableCell", "cell", "children", "tableContext", "useTableContext", "domAttributes", "useFocusableGroup", "tabBehavior", "React", "td", "tabIndex", "className", "tdRoot", "column", "columnDef", "meta", "classNames", "StaticCell", "Cell", "isGrid", "Root", "displayName", "TABLE_BODY_NAME", "TableBody", "rows", "tableContext", "useTableContext", "table", "keyAccessor", "debug", "expand", "isGrid", "onDatumClick", "currentDatum", "rowSelection", "getState", "domAttributes", "useArrowNavigationGroup", "axis", "canBeCurrent", "React", "tbody", "map", "row", "isCurrent", "original", "isSelected", "id", "tr", "key", "className", "tbodyTr", "tabIndex", "onClick", "onKeyUp", "td", "getVisibleCells", "cell", "Cell", "flexRender", "column", "columnDef", "getContext", "displayName", "flexRender", "React", "TABLE_FOOTER_NAME", "TableFooter", "props", "tableContext", "useTableContext", "table", "expand", "debug", "footers", "getFooterGroups", "React", "tfoot", "className", "tfootRoot", "map", "footerGroup", "tr", "key", "id", "tfootTr", "th", "headers", "footer", "tfootTh", "column", "columnDef", "meta", "classNames", "isPlaceholder", "flexRender", "getContext", "displayName", "flexRender", "React", "mx", "TABLE_HEAD_NAME", "TableHead", "_props", "tableContext", "useTableContext", "headerGroups", "table", "getHeaderGroups", "state", "getState", "React", "thead", "className", "theadRoot", "map", "headerGroup", "tr", "key", "id", "theadTr", "debug", "th", "style", "width", "headers", "header", "isResizing", "column", "getIsResizing", "getSize", "theadTh", "columnDef", "meta", "classNames", "isPlaceholder", "flexRender", "getContext", "resizable", "div", "theadResizeRoot", "transform", "columnSizingInfo", "deltaOffset", "onMouseDown", "getResizeHandler", "onTouchStart", "mx", "theadResizeThumb", "expand", "displayName", "Table", "props", "role", "data", "columns", "onColumnResize", "columnVisibility", "header", "footer", "rowsSelectable", "fullWidth", "debug", "onDataSelectionChange", "TableProvider", "UntypedTableProvider", "rowSelection", "directlySetRowSelection", "useControllableState", "prop", "onChange", "onRowSelectionChange", "defaultProp", "defaultRowSelection", "handleRowSelectionChange", "useCallback", "updaterOrValue", "nextRowSelection", "nextRowSelectionKey", "Object", "keys", "filter", "id", "columnSizingInfo", "setColumnSizingInfo", "useState", "onColumnResizeDebounced", "debounce", "info", "useEffect", "columnSizingStart", "length", "table", "getState", "columnSizing", "grouping", "setGrouping", "useReactTable", "meta", "defaultColumn", "size", "maxSize", "getCoreRowModel", "state", "getGroupedRowModel", "onGroupingChange", "enableMultiRowSelection", "enableRowSelection", "columnResizeMode", "enableColumnResizing", "onColumnSizingInfoChange", "debugTable", "map", "getRowModel", "rowsById", "original", "expand", "React", "isGrid", "className", "tableRoot", "style", "width", "getTotalSize", "TableHead", "TableBody", "rows", "row", "i", "Fragment", "key", "thead", "tr", "th", "colSpan", "getHeaderGroups", "headers", "groupTh", "String", "getGroupingValue", "subRows", "TableFooter", "pre", "code", "JSON", "stringify", "undefined", "CaretDown", "React", "useCallback", "useState", "Popover", "useTranslation", "PopoverCombobox", "descriptionText", "getSize", "mx", "staticPlaceholderText", "translationKey", "initialItems", "model", "value", "getId", "label", "getText", "data", "CellCombobox", "onValueChange", "t", "useTranslation", "translationKey", "items", "setItems", "useState", "loading", "setLoading", "searchInputValue", "setSearchInputValue", "handleSearchInputValueChange", "text", "query", "reduce", "acc", "item", "handleValueChange", "useCallback", "id", "React", "PopoverCombobox", "Root", "placeholder", "Trigger", "variant", "classNames", "span", "className", "mx", "staticPlaceholderText", "CaretDown", "weight", "getSize", "Content", "shouldFilter", "Input", "List", "length", "p", "descriptionText", "Empty", "Object", "entries", "map", "Item", "key", "onSelect", "Popover", "Arrow", "Check", "ClipboardText", "X", "createColumnHelper", "format", "formatDistanceToNow", "defaultsDeep", "React", "useRef", "useState", "Input", "Tooltip", "getSize", "mx", "stripUndefinedValues", "createColumnBuilder", "helper", "createColumnHelper", "builder", "ColumnBuilder", "defaults", "options", "sources", "stripUndefinedValues", "defaultsDeep", "ComboboxBuilderCell", "cellContext", "model", "onUpdate", "column", "columnDef", "meta", "React", "CellCombobox", "value", "getValue", "onValueChange", "row", "original", "id", "StringBuilderCell", "initialValue", "setValue", "useState", "inputRef", "useRef", "handleSave", "handleCancel", "rows", "table", "getRowModel", "flatRows", "columns", "getVisibleFlatColumns", "placeholder", "index", "length", "Input", "Root", "TextInput", "ref", "variant", "undefined", "classNames", "textPadding", "onBlur", "onChange", "event", "target", "onKeyDown", "key", "NumberBuilderCell", "cell", "digits", "text", "setText", "handleEdit", "String", "trim", "Number", "NaN", "isNaN", "div", "className", "mx", "onClick", "toLocaleString", "minimumFractionDigits", "maximumFractionDigits", "RowSelectorBuilderCell", "checked", "getCanSelect", "getIsSelected", "getCanSelectSubRows", "getIsSomeSelected", "getIsAllSubRowsSelected", "Checkbox", "size", "onCheckedChange", "getToggleSelectedHandler", "disabled", "SwitchBuilderCell", "Switch", "stopPropagation", "combobox", "label", "props", "minSize", "header", "cellValue", "getText", "string", "number", "date", "format", "formatSpec", "relative", "str", "formatDistanceToNow", "addSuffix", "toISOString", "err", "console", "log", "tooltip", "element", "truncate", "Tooltip", "Provider", "Trigger", "Portal", "Content", "side", "Arrow", "ClipboardText", "ev", "navigator", "clipboard", "writeText", "toHex", "selectRow", "maxSize", "rowsSelectable", "useTableContext", "getIsSomeRowsSelected", "getIsAllRowsSelected", "toggleAllRowsSelected", "switch", "icon", "on", "off", "IconOn", "Icon", "Check", "IconOff", "X", "getSize"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Check, CaretDown, Trash, X } from '@phosphor-icons/react';\nimport { type HeaderContext, type RowData } from '@tanstack/react-table';\nimport React, { type FC, type PropsWithChildren, useRef, useState } from 'react';\n\nimport { Button, DensityProvider, Input, Popover, Select, Separator } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\nimport { safeParseInt } from '@dxos/util';\n\nimport { type TableDef, type ColumnProps, columnTypes } from '../schema';\n\nexport type ColumnMenuProps<TData extends RowData, TValue> = {\n context: HeaderContext<TData, TValue>;\n tableDefs: TableDef[];\n tableDef: TableDef;\n column: ColumnProps;\n onUpdate?: (id: string, column: ColumnProps) => void;\n onDelete?: (id: string) => void;\n};\n\nexport const ColumnMenu = <TData extends RowData, TValue>({ column, ...props }: ColumnMenuProps<TData, TValue>) => {\n const title = column.label?.length ? column.label : column.id;\n\n return (\n <div className='flex grow items-center overflow-hidden'>\n <div className='truncate' title={title}>\n {title}\n </div>\n <div className='grow' />\n <div className='flex shrink-0'>\n <ColumnPanel {...props} column={column} />\n </div>\n </div>\n );\n};\n\nconst Section: FC<PropsWithChildren & { className?: string }> = ({ children, className }) => (\n <div role='none' className={mx('p-2', className)}>\n {children}\n </div>\n);\n\nexport const ColumnPanel = <TData extends RowData, TValue>({\n context,\n tableDefs,\n tableDef,\n column,\n onUpdate,\n onDelete,\n}: ColumnMenuProps<TData, TValue>) => {\n const [open, setOpen] = useState(false);\n const [prop, setProp] = useState(column.id);\n const [refTable, setRefTable] = useState(column.refTable);\n const [refProp, setRefProp] = useState(column.refProp);\n const [type, setType] = useState(String(column.type));\n const [label, setLabel] = useState(column.label);\n const [digits, setDigits] = useState(String(column.digits ?? '0'));\n const propRef = useRef<HTMLInputElement>(null);\n\n const handleCancel = () => {\n setProp(column.id);\n setOpen(false);\n };\n\n const handleSave = () => {\n // Check valid.\n if (!prop.length || !prop.match(/^[a-zA-Z_].+/i)) {\n propRef.current?.focus();\n return;\n }\n\n // If already exists then check same type.\n const current = tableDef.columns.find((c) => c.id !== column.id && c.id === prop);\n if (current) {\n // TODO(burdon): Allow multiple columns with different refProps. Ensure correct table prop is updated.\n if (current.type !== 'ref' /* || current.ref !== refTable */) {\n // TODO(burdon): Show error.\n propRef.current?.focus();\n return;\n }\n }\n\n onUpdate?.(prop, {\n id: prop, // TODO(burdon): Make unique.\n prop,\n label,\n type: type as ColumnProps['type'],\n refTable,\n refProp,\n digits: safeParseInt(digits),\n });\n\n setOpen(false);\n };\n\n return (\n <Popover.Root open={open} onOpenChange={(nextOpen) => setOpen(nextOpen)}>\n <Popover.Trigger asChild>\n <Button variant='ghost' classNames='p-0'>\n <CaretDown className={getSize(4)} />\n </Button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content>\n <Popover.Viewport classNames='w-60'>\n <DensityProvider density='fine'>\n <div className='flex flex-col gap-1'>\n <Section>\n <Input.Root>\n <Input.Label classNames='mbe-1'>Label</Input.Label>\n <Input.TextInput\n placeholder='Column label'\n value={label ?? ''}\n onChange={(event) => setLabel(event.target.value)}\n autoFocus\n />\n </Input.Root>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Property</Input.Label>\n <Input.TextInput\n ref={propRef}\n placeholder='Property key'\n // TODO(burdon): Provide hooks for value normalization, ENTER, ESC, etc.\n value={prop ?? ''}\n onChange={(event) => setProp(event.target.value.replace(/[^\\w_]/g, ''))}\n />\n </Input.Root>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Type</Input.Label>\n <Select.Root value={type} onValueChange={setType}>\n <Select.TriggerButton placeholder='Type' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {Array.from(columnTypes.entries()).map(([type, label]) => (\n <Select.Option key={type} value={type}>\n {label}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n </Section>\n\n {type === 'number' && (\n <>\n <Section>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Decimal places</Input.Label>\n {/* TODO(burdon): Constrain input to numbers. */}\n <Input.TextInput value={digits ?? ''} onChange={(event) => setDigits(event.target.value)} />\n </Input.Root>\n </Section>\n </>\n )}\n\n {/* TODO(burdon): Selectors on same line. */}\n {type === 'ref' && (\n <>\n <Section>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Table</Input.Label>\n <Select.Root value={refTable} onValueChange={setRefTable}>\n <Select.TriggerButton placeholder='Table' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {tableDefs\n .filter((t) => t.id !== tableDef.id)\n .map(({ id, name }) => (\n <Select.Option key={id} value={id}>\n {name ?? id}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n\n {refTable && (\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Table property</Input.Label>\n <Select.Root value={refProp} onValueChange={setRefProp}>\n <Select.TriggerButton placeholder='Property' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {tableDefs\n .find((tableDef) => tableDef.id === refTable)\n ?.columns.map(({ id, label }) => (\n <Select.Option key={id} value={id}>\n {label ?? id}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n )}\n </Section>\n </>\n )}\n\n <Separator classNames='mli-2' />\n\n <Section className='space-b-1.5'>\n {/* TODO(burdon): Style as DropdownMenuItem. */}\n <Button variant='primary' classNames='is-full flex gap-2' onClick={handleSave}>\n <span>Save</span>\n <div className='grow' />\n <Check className={getSize(5)} />\n </Button>\n <Button classNames='is-full flex gap-2' onClick={handleCancel}>\n <span>Cancel</span>\n <div className='grow' />\n <X className={getSize(5)} />\n </Button>\n <Button classNames='is-full flex gap-2' onClick={() => onDelete?.(column.id)}>\n <span>Delete</span>\n <div className='grow' />\n <Trash className={getSize(5)} />\n </Button>\n </Section>\n </div>\n </DensityProvider>\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport type TableDef = {\n id: string;\n name?: string; // TODO(burdon): Required?\n columns: ColumnProps[];\n};\n\nexport type ColumnType = 'number' | 'boolean' | 'date' | 'string' | 'ref';\n\nexport const columnTypes = new Map<ColumnType, string>([\n ['string', 'Text'],\n ['boolean', 'Checkbox'],\n ['number', 'Number'],\n ['date', 'Date'],\n ['ref', 'Reference'],\n]);\n\nexport type ColumnProps = {\n id: string;\n prop: string;\n type: ColumnType;\n size?: number;\n label?: string;\n\n // type = number\n digits?: number;\n\n // type = ref\n refTable?: string;\n refProp?: string;\n\n // TODO(burdon): Move to meta.\n fixed?: boolean;\n editable?: boolean;\n resizable?: boolean;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport {\n getCoreRowModel,\n getGroupedRowModel,\n useReactTable,\n type ColumnSizingInfoState,\n type ColumnSizingState,\n type GroupingState,\n type RowData,\n type RowSelectionState,\n type OnChangeFn,\n} from '@tanstack/react-table';\nimport React, { Fragment, useCallback, useEffect, useState } from 'react';\n\nimport { debounce } from '@dxos/async';\n\nimport { TableBody } from './TableBody';\nimport { TableProvider as UntypedTableProvider, type TypedTableProvider } from './TableContext';\nimport { TableFooter } from './TableFooter';\nimport { TableHead } from './TableHead';\nimport { type TableProps } from './props';\nimport { groupTh, tableRoot } from '../../theme';\n\nexport const Table = <TData extends RowData>(props: TableProps<TData>) => {\n const {\n role,\n data = [],\n columns = [],\n onColumnResize,\n columnVisibility,\n header = true,\n footer,\n rowsSelectable,\n fullWidth,\n debug,\n onDataSelectionChange,\n classNames,\n } = props;\n\n const TableProvider = UntypedTableProvider as TypedTableProvider<TData>;\n\n // Row selection\n const [rowSelection = {}, directlySetRowSelection] = useControllableState({\n prop: props.rowSelection,\n onChange: props.onRowSelectionChange,\n defaultProp: props.defaultRowSelection,\n });\n\n // TODO(thure): Does @tanstack/react-table really need this intervention? It did seem necessary to enforce single-selection...\n const handleRowSelectionChange = useCallback<OnChangeFn<RowSelectionState>>(\n (updaterOrValue) => {\n const nextRowSelection = typeof updaterOrValue === 'function' ? updaterOrValue(rowSelection) : updaterOrValue;\n if (rowsSelectable === 'multi') {\n directlySetRowSelection(nextRowSelection);\n } else if (rowsSelectable) {\n const nextRowSelectionKey = Object.keys(nextRowSelection).filter((id) => !rowSelection[id])[0];\n directlySetRowSelection(nextRowSelectionKey ? { [nextRowSelectionKey]: true } : {});\n } else {\n directlySetRowSelection({});\n }\n },\n [rowSelection, directlySetRowSelection],\n );\n\n // Resizing\n const [columnSizingInfo, setColumnSizingInfo] = useState<ColumnSizingInfoState>({} as ColumnSizingInfoState);\n const onColumnResizeDebounced = debounce<ColumnSizingState>((info) => onColumnResize?.(info), 500);\n useEffect(() => {\n if (columnSizingInfo.columnSizingStart?.length === 0) {\n onColumnResizeDebounced(table.getState().columnSizing);\n }\n }, [columnSizingInfo]);\n\n const [grouping, setGrouping] = useState<GroupingState>(props.grouping ?? []);\n useEffect(() => setGrouping(props.grouping ?? []), [props.grouping]);\n\n const table = useReactTable({\n // Data\n meta: {},\n data,\n\n // Columns\n columns,\n defaultColumn: {\n size: 256, // Required in order remove default width.\n maxSize: 1024,\n },\n\n // Rows\n getCoreRowModel: getCoreRowModel(),\n\n // State\n state: {\n columnVisibility,\n columnSizingInfo,\n rowSelection,\n grouping,\n },\n\n // Grouping\n getGroupedRowModel: getGroupedRowModel(),\n onGroupingChange: setGrouping,\n\n // Selection\n ...(rowsSelectable === 'multi'\n ? { enableMultiRowSelection: true }\n : rowsSelectable\n ? { enableRowSelection: true }\n : {}),\n onRowSelectionChange: handleRowSelectionChange,\n\n // Resize columns\n columnResizeMode: 'onChange',\n enableColumnResizing: true,\n onColumnSizingInfoChange: setColumnSizingInfo,\n\n // Debug\n debugTable: debug,\n });\n\n useEffect(() => {\n if (onDataSelectionChange) {\n onDataSelectionChange(Object.keys(rowSelection).map((id) => table.getRowModel().rowsById[id].original));\n }\n }, [onDataSelectionChange, rowSelection, table]);\n\n // Create additional expansion column if all columns have fixed width.\n const expand = false; // columns.map((column) => column.size).filter(Boolean).length === columns?.length;\n\n return (\n <TableProvider\n {...props}\n header={header}\n expand={expand}\n table={table}\n isGrid={role === 'grid' || role === 'treegrid'}\n >\n <table\n role={role}\n className={tableRoot(props, classNames)}\n {...(!fullWidth && { style: { width: table.getTotalSize() } })}\n >\n <TableHead />\n\n {grouping.length === 0 && <TableBody rows={table.getRowModel().rows} />}\n\n {grouping.length !== 0 &&\n table.getGroupedRowModel().rows.map((row, i) => {\n return (\n <Fragment key={i}>\n {/* TODO(burdon): Customize group header renderer. */}\n <thead>\n <tr>\n {debug && <th />}\n <th\n // TODO(burdon): Calculate row span.\n colSpan={table.getHeaderGroups()[0].headers.length}\n className={groupTh(props)}\n >\n {table.getState().grouping[0]}[{String(row.getGroupingValue(table.getState().grouping[0]))}]\n </th>\n </tr>\n </thead>\n\n <TableBody rows={row.subRows} />\n </Fragment>\n );\n })}\n\n {footer && <TableFooter />}\n </table>\n\n {debug && (\n <pre className='font-mono text-xs text-neutral-500 my-4 p-2 ring'>\n <code>{JSON.stringify(table.getState(), undefined, 2)}</code>\n </pre>\n )}\n </TableProvider>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { flexRender, type Row, type RowData } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useTableContext } from './TableContext';\nimport { tbodyTr } from '../../theme';\nimport { Cell } from '../Cell/Cell';\n\ntype TableBodyProps<TData extends RowData> = {\n rows: Row<TData>[];\n};\n\nconst TABLE_BODY_NAME = 'TableBody';\n\nconst TableBody = <TData extends RowData>({ rows }: TableBodyProps<TData>) => {\n const tableContext = useTableContext<TData>(TABLE_BODY_NAME);\n const { table, keyAccessor, debug, expand, isGrid, onDatumClick, currentDatum } = tableContext;\n const rowSelection = table.getState().rowSelection;\n const domAttributes = useArrowNavigationGroup({ axis: 'grid' });\n const canBeCurrent = !isGrid && !!onDatumClick;\n return (\n <tbody {...(isGrid && domAttributes)}>\n {rows.map((row) => {\n const isCurrent = currentDatum === row.original;\n const isSelected = rowSelection?.[row.id];\n return (\n <tr\n key={keyAccessor ? keyAccessor(row.original) : row.id}\n className={tbodyTr({ canBeCurrent })}\n {...(isCurrent && { 'aria-current': 'location' })}\n {...(isSelected && { 'aria-selected': 'true' })}\n {...(canBeCurrent && {\n tabIndex: 0,\n onClick: () => {\n onDatumClick(row.original);\n },\n onKeyUp: ({ key }) => {\n if (key === 'Enter' || key === ' ') {\n onDatumClick(row.original);\n }\n },\n })}\n >\n {debug && <td>{row.id}</td>}\n\n {row.getVisibleCells().map((cell) => {\n return (\n <Cell key={cell.id} cell={cell}>\n {flexRender(cell.column.columnDef.cell, { className: 'pli-2', ...cell.getContext() })}\n </Cell>\n );\n })}\n\n {expand && <td />}\n </tr>\n );\n })}\n </tbody>\n );\n};\n\nTableBody.displayName = TABLE_BODY_NAME;\n\nexport { TableBody };\n\nexport type { TableBodyProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { createContext } from '@radix-ui/react-context';\nimport { type RowData } from '@tanstack/react-table';\nimport { type ReactNode } from 'react';\n\nimport { type TableContextValue } from './props';\n\nexport const TABLE_NAME = 'Table';\n\ntype CreateContextResult<TData extends RowData> = Readonly<\n [TypedTableProvider<unknown>, (consumerName: string) => TableContextValue<TData>]\n>;\n\nexport type TypedTableProvider<TData extends RowData> = {\n (props: TableContextValue<TData> & { children: ReactNode }): JSX.Element;\n displayName: string;\n};\n\nconst [TableProvider, useUntypedTableContext]: CreateContextResult<unknown> =\n createContext<TableContextValue<unknown>>(TABLE_NAME);\n\nexport const useTableContext = <TData extends RowData>(consumerName: string) =>\n useUntypedTableContext(consumerName) as TableContextValue<TData>;\n\nexport { TableProvider };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type CellContext } from '@tanstack/react-table';\n\nimport {\n chromeSurface,\n fixedSurface,\n focusRing,\n ghostSelected,\n ghostSelectedCurrent,\n groupBorder,\n mx,\n} from '@dxos/react-ui-theme';\nimport { type ComponentFunction } from '@dxos/react-ui-types';\n\nimport { type TableContextValue, type TableFlags } from './components';\n\nexport const currentRow = '!bg-neutral-75 !dark:bg-neutral-850';\nexport const selectedRow = '!bg-primary-100 dark:!bg-primary-700';\nexport const flushPadding = 'pli-0 plb-0';\nexport const textPadding = 'pli-2 plb-0.5';\nexport const headPadding = 'pli-2 plb-1.5';\n\nexport const gridCellFocusRing = 'focus:z-[11] focus:outline outline-2 outline-primary-500 dark:outline-primary-400';\n\n//\n// table\n//\n\nexport type TableStyleProps = Partial<TableContextValue<any>>;\n\nexport const tableRoot: ComponentFunction<TableStyleProps> = ({ fullWidth }, ...etc) =>\n mx('table-fixed', fullWidth && 'is-full', ...etc);\n\nexport const groupTh: ComponentFunction<TableStyleProps> = (_props, ...etc) =>\n mx('text-start font-medium', flushPadding, ...etc);\n\n//\n// thead\n//\n\nexport type TheadStyleProps = Partial<TableFlags>;\n\nexport const theadRoot: ComponentFunction<TheadStyleProps> = ({ header }, ...etc) =>\n mx(header ? 'sticky block-start-[--sticky-top] z-[1]' : 'collapse', header && fixedSurface, ...etc);\n\nexport const theadTr: ComponentFunction<TheadStyleProps> = (_props, ...etc) => mx('group', ...etc);\n\nexport const theadTh: ComponentFunction<TheadStyleProps> = ({ border }, ...etc) =>\n mx(\n 'relative text-start font-medium select-none truncate',\n headPadding,\n border && 'border',\n border && groupBorder,\n ...etc,\n );\n\nexport const theadResizeRoot: ComponentFunction<TheadStyleProps> = (_props, ...etc) =>\n mx(\n 'absolute top-0 pis-1 h-full z-[10] w-[7px] -right-[5px] cursor-col-resize select-none touch-none opacity-20 hover:opacity-100',\n ...etc,\n );\n\nexport const theadResizeThumb: ComponentFunction<TheadStyleProps> = (_props, ...etc) =>\n mx('flex group-hover:bg-neutral-700 -ml-[2px] w-[1px] h-full', ...etc);\n\n//\n// tbody\n//\n\nexport type TbodyStyleProps = Partial<TableContextValue<any>>;\nexport const tbodyRoot: ComponentFunction<TbodyStyleProps> = (_props, ...etc) => mx(...etc);\n\nexport type TbodyTrStyleProps = Partial<{ canBeCurrent?: boolean }>;\nexport const tbodyTr: ComponentFunction<TbodyTrStyleProps> = ({ canBeCurrent }, ...etc) =>\n mx(\n 'group',\n canBeCurrent ? ghostSelectedCurrent : ghostSelected,\n canBeCurrent && focusRing,\n canBeCurrent && 'cursor-pointer rounded',\n ...etc,\n );\n\n//\n// td, th\n//\n\nexport const tdRoot: ComponentFunction<TbodyStyleProps> = ({ border, isGrid }, ...etc) =>\n mx('relative', flushPadding, border && 'border', border && groupBorder, isGrid && gridCellFocusRing, ...etc);\nexport const tdContent: ComponentFunction<CellContext<any, any>> = (_props, ...etc) => mx(...etc);\n\n//\n// tfoot\n//\n\nexport type TfootStyleProps = Partial<TableContextValue<any>>;\n\nexport const tfootRoot: ComponentFunction<TfootStyleProps> = (_props, ...etc) =>\n mx('sticky block-end-0 z-10', chromeSurface, ...etc);\n\nexport const tfootTr: ComponentFunction<TfootStyleProps> = (_props, ...etc) => mx(...etc);\n\nexport const tfootTh: ComponentFunction<TfootStyleProps> = ({ border }, ...etc) =>\n mx(textPadding, chromeSurface, border && groupBorder, ...etc);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { type Cell as CellType, type RowData } from '@tanstack/react-table';\nimport React, { type PropsWithChildren } from 'react';\n\nimport { tdRoot } from '../../theme';\nimport { useTableContext } from '../Table/TableContext';\n\ntype CellProps<TData extends RowData, TValue> = PropsWithChildren<{\n cell: CellType<TData, TValue>;\n}>;\n\nconst CELL_NAME = 'Cell';\n\nconst FocusableCell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const tableContext = useTableContext(CELL_NAME);\n const domAttributes = useFocusableGroup({ tabBehavior: 'limited' });\n return (\n <td tabIndex={0} {...domAttributes} className={tdRoot(tableContext, cell.column.columnDef.meta?.cell?.classNames)}>\n {children}\n </td>\n );\n};\n\nconst StaticCell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const tableContext = useTableContext(CELL_NAME);\n return <td className={tdRoot(tableContext, cell.column.columnDef.meta?.cell?.classNames)}>{children}</td>;\n};\n\nconst Cell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const { isGrid } = useTableContext(CELL_NAME);\n const Root = isGrid ? FocusableCell : StaticCell;\n return <Root cell={cell}>{children}</Root>;\n};\n\nCell.displayName = CELL_NAME;\n\nexport { Cell };\n\nexport type { CellProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { flexRender, type RowData } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useTableContext } from './TableContext';\nimport { tfootRoot, tfootTr, tfootTh } from '../../theme';\n\nexport type TableFooterProps = {};\n\nconst TABLE_FOOTER_NAME = 'TableFooter';\n\nconst TableFooter = <TData extends RowData>(props: TableFooterProps) => {\n const tableContext = useTableContext<TData>(TABLE_FOOTER_NAME);\n const { table, expand, debug } = tableContext;\n const footers = table.getFooterGroups();\n return (\n <tfoot className={tfootRoot(props)}>\n {footers.map((footerGroup) => (\n <tr key={footerGroup.id} className={tfootTr(tableContext)}>\n {debug && <th />}\n\n {footerGroup.headers.map((footer) => {\n return (\n <th key={footer.id} className={tfootTh(tableContext, footer.column.columnDef.meta?.footer?.classNames)}>\n {footer.isPlaceholder ? null : flexRender(footer.column.columnDef.footer, footer.getContext())}\n </th>\n );\n })}\n\n {expand && <th />}\n </tr>\n ))}\n </tfoot>\n );\n};\n\nTableFooter.displayName = TABLE_FOOTER_NAME;\n\nexport { TableFooter };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { flexRender, type RowData } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useTableContext } from './TableContext';\nimport { theadResizeRoot, theadResizeThumb, theadRoot, theadTh, theadTr } from '../../theme';\n\nconst TABLE_HEAD_NAME = 'TableHead';\n\ntype TableHeadProps = {};\n\nconst TableHead = <TData extends RowData>(_props: TableHeadProps) => {\n const tableContext = useTableContext<TData>(TABLE_HEAD_NAME);\n const headerGroups = tableContext.table.getHeaderGroups();\n const state = tableContext.table.getState();\n return (\n <thead className={theadRoot(tableContext)}>\n {headerGroups.map((headerGroup) => {\n return (\n // Group element to hover resize handles.\n <tr key={headerGroup.id} className={theadTr(tableContext)}>\n {/* TODO(burdon): Calc. width. */}\n {tableContext.debug && (\n <th className='font-mono' style={{ width: 32 }}>\n #\n </th>\n )}\n\n {headerGroup.headers.map((header) => {\n const isResizing = header.column.getIsResizing();\n return (\n <th\n key={header.id}\n style={{\n width: header.getSize(),\n }}\n className={theadTh(tableContext, header.column.columnDef.meta?.header?.classNames)}\n >\n {!header || header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n\n {/*\n * Resize handle.\n * https://codesandbox.io/p/sandbox/github/tanstack/table/tree/main/examples/react/column-sizing\n */}\n {header.column.columnDef.meta?.resizable && (\n <div\n className={theadResizeRoot(tableContext, isResizing && 'hidden')}\n style={{\n transform: `translateX(${isResizing ? state.columnSizingInfo.deltaOffset : 0}px)`,\n }}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n >\n <div className={mx(theadResizeThumb(tableContext))} />\n </div>\n )}\n </th>\n );\n })}\n {tableContext.expand && <th />}\n </tr>\n );\n })}\n </thead>\n );\n};\n\nTableHead.displayName = TABLE_HEAD_NAME;\n\nexport { TableHead };\n\nexport type { TableHeadProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CaretDown } from '@phosphor-icons/react';\nimport { type RowData } from '@tanstack/react-table';\nimport React, { useCallback, useState } from 'react';\n\nimport { Popover, useTranslation } from '@dxos/react-ui';\nimport { PopoverCombobox } from '@dxos/react-ui-searchlist';\nimport { descriptionText, getSize, mx, staticPlaceholderText } from '@dxos/react-ui-theme';\n\nimport { type SearchListQueryModel } from '../../helpers';\nimport { translationKey } from '../../translations';\n\nexport type ComboboxCellItems<TData extends RowData> = Record<string, { label: string; data: TData }>;\n\nconst initialItems = <TData extends RowData>(model: SearchListQueryModel<TData>, value?: TData) =>\n value\n ? {\n [model.getId(value)]: { label: model.getText(value), data: value },\n }\n : {};\n\nexport const CellCombobox = <TData extends RowData>({\n model,\n value,\n onValueChange,\n}: {\n model: SearchListQueryModel<TData>;\n value: TData;\n onValueChange: (value: TData) => void;\n}) => {\n const { t } = useTranslation(translationKey);\n const [items, setItems] = useState<ComboboxCellItems<TData>>(initialItems(model, value));\n const [loading, setLoading] = useState(false);\n const [searchInputValue, setSearchInputValue] = useState('');\n const handleSearchInputValueChange = async (text?: string) => {\n setSearchInputValue(text ?? '');\n setLoading(true);\n const items = await model.query(text);\n setItems(\n items.reduce((acc: ComboboxCellItems<TData>, item) => {\n acc[model.getId(item)] = {\n label: model.getText(item),\n data: item,\n };\n return acc;\n }, initialItems(model, value)),\n );\n setLoading(false);\n };\n\n const handleValueChange = useCallback(\n (id: string) => {\n onValueChange(items[id]?.data);\n },\n [items, onValueChange],\n );\n\n return (\n <PopoverCombobox.Root placeholder={t('no selection label')}>\n <PopoverCombobox.Trigger variant='ghost' classNames='is-full rounded-none ring-inset'>\n {value ? (\n <>\n <span\n className={mx('font-normal text-start flex-1 min-is-0 truncate mie-2', !value && staticPlaceholderText)}\n >\n {model.getText(value)}\n </span>\n <CaretDown weight='bold' className={getSize(3)} />\n </>\n ) : null}\n </PopoverCombobox.Trigger>\n <PopoverCombobox.Content shouldFilter={false} classNames='is-[--radix-popover-trigger-width]'>\n <PopoverCombobox.Input value={searchInputValue} onValueChange={handleSearchInputValueChange} />\n <PopoverCombobox.List>\n {searchInputValue.length < 1 ? (\n <p className={mx('text-center', descriptionText)}>Start typing to search</p>\n ) : loading ? (\n <p className={mx('text-center', descriptionText)}>Searching…</p>\n ) : (\n <>\n <PopoverCombobox.Empty classNames={['text-center', descriptionText]}>No results</PopoverCombobox.Empty>\n {Object.entries(items).map(([id, { label }]) => (\n <PopoverCombobox.Item key={id} value={id} onSelect={handleValueChange} classNames='truncate'>\n {label}\n </PopoverCombobox.Item>\n ))}\n </>\n )}\n </PopoverCombobox.List>\n <Popover.Arrow />\n </PopoverCombobox.Content>\n </PopoverCombobox.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const translationKey = 'table';\n\nexport default [\n {\n 'en-US': {\n [translationKey]: {\n 'no selection label': ' ',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Check, ClipboardText, type Icon, X } from '@phosphor-icons/react';\nimport {\n createColumnHelper,\n type ColumnDef,\n type ColumnMeta,\n type RowData,\n type ColumnHelper,\n type CellContext,\n} from '@tanstack/react-table';\nimport format from 'date-fns/format';\nimport formatDistanceToNow from 'date-fns/formatDistanceToNow';\nimport React, { useRef, useState } from 'react';\n\nimport { type PublicKey } from '@dxos/keys';\nimport { type ClassNameValue, Input, Tooltip } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nimport { CellCombobox } from './components';\nimport { useTableContext } from './components/Table/TableContext';\nimport { textPadding } from './theme';\n\nexport type ValueUpdater<TData extends RowData, TValue> = (row: TData, id: string, value: TValue) => void;\n\nexport const createColumnBuilder = <TData extends RowData>() => ({\n helper: createColumnHelper<TData>(),\n builder: new ColumnBuilder<TData>(),\n});\n\n// TODO(thure): This interface is redundant, e.g. `classNames` == `meta.cell.classNames`\n/**\n * NOTE: Can use `meta` for custom properties.\n */\nexport type BaseColumnOptions<TData, TValue> = Partial<ColumnDef<TData, TValue>> & {\n meta?: ColumnMeta<TData, TValue>;\n label?: string;\n classNames?: ClassNameValue;\n onUpdate?: ValueUpdater<TData, TValue | undefined>;\n};\n\n// TODO(burdon): Better abstraction?\nexport type SearchListQueryModel<TData extends RowData> = {\n getId(object: TData): string;\n getText(object: TData): string;\n query(text?: string): Promise<TData[]>;\n};\n\nexport type ComboboxColumnOptions<TData extends RowData> = BaseColumnOptions<TData, any> & {\n model: SearchListQueryModel<TData>;\n};\n\nexport type StringColumnOptions<TData extends RowData> = BaseColumnOptions<TData, string> & {};\nexport type SelectRowColumnOptions<TData extends RowData> = BaseColumnOptions<TData, string> & {};\n\nexport type NumberColumnOptions<TData extends RowData> = BaseColumnOptions<TData, number> & {\n digits?: number;\n};\n\nexport type KeyColumnOptions<TData extends RowData> = BaseColumnOptions<TData, PublicKey> & {\n tooltip?: boolean;\n};\n\nexport type DateColumnOptions<TData extends RowData> = BaseColumnOptions<TData, Date> & {\n format?: string;\n relative?: boolean;\n};\n\nexport type SwitchColumnOptions<TData extends RowData> = BaseColumnOptions<TData, boolean> & {};\n\nexport type IconColumnOptions<TData extends RowData> = BaseColumnOptions<TData, boolean> & {\n on?: {\n Icon?: Icon;\n className?: string;\n };\n off?: {\n Icon?: Icon;\n className?: string;\n };\n};\n\nconst ComboboxBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, TData>) => {\n const { model, onUpdate } = cellContext.column.columnDef.meta as ColumnMeta<TData, TData>;\n return model ? (\n <CellCombobox<TData>\n model={model}\n value={cellContext.getValue()}\n onValueChange={(value) => onUpdate?.(cellContext.row.original, cellContext.column.id, value)}\n />\n ) : null;\n};\n\nconst StringBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, string>) => {\n const { onUpdate } = cellContext.column.columnDef.meta as ColumnMeta<TData, string>;\n // https://tanstack.com/table/v8/docs/examples/react/editable-data\n const initialValue = cellContext.getValue();\n const [value, setValue] = useState(initialValue);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleSave = () => {\n if (value === initialValue) {\n return;\n }\n onUpdate?.(cellContext.row.original, cellContext.column.id, value);\n };\n\n const handleCancel = () => {\n setValue(initialValue);\n };\n\n // Check if first input column of last row.\n const rows = cellContext.table.getRowModel().flatRows;\n const columns = cellContext.table.getVisibleFlatColumns();\n const placeholder = cellContext.row.index === rows.length - 1 && columns[0].id === cellContext.column.id;\n\n // TODO(burdon): Don't render inputs unless mouse over (Show ellipsis when div)?\n return (\n <Input.Root>\n <Input.TextInput\n ref={inputRef}\n variant='subdued'\n placeholder={placeholder ? 'Add row...' : undefined}\n classNames={['is-full', textPadding]}\n value={value ?? ''}\n onBlur={() => handleSave()}\n onChange={(event) => setValue(event.target.value)}\n onKeyDown={(event) => (event.key === 'Enter' && handleSave()) || (event.key === 'Escape' && handleCancel())}\n />\n </Input.Root>\n );\n};\n\nconst NumberBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, number>) => {\n const { onUpdate, cell, digits } = cellContext.column.columnDef.meta as ColumnMeta<TData, string>;\n const value = cellContext.getValue();\n const [text, setText] = useState<string>();\n\n const handleEdit = () => {\n if (onUpdate) {\n setText(value !== undefined ? String(value) : '');\n }\n };\n\n // TODO(burdon): Property is encoded as float (e.g., 6.1 => 6.099)\n const handleSave = () => {\n const value = text?.trim().length ? Number(text) : NaN;\n onUpdate?.(cellContext.row.original, cellContext.column.id, isNaN(value) ? undefined : value);\n setText(undefined);\n };\n\n const handleCancel = () => {\n setText(undefined);\n };\n\n if (text !== undefined) {\n return (\n <Input.Root>\n <Input.TextInput\n value={text}\n classNames={['is-full text-end font-mono']}\n onBlur={handleSave}\n onChange={(event) => setText(event.target.value)}\n onKeyDown={(event) => (event.key === 'Escape' && handleCancel()) || (event.key === 'Enter' && handleSave())}\n />\n </Input.Root>\n );\n }\n\n return (\n <div\n className={mx('is-full text-end font-mono empty:after:content-[\" \"]', textPadding, cell?.classNames)}\n onClick={handleEdit}\n >\n {value?.toLocaleString(undefined, {\n minimumFractionDigits: digits ?? 0,\n maximumFractionDigits: digits ?? 2,\n })}\n </div>\n );\n};\n\nconst RowSelectorBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, unknown>) => {\n const { cell } = cellContext.column.columnDef.meta as ColumnMeta<TData, unknown>;\n const { row } = cellContext;\n\n const checked = row.getCanSelect()\n ? row.getIsSelected()\n : row.getCanSelectSubRows() && (row.getIsSomeSelected() ? 'indeterminate' : row.getIsAllSubRowsSelected());\n return (\n <Input.Root>\n <Input.Checkbox\n size={4}\n classNames={['mli-auto', cell?.classNames]}\n checked={checked}\n onCheckedChange={(event) => {\n if (row.getCanSelect()) {\n row.getToggleSelectedHandler()(event);\n }\n }}\n disabled={!(row.getCanSelect() || row.getCanSelectSubRows())}\n />\n </Input.Root>\n );\n};\n\nconst SwitchBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, boolean>) => {\n const { onUpdate } = cellContext.column.columnDef.meta as ColumnMeta<TData, boolean>;\n const value = cellContext.getValue();\n return (\n <Input.Root>\n <Input.Switch\n classNames='block mli-auto'\n onClick={(event) => event.stopPropagation()}\n disabled={!onUpdate}\n checked={!!value}\n onCheckedChange={(value) => {\n onUpdate?.(cellContext.row.original, cellContext.column.id, !!value);\n }}\n />\n </Input.Root>\n );\n};\n\n/**\n * Util to create column definitions.\n */\nexport class ColumnBuilder<TData extends RowData> {\n /**\n * Combobox value\n */\n combobox({\n label,\n classNames,\n model,\n onUpdate,\n ...props\n }: ComboboxColumnOptions<TData>): Partial<ColumnDef<TData, any>> {\n return {\n ...props,\n minSize: 100,\n meta: {\n ...props.meta,\n model,\n onUpdate,\n cell: { classNames, ...props.meta?.cell },\n },\n header: (column) => {\n return label ?? column.header.id;\n },\n cell:\n model && onUpdate\n ? ComboboxBuilderCell\n : (cellContext) => {\n const cellValue = cellContext.getValue();\n return <div className={mx('truncate', classNames)}>{cellValue ? model?.getText(cellValue) : ''}</div>;\n },\n };\n }\n\n /**\n * String formats.\n */\n string({ label, classNames, onUpdate, ...props }: StringColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, string>\n > {\n return {\n ...props,\n minSize: 100,\n meta: {\n ...props.meta,\n onUpdate,\n cell: { ...props.meta?.cell, classNames },\n },\n // TODO(burdon): Default.\n header: (column) => {\n return label ?? column.header.id;\n },\n cell: onUpdate\n ? StringBuilderCell\n : (cell) => {\n const value = cell.getValue();\n return <div className={mx('truncate', textPadding, classNames)}>{value}</div>;\n },\n };\n }\n\n /**\n * Number formats.\n */\n number({ label, minSize, classNames, digits, onUpdate, ...props }: NumberColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, number>\n > {\n return {\n ...props,\n size: 100,\n minSize: 100,\n meta: {\n ...props.meta,\n onUpdate,\n digits,\n header: { classNames: 'text-end', ...props.meta?.header },\n cell: { ...props.meta?.cell, classNames },\n },\n header: (cell) => label ?? cell.header.id,\n cell: NumberBuilderCell,\n };\n }\n\n /**\n * Date formats.\n */\n // TODO(burdon): Date picker (pluggable renderers?)\n date({ label, format: formatSpec, relative, classNames, ...props }: DateColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, Date>\n > {\n return {\n ...props,\n size: 220, // TODO(burdon): Depends on format.\n minSize: 100,\n meta: { ...props.meta, cell: { ...props.meta?.cell, classNames } },\n header: (cell) => label ?? cell.header.id,\n cell: (cell) => {\n const value = cell.getValue();\n\n try {\n const str = value\n ? formatSpec\n ? format(value, formatSpec)\n : relative\n ? formatDistanceToNow(value, { addSuffix: true })\n : value.toISOString()\n : undefined;\n\n return <div className={mx(textPadding, classNames)}>{str}</div>;\n } catch (err) {\n console.log(value);\n return null;\n }\n },\n };\n }\n\n /**\n * PublicKey with tooltip.\n */\n key({ label, tooltip, classNames, ...props }: KeyColumnOptions<TData> = {}): Partial<ColumnDef<TData, PublicKey>> {\n return {\n ...props,\n size: 94,\n minSize: 94,\n meta: { ...props.meta, cell: { ...props.meta?.cell, classNames: ['font-mono', textPadding, classNames] } },\n header: (cell) => label ?? cell.header.id,\n cell: (cell) => {\n const value = cell.getValue();\n if (!value) {\n return;\n }\n\n // TODO(burdon): Factor out styles.\n const element = value.truncate();\n if (!tooltip) {\n return element;\n }\n\n return (\n <Tooltip.Provider>\n <Tooltip.Root>\n <Tooltip.Trigger>{element}</Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='right'>\n <Tooltip.Arrow />\n <ClipboardText\n onClick={(ev) => {\n ev.stopPropagation(); // Prevent select row.\n void navigator.clipboard.writeText(value.toHex());\n }}\n />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n </Tooltip.Provider>\n );\n },\n };\n }\n\n /**\n * Row selector\n */\n selectRow({ classNames, onUpdate, id = 'selectRow' }: SelectRowColumnOptions<TData> = {}): Parameters<\n ColumnHelper<TData>['display']\n >[0] {\n return {\n id,\n size: 32,\n minSize: 32,\n maxSize: 32,\n meta: { onUpdate, cell: { classNames } },\n header: ({ table }) => {\n const { rowsSelectable } = useTableContext('HELPER_SELECT_ROW_HEADER_CELL');\n const checked = table.getIsSomeRowsSelected() ? 'indeterminate' : table.getIsAllRowsSelected();\n return rowsSelectable === 'multi' ? (\n <Input.Root>\n <Input.Checkbox\n size={4}\n classNames={['mli-auto', classNames]}\n checked={checked}\n onCheckedChange={() => table.toggleAllRowsSelected()}\n />\n </Input.Root>\n ) : null;\n },\n cell: RowSelectorBuilderCell,\n };\n }\n\n /**\n * Switch\n */\n switch({ label, classNames, onUpdate, ...props }: SwitchColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, boolean>\n > {\n return {\n ...props,\n size: 50,\n minSize: 50,\n meta: { ...props.meta, onUpdate, cell: { ...props.meta?.cell, classNames: [textPadding, classNames] } },\n header: (column) => label ?? column.header.id,\n cell: SwitchBuilderCell,\n };\n }\n\n /**\n * Icon based on boolean value.\n */\n icon({ label, size, on, off, ...props }: IconColumnOptions<TData> = {}): Partial<ColumnDef<TData, boolean>> {\n const IconOn = on?.Icon ?? Check;\n const IconOff = off?.Icon ?? X;\n return {\n ...props,\n size: size ?? 32,\n header: (column) => <div className={'justify-center'}>{label ?? column.header.id}</div>,\n cell: (cell) => {\n const value = cell.getValue();\n if (value) {\n return <IconOn className={mx('block mli-auto', getSize(6), on?.className ?? 'text-green-700')} />;\n } else if (value === false) {\n return <IconOff className={mx('block mli-auto', getSize(6), off?.className ?? 'text-red-700')} />;\n } else {\n return null;\n }\n },\n };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Check", "CaretDown", "Trash", "X", "React", "useRef", "useState", "Button", "DensityProvider", "Input", "Popover", "Select", "Separator", "getSize", "mx", "safeParseInt", "columnTypes", "Map", "ColumnMenu", "column", "props", "title", "label", "length", "id", "div", "className", "ColumnPanel", "Section", "children", "role", "mx", "context", "tableDefs", "tableDef", "onUpdate", "onDelete", "open", "setOpen", "useState", "prop", "setProp", "refTable", "setRefTable", "refProp", "setRefProp", "type", "setType", "String", "setLabel", "digits", "setDigits", "propRef", "useRef", "handleCancel", "handleSave", "match", "current", "focus", "columns", "find", "c", "safeParseInt", "Popover", "Root", "onOpenChange", "nextOpen", "Trigger", "asChild", "Button", "variant", "classNames", "CaretDown", "getSize", "Portal", "Content", "Viewport", "DensityProvider", "density", "Input", "Label", "TextInput", "placeholder", "value", "onChange", "event", "target", "autoFocus", "ref", "replace", "Select", "onValueChange", "TriggerButton", "Array", "from", "columnTypes", "entries", "map", "Option", "key", "filter", "t", "name", "Separator", "onClick", "span", "Check", "X", "Trash", "Arrow", "useControllableState", "getCoreRowModel", "getGroupedRowModel", "useReactTable", "React", "Fragment", "useCallback", "useEffect", "useState", "debounce", "useArrowNavigationGroup", "flexRender", "React", "createContext", "TABLE_NAME", "TableProvider", "useUntypedTableContext", "createContext", "useTableContext", "consumerName", "chromeSurface", "fixedSurface", "focusRing", "ghostSelected", "ghostSelectedCurrent", "groupBorder", "mx", "currentRow", "selectedRow", "flushPadding", "textPadding", "headPadding", "gridCellFocusRing", "tableRoot", "fullWidth", "etc", "mx", "groupTh", "_props", "theadRoot", "header", "fixedSurface", "theadTr", "theadTh", "border", "groupBorder", "theadResizeRoot", "theadResizeThumb", "tbodyRoot", "tbodyTr", "canBeCurrent", "ghostSelectedCurrent", "ghostSelected", "focusRing", "tdRoot", "isGrid", "tdContent", "tfootRoot", "chromeSurface", "tfootTr", "tfootTh", "useFocusableGroup", "React", "CELL_NAME", "FocusableCell", "cell", "children", "tableContext", "useTableContext", "domAttributes", "useFocusableGroup", "tabBehavior", "React", "td", "tabIndex", "className", "tdRoot", "column", "columnDef", "meta", "classNames", "StaticCell", "Cell", "isGrid", "Root", "displayName", "TABLE_BODY_NAME", "TableBody", "rows", "tableContext", "useTableContext", "table", "keyAccessor", "debug", "expand", "isGrid", "onDatumClick", "currentDatum", "rowSelection", "getState", "domAttributes", "useArrowNavigationGroup", "axis", "canBeCurrent", "React", "tbody", "map", "row", "isCurrent", "original", "isSelected", "id", "tr", "key", "className", "tbodyTr", "tabIndex", "onClick", "onKeyUp", "td", "getVisibleCells", "cell", "Cell", "flexRender", "column", "columnDef", "getContext", "displayName", "flexRender", "React", "TABLE_FOOTER_NAME", "TableFooter", "props", "tableContext", "useTableContext", "table", "expand", "debug", "footers", "getFooterGroups", "React", "tfoot", "className", "tfootRoot", "map", "footerGroup", "tr", "key", "id", "tfootTr", "th", "headers", "footer", "tfootTh", "column", "columnDef", "meta", "classNames", "isPlaceholder", "flexRender", "getContext", "displayName", "flexRender", "React", "mx", "TABLE_HEAD_NAME", "TableHead", "_props", "tableContext", "useTableContext", "headerGroups", "table", "getHeaderGroups", "state", "getState", "React", "thead", "className", "theadRoot", "map", "headerGroup", "tr", "key", "id", "theadTr", "debug", "th", "style", "width", "headers", "header", "isResizing", "column", "getIsResizing", "getSize", "theadTh", "columnDef", "meta", "classNames", "isPlaceholder", "flexRender", "getContext", "resizable", "div", "theadResizeRoot", "transform", "columnSizingInfo", "deltaOffset", "onMouseDown", "getResizeHandler", "onTouchStart", "mx", "theadResizeThumb", "expand", "displayName", "Table", "props", "role", "data", "columns", "onColumnResize", "columnVisibility", "header", "footer", "rowsSelectable", "fullWidth", "debug", "onDataSelectionChange", "classNames", "TableProvider", "UntypedTableProvider", "rowSelection", "directlySetRowSelection", "useControllableState", "prop", "onChange", "onRowSelectionChange", "defaultProp", "defaultRowSelection", "handleRowSelectionChange", "useCallback", "updaterOrValue", "nextRowSelection", "nextRowSelectionKey", "Object", "keys", "filter", "id", "columnSizingInfo", "setColumnSizingInfo", "useState", "onColumnResizeDebounced", "debounce", "info", "useEffect", "columnSizingStart", "length", "table", "getState", "columnSizing", "grouping", "setGrouping", "useReactTable", "meta", "defaultColumn", "size", "maxSize", "getCoreRowModel", "state", "getGroupedRowModel", "onGroupingChange", "enableMultiRowSelection", "enableRowSelection", "columnResizeMode", "enableColumnResizing", "onColumnSizingInfoChange", "debugTable", "map", "getRowModel", "rowsById", "original", "expand", "React", "isGrid", "className", "tableRoot", "style", "width", "getTotalSize", "TableHead", "TableBody", "rows", "row", "i", "Fragment", "key", "thead", "tr", "th", "colSpan", "getHeaderGroups", "headers", "groupTh", "String", "getGroupingValue", "subRows", "TableFooter", "pre", "code", "JSON", "stringify", "undefined", "CaretDown", "React", "useCallback", "useState", "Popover", "useTranslation", "PopoverCombobox", "descriptionText", "getSize", "mx", "staticPlaceholderText", "translationKey", "initialItems", "model", "value", "getId", "label", "getText", "data", "CellCombobox", "onValueChange", "t", "useTranslation", "translationKey", "items", "setItems", "useState", "loading", "setLoading", "searchInputValue", "setSearchInputValue", "handleSearchInputValueChange", "text", "query", "reduce", "acc", "item", "handleValueChange", "useCallback", "id", "React", "PopoverCombobox", "Root", "placeholder", "Trigger", "variant", "classNames", "span", "className", "mx", "staticPlaceholderText", "CaretDown", "weight", "getSize", "Content", "shouldFilter", "Input", "List", "length", "p", "descriptionText", "Empty", "Object", "entries", "map", "Item", "key", "onSelect", "Popover", "Arrow", "Check", "ClipboardText", "X", "createColumnHelper", "format", "formatDistanceToNow", "React", "useRef", "useState", "Input", "Tooltip", "getSize", "mx", "createColumnBuilder", "helper", "createColumnHelper", "builder", "ColumnBuilder", "ComboboxBuilderCell", "cellContext", "model", "onUpdate", "column", "columnDef", "meta", "React", "CellCombobox", "value", "getValue", "onValueChange", "row", "original", "id", "StringBuilderCell", "initialValue", "setValue", "useState", "inputRef", "useRef", "handleSave", "handleCancel", "rows", "table", "getRowModel", "flatRows", "columns", "getVisibleFlatColumns", "placeholder", "index", "length", "Input", "Root", "TextInput", "ref", "variant", "undefined", "classNames", "textPadding", "onBlur", "onChange", "event", "target", "onKeyDown", "key", "NumberBuilderCell", "cell", "digits", "text", "setText", "handleEdit", "String", "trim", "Number", "NaN", "isNaN", "div", "className", "mx", "onClick", "toLocaleString", "minimumFractionDigits", "maximumFractionDigits", "RowSelectorBuilderCell", "checked", "getCanSelect", "getIsSelected", "getCanSelectSubRows", "getIsSomeSelected", "getIsAllSubRowsSelected", "Checkbox", "size", "onCheckedChange", "getToggleSelectedHandler", "disabled", "SwitchBuilderCell", "Switch", "stopPropagation", "combobox", "label", "props", "minSize", "header", "cellValue", "getText", "string", "number", "date", "format", "formatSpec", "relative", "str", "formatDistanceToNow", "addSuffix", "toISOString", "err", "console", "log", "tooltip", "element", "truncate", "Tooltip", "Provider", "Trigger", "Portal", "Content", "side", "Arrow", "ClipboardText", "ev", "navigator", "clipboard", "writeText", "toHex", "selectRow", "maxSize", "rowsSelectable", "useTableContext", "getIsSomeRowsSelected", "getIsAllRowsSelected", "toggleAllRowsSelected", "switch", "icon", "on", "off", "IconOn", "Icon", "Check", "IconOff", "X", "getSize"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/ui/react-ui-table/src/schema.ts":{"bytes":1836,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/components/ColumnMenu.tsx":{"bytes":28711,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/schema.ts","kind":"import-statement","original":"../schema"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableContext.tsx":{"bytes":2237,"imports":[{"path":"@radix-ui/react-context","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/theme.ts":{"bytes":9655,"imports":[{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/components/Cell/Cell.tsx":{"bytes":4832,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"../Table/TableContext"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableBody.tsx":{"bytes":7888,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"},{"path":"packages/ui/react-ui-table/src/components/Cell/Cell.tsx","kind":"import-statement","original":"../Cell/Cell"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableFooter.tsx":{"bytes":4719,"imports":[{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableHead.tsx":{"bytes":8764,"imports":[{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/Table.tsx":{"bytes":19026,"imports":[{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableBody.tsx","kind":"import-statement","original":"./TableBody"},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/components/Table/TableFooter.tsx","kind":"import-statement","original":"./TableFooter"},{"path":"packages/ui/react-ui-table/src/components/Table/TableHead.tsx","kind":"import-statement","original":"./TableHead"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/props.ts":{"bytes":2463,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/index.ts":{"bytes":557,"imports":[{"path":"packages/ui/react-ui-table/src/components/Table/Table.tsx","kind":"import-statement","original":"./Table"},{"path":"packages/ui/react-ui-table/src/components/Table/props.ts","kind":"import-statement","original":"./props"}],"format":"esm"},"packages/ui/react-ui-table/src/translations.ts":{"bytes":990,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx":{"bytes":11550,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/translations.ts","kind":"import-statement","original":"../../translations"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Cell/index.ts":{"bytes":494,"imports":[{"path":"packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx","kind":"import-statement","original":"./CellCombobox"}],"format":"esm"},"packages/ui/react-ui-table/src/components/index.ts":{"bytes":644,"imports":[{"path":"packages/ui/react-ui-table/src/components/ColumnMenu.tsx","kind":"import-statement","original":"./ColumnMenu"},{"path":"packages/ui/react-ui-table/src/components/Table/index.ts","kind":"import-statement","original":"./Table"},{"path":"packages/ui/react-ui-table/src/components/Cell/index.ts","kind":"import-statement","original":"./Cell"}],"format":"esm"},"packages/ui/react-ui-table/src/helpers.tsx":{"bytes":44423,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/formatDistanceToNow","kind":"import-statement","external":true},{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./components/Table/TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"./theme"}],"format":"esm"},"packages/ui/react-ui-table/src/types.ts":{"bytes":1830,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/index.ts":{"bytes":803,"imports":[{"path":"packages/ui/react-ui-table/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-table/src/helpers.tsx","kind":"import-statement","original":"./helpers"},{"path":"packages/ui/react-ui-table/src/schema.ts","kind":"import-statement","original":"./schema"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"./theme"},{"path":"packages/ui/react-ui-table/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-table/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":77314},"packages/ui/react-ui-table/dist/lib/browser/index.mjs":{"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/formatDistanceToNow","kind":"import-statement","external":true},{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["CellCombobox","ColumnBuilder","ColumnMenu","ColumnPanel","Table","columnTypes","createColumnBuilder","currentRow","flushPadding","gridCellFocusRing","groupTh","headPadding","selectedRow","tableRoot","tbodyRoot","tbodyTr","tdContent","tdRoot","textPadding","tfootRoot","tfootTh","tfootTr","theadResizeRoot","theadResizeThumb","theadRoot","theadTh","theadTr"],"entryPoint":"packages/ui/react-ui-table/src/index.ts","inputs":{"packages/ui/react-ui-table/src/components/ColumnMenu.tsx":{"bytesInOutput":7708},"packages/ui/react-ui-table/src/schema.ts":{"bytesInOutput":224},"packages/ui/react-ui-table/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/components/Table/Table.tsx":{"bytesInOutput":4423},"packages/ui/react-ui-table/src/components/Table/TableBody.tsx":{"bytesInOutput":1770},"packages/ui/react-ui-table/src/components/Table/TableContext.tsx":{"bytesInOutput":234},"packages/ui/react-ui-table/src/theme.ts":{"bytesInOutput":1978},"packages/ui/react-ui-table/src/components/Cell/Cell.tsx":{"bytesInOutput":980},"packages/ui/react-ui-table/src/components/Table/TableFooter.tsx":{"bytesInOutput":1036},"packages/ui/react-ui-table/src/components/Table/TableHead.tsx":{"bytesInOutput":1985},"packages/ui/react-ui-table/src/components/Table/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx":{"bytesInOutput":3080},"packages/ui/react-ui-table/src/translations.ts":{"bytesInOutput":162},"packages/ui/react-ui-table/src/components/Cell/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/helpers.tsx":{"bytesInOutput":10768}},"bytes":35742}}}
1
+ {"inputs":{"packages/ui/react-ui-table/src/schema.ts":{"bytes":1836,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/components/ColumnMenu.tsx":{"bytes":28711,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/schema.ts","kind":"import-statement","original":"../schema"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableContext.tsx":{"bytes":2237,"imports":[{"path":"@radix-ui/react-context","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/theme.ts":{"bytes":9689,"imports":[{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/components/Cell/Cell.tsx":{"bytes":4832,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"../Table/TableContext"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableBody.tsx":{"bytes":7888,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"},{"path":"packages/ui/react-ui-table/src/components/Cell/Cell.tsx","kind":"import-statement","original":"../Cell/Cell"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableFooter.tsx":{"bytes":4719,"imports":[{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableHead.tsx":{"bytes":8764,"imports":[{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/Table.tsx":{"bytes":19178,"imports":[{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableBody.tsx","kind":"import-statement","original":"./TableBody"},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/components/Table/TableFooter.tsx","kind":"import-statement","original":"./TableFooter"},{"path":"packages/ui/react-ui-table/src/components/Table/TableHead.tsx","kind":"import-statement","original":"./TableHead"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/props.ts":{"bytes":2631,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/index.ts":{"bytes":557,"imports":[{"path":"packages/ui/react-ui-table/src/components/Table/Table.tsx","kind":"import-statement","original":"./Table"},{"path":"packages/ui/react-ui-table/src/components/Table/props.ts","kind":"import-statement","original":"./props"}],"format":"esm"},"packages/ui/react-ui-table/src/translations.ts":{"bytes":990,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx":{"bytes":11550,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/translations.ts","kind":"import-statement","original":"../../translations"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Cell/index.ts":{"bytes":494,"imports":[{"path":"packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx","kind":"import-statement","original":"./CellCombobox"}],"format":"esm"},"packages/ui/react-ui-table/src/components/index.ts":{"bytes":644,"imports":[{"path":"packages/ui/react-ui-table/src/components/ColumnMenu.tsx","kind":"import-statement","original":"./ColumnMenu"},{"path":"packages/ui/react-ui-table/src/components/Table/index.ts","kind":"import-statement","original":"./Table"},{"path":"packages/ui/react-ui-table/src/components/Cell/index.ts","kind":"import-statement","original":"./Cell"}],"format":"esm"},"packages/ui/react-ui-table/src/helpers.tsx":{"bytes":45127,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/formatDistanceToNow","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./components/Table/TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"./theme"}],"format":"esm"},"packages/ui/react-ui-table/src/types.ts":{"bytes":1830,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/index.ts":{"bytes":1017,"imports":[{"path":"packages/ui/react-ui-table/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-table/src/helpers.tsx","kind":"import-statement","original":"./helpers"},{"path":"packages/ui/react-ui-table/src/schema.ts","kind":"import-statement","original":"./schema"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"./theme"},{"path":"packages/ui/react-ui-table/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/ui/react-ui-table/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-table/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":77462},"packages/ui/react-ui-table/dist/lib/browser/index.mjs":{"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/formatDistanceToNow","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["CellCombobox","ColumnBuilder","ColumnMenu","ColumnPanel","Table","columnTypes","createColumnBuilder","currentRow","flushPadding","gridCellFocusRing","groupTh","headPadding","selectedRow","tableRoot","tbodyRoot","tbodyTr","tdContent","tdRoot","textPadding","tfootRoot","tfootTh","tfootTr","theadResizeRoot","theadResizeThumb","theadRoot","theadTh","theadTr","translations"],"entryPoint":"packages/ui/react-ui-table/src/index.ts","inputs":{"packages/ui/react-ui-table/src/components/ColumnMenu.tsx":{"bytesInOutput":7708},"packages/ui/react-ui-table/src/schema.ts":{"bytesInOutput":224},"packages/ui/react-ui-table/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/components/Table/Table.tsx":{"bytesInOutput":4447},"packages/ui/react-ui-table/src/components/Table/TableBody.tsx":{"bytesInOutput":1770},"packages/ui/react-ui-table/src/components/Table/TableContext.tsx":{"bytesInOutput":234},"packages/ui/react-ui-table/src/theme.ts":{"bytesInOutput":1992},"packages/ui/react-ui-table/src/components/Cell/Cell.tsx":{"bytesInOutput":980},"packages/ui/react-ui-table/src/components/Table/TableFooter.tsx":{"bytesInOutput":1036},"packages/ui/react-ui-table/src/components/Table/TableHead.tsx":{"bytesInOutput":1985},"packages/ui/react-ui-table/src/components/Table/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx":{"bytesInOutput":3080},"packages/ui/react-ui-table/src/translations.ts":{"bytesInOutput":162},"packages/ui/react-ui-table/src/components/Cell/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/helpers.tsx":{"bytesInOutput":10938}},"bytes":35990}}}
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/Table.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,eAAO,MAAM,KAAK,kEAuJjB,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/Table.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,eAAO,MAAM,KAAK,kEA4JjB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { type RowData, type RowSelectionState, type Table, type VisibilityState } from '@tanstack/react-table';
2
+ import { type ClassNameValue } from '@dxos/react-ui-types';
2
3
  import { type KeyValue, type TableColumnDef } from '../../types';
3
4
  export type TableFlags = Partial<{
4
5
  role: 'table' | 'grid' | 'treegrid';
@@ -28,6 +29,7 @@ export type TableProps<TData extends RowData> = TableFlags & TableCurrent<TData>
28
29
  defaultRowSelection: RowSelectionState;
29
30
  onRowSelectionChange: (rowSelection: RowSelectionState) => void;
30
31
  onDataSelectionChange: (dataSelection: TData[]) => void;
32
+ classNames: ClassNameValue;
31
33
  }>;
32
34
  export type { RowSelectionState, VisibilityState, TableColumnDef, KeyValue };
33
35
  export type TableContextValue<TData extends RowData> = TableFlags & TableCurrent<TData> & Pick<TableProps<TData>, 'keyAccessor'> & {
@@ -1 +1 @@
1
- {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/props.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,KAAK,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/G,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjE,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;IAC/B,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC;CACnC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,OAAO,IAAI,OAAO,CAAC;IAExD,YAAY,EAAE,KAAK,CAAC;IACpB,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,MAAM,UAAU,CAAC,KAAK,SAAS,OAAO,IAAI,UAAU,GACxD,YAAY,CAAC,KAAK,CAAC,GACnB,OAAO,CAAC;IACN,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IACjC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IACxD,gBAAgB,EAAE,eAAe,CAAC;IAElC,YAAY,EAAE,iBAAiB,CAAC;IAChC,mBAAmB,EAAE,iBAAiB,CAAC;IACvC,oBAAoB,EAAE,CAAC,YAAY,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAEhE,qBAAqB,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;CACzD,CAAC,CAAC;AAEL,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;AAE7E,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,OAAO,IAAI,UAAU,GAC/D,YAAY,CAAC,KAAK,CAAC,GACnB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,GAAG;IACvC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/props.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,KAAK,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/G,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjE,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;IAC/B,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC;CACnC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,OAAO,IAAI,OAAO,CAAC;IAExD,YAAY,EAAE,KAAK,CAAC;IACpB,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,MAAM,UAAU,CAAC,KAAK,SAAS,OAAO,IAAI,UAAU,GACxD,YAAY,CAAC,KAAK,CAAC,GACnB,OAAO,CAAC;IACN,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IACjC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IACxD,gBAAgB,EAAE,eAAe,CAAC;IAElC,YAAY,EAAE,iBAAiB,CAAC;IAChC,mBAAmB,EAAE,iBAAiB,CAAC;IACvC,oBAAoB,EAAE,CAAC,YAAY,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAEhE,qBAAqB,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IAExD,UAAU,EAAE,cAAc,CAAC;CAC5B,CAAC,CAAC;AAEL,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;AAE7E,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,OAAO,IAAI,UAAU,GAC/D,YAAY,CAAC,KAAK,CAAC,GACnB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,GAAG;IACvC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC"}
@@ -70,11 +70,11 @@ export declare class ColumnBuilder<TData extends RowData> {
70
70
  /**
71
71
  * PublicKey with tooltip.
72
72
  */
73
- key({ label, tooltip, ...props }?: KeyColumnOptions<TData>): Partial<ColumnDef<TData, PublicKey>>;
73
+ key({ label, tooltip, classNames, ...props }?: KeyColumnOptions<TData>): Partial<ColumnDef<TData, PublicKey>>;
74
74
  /**
75
75
  * Row selector
76
76
  */
77
- selectRow({ label, classNames, onUpdate, id, ...props }?: SelectRowColumnOptions<TData>): Parameters<ColumnHelper<TData>['display']>[0];
77
+ selectRow({ classNames, onUpdate, id }?: SelectRowColumnOptions<TData>): Parameters<ColumnHelper<TData>['display']>[0];
78
78
  /**
79
79
  * Switch
80
80
  */
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/helpers.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/helpers.tsx"],"names":[],"mappings":"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"}
@@ -2,5 +2,6 @@ export * from './components';
2
2
  export * from './helpers';
3
3
  export * from './schema';
4
4
  export * from './theme';
5
+ export { default as translations } from './translations';
5
6
  export * from './types';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,cAAc,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/theme.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAWzD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvE,eAAO,MAAM,UAAU,wCAAwC,CAAC;AAChE,eAAO,MAAM,WAAW,yCAAyC,CAAC;AAClE,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAC3C,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAE3C,eAAO,MAAM,iBAAiB,sFAAsF,CAAC;AAMrH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CACN,CAAC;AAEpD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CACH,CAAC;AAMrD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CAC8B,CAAC;AAExF,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAA2C,CAAC;AAEnG,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAOpD,CAAC;AAEJ,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,eAAe,CAI5D,CAAC;AAEJ,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,eAAe,CACQ,CAAC;AAMzE,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CAAkC,CAAC;AAE5F,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AACpE,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,iBAAiB,CAOtD,CAAC;AAMJ,eAAO,MAAM,MAAM,EAAE,iBAAiB,CAAC,eAAe,CACwD,CAAC;AAC/G,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAkC,CAAC;AAMlG,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CACH,CAAC;AAEvD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAAkC,CAAC;AAE1F,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CACQ,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/theme.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAWzD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvE,eAAO,MAAM,UAAU,wCAAwC,CAAC;AAChE,eAAO,MAAM,WAAW,yCAAyC,CAAC;AAClE,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAC3C,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAE3C,eAAO,MAAM,iBAAiB,sFAAsF,CAAC;AAMrH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CACN,CAAC;AAEpD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CACH,CAAC;AAMrD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CAC4C,CAAC;AAEtG,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAA2C,CAAC;AAEnG,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAOpD,CAAC;AAEJ,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,eAAe,CAI5D,CAAC;AAEJ,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,eAAe,CACQ,CAAC;AAMzE,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CAAkC,CAAC;AAE5F,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AACpE,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,iBAAiB,CAOtD,CAAC;AAMJ,eAAO,MAAM,MAAM,EAAE,iBAAiB,CAAC,eAAe,CACwD,CAAC;AAC/G,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAkC,CAAC;AAMlG,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CACH,CAAC;AAEvD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAAkC,CAAC;AAE1F,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CACQ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/react-ui-table",
3
- "version": "0.3.9-main.73167ec",
3
+ "version": "0.3.9-main.7501ea3",
4
4
  "description": "A table component.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -22,14 +22,14 @@
22
22
  "@tanstack/react-table": "^8.9.3",
23
23
  "date-fns": "^2.29.3",
24
24
  "lodash.defaultsdeep": "^4.6.1",
25
- "@dxos/invariant": "0.3.9-main.73167ec",
26
- "@dxos/react-ui": "0.3.9-main.73167ec",
27
- "@dxos/react-ui-searchlist": "0.3.9-main.73167ec",
28
- "@dxos/react-ui-theme": "0.3.9-main.73167ec",
29
- "@dxos/async": "0.3.9-main.73167ec",
30
- "@dxos/keys": "0.3.9-main.73167ec",
31
- "@dxos/react-ui-types": "0.3.9-main.73167ec",
32
- "@dxos/util": "0.3.9-main.73167ec"
25
+ "@dxos/async": "0.3.9-main.7501ea3",
26
+ "@dxos/invariant": "0.3.9-main.7501ea3",
27
+ "@dxos/keys": "0.3.9-main.7501ea3",
28
+ "@dxos/react-ui": "0.3.9-main.7501ea3",
29
+ "@dxos/react-ui-searchlist": "0.3.9-main.7501ea3",
30
+ "@dxos/react-ui-theme": "0.3.9-main.7501ea3",
31
+ "@dxos/util": "0.3.9-main.7501ea3",
32
+ "@dxos/react-ui-types": "0.3.9-main.7501ea3"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@faker-js/faker": "^8.0.2",
@@ -43,7 +43,7 @@
43
43
  "react-dom": "^18.2.0",
44
44
  "vite": "^4.3.9",
45
45
  "vite-plugin-turbosnap": "^1.0.2",
46
- "@dxos/react-ui-theme": "0.3.9-main.73167ec"
46
+ "@dxos/react-ui-theme": "0.3.9-main.7501ea3"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "@phosphor-icons/react": "^2.0.5",
@@ -38,6 +38,7 @@ export const Table = <TData extends RowData>(props: TableProps<TData>) => {
38
38
  fullWidth,
39
39
  debug,
40
40
  onDataSelectionChange,
41
+ classNames,
41
42
  } = props;
42
43
 
43
44
  const TableProvider = UntypedTableProvider as TypedTableProvider<TData>;
@@ -138,7 +139,11 @@ export const Table = <TData extends RowData>(props: TableProps<TData>) => {
138
139
  table={table}
139
140
  isGrid={role === 'grid' || role === 'treegrid'}
140
141
  >
141
- <table role={role} className={tableRoot(props)} {...(!fullWidth && { style: { width: table.getTotalSize() } })}>
142
+ <table
143
+ role={role}
144
+ className={tableRoot(props, classNames)}
145
+ {...(!fullWidth && { style: { width: table.getTotalSize() } })}
146
+ >
142
147
  <TableHead />
143
148
 
144
149
  {grouping.length === 0 && <TableBody rows={table.getRowModel().rows} />}
@@ -4,6 +4,8 @@
4
4
 
5
5
  import { type RowData, type RowSelectionState, type Table, type VisibilityState } from '@tanstack/react-table';
6
6
 
7
+ import { type ClassNameValue } from '@dxos/react-ui-types';
8
+
7
9
  import { type KeyValue, type TableColumnDef } from '../../types';
8
10
 
9
11
  export type TableFlags = Partial<{
@@ -41,6 +43,8 @@ export type TableProps<TData extends RowData> = TableFlags &
41
43
  onRowSelectionChange: (rowSelection: RowSelectionState) => void;
42
44
  // Derived from row selection
43
45
  onDataSelectionChange: (dataSelection: TData[]) => void;
46
+ // `table` element props
47
+ classNames: ClassNameValue;
44
48
  }>;
45
49
 
46
50
  export type { RowSelectionState, VisibilityState, TableColumnDef, KeyValue };
package/src/helpers.tsx CHANGED
@@ -13,13 +13,11 @@ import {
13
13
  } from '@tanstack/react-table';
14
14
  import format from 'date-fns/format';
15
15
  import formatDistanceToNow from 'date-fns/formatDistanceToNow';
16
- import defaultsDeep from 'lodash.defaultsdeep';
17
16
  import React, { useRef, useState } from 'react';
18
17
 
19
18
  import { type PublicKey } from '@dxos/keys';
20
19
  import { type ClassNameValue, Input, Tooltip } from '@dxos/react-ui';
21
20
  import { getSize, mx } from '@dxos/react-ui-theme';
22
- import { stripUndefinedValues } from '@dxos/util';
23
21
 
24
22
  import { CellCombobox } from './components';
25
23
  import { useTableContext } from './components/Table/TableContext';
@@ -32,6 +30,7 @@ export const createColumnBuilder = <TData extends RowData>() => ({
32
30
  builder: new ColumnBuilder<TData>(),
33
31
  });
34
32
 
33
+ // TODO(thure): This interface is redundant, e.g. `classNames` == `meta.cell.classNames`
35
34
  /**
36
35
  * NOTE: Can use `meta` for custom properties.
37
36
  */
@@ -82,22 +81,15 @@ export type IconColumnOptions<TData extends RowData> = BaseColumnOptions<TData,
82
81
  };
83
82
  };
84
83
 
85
- const defaults = <TData extends RowData, TValue>(
86
- options: Partial<ColumnDef<TData, TValue>>,
87
- ...sources: Partial<ColumnDef<TData, TValue>>[]
88
- ): Partial<ColumnDef<TData, TValue>> => {
89
- return stripUndefinedValues(defaultsDeep({}, options, ...sources));
90
- };
91
-
92
84
  const ComboboxBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, TData>) => {
93
85
  const { model, onUpdate } = cellContext.column.columnDef.meta as ColumnMeta<TData, TData>;
94
- return (
86
+ return model ? (
95
87
  <CellCombobox<TData>
96
- model={model!}
88
+ model={model}
97
89
  value={cellContext.getValue()}
98
90
  onValueChange={(value) => onUpdate?.(cellContext.row.original, cellContext.column.id, value)}
99
91
  />
100
- );
92
+ ) : null;
101
93
  };
102
94
 
103
95
  const StringBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, string>) => {
@@ -245,12 +237,14 @@ export class ColumnBuilder<TData extends RowData> {
245
237
  onUpdate,
246
238
  ...props
247
239
  }: ComboboxColumnOptions<TData>): Partial<ColumnDef<TData, any>> {
248
- return defaults(props, {
240
+ return {
241
+ ...props,
249
242
  minSize: 100,
250
243
  meta: {
244
+ ...props.meta,
251
245
  model,
252
246
  onUpdate,
253
- cell: { classNames },
247
+ cell: { classNames, ...props.meta?.cell },
254
248
  },
255
249
  header: (column) => {
256
250
  return label ?? column.header.id;
@@ -262,7 +256,7 @@ export class ColumnBuilder<TData extends RowData> {
262
256
  const cellValue = cellContext.getValue();
263
257
  return <div className={mx('truncate', classNames)}>{cellValue ? model?.getText(cellValue) : ''}</div>;
264
258
  },
265
- });
259
+ };
266
260
  }
267
261
 
268
262
  /**
@@ -271,9 +265,14 @@ export class ColumnBuilder<TData extends RowData> {
271
265
  string({ label, classNames, onUpdate, ...props }: StringColumnOptions<TData> = {}): Partial<
272
266
  ColumnDef<TData, string>
273
267
  > {
274
- return defaults(props, {
268
+ return {
269
+ ...props,
275
270
  minSize: 100,
276
- meta: { onUpdate, cell: { classNames } },
271
+ meta: {
272
+ ...props.meta,
273
+ onUpdate,
274
+ cell: { ...props.meta?.cell, classNames },
275
+ },
277
276
  // TODO(burdon): Default.
278
277
  header: (column) => {
279
278
  return label ?? column.header.id;
@@ -284,7 +283,7 @@ export class ColumnBuilder<TData extends RowData> {
284
283
  const value = cell.getValue();
285
284
  return <div className={mx('truncate', textPadding, classNames)}>{value}</div>;
286
285
  },
287
- });
286
+ };
288
287
  }
289
288
 
290
289
  /**
@@ -293,13 +292,20 @@ export class ColumnBuilder<TData extends RowData> {
293
292
  number({ label, minSize, classNames, digits, onUpdate, ...props }: NumberColumnOptions<TData> = {}): Partial<
294
293
  ColumnDef<TData, number>
295
294
  > {
296
- return defaults(props, {
295
+ return {
296
+ ...props,
297
297
  size: 100,
298
298
  minSize: 100,
299
- meta: { onUpdate, digits, header: { classNames: 'text-end' }, cell: { classNames } },
299
+ meta: {
300
+ ...props.meta,
301
+ onUpdate,
302
+ digits,
303
+ header: { classNames: 'text-end', ...props.meta?.header },
304
+ cell: { ...props.meta?.cell, classNames },
305
+ },
300
306
  header: (cell) => label ?? cell.header.id,
301
307
  cell: NumberBuilderCell,
302
- });
308
+ };
303
309
  }
304
310
 
305
311
  /**
@@ -309,10 +315,11 @@ export class ColumnBuilder<TData extends RowData> {
309
315
  date({ label, format: formatSpec, relative, classNames, ...props }: DateColumnOptions<TData> = {}): Partial<
310
316
  ColumnDef<TData, Date>
311
317
  > {
312
- return defaults(props, {
318
+ return {
319
+ ...props,
313
320
  size: 220, // TODO(burdon): Depends on format.
314
321
  minSize: 100,
315
- meta: { cell: { classNames } },
322
+ meta: { ...props.meta, cell: { ...props.meta?.cell, classNames } },
316
323
  header: (cell) => label ?? cell.header.id,
317
324
  cell: (cell) => {
318
325
  const value = cell.getValue();
@@ -332,17 +339,18 @@ export class ColumnBuilder<TData extends RowData> {
332
339
  return null;
333
340
  }
334
341
  },
335
- });
342
+ };
336
343
  }
337
344
 
338
345
  /**
339
346
  * PublicKey with tooltip.
340
347
  */
341
- key({ label, tooltip, ...props }: KeyColumnOptions<TData> = {}): Partial<ColumnDef<TData, PublicKey>> {
342
- return defaults(props, {
348
+ key({ label, tooltip, classNames, ...props }: KeyColumnOptions<TData> = {}): Partial<ColumnDef<TData, PublicKey>> {
349
+ return {
350
+ ...props,
343
351
  size: 94,
344
352
  minSize: 94,
345
- meta: { cell: { classNames: ['font-mono', textPadding] } },
353
+ meta: { ...props.meta, cell: { ...props.meta?.cell, classNames: ['font-mono', textPadding, classNames] } },
346
354
  header: (cell) => label ?? cell.header.id,
347
355
  cell: (cell) => {
348
356
  const value = cell.getValue();
@@ -375,19 +383,15 @@ export class ColumnBuilder<TData extends RowData> {
375
383
  </Tooltip.Provider>
376
384
  );
377
385
  },
378
- });
386
+ };
379
387
  }
380
388
 
381
389
  /**
382
390
  * Row selector
383
391
  */
384
- selectRow({
385
- label,
386
- classNames,
387
- onUpdate,
388
- id = 'selectRow',
389
- ...props
390
- }: SelectRowColumnOptions<TData> = {}): Parameters<ColumnHelper<TData>['display']>[0] {
392
+ selectRow({ classNames, onUpdate, id = 'selectRow' }: SelectRowColumnOptions<TData> = {}): Parameters<
393
+ ColumnHelper<TData>['display']
394
+ >[0] {
391
395
  return {
392
396
  id,
393
397
  size: 32,
@@ -418,13 +422,14 @@ export class ColumnBuilder<TData extends RowData> {
418
422
  switch({ label, classNames, onUpdate, ...props }: SwitchColumnOptions<TData> = {}): Partial<
419
423
  ColumnDef<TData, boolean>
420
424
  > {
421
- return defaults(props, {
425
+ return {
426
+ ...props,
422
427
  size: 50,
423
428
  minSize: 50,
424
- meta: { onUpdate, cell: { classNames: [textPadding, classNames] } },
429
+ meta: { ...props.meta, onUpdate, cell: { ...props.meta?.cell, classNames: [textPadding, classNames] } },
425
430
  header: (column) => label ?? column.header.id,
426
431
  cell: SwitchBuilderCell,
427
- });
432
+ };
428
433
  }
429
434
 
430
435
  /**
@@ -433,7 +438,8 @@ export class ColumnBuilder<TData extends RowData> {
433
438
  icon({ label, size, on, off, ...props }: IconColumnOptions<TData> = {}): Partial<ColumnDef<TData, boolean>> {
434
439
  const IconOn = on?.Icon ?? Check;
435
440
  const IconOff = off?.Icon ?? X;
436
- return defaults(props, {
441
+ return {
442
+ ...props,
437
443
  size: size ?? 32,
438
444
  header: (column) => <div className={'justify-center'}>{label ?? column.header.id}</div>,
439
445
  cell: (cell) => {
@@ -446,6 +452,6 @@ export class ColumnBuilder<TData extends RowData> {
446
452
  return null;
447
453
  }
448
454
  },
449
- });
455
+ };
450
456
  }
451
457
  }
package/src/index.ts CHANGED
@@ -6,4 +6,5 @@ export * from './components';
6
6
  export * from './helpers';
7
7
  export * from './schema';
8
8
  export * from './theme';
9
+ export { default as translations } from './translations';
9
10
  export * from './types';
package/src/theme.ts CHANGED
@@ -44,7 +44,7 @@ export const groupTh: ComponentFunction<TableStyleProps> = (_props, ...etc) =>
44
44
  export type TheadStyleProps = Partial<TableFlags>;
45
45
 
46
46
  export const theadRoot: ComponentFunction<TheadStyleProps> = ({ header }, ...etc) =>
47
- mx(header ? 'sticky block-start-0 z-10' : 'collapse', header && fixedSurface, ...etc);
47
+ mx(header ? 'sticky block-start-[--sticky-top] z-[1]' : 'collapse', header && fixedSurface, ...etc);
48
48
 
49
49
  export const theadTr: ComponentFunction<TheadStyleProps> = (_props, ...etc) => mx('group', ...etc);
50
50