All Downloads are FREE. Search and download functionalities are using the official Maven repository.

package.build.lib.features.Grouping.js.map Maven / Gradle / Ivy

The newest version!
{"version":3,"file":"Grouping.js","sources":["../../../src/features/Grouping.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { BuiltInAggregationFn, aggregationFns } from '../aggregationFns'\nimport { TableFeature } from '../core/table'\nimport {\n  Cell,\n  Column,\n  OnChangeFn,\n  Table,\n  Row,\n  Updater,\n  ColumnDefTemplate,\n  RowData,\n  AggregationFns,\n} from '../types'\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport type GroupingState = string[]\n\nexport interface GroupingTableState {\n  grouping: GroupingState\n}\n\nexport type AggregationFn = (\n  columnId: string,\n  leafRows: Row[],\n  childRows: Row[]\n) => any\n\nexport type CustomAggregationFns = Record>\n\nexport type AggregationFnOption =\n  | 'auto'\n  | keyof AggregationFns\n  | BuiltInAggregationFn\n  | AggregationFn\n\nexport interface GroupingColumnDef {\n  aggregationFn?: AggregationFnOption\n  aggregatedCell?: ColumnDefTemplate<\n    ReturnType['getContext']>\n  >\n  enableGrouping?: boolean\n  getGroupingValue?: (row: TData) => any\n}\n\nexport interface GroupingColumn {\n  getCanGroup: () => boolean\n  getIsGrouped: () => boolean\n  getGroupedIndex: () => number\n  toggleGrouping: () => void\n  getToggleGroupingHandler: () => () => void\n  getAutoAggregationFn: () => AggregationFn | undefined\n  getAggregationFn: () => AggregationFn | undefined\n}\n\nexport interface GroupingRow {\n  groupingColumnId?: string\n  groupingValue?: unknown\n  getIsGrouped: () => boolean\n  getGroupingValue: (columnId: string) => unknown\n  _groupingValuesCache: Record\n}\n\nexport interface GroupingCell {\n  getIsGrouped: () => boolean\n  getIsPlaceholder: () => boolean\n  getIsAggregated: () => boolean\n}\n\nexport interface ColumnDefaultOptions {\n  // Column\n  onGroupingChange: OnChangeFn\n  enableGrouping: boolean\n}\n\ninterface GroupingOptionsBase {\n  manualGrouping?: boolean\n  onGroupingChange?: OnChangeFn\n  enableGrouping?: boolean\n  getGroupedRowModel?: (table: Table) => () => RowModel\n  groupedColumnMode?: false | 'reorder' | 'remove'\n}\n\ntype ResolvedAggregationFns = keyof AggregationFns extends never\n  ? {\n      aggregationFns?: Record>\n    }\n  : {\n      aggregationFns: Record>\n    }\n\nexport interface GroupingOptions\n  extends GroupingOptionsBase,\n    ResolvedAggregationFns {}\n\nexport type GroupingColumnMode = false | 'reorder' | 'remove'\n\nexport interface GroupingInstance {\n  setGrouping: (updater: Updater) => void\n  resetGrouping: (defaultState?: boolean) => void\n  getPreGroupedRowModel: () => RowModel\n  getGroupedRowModel: () => RowModel\n  _getGroupedRowModel?: () => RowModel\n}\n\n//\n\nexport const Grouping: TableFeature = {\n  getDefaultColumnDef: (): GroupingColumnDef<\n    TData,\n    unknown\n  > => {\n    return {\n      aggregatedCell: props => (props.getValue() as any)?.toString?.() ?? null,\n      aggregationFn: 'auto',\n    }\n  },\n\n  getInitialState: (state): GroupingTableState => {\n    return {\n      grouping: [],\n      ...state,\n    }\n  },\n\n  getDefaultOptions: (\n    table: Table\n  ): GroupingOptions => {\n    return {\n      onGroupingChange: makeStateUpdater('grouping', table),\n      groupedColumnMode: 'reorder',\n    }\n  },\n\n  createColumn: (\n    column: Column,\n    table: Table\n  ): GroupingColumn => {\n    return {\n      toggleGrouping: () => {\n        table.setGrouping(old => {\n          // Find any existing grouping for this column\n          if (old?.includes(column.id)) {\n            return old.filter(d => d !== column.id)\n          }\n\n          return [...(old ?? []), column.id]\n        })\n      },\n\n      getCanGroup: () => {\n        return (\n          column.columnDef.enableGrouping ??\n          true ??\n          table.options.enableGrouping ??\n          true ??\n          !!column.accessorFn\n        )\n      },\n\n      getIsGrouped: () => {\n        return table.getState().grouping?.includes(column.id)\n      },\n\n      getGroupedIndex: () => table.getState().grouping?.indexOf(column.id),\n\n      getToggleGroupingHandler: () => {\n        const canGroup = column.getCanGroup()\n\n        return () => {\n          if (!canGroup) return\n          column.toggleGrouping()\n        }\n      },\n      getAutoAggregationFn: () => {\n        const firstRow = table.getCoreRowModel().flatRows[0]\n\n        const value = firstRow?.getValue(column.id)\n\n        if (typeof value === 'number') {\n          return aggregationFns.sum\n        }\n\n        if (Object.prototype.toString.call(value) === '[object Date]') {\n          return aggregationFns.extent\n        }\n      },\n      getAggregationFn: () => {\n        if (!column) {\n          throw new Error()\n        }\n\n        return isFunction(column.columnDef.aggregationFn)\n          ? column.columnDef.aggregationFn\n          : column.columnDef.aggregationFn === 'auto'\n          ? column.getAutoAggregationFn()\n          : table.options.aggregationFns?.[\n              column.columnDef.aggregationFn as string\n            ] ??\n            aggregationFns[\n              column.columnDef.aggregationFn as BuiltInAggregationFn\n            ]\n      },\n    }\n  },\n\n  createTable: (\n    table: Table\n  ): GroupingInstance => {\n    return {\n      setGrouping: updater => table.options.onGroupingChange?.(updater),\n\n      resetGrouping: defaultState => {\n        table.setGrouping(\n          defaultState ? [] : table.initialState?.grouping ?? []\n        )\n      },\n\n      getPreGroupedRowModel: () => table.getFilteredRowModel(),\n      getGroupedRowModel: () => {\n        if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n          table._getGroupedRowModel = table.options.getGroupedRowModel(table)\n        }\n\n        if (table.options.manualGrouping || !table._getGroupedRowModel) {\n          return table.getPreGroupedRowModel()\n        }\n\n        return table._getGroupedRowModel()\n      },\n    }\n  },\n\n  createRow: (\n    row: Row,\n    table: Table\n  ): GroupingRow => {\n    return {\n      getIsGrouped: () => !!row.groupingColumnId,\n      getGroupingValue: columnId => {\n        if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n          return row._groupingValuesCache[columnId]\n        }\n\n        const column = table.getColumn(columnId)\n\n        if (!column?.columnDef.getGroupingValue) {\n          return row.getValue(columnId)\n        }\n\n        row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(\n          row.original\n        )\n\n        return row._groupingValuesCache[columnId]\n      },\n      _groupingValuesCache: {},\n    }\n  },\n\n  createCell: (\n    cell: Cell,\n    column: Column,\n    row: Row,\n    table: Table\n  ): GroupingCell => {\n    const getRenderValue = () =>\n      cell.getValue() ?? table.options.renderFallbackValue\n\n    return {\n      getIsGrouped: () =>\n        column.getIsGrouped() && column.id === row.groupingColumnId,\n      getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),\n      getIsAggregated: () =>\n        !cell.getIsGrouped() &&\n        !cell.getIsPlaceholder() &&\n        !!row.subRows?.length,\n    }\n  },\n}\n\nexport function orderColumns(\n  leafColumns: Column[],\n  grouping: string[],\n  groupedColumnMode?: GroupingColumnMode\n) {\n  if (!grouping?.length || !groupedColumnMode) {\n    return leafColumns\n  }\n\n  const nonGroupingColumns = leafColumns.filter(\n    col => !grouping.includes(col.id)\n  )\n\n  if (groupedColumnMode === 'remove') {\n    return nonGroupingColumns\n  }\n\n  const groupingColumns = grouping\n    .map(g => leafColumns.find(col => col.id === g)!)\n    .filter(Boolean)\n\n  return [...groupingColumns, ...nonGroupingColumns]\n}\n"],"names":["Grouping","getDefaultColumnDef","aggregatedCell","props","_toString","_props$getValue","getValue","toString","aggregationFn","getInitialState","state","grouping","getDefaultOptions","table","onGroupingChange","makeStateUpdater","groupedColumnMode","createColumn","column","toggleGrouping","setGrouping","old","includes","id","filter","d","getCanGroup","_ref","_ref2","_ref3","_column$columnDef$ena","columnDef","enableGrouping","options","accessorFn","getIsGrouped","_table$getState$group","getState","getGroupedIndex","_table$getState$group2","indexOf","getToggleGroupingHandler","canGroup","getAutoAggregationFn","firstRow","getCoreRowModel","flatRows","value","aggregationFns","sum","Object","prototype","call","extent","getAggregationFn","_table$options$aggreg","_table$options$aggreg2","Error","isFunction","createTable","updater","resetGrouping","defaultState","_table$initialState$g","_table$initialState","initialState","getPreGroupedRowModel","getFilteredRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","createRow","row","groupingColumnId","getGroupingValue","columnId","_groupingValuesCache","hasOwnProperty","getColumn","original","createCell","cell","getIsPlaceholder","getIsAggregated","_row$subRows","subRows","length","orderColumns","leafColumns","nonGroupingColumns","col","groupingColumns","map","g","find","Boolean"],"mappings":"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"}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy