{"version":3,"file":"index.mjs","sources":["../../src/utils.ts","../../src/core/column.ts","../../src/core/headers.ts","../../src/features/ColumnSizing.ts","../../src/features/Expanding.ts","../../src/filterFns.ts","../../src/features/Filters.ts","../../src/aggregationFns.ts","../../src/features/Grouping.ts","../../src/features/Ordering.ts","../../src/features/Pagination.ts","../../src/features/Pinning.ts","../../src/features/RowSelection.ts","../../src/sortingFns.ts","../../src/features/Sorting.ts","../../src/features/Visibility.ts","../../src/core/table.ts","../../src/core/cell.ts","../../src/core/row.ts","../../src/columnHelper.ts","../../src/utils/getCoreRowModel.ts","../../src/utils/filterRowsUtils.ts","../../src/utils/getFilteredRowModel.ts","../../src/utils/getFacetedRowModel.ts","../../src/utils/getFacetedUniqueValues.ts","../../src/utils/getFacetedMinMaxValues.ts","../../src/utils/getSortedRowModel.ts","../../src/utils/getGroupedRowModel.ts","../../src/utils/getExpandedRowModel.ts","../../src/utils/getPaginationRowModel.ts"],"sourcesContent":["import { TableState, Updater } from './types'\r\n\r\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\r\nexport type RequiredKeys<T, K extends keyof T> = Omit<T, K> &\r\n  Required<Pick<T, K>>\r\nexport type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<\r\n  T,\r\n  keyof U\r\n> &\r\n  U\r\n\r\nexport type UnionToIntersection<T> = (\r\n  T extends any ? (x: T) => any : never\r\n) extends (x: infer R) => any\r\n  ? R\r\n  : never\r\n\r\nexport type IsAny<T, Y, N> = 1 extends 0 & T ? Y : N\r\nexport type IsKnown<T, Y, N> = unknown extends T ? N : Y\r\n\r\ntype ComputeRange<\r\n  N extends number,\r\n  Result extends Array<unknown> = []\r\n> = Result['length'] extends N\r\n  ? Result\r\n  : ComputeRange<N, [...Result, Result['length']]>\r\ntype Index40 = ComputeRange<40>[number]\r\n\r\n// Is this type a tuple?\r\ntype IsTuple<T> = T extends readonly any[] & { length: infer Length }\r\n  ? Length extends Index40\r\n    ? T\r\n    : never\r\n  : never\r\n\r\n// If this type is a tuple, what indices are allowed?\r\ntype AllowedIndexes<\r\n  Tuple extends ReadonlyArray<any>,\r\n  Keys extends number = never\r\n> = Tuple extends readonly []\r\n  ? Keys\r\n  : Tuple extends readonly [infer _, ...infer Tail]\r\n  ? AllowedIndexes<Tail, Keys | Tail['length']>\r\n  : Keys\r\n\r\nexport type DeepKeys<T> = unknown extends T\r\n  ? keyof T\r\n  : object extends T\r\n  ? string\r\n  : T extends readonly any[] & IsTuple<T>\r\n  ? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>>\r\n  : T extends any[]\r\n  ? never & 'Dynamic length array indexing is not supported'\r\n  : T extends Date\r\n  ? never\r\n  : T extends object\r\n  ? (keyof T & string) | DeepKeysPrefix<T, keyof T>\r\n  : never\r\n\r\ntype DeepKeysPrefix<T, TPrefix> = TPrefix extends keyof T & (number | string)\r\n  ? `${TPrefix}.${DeepKeys<T[TPrefix]> & string}`\r\n  : never\r\n\r\nexport type DeepValue<T, TProp> = T extends Record<string | number, any>\r\n  ? TProp extends `${infer TBranch}.${infer TDeepProp}`\r\n    ? DeepValue<T[TBranch], TDeepProp>\r\n    : T[TProp & string]\r\n  : never\r\n\r\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\r\n\r\nexport type Getter<TValue> = <TTValue = TValue>() => NoInfer<TTValue>\r\n\r\n///\r\n\r\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\r\n  return typeof updater === 'function'\r\n    ? (updater as (input: T) => T)(input)\r\n    : updater\r\n}\r\n\r\nexport function noop() {\r\n  //\r\n}\r\n\r\nexport function makeStateUpdater<K extends keyof TableState>(\r\n  key: K,\r\n  instance: unknown\r\n) {\r\n  return (updater: Updater<TableState[K]>) => {\r\n    ;(instance as any).setState(<TTableState>(old: TTableState) => {\r\n      return {\r\n        ...old,\r\n        [key]: functionalUpdate(updater, (old as any)[key]),\r\n      }\r\n    })\r\n  }\r\n}\r\n\r\ntype AnyFunction = (...args: any) => any\r\n\r\nexport function isFunction<T extends AnyFunction>(d: any): d is T {\r\n  return d instanceof Function\r\n}\r\n\r\nexport function flattenBy<TNode>(\r\n  arr: TNode[],\r\n  getChildren: (item: TNode) => TNode[]\r\n) {\r\n  const flat: TNode[] = []\r\n\r\n  const recurse = (subArr: TNode[]) => {\r\n    subArr.forEach(item => {\r\n      flat.push(item)\r\n      const children = getChildren(item)\r\n      if (children?.length) {\r\n        recurse(children)\r\n      }\r\n    })\r\n  }\r\n\r\n  recurse(arr)\r\n\r\n  return flat\r\n}\r\n\r\nexport function memo<TDeps extends readonly any[], TResult>(\r\n  getDeps: () => [...TDeps],\r\n  fn: (...args: NoInfer<[...TDeps]>) => TResult,\r\n  opts: {\r\n    key: any\r\n    debug?: () => any\r\n    onChange?: (result: TResult) => void\r\n  }\r\n): () => TResult {\r\n  let deps: any[] = []\r\n  let result: TResult | undefined\r\n\r\n  return () => {\r\n    let depTime: number\r\n    if (opts.key && opts.debug) depTime = Date.now()\r\n\r\n    const newDeps = getDeps()\r\n\r\n    const depsChanged =\r\n      newDeps.length !== deps.length ||\r\n      newDeps.some((dep: any, index: number) => deps[index] !== dep)\r\n\r\n    if (!depsChanged) {\r\n      return result!\r\n    }\r\n\r\n    deps = newDeps\r\n\r\n    let resultTime: number\r\n    if (opts.key && opts.debug) resultTime = Date.now()\r\n\r\n    result = fn(...newDeps)\r\n    opts?.onChange?.(result)\r\n\r\n    if (opts.key && opts.debug) {\r\n      if (opts?.debug()) {\r\n        const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\r\n        const resultEndTime = Math.round((Date.now() - resultTime!) * 100) / 100\r\n        const resultFpsPercentage = resultEndTime / 16\r\n\r\n        const pad = (str: number | string, num: number) => {\r\n          str = String(str)\r\n          while (str.length < num) {\r\n            str = ' ' + str\r\n          }\r\n          return str\r\n        }\r\n\r\n        console.info(\r\n          `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\r\n          `\r\n            font-size: .6rem;\r\n            font-weight: bold;\r\n            color: hsl(${Math.max(\r\n              0,\r\n              Math.min(120 - 120 * resultFpsPercentage, 120)\r\n            )}deg 100% 31%);`,\r\n          opts?.key\r\n        )\r\n      }\r\n    }\r\n\r\n    return result!\r\n  }\r\n}\r\n","import {\n  Column,\n  Table,\n  AccessorFn,\n  ColumnDef,\n  RowData,\n  ColumnDefResolved,\n} from '../types'\nimport { memo } from '../utils'\n\nexport interface CoreColumn<TData extends RowData, TValue> {\n  id: string\n  depth: number\n  accessorFn?: AccessorFn<TData, TValue>\n  columnDef: ColumnDef<TData, TValue>\n  columns: Column<TData, TValue>[]\n  parent?: Column<TData, TValue>\n  getFlatColumns: () => Column<TData, TValue>[]\n  getLeafColumns: () => Column<TData, TValue>[]\n  rowSpanGrow?: number\n}\n\nexport function createColumn<TData extends RowData, TValue>(\n  table: Table<TData>,\n  columnDef: ColumnDef<TData, TValue>,\n  depth: number,\n  parent?: Column<TData, TValue>\n): Column<TData, TValue> {\n  const defaultColumn = table._getDefaultColumnDef()\n\n  const resolvedColumnDef = {\n    ...defaultColumn,\n    ...columnDef,\n  } as ColumnDefResolved<TData>\n  const rowSpanGrow = resolvedColumnDef.rowSpanGrow\n  const accessorKey = resolvedColumnDef.accessorKey\n\n  let id =\n    resolvedColumnDef.id ??\n    (accessorKey ? accessorKey.replace('.', '_') : undefined) ??\n    (typeof resolvedColumnDef.header === 'string'\n      ? resolvedColumnDef.header\n      : undefined)\n\n  let accessorFn: AccessorFn<TData> | undefined\n\n  if (resolvedColumnDef.accessorFn) {\n    accessorFn = resolvedColumnDef.accessorFn\n  } else if (accessorKey) {\n    // Support deep accessor keys\n    if (accessorKey.includes('.')) {\n      accessorFn = (originalRow: TData) => {\n        let result = originalRow as Record<string, any>\n\n        for (const key of accessorKey.split('.')) {\n          result = result?.[key]\n          if (process.env.NODE_ENV !== 'production' && result === undefined) {\n            console.warn(\n              `\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`\n            )\n          }\n        }\n\n        return result\n      }\n    } else {\n      accessorFn = (originalRow: TData) =>\n        (originalRow as any)[resolvedColumnDef.accessorKey]\n    }\n  }\n\n  if (!id) {\n    if (process.env.NODE_ENV !== 'production') {\n      throw new Error(\n        resolvedColumnDef.accessorFn\n          ? `Columns require an id when using an accessorFn`\n          : `Columns require an id when using a non-string header`\n      )\n    }\n    throw new Error()\n  }\n\n  let column: CoreColumn<TData, any> = {\n    id: `${String(id)}`,\n    accessorFn,\n    parent: parent as any,\n    depth,\n    rowSpanGrow,\n    columnDef: resolvedColumnDef as ColumnDef<TData, any>,\n    columns: [],\n    getFlatColumns: memo(\n      () => [true],\n      () => {\n        return [\n          column as Column<TData, TValue>,\n          ...column.columns?.flatMap(d => d.getFlatColumns()),\n        ]\n      },\n      {\n        key: process.env.NODE_ENV === 'production' && 'column.getFlatColumns',\n        debug: () => table.options.debugAll ?? table.options.debugColumns,\n      }\n    ),\n    getLeafColumns: memo(\n      () => [table._getOrderColumnsFn()],\n      orderColumns => {\n        if (column.columns?.length) {\n          let leafColumns = column.columns.flatMap(column =>\n            column.getLeafColumns()\n          )\n\n          return orderColumns(leafColumns)\n        }\n\n        return [column as Column<TData, TValue>]\n      },\n      {\n        key: process.env.NODE_ENV === 'production' && 'column.getLeafColumns',\n        debug: () => table.options.debugAll ?? table.options.debugColumns,\n      }\n    ),\n  }\n\n  column = table._features.reduce((obj, feature) => {\n    return Object.assign(obj, feature.createColumn?.(column, table))\n  }, column)\n\n  // Yes, we have to convert table to uknown, because we know more than the compiler here.\n  return column as Column<TData, TValue>\n}\n","import { RowData, Column, Header, HeaderGroup, Table } from '../types'\nimport { memo } from '../utils'\nimport { TableFeature } from './table'\n\nexport interface CoreHeaderGroup<TData extends RowData> {\n  id: string\n  depth: number\n  headers: Header<TData, unknown>[]\n}\n\nexport interface HeaderContext<TData, TValue> {\n  table: Table<TData>\n  header: Header<TData, TValue>\n  column: Column<TData, TValue>\n}\n\nexport interface CoreHeader<TData extends RowData, TValue> {\n  id: string\n  index: number\n  depth: number\n  column: Column<TData, TValue>\n  headerGroup: HeaderGroup<TData>\n  subHeaders: Header<TData, TValue>[]\n  parentHeaderId?: string\n  getParentHeader: () => Header<TData, unknown> | undefined\n  colSpan: number\n  rowSpan: number\n  isCover?: boolean\n  getLeafHeaders: () => Header<TData, unknown>[]\n  isPlaceholder: boolean\n  placeholderId?: string\n  getContext: () => HeaderContext<TData, TValue>\n}\n\nexport interface HeadersInstance<TData extends RowData> {\n  getHeaderGroups: () => HeaderGroup<TData>[]\n  getLeftHeaderGroups: () => HeaderGroup<TData>[]\n  getCenterHeaderGroups: () => HeaderGroup<TData>[]\n  getRightHeaderGroups: () => HeaderGroup<TData>[]\n\n  getFooterGroups: () => HeaderGroup<TData>[]\n  getLeftFooterGroups: () => HeaderGroup<TData>[]\n  getCenterFooterGroups: () => HeaderGroup<TData>[]\n  getRightFooterGroups: () => HeaderGroup<TData>[]\n\n  getFlatHeaders: () => Header<TData, unknown>[]\n  getLeftFlatHeaders: () => Header<TData, unknown>[]\n  getCenterFlatHeaders: () => Header<TData, unknown>[]\n  getRightFlatHeaders: () => Header<TData, unknown>[]\n\n  getLeafHeaders: () => Header<TData, unknown>[]\n  getLeftLeafHeaders: () => Header<TData, unknown>[]\n  getCenterLeafHeaders: () => Header<TData, unknown>[]\n  getRightLeafHeaders: () => Header<TData, unknown>[]\n}\n\n//\n\nfunction createHeader<TData extends RowData, TValue>(\n  table: Table<TData>,\n  column: Column<TData, TValue>,\n  options: {\n    id?: string\n    isPlaceholder?: boolean\n    placeholderId?: string\n    index: number\n    depth: number\n  }\n): Header<TData, TValue> {\n  const id = options.id ?? column.id\n\n  let header: CoreHeader<TData, TValue> = {\n    id,\n    column,\n    index: options.index,\n    isPlaceholder: !!options.isPlaceholder,\n    placeholderId: options.placeholderId,\n    depth: options.depth,\n    subHeaders: [],\n    getParentHeader: () => undefined,\n    colSpan: 0,\n    rowSpan: 0,\n    headerGroup: null!,\n    getLeafHeaders: (): Header<TData, unknown>[] => {\n      const leafHeaders: Header<TData, unknown>[] = []\n\n      const recurseHeader = (h: CoreHeader<TData, any>) => {\n        if (h.subHeaders && h.subHeaders.length) {\n          h.subHeaders.map(recurseHeader)\n        }\n        leafHeaders.push(h as Header<TData, unknown>)\n      }\n\n      recurseHeader(header)\n\n      return leafHeaders\n    },\n    getContext: () => ({\n      table,\n      header: header as Header<TData, TValue>,\n      column,\n    }),\n  }\n\n  table._features.forEach(feature => {\n    Object.assign(header, feature.createHeader?.(header, table))\n  })\n\n  return header as Header<TData, TValue>\n}\n\nexport const Headers: TableFeature = {\n  createTable: <TData extends RowData>(\n    table: Table<TData>\n  ): HeadersInstance<TData> => {\n    return {\n      // Header Groups\n\n      getHeaderGroups: memo(\n        () => [\n          table.getAllColumns(),\n          table.getVisibleLeafColumns(),\n          table.getState().columnPinning.left,\n          table.getState().columnPinning.right,\n        ],\n        (allColumns, leafColumns, left, right) => {\n          const leftColumns =\n            left\n              ?.map(columnId => leafColumns.find(d => d.id === columnId)!)\n              .filter(Boolean) ?? []\n\n          const rightColumns =\n            right\n              ?.map(columnId => leafColumns.find(d => d.id === columnId)!)\n              .filter(Boolean) ?? []\n\n          const centerColumns = leafColumns.filter(\n            column => !left?.includes(column.id) && !right?.includes(column.id)\n          )\n\n          const headerGroups = buildHeaderGroups(\n            allColumns,\n            [...leftColumns, ...centerColumns, ...rightColumns],\n            table\n          )\n\n          return headerGroups\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getHeaderGroups',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      getCenterHeaderGroups: memo(\n        () => [\n          table.getAllColumns(),\n          table.getVisibleLeafColumns(),\n          table.getState().columnPinning.left,\n          table.getState().columnPinning.right,\n        ],\n        (allColumns, leafColumns, left, right) => {\n          leafColumns = leafColumns.filter(\n            column => !left?.includes(column.id) && !right?.includes(column.id)\n          )\n          return buildHeaderGroups(allColumns, leafColumns, table, 'center')\n        },\n        {\n          key:\n            process.env.NODE_ENV === 'development' && 'getCenterHeaderGroups',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      getLeftHeaderGroups: memo(\n        () => [\n          table.getAllColumns(),\n          table.getVisibleLeafColumns(),\n          table.getState().columnPinning.left,\n        ],\n        (allColumns, leafColumns, left) => {\n          const orderedLeafColumns =\n            left\n              ?.map(columnId => leafColumns.find(d => d.id === columnId)!)\n              .filter(Boolean) ?? []\n\n          return buildHeaderGroups(\n            allColumns,\n            orderedLeafColumns,\n            table,\n            'left'\n          )\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getLeftHeaderGroups',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      getRightHeaderGroups: memo(\n        () => [\n          table.getAllColumns(),\n          table.getVisibleLeafColumns(),\n          table.getState().columnPinning.right,\n        ],\n        (allColumns, leafColumns, right) => {\n          const orderedLeafColumns =\n            right\n              ?.map(columnId => leafColumns.find(d => d.id === columnId)!)\n              .filter(Boolean) ?? []\n\n          return buildHeaderGroups(\n            allColumns,\n            orderedLeafColumns,\n            table,\n            'right'\n          )\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getRightHeaderGroups',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      // Footer Groups\n\n      getFooterGroups: memo(\n        () => [table.getHeaderGroups()],\n        headerGroups => {\n          return [...headerGroups].reverse()\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getFooterGroups',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      getLeftFooterGroups: memo(\n        () => [table.getLeftHeaderGroups()],\n        headerGroups => {\n          return [...headerGroups].reverse()\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getLeftFooterGroups',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      getCenterFooterGroups: memo(\n        () => [table.getCenterHeaderGroups()],\n        headerGroups => {\n          return [...headerGroups].reverse()\n        },\n        {\n          key:\n            process.env.NODE_ENV === 'development' && 'getCenterFooterGroups',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      getRightFooterGroups: memo(\n        () => [table.getRightHeaderGroups()],\n        headerGroups => {\n          return [...headerGroups].reverse()\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getRightFooterGroups',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      // Flat Headers\n\n      getFlatHeaders: memo(\n        () => [table.getHeaderGroups()],\n        headerGroups => {\n          return headerGroups\n            .map(headerGroup => {\n              return headerGroup.headers\n            })\n            .flat()\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getFlatHeaders',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      getLeftFlatHeaders: memo(\n        () => [table.getLeftHeaderGroups()],\n        left => {\n          return left\n            .map(headerGroup => {\n              return headerGroup.headers\n            })\n            .flat()\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getLeftFlatHeaders',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      getCenterFlatHeaders: memo(\n        () => [table.getCenterHeaderGroups()],\n        left => {\n          return left\n            .map(headerGroup => {\n              return headerGroup.headers\n            })\n            .flat()\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getCenterFlatHeaders',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      getRightFlatHeaders: memo(\n        () => [table.getRightHeaderGroups()],\n        left => {\n          return left\n            .map(headerGroup => {\n              return headerGroup.headers\n            })\n            .flat()\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getRightFlatHeaders',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      // Leaf Headers\n\n      getCenterLeafHeaders: memo(\n        () => [table.getCenterFlatHeaders()],\n        flatHeaders => {\n          return flatHeaders.filter(header => !header.subHeaders?.length)\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getCenterLeafHeaders',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      getLeftLeafHeaders: memo(\n        () => [table.getLeftFlatHeaders()],\n        flatHeaders => {\n          return flatHeaders.filter(header => !header.subHeaders?.length)\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getLeftLeafHeaders',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      getRightLeafHeaders: memo(\n        () => [table.getRightFlatHeaders()],\n        flatHeaders => {\n          return flatHeaders.filter(header => !header.subHeaders?.length)\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getRightLeafHeaders',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n\n      getLeafHeaders: memo(\n        () => [\n          table.getLeftHeaderGroups(),\n          table.getCenterHeaderGroups(),\n          table.getRightHeaderGroups(),\n        ],\n        (left, center, right) => {\n          return [\n            ...(left[0]?.headers ?? []),\n            ...(center[0]?.headers ?? []),\n            ...(right[0]?.headers ?? []),\n          ]\n            .map(header => {\n              return header.getLeafHeaders()\n            })\n            .flat()\n        },\n        {\n          key: process.env.NODE_ENV === 'development' && 'getLeafHeaders',\n          debug: () => table.options.debugAll ?? table.options.debugHeaders,\n        }\n      ),\n    }\n  },\n}\n\nexport function buildHeaderGroups<TData extends RowData>(\n  allColumns: Column<TData, unknown>[],\n  columnsToGroup: Column<TData, unknown>[],\n  table: Table<TData>,\n  headerFamily?: 'center' | 'left' | 'right'\n) {\n  // Find the max depth of the columns:\n  // build the leaf column row\n  // build each buffer row going up\n  //    placeholder for non-existent level\n  //    real column for existing level\n\n  let maxDepth = 0\n\n  const findMaxDepth = (columns: Column<TData, unknown>[], depth = 1) => {\n    maxDepth = Math.max(maxDepth, depth)\n\n    columns\n      .filter(column => column.getIsVisible())\n      .forEach(column => {\n        if (column.columns?.length) {\n          findMaxDepth(column.columns, depth + 1)\n        }\n      }, 0)\n  }\n  const filterHideColumns = (\n    columns: Column<TData, unknown>[]\n  ): Column<TData, unknown>[] => {\n    return columns.filter(column => {\n      if (column.columns?.length) {\n        return filterHideColumns(column.columns).length > 0\n      } else {\n        return column.getIsVisible()\n      }\n    })\n  }\n  const allShowColumns = filterHideColumns(allColumns)\n  findMaxDepth(allShowColumns)\n  let headerGroups: HeaderGroup<TData>[] = []\n\n  const createHeaderGroup = (\n    headersToGroup: Header<TData, unknown>[],\n    depth: number\n  ) => {\n    // The header group we are creating\n    const headerGroup: HeaderGroup<TData> = {\n      depth,\n      id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n      headers: [],\n    }\n\n    // The parent columns we're going to scan next\n    const pendingParentHeaders: Header<TData, unknown>[] = []\n\n    // Scan each column for parents\n    headersToGroup.forEach(headerToGroup => {\n      // What is the latest (last) parent column?\n\n      const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0]\n\n      const isLeafHeader = headerToGroup.column.depth === headerGroup.depth\n\n      let column: Column<TData, unknown>\n      let isPlaceholder = false\n\n      if (isLeafHeader && headerToGroup.column.parent) {\n        // The parent header is new\n        column = headerToGroup.column.parent\n      } else {\n        // The parent header is repeated\n        column = headerToGroup.column\n        isPlaceholder = true\n      }\n\n      if (\n        latestPendingParentHeader &&\n        latestPendingParentHeader?.column === column\n      ) {\n        // This column is repeated. Add it as a sub header to the next batch\n        if (depth > 0) {\n          headerToGroup.parentHeaderId = latestPendingParentHeader.id\n          headerToGroup.getParentHeader = () => latestPendingParentHeader\n        }\n        latestPendingParentHeader.subHeaders.push(headerToGroup)\n      } else {\n        // This is a new header. Let's create it\n        const header = createHeader(table, column, {\n          id: [headerFamily, depth, column.id, headerToGroup?.id]\n            .filter(Boolean)\n            .join('_'),\n          isPlaceholder,\n          placeholderId: isPlaceholder\n            ? `${pendingParentHeaders.filter(d => d.column === column).length}`\n            : undefined,\n          depth,\n          index: pendingParentHeaders.length,\n        })\n        if (depth > 0) {\n          headerToGroup.parentHeaderId = header.id\n          headerToGroup.getParentHeader = () => header\n        }\n\n        // Add the headerToGroup as a subHeader of the new header\n        header.subHeaders.push(headerToGroup)\n        // Add the new header to the pendingParentHeaders to get grouped\n        // in the next batch\n        pendingParentHeaders.push(header)\n      }\n\n      headerGroup.headers.push(headerToGroup)\n      headerToGroup.headerGroup = headerGroup\n    })\n\n    headerGroups.push(headerGroup)\n\n    if (depth > 0) {\n      createHeaderGroup(pendingParentHeaders, depth - 1)\n    }\n  }\n\n  const bottomHeaders = columnsToGroup.map((column, index) =>\n    createHeader(table, column, {\n      depth: maxDepth,\n      index,\n    })\n  )\n\n  createHeaderGroup(bottomHeaders, maxDepth - 1)\n  const leafHeaders = headerGroups[0]?.headers ?? []\n  leafHeaders.forEach(leafHeader => {\n    const colHeaders: Header<TData, unknown>[] = []\n    const recurseHeaders = function (header: Header<TData, unknown>) {\n      colHeaders.push(header)\n      const parentHeader = header.getParentHeader()\n      if (parentHeader) {\n        recurseHeaders(parentHeader)\n      }\n    }\n    recurseHeaders(leafHeader)\n    colHeaders.reverse()\n    const containerLength = maxDepth\n    const sumColumnDepth = Math.max(...colHeaders.map(h => h.column.depth)) + 1\n    const items: number[] = colHeaders.slice(0, sumColumnDepth).map(i => i.column.rowSpanGrow||0);\n    new Array(containerLength).fill(null).map(() => ({\n      rowSpan: 1,\n      isCover: false\n    })).map((item, i) => {\n      const sizeItems = items.map((i, k, arr) => {\n        // 待分配项目\n        const assignedItems: number[] = arr.filter(i => i);\n        if (assignedItems.length === 0) {\n          return 1;\n        }\n        // 可分配空间\n        const allocatableSpace = containerLength -\n          arr.filter(i => i === 0).length;\n        // 待分配空间\n        const assignedSpace = assignedItems.reduce((acc, i) => acc + i, 0);\n        if (i !== 0) {\n          console.log(\"allocatableSpace\", i, assignedSpace, allocatableSpace);\n\n          return Math.round((i / assignedSpace )* allocatableSpace);\n        } else {\n          return 1;\n        }\n      });\n      if (items.some(i => i > 0)) {\n        const sum = sizeItems.reduce((acc, i) => acc + i);\n        if (sum > containerLength) {\n          [...sizeItems].map((i, k) => ({\n            value: i,\n            index: k\n          })).sort((a, b) => a.value - b.value).forEach((i, k) => {\n            if (k < sum - containerLength) {\n              sizeItems[i.index] = i.value - 1;\n            }\n          });\n        } else if (sum < containerLength) {\n          sizeItems[sizeItems.length - 1] += containerLength - sum;\n        }\n        const allSizeItem = sizeItems.map(i => (new Array(i).fill(i).fill(0, 1))).flat()\n        if(allSizeItem[i]===0){\n          item.rowSpan = 0\n          item.isCover = true\n        } else {\n          item.rowSpan = allSizeItem[i]\n          item.isCover = false\n        }\n      }\n      return item\n    }).forEach((item, k) => {\n      const currentGrow =  colHeaders[k]\n      if(currentGrow){\n        currentGrow.rowSpan = item.rowSpan\n        currentGrow.isCover = item.isCover\n      }\n    })\n  })\n  headerGroups.reverse()\n  const recurseHeadersForSpans = (\n    headers: Header<TData, unknown>[]\n  ): { colSpan: number }[] => {\n    const filteredHeaders = headers.filter(header =>\n      header.column.getIsVisible()\n    )\n    return filteredHeaders.map(header => {\n      let colSpan = 0\n      if (header.subHeaders && header.subHeaders.length) {\n        recurseHeadersForSpans(header.subHeaders).forEach(\n          ({ colSpan: childColSpan }) => {\n            colSpan += childColSpan\n          }\n        )\n      } else {\n        colSpan = 1\n      }\n      header.colSpan = colSpan\n      return { colSpan }\n    })\n  }\n  recurseHeadersForSpans(headerGroups[0]?.headers ?? [])\n  return headerGroups\n}\n","import { TableFeature } from '../core/table'\r\nimport { RowData, Column, Header, OnChangeFn, Table, Updater } from '../types'\r\nimport { makeStateUpdater } from '../utils'\r\nimport { ColumnPinningPosition } from './Pinning'\r\n\r\n//\r\n\r\nexport interface ColumnSizingTableState {\r\n  columnSizing: ColumnSizingState\r\n  columnSizingInfo: ColumnSizingInfoState\r\n}\r\n\r\nexport type ColumnSizingState = Record<string, number>\r\n\r\nexport interface ColumnSizingInfoState {\r\n  startOffset: null | number\r\n  startSize: null | number\r\n  deltaOffset: null | number\r\n  deltaPercentage: null | number\r\n  isResizingColumn: false | string\r\n  columnSizingStart: [string, number][]\r\n}\r\n\r\nexport type ColumnResizeMode = 'onChange' | 'onEnd'\r\n\r\nexport interface ColumnSizingOptions {\r\n  enableColumnResizing?: boolean\r\n  columnResizeMode?: ColumnResizeMode\r\n  onColumnSizingChange?: OnChangeFn<ColumnSizingState>\r\n  onColumnSizingInfoChange?: OnChangeFn<ColumnSizingInfoState>\r\n}\r\n\r\nexport interface ColumnSizingDefaultOptions {\r\n  columnResizeMode: ColumnResizeMode\r\n  onColumnSizingChange: OnChangeFn<ColumnSizingState>\r\n  onColumnSizingInfoChange: OnChangeFn<ColumnSizingInfoState>\r\n}\r\n\r\nexport interface ColumnSizingInstance {\r\n  setColumnSizing: (updater: Updater<ColumnSizingState>) => void\r\n  setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void\r\n  resetColumnSizing: (defaultState?: boolean) => void\r\n  resetHeaderSizeInfo: (defaultState?: boolean) => void\r\n  getTotalSize: () => number\r\n  getLeftTotalSize: () => number\r\n  getCenterTotalSize: () => number\r\n  getRightTotalSize: () => number\r\n}\r\n\r\nexport interface ColumnSizingColumnDef {\r\n  enableResizing?: boolean\r\n  size?: number\r\n  minSize?: number\r\n  maxSize?: number\r\n}\r\n\r\nexport interface ColumnSizingColumn {\r\n  getSize: () => number\r\n  getStart: (position?: ColumnPinningPosition) => number\r\n  getCanResize: () => boolean\r\n  getIsResizing: () => boolean\r\n  resetSize: () => void\r\n}\r\n\r\nexport interface ColumnSizingHeader {\r\n  getSize: () => number\r\n  getStart: (position?: ColumnPinningPosition) => number\r\n  getResizeHandler: () => (event: unknown) => void\r\n}\r\n\r\n//\r\n\r\nexport const defaultColumnSizing = {\r\n  size: 150,\r\n  minSize: 20,\r\n  maxSize: Number.MAX_SAFE_INTEGER,\r\n}\r\n\r\nconst getDefaultColumnSizingInfoState = (): ColumnSizingInfoState => ({\r\n  startOffset: null,\r\n  startSize: null,\r\n  deltaOffset: null,\r\n  deltaPercentage: null,\r\n  isResizingColumn: false,\r\n  columnSizingStart: [],\r\n})\r\n\r\nexport const ColumnSizing: TableFeature = {\r\n  getDefaultColumnDef: (): ColumnSizingColumnDef => {\r\n    return defaultColumnSizing\r\n  },\r\n  getInitialState: (state): ColumnSizingTableState => {\r\n    return {\r\n      columnSizing: {},\r\n      columnSizingInfo: getDefaultColumnSizingInfoState(),\r\n      ...state,\r\n    }\r\n  },\r\n\r\n  getDefaultOptions: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): ColumnSizingDefaultOptions => {\r\n    return {\r\n      columnResizeMode: 'onEnd',\r\n      onColumnSizingChange: makeStateUpdater('columnSizing', table),\r\n      onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table),\r\n    }\r\n  },\r\n\r\n  createColumn: <TData extends RowData, TValue>(\r\n    column: Column<TData, TValue>,\r\n    table: Table<TData>\r\n  ): ColumnSizingColumn => {\r\n    return {\r\n      getSize: () => {\r\n        const columnSize = table.getState().columnSizing[column.id]\r\n\r\n        return Math.min(\r\n          Math.max(\r\n            column.columnDef.minSize ?? defaultColumnSizing.minSize,\r\n            columnSize ?? column.columnDef.size ?? defaultColumnSizing.size\r\n          ),\r\n          column.columnDef.maxSize ?? defaultColumnSizing.maxSize\r\n        )\r\n      },\r\n      getStart: position => {\r\n        const columns = !position\r\n          ? table.getVisibleLeafColumns()\r\n          : position === 'left'\r\n          ? table.getLeftVisibleLeafColumns()\r\n          : table.getRightVisibleLeafColumns()\r\n\r\n        const index = columns.findIndex(d => d.id === column.id)\r\n\r\n        if (index > 0) {\r\n          const prevSiblingColumn = columns[index - 1]!\r\n\r\n          return (\r\n            prevSiblingColumn.getStart(position) + prevSiblingColumn.getSize()\r\n          )\r\n        }\r\n\r\n        return 0\r\n      },\r\n      resetSize: () => {\r\n        table.setColumnSizing(({ [column.id]: _, ...rest }) => {\r\n          return rest\r\n        })\r\n      },\r\n      getCanResize: () => {\r\n        return (\r\n          (column.columnDef.enableResizing ?? true) &&\r\n          (table.options.enableColumnResizing ?? true)\r\n        )\r\n      },\r\n      getIsResizing: () => {\r\n        return table.getState().columnSizingInfo.isResizingColumn === column.id\r\n      },\r\n    }\r\n  },\r\n\r\n  createHeader: <TData extends RowData, TValue>(\r\n    header: Header<TData, TValue>,\r\n    table: Table<TData>\r\n  ): ColumnSizingHeader => {\r\n    return {\r\n      getSize: () => {\r\n        let sum = 0\r\n\r\n        const recurse = (header: Header<TData, TValue>) => {\r\n          if (header.subHeaders.length) {\r\n            header.subHeaders.forEach(recurse)\r\n          } else {\r\n            sum += header.column.getSize() ?? 0\r\n          }\r\n        }\r\n\r\n        recurse(header)\r\n\r\n        return sum\r\n      },\r\n      getStart: () => {\r\n        if (header.index > 0) {\r\n          const prevSiblingHeader =\r\n            header.headerGroup.headers[header.index - 1]!\r\n          return prevSiblingHeader.getStart() + prevSiblingHeader.getSize()\r\n        }\r\n\r\n        return 0\r\n      },\r\n      getResizeHandler: () => {\r\n        const column = table.getColumn(header.column.id)\r\n        const canResize = column?.getCanResize()\r\n\r\n        return (e: unknown) => {\r\n          if (!column || !canResize) {\r\n            return\r\n          }\r\n\r\n          ;(e as any).persist?.()\r\n\r\n          if (isTouchStartEvent(e)) {\r\n            // lets not respond to multiple touches (e.g. 2 or 3 fingers)\r\n            if (e.touches && e.touches.length > 1) {\r\n              return\r\n            }\r\n          }\r\n\r\n          const startSize = header.getSize()\r\n\r\n          const columnSizingStart: [string, number][] = header\r\n            ? header\r\n                .getLeafHeaders()\r\n                .map(d => [d.column.id, d.column.getSize()])\r\n            : [[column.id, column.getSize()]]\r\n\r\n          const clientX = isTouchStartEvent(e)\r\n            ? Math.round(e.touches[0]!.clientX)\r\n            : (e as MouseEvent).clientX\r\n\r\n          const newColumnSizing: ColumnSizingState = {}\r\n\r\n          const updateOffset = (\r\n            eventType: 'move' | 'end',\r\n            clientXPos?: number\r\n          ) => {\r\n            if (typeof clientXPos !== 'number') {\r\n              return\r\n            }\r\n\r\n            table.setColumnSizingInfo(old => {\r\n              const deltaOffset = clientXPos - (old?.startOffset ?? 0)\r\n              const deltaPercentage = Math.max(\r\n                deltaOffset / (old?.startSize ?? 0),\r\n                -0.999999\r\n              )\r\n\r\n              old.columnSizingStart.forEach(([columnId, headerSize]) => {\r\n                newColumnSizing[columnId] =\r\n                  Math.round(\r\n                    Math.max(headerSize + headerSize * deltaPercentage, 0) * 100\r\n                  ) / 100\r\n              })\r\n\r\n              return {\r\n                ...old,\r\n                deltaOffset,\r\n                deltaPercentage,\r\n              }\r\n            })\r\n\r\n            if (\r\n              table.options.columnResizeMode === 'onChange' ||\r\n              eventType === 'end'\r\n            ) {\r\n              table.setColumnSizing(old => ({\r\n                ...old,\r\n                ...newColumnSizing,\r\n              }))\r\n            }\r\n          }\r\n\r\n          const onMove = (clientXPos?: number) =>\r\n            updateOffset('move', clientXPos)\r\n\r\n          const onEnd = (clientXPos?: number) => {\r\n            updateOffset('end', clientXPos)\r\n\r\n            table.setColumnSizingInfo(old => ({\r\n              ...old,\r\n              isResizingColumn: false,\r\n              startOffset: null,\r\n              startSize: null,\r\n              deltaOffset: null,\r\n              deltaPercentage: null,\r\n              columnSizingStart: [],\r\n            }))\r\n          }\r\n\r\n          const mouseEvents = {\r\n            moveHandler: (e: MouseEvent) => onMove(e.clientX),\r\n            upHandler: (e: MouseEvent) => {\r\n              document.removeEventListener('mousemove', mouseEvents.moveHandler)\r\n              document.removeEventListener('mouseup', mouseEvents.upHandler)\r\n              onEnd(e.clientX)\r\n            },\r\n          }\r\n\r\n          const touchEvents = {\r\n            moveHandler: (e: TouchEvent) => {\r\n              if (e.cancelable) {\r\n                e.preventDefault()\r\n                e.stopPropagation()\r\n              }\r\n              onMove(e.touches[0]!.clientX)\r\n              return false\r\n            },\r\n            upHandler: (e: TouchEvent) => {\r\n              document.removeEventListener('touchmove', touchEvents.moveHandler)\r\n              document.removeEventListener('touchend', touchEvents.upHandler)\r\n              if (e.cancelable) {\r\n                e.preventDefault()\r\n                e.stopPropagation()\r\n              }\r\n              onEnd(e.touches[0]?.clientX)\r\n            },\r\n          }\r\n\r\n          const passiveIfSupported = passiveEventSupported()\r\n            ? { passive: false }\r\n            : false\r\n\r\n          if (isTouchStartEvent(e)) {\r\n            document.addEventListener(\r\n              'touchmove',\r\n              touchEvents.moveHandler,\r\n              passiveIfSupported\r\n            )\r\n            document.addEventListener(\r\n              'touchend',\r\n              touchEvents.upHandler,\r\n              passiveIfSupported\r\n            )\r\n          } else {\r\n            document.addEventListener(\r\n              'mousemove',\r\n              mouseEvents.moveHandler,\r\n              passiveIfSupported\r\n            )\r\n            document.addEventListener(\r\n              'mouseup',\r\n              mouseEvents.upHandler,\r\n              passiveIfSupported\r\n            )\r\n          }\r\n\r\n          table.setColumnSizingInfo(old => ({\r\n            ...old,\r\n            startOffset: clientX,\r\n            startSize,\r\n            deltaOffset: 0,\r\n            deltaPercentage: 0,\r\n            columnSizingStart,\r\n            isResizingColumn: column.id,\r\n          }))\r\n        }\r\n      },\r\n    }\r\n  },\r\n\r\n  createTable: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): ColumnSizingInstance => {\r\n    return {\r\n      setColumnSizing: updater => table.options.onColumnSizingChange?.(updater),\r\n      setColumnSizingInfo: updater =>\r\n        table.options.onColumnSizingInfoChange?.(updater),\r\n      resetColumnSizing: defaultState => {\r\n        table.setColumnSizing(\r\n          defaultState ? {} : table.initialState.columnSizing ?? {}\r\n        )\r\n      },\r\n      resetHeaderSizeInfo: defaultState => {\r\n        table.setColumnSizingInfo(\r\n          defaultState\r\n            ? getDefaultColumnSizingInfoState()\r\n            : table.initialState.columnSizingInfo ??\r\n                getDefaultColumnSizingInfoState()\r\n        )\r\n      },\r\n      getTotalSize: () =>\r\n        table.getHeaderGroups()[0]?.headers.reduce((sum, header) => {\r\n          return sum + header.getSize()\r\n        }, 0) ?? 0,\r\n      getLeftTotalSize: () =>\r\n        table.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {\r\n          return sum + header.getSize()\r\n        }, 0) ?? 0,\r\n      getCenterTotalSize: () =>\r\n        table.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {\r\n          return sum + header.getSize()\r\n        }, 0) ?? 0,\r\n      getRightTotalSize: () =>\r\n        table.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {\r\n          return sum + header.getSize()\r\n        }, 0) ?? 0,\r\n    }\r\n  },\r\n}\r\n\r\nlet passiveSupported: boolean | null = null\r\nexport function passiveEventSupported() {\r\n  if (typeof passiveSupported === 'boolean') return passiveSupported\r\n\r\n  let supported = false\r\n  try {\r\n    const options = {\r\n      get passive() {\r\n        supported = true\r\n        return false\r\n      },\r\n    }\r\n\r\n    const noop = () => {}\r\n\r\n    window.addEventListener('test', noop, options)\r\n    window.removeEventListener('test', noop)\r\n  } catch (err) {\r\n    supported = false\r\n  }\r\n  passiveSupported = supported\r\n  return passiveSupported\r\n}\r\n\r\nfunction isTouchStartEvent(e: unknown): e is TouchEvent {\r\n  return (e as TouchEvent).type === 'touchstart'\r\n}\r\n","import { RowModel } from '..'\r\nimport { TableFeature } from '../core/table'\r\nimport { OnChangeFn, Table, Row, Updater, RowData } from '../types'\r\nimport { makeStateUpdater } from '../utils'\r\n\r\nexport type ExpandedStateList = Record<string, boolean>\r\nexport type ExpandedState = true | Record<string, boolean>\r\nexport interface ExpandedTableState {\r\n  expanded: ExpandedState\r\n}\r\n\r\nexport interface ExpandedRow {\r\n  toggleExpanded: (expanded?: boolean) => void\r\n  getIsExpanded: () => boolean\r\n  getCanExpand: () => boolean\r\n  getToggleExpandedHandler: () => () => void\r\n}\r\n\r\nexport interface ExpandedOptions<TData extends RowData> {\r\n  manualExpanding?: boolean\r\n  onExpandedChange?: OnChangeFn<ExpandedState>\r\n  autoResetExpanded?: boolean\r\n  enableExpanding?: boolean\r\n  getExpandedRowModel?: (table: Table<any>) => () => RowModel<any>\r\n  getIsRowExpanded?: (row: Row<TData>) => boolean\r\n  getRowCanExpand?: (row: Row<TData>) => boolean\r\n  paginateExpandedRows?: boolean\r\n}\r\n\r\nexport interface ExpandedInstance<TData extends RowData> {\r\n  _autoResetExpanded: () => void\r\n  setExpanded: (updater: Updater<ExpandedState>) => void\r\n  toggleAllRowsExpanded: (expanded?: boolean) => void\r\n  resetExpanded: (defaultState?: boolean) => void\r\n  getCanSomeRowsExpand: () => boolean\r\n  getToggleAllRowsExpandedHandler: () => (event: unknown) => void\r\n  getIsSomeRowsExpanded: () => boolean\r\n  getIsAllRowsExpanded: () => boolean\r\n  getExpandedDepth: () => number\r\n  getExpandedRowModel: () => RowModel<TData>\r\n  _getExpandedRowModel?: () => RowModel<TData>\r\n  getPreExpandedRowModel: () => RowModel<TData>\r\n}\r\n\r\n//\r\n\r\nexport const Expanding: TableFeature = {\r\n  getInitialState: (state): ExpandedTableState => {\r\n    return {\r\n      expanded: {},\r\n      ...state,\r\n    }\r\n  },\r\n\r\n  getDefaultOptions: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): ExpandedOptions<TData> => {\r\n    return {\r\n      onExpandedChange: makeStateUpdater('expanded', table),\r\n      paginateExpandedRows: true,\r\n    }\r\n  },\r\n\r\n  createTable: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): ExpandedInstance<TData> => {\r\n    let registered = false\r\n    let queued = false\r\n\r\n    return {\r\n      _autoResetExpanded: () => {\r\n        if (!registered) {\r\n          table._queue(() => {\r\n            registered = true\r\n          })\r\n          return\r\n        }\r\n\r\n        if (\r\n          table.options.autoResetAll ??\r\n          table.options.autoResetExpanded ??\r\n          !table.options.manualExpanding\r\n        ) {\r\n          if (queued) return\r\n          queued = true\r\n          table._queue(() => {\r\n            table.resetExpanded()\r\n            queued = false\r\n          })\r\n        }\r\n      },\r\n      setExpanded: updater => table.options.onExpandedChange?.(updater),\r\n      toggleAllRowsExpanded: expanded => {\r\n        if (expanded ?? !table.getIsAllRowsExpanded()) {\r\n          table.setExpanded(true)\r\n        } else {\r\n          table.setExpanded({})\r\n        }\r\n      },\r\n      resetExpanded: defaultState => {\r\n        table.setExpanded(\r\n          defaultState ? {} : table.initialState?.expanded ?? {}\r\n        )\r\n      },\r\n      getCanSomeRowsExpand: () => {\r\n        return table.getRowModel().flatRows.some(row => row.getCanExpand())\r\n      },\r\n      getToggleAllRowsExpandedHandler: () => {\r\n        return (e: unknown) => {\r\n          ;(e as any).persist?.()\r\n          table.toggleAllRowsExpanded()\r\n        }\r\n      },\r\n      getIsSomeRowsExpanded: () => {\r\n        const expanded = table.getState().expanded\r\n        return expanded === true || Object.values(expanded).some(Boolean)\r\n      },\r\n      getIsAllRowsExpanded: () => {\r\n        const expanded = table.getState().expanded\r\n\r\n        // If expanded is true, save some cycles and return true\r\n        if (typeof expanded === 'boolean') {\r\n          return expanded === true\r\n        }\r\n\r\n        if (!Object.keys(expanded).length) {\r\n          return false\r\n        }\r\n\r\n        // If any row is not expanded, return false\r\n        if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\r\n          return false\r\n        }\r\n\r\n        // They must all be expanded :shrug:\r\n        return true\r\n      },\r\n      getExpandedDepth: () => {\r\n        let maxDepth = 0\r\n\r\n        const rowIds =\r\n          table.getState().expanded === true\r\n            ? Object.keys(table.getRowModel().rowsById)\r\n            : Object.keys(table.getState().expanded)\r\n\r\n        rowIds.forEach(id => {\r\n          const splitId = id.split('.')\r\n          maxDepth = Math.max(maxDepth, splitId.length)\r\n        })\r\n\r\n        return maxDepth\r\n      },\r\n      getPreExpandedRowModel: () => table.getSortedRowModel(),\r\n      getExpandedRowModel: () => {\r\n        if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\r\n          table._getExpandedRowModel = table.options.getExpandedRowModel(table)\r\n        }\r\n\r\n        if (table.options.manualExpanding || !table._getExpandedRowModel) {\r\n          return table.getPreExpandedRowModel()\r\n        }\r\n\r\n        return table._getExpandedRowModel()\r\n      },\r\n    }\r\n  },\r\n\r\n  createRow: <TData extends RowData>(\r\n    row: Row<TData>,\r\n    table: Table<TData>\r\n  ): ExpandedRow => {\r\n    return {\r\n      toggleExpanded: expanded => {\r\n        table.setExpanded(old => {\r\n          const exists = old === true ? true : !!old?.[row.id]\r\n\r\n          let oldExpanded: ExpandedStateList = {}\r\n\r\n          if (old === true) {\r\n            Object.keys(table.getRowModel().rowsById).forEach(rowId => {\r\n              oldExpanded[rowId] = true\r\n            })\r\n          } else {\r\n            oldExpanded = old\r\n          }\r\n\r\n          expanded = expanded ?? !exists\r\n\r\n          if (!exists && expanded) {\r\n            return {\r\n              ...oldExpanded,\r\n              [row.id]: true,\r\n            }\r\n          }\r\n\r\n          if (exists && !expanded) {\r\n            const { [row.id]: _, ...rest } = oldExpanded\r\n            return rest\r\n          }\r\n\r\n          return old\r\n        })\r\n      },\r\n      getIsExpanded: () => {\r\n        const expanded = table.getState().expanded\r\n\r\n        return !!(\r\n          table.options.getIsRowExpanded?.(row) ??\r\n          (expanded === true || expanded?.[row.id])\r\n        )\r\n      },\r\n      getCanExpand: () => {\r\n        return (\r\n          table.options.getRowCanExpand?.(row) ??\r\n          ((table.options.enableExpanding ?? true) && !!row.subRows?.length)\r\n        )\r\n      },\r\n      getToggleExpandedHandler: () => {\r\n        const canExpand = row.getCanExpand()\r\n\r\n        return () => {\r\n          if (!canExpand) return\r\n          row.toggleExpanded()\r\n        }\r\n      },\r\n    }\r\n  },\r\n}\r\n","import { FilterFn } from './features/Filters'\r\n\r\nconst includesString: FilterFn<any> = (\r\n  row,\r\n  columnId: string,\r\n  filterValue: string\r\n) => {\r\n  const search = filterValue.toLowerCase()\r\n  return Boolean(row.getValue<string>(columnId)?.toLowerCase().includes(search))\r\n}\r\n\r\nincludesString.autoRemove = (val: any) => testFalsey(val)\r\n\r\nconst includesStringSensitive: FilterFn<any> = (\r\n  row,\r\n  columnId: string,\r\n  filterValue: string\r\n) => {\r\n  return Boolean(row.getValue<string>(columnId)?.includes(filterValue))\r\n}\r\n\r\nincludesStringSensitive.autoRemove = (val: any) => testFalsey(val)\r\n\r\nconst equalsString: FilterFn<any> = (\r\n  row,\r\n  columnId: string,\r\n  filterValue: string\r\n) => {\r\n  return (\r\n    row.getValue<string>(columnId)?.toLowerCase() === filterValue.toLowerCase()\r\n  )\r\n}\r\n\r\nequalsString.autoRemove = (val: any) => testFalsey(val)\r\n\r\nconst arrIncludes: FilterFn<any> = (\r\n  row,\r\n  columnId: string,\r\n  filterValue: unknown\r\n) => {\r\n  return row.getValue<unknown[]>(columnId)?.includes(filterValue)\r\n}\r\n\r\narrIncludes.autoRemove = (val: any) => testFalsey(val) || !val?.length\r\n\r\nconst arrIncludesAll: FilterFn<any> = (\r\n  row,\r\n  columnId: string,\r\n  filterValue: unknown[]\r\n) => {\r\n  return !filterValue.some(\r\n    val => !row.getValue<unknown[]>(columnId)?.includes(val)\r\n  )\r\n}\r\n\r\narrIncludesAll.autoRemove = (val: any) => testFalsey(val) || !val?.length\r\n\r\nconst arrIncludesSome: FilterFn<any> = (\r\n  row,\r\n  columnId: string,\r\n  filterValue: unknown[]\r\n) => {\r\n  return filterValue.some(val =>\r\n    row.getValue<unknown[]>(columnId)?.includes(val)\r\n  )\r\n}\r\n\r\narrIncludesSome.autoRemove = (val: any) => testFalsey(val) || !val?.length\r\n\r\nconst equals: FilterFn<any> = (row, columnId: string, filterValue: unknown) => {\r\n  return row.getValue(columnId) === filterValue\r\n}\r\n\r\nequals.autoRemove = (val: any) => testFalsey(val)\r\n\r\nconst weakEquals: FilterFn<any> = (\r\n  row,\r\n  columnId: string,\r\n  filterValue: unknown\r\n) => {\r\n  return row.getValue(columnId) == filterValue\r\n}\r\n\r\nweakEquals.autoRemove = (val: any) => testFalsey(val)\r\n\r\nconst inNumberRange: FilterFn<any> = (\r\n  row,\r\n  columnId: string,\r\n  filterValue: [number, number]\r\n) => {\r\n  let [min, max] = filterValue\r\n\r\n  const rowValue = row.getValue<number>(columnId)\r\n  return rowValue >= min && rowValue <= max\r\n}\r\n\r\ninNumberRange.resolveFilterValue = (val: [any, any]) => {\r\n  let [unsafeMin, unsafeMax] = val\r\n\r\n  let parsedMin =\r\n    typeof unsafeMin !== 'number' ? parseFloat(unsafeMin as string) : unsafeMin\r\n  let parsedMax =\r\n    typeof unsafeMax !== 'number' ? parseFloat(unsafeMax as string) : unsafeMax\r\n\r\n  let min =\r\n    unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin\r\n  let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax\r\n\r\n  if (min > max) {\r\n    const temp = min\r\n    min = max\r\n    max = temp\r\n  }\r\n\r\n  return [min, max] as const\r\n}\r\n\r\ninNumberRange.autoRemove = (val: any) =>\r\n  testFalsey(val) || (testFalsey(val[0]) && testFalsey(val[1]))\r\n\r\n// Export\r\n\r\nexport const filterFns = {\r\n  includesString,\r\n  includesStringSensitive,\r\n  equalsString,\r\n  arrIncludes,\r\n  arrIncludesAll,\r\n  arrIncludesSome,\r\n  equals,\r\n  weakEquals,\r\n  inNumberRange,\r\n}\r\n\r\nexport type BuiltInFilterFn = keyof typeof filterFns\r\n\r\n// Utils\r\n\r\nfunction testFalsey(val: any) {\r\n  return val === undefined || val === null || val === ''\r\n}\r\n","import { RowModel } from '..'\r\nimport { TableFeature } from '../core/table'\r\nimport { BuiltInFilterFn, filterFns } from '../filterFns'\r\nimport {\r\n  Column,\r\n  OnChangeFn,\r\n  Table,\r\n  Row,\r\n  Updater,\r\n  RowData,\r\n  FilterMeta,\r\n  FilterFns,\r\n} from '../types'\r\nimport { functionalUpdate, isFunction, makeStateUpdater } from '../utils'\r\n\r\nexport interface FiltersTableState {\r\n  columnFilters: ColumnFiltersState\r\n  globalFilter: any\r\n}\r\n\r\nexport type ColumnFiltersState = ColumnFilter[]\r\n\r\nexport interface ColumnFilter {\r\n  id: string\r\n  value: unknown\r\n}\r\n\r\nexport interface ResolvedColumnFilter<TData extends RowData> {\r\n  id: string\r\n  resolvedValue: unknown\r\n  filterFn: FilterFn<TData>\r\n}\r\n\r\nexport interface FilterFn<TData extends RowData> {\r\n  (\r\n    row: Row<TData>,\r\n    columnId: string,\r\n    filterValue: any,\r\n    addMeta: (meta: FilterMeta) => void\r\n  ): boolean\r\n\r\n  resolveFilterValue?: TransformFilterValueFn<TData>\r\n  autoRemove?: ColumnFilterAutoRemoveTestFn<TData>\r\n}\r\n\r\nexport type TransformFilterValueFn<TData extends RowData> = (\r\n  value: any,\r\n  column?: Column<TData, unknown>\r\n) => unknown\r\n\r\nexport type ColumnFilterAutoRemoveTestFn<TData extends RowData> = (\r\n  value: any,\r\n  column?: Column<TData, unknown>\r\n) => boolean\r\n\r\nexport type CustomFilterFns<TData extends RowData> = Record<\r\n  string,\r\n  FilterFn<TData>\r\n>\r\n\r\nexport type FilterFnOption<TData extends RowData> =\r\n  | 'auto'\r\n  | BuiltInFilterFn\r\n  | keyof FilterFns\r\n  | FilterFn<TData>\r\n\r\nexport interface FiltersColumnDef<TData extends RowData> {\r\n  filterFn?: FilterFnOption<TData>\r\n  enableColumnFilter?: boolean\r\n  enableGlobalFilter?: boolean\r\n}\r\n\r\nexport interface FiltersColumn<TData extends RowData> {\r\n  getAutoFilterFn: () => FilterFn<TData> | undefined\r\n  getFilterFn: () => FilterFn<TData> | undefined\r\n  setFilterValue: (updater: Updater<any>) => void\r\n  getCanFilter: () => boolean\r\n  getCanGlobalFilter: () => boolean\r\n  getFacetedRowModel: () => RowModel<TData>\r\n  _getFacetedRowModel?: () => RowModel<TData>\r\n  getIsFiltered: () => boolean\r\n  getFilterValue: () => unknown\r\n  getFilterIndex: () => number\r\n  getFacetedUniqueValues: () => Map<any, number>\r\n  _getFacetedUniqueValues?: () => Map<any, number>\r\n  getFacetedMinMaxValues: () => undefined | [number, number]\r\n  _getFacetedMinMaxValues?: () => undefined | [number, number]\r\n}\r\n\r\nexport interface FiltersRow<TData extends RowData> {\r\n  columnFilters: Record<string, boolean>\r\n  columnFiltersMeta: Record<string, FilterMeta>\r\n}\r\n\r\ninterface FiltersOptionsBase<TData extends RowData> {\r\n  enableFilters?: boolean\r\n  manualFiltering?: boolean\r\n  filterFromLeafRows?: boolean\r\n  maxLeafRowFilterDepth?: number\r\n  getFilteredRowModel?: (table: Table<any>) => () => RowModel<any>\r\n\r\n  // Column\r\n  onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>\r\n  enableColumnFilters?: boolean\r\n\r\n  // Global\r\n  globalFilterFn?: FilterFnOption<TData>\r\n  onGlobalFilterChange?: OnChangeFn<any>\r\n  enableGlobalFilter?: boolean\r\n  getColumnCanGlobalFilter?: (column: Column<TData, unknown>) => boolean\r\n\r\n  // Faceting\r\n  getFacetedRowModel?: (\r\n    table: Table<TData>,\r\n    columnId: string\r\n  ) => () => RowModel<TData>\r\n  getFacetedUniqueValues?: (\r\n    table: Table<TData>,\r\n    columnId: string\r\n  ) => () => Map<any, number>\r\n  getFacetedMinMaxValues?: (\r\n    table: Table<TData>,\r\n    columnId: string\r\n  ) => () => undefined | [number, number]\r\n}\r\n\r\ntype ResolvedFilterFns = keyof FilterFns extends never\r\n  ? {\r\n      filterFns?: Record<string, FilterFn<any>>\r\n    }\r\n  : {\r\n      filterFns: Record<keyof FilterFns, FilterFn<any>>\r\n    }\r\n\r\nexport interface FiltersOptions<TData extends RowData>\r\n  extends FiltersOptionsBase<TData>,\r\n    ResolvedFilterFns {}\r\n\r\nexport interface FiltersInstance<TData extends RowData> {\r\n  setColumnFilters: (updater: Updater<ColumnFiltersState>) => void\r\n\r\n  resetColumnFilters: (defaultState?: boolean) => void\r\n\r\n  // Column Filters\r\n  getPreFilteredRowModel: () => RowModel<TData>\r\n  getFilteredRowModel: () => RowModel<TData>\r\n  _getFilteredRowModel?: () => RowModel<TData>\r\n\r\n  // Global Filters\r\n  setGlobalFilter: (updater: Updater<any>) => void\r\n  resetGlobalFilter: (defaultState?: boolean) => void\r\n  getGlobalAutoFilterFn: () => FilterFn<TData> | undefined\r\n  getGlobalFilterFn: () => FilterFn<TData> | undefined\r\n  getGlobalFacetedRowModel: () => RowModel<TData>\r\n  _getGlobalFacetedRowModel?: () => RowModel<TData>\r\n  getGlobalFacetedUniqueValues: () => Map<any, number>\r\n  _getGlobalFacetedUniqueValues?: () => Map<any, number>\r\n  getGlobalFacetedMinMaxValues: () => undefined | [number, number]\r\n  _getGlobalFacetedMinMaxValues?: () => undefined | [number, number]\r\n}\r\n\r\n//\r\n\r\nexport const Filters: TableFeature = {\r\n  getDefaultColumnDef: <TData extends RowData>(): FiltersColumnDef<TData> => {\r\n    return {\r\n      filterFn: 'auto',\r\n    }\r\n  },\r\n\r\n  getInitialState: (state): FiltersTableState => {\r\n    return {\r\n      columnFilters: [],\r\n      globalFilter: undefined,\r\n      // filtersProgress: 1,\r\n      // facetProgress: {},\r\n      ...state,\r\n    }\r\n  },\r\n\r\n  getDefaultOptions: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): FiltersOptions<TData> => {\r\n    return {\r\n      onColumnFiltersChange: makeStateUpdater('columnFilters', table),\r\n      onGlobalFilterChange: makeStateUpdater('globalFilter', table),\r\n      filterFromLeafRows: false,\r\n      maxLeafRowFilterDepth: 100,\r\n      globalFilterFn: 'auto',\r\n      getColumnCanGlobalFilter: column => {\r\n        const value = table\r\n          .getCoreRowModel()\r\n          .flatRows[0]?._getAllCellsByColumnId()\r\n          [column.id]?.getValue()\r\n\r\n        return typeof value === 'string' || typeof value === 'number'\r\n      },\r\n    } as FiltersOptions<TData>\r\n  },\r\n\r\n  createColumn: <TData extends RowData>(\r\n    column: Column<TData, unknown>,\r\n    table: Table<TData>\r\n  ): FiltersColumn<TData> => {\r\n    return {\r\n      getAutoFilterFn: () => {\r\n        const firstRow = table.getCoreRowModel().flatRows[0]\r\n\r\n        const value = firstRow?.getValue(column.id)\r\n\r\n        if (typeof value === 'string') {\r\n          return filterFns.includesString\r\n        }\r\n\r\n        if (typeof value === 'number') {\r\n          return filterFns.inNumberRange\r\n        }\r\n\r\n        if (typeof value === 'boolean') {\r\n          return filterFns.equals\r\n        }\r\n\r\n        if (value !== null && typeof value === 'object') {\r\n          return filterFns.equals\r\n        }\r\n\r\n        if (Array.isArray(value)) {\r\n          return filterFns.arrIncludes\r\n        }\r\n\r\n        return filterFns.weakEquals\r\n      },\r\n      getFilterFn: () => {\r\n        return isFunction(column.columnDef.filterFn)\r\n          ? column.columnDef.filterFn\r\n          : column.columnDef.filterFn === 'auto'\r\n          ? column.getAutoFilterFn()\r\n          // @ts-ignore \r\n          : table.options.filterFns?.[column.columnDef.filterFn as string] ??\r\n            filterFns[column.columnDef.filterFn as BuiltInFilterFn]\r\n      },\r\n      getCanFilter: () => {\r\n        return (\r\n          (column.columnDef.enableColumnFilter ?? true) &&\r\n          (table.options.enableColumnFilters ?? true) &&\r\n          (table.options.enableFilters ?? true) &&\r\n          !!column.accessorFn\r\n        )\r\n      },\r\n\r\n      getCanGlobalFilter: () => {\r\n        return (\r\n          (column.columnDef.enableGlobalFilter ?? true) &&\r\n          (table.options.enableGlobalFilter ?? true) &&\r\n          (table.options.enableFilters ?? true) &&\r\n          (table.options.getColumnCanGlobalFilter?.(column) ?? true) &&\r\n          !!column.accessorFn\r\n        )\r\n      },\r\n\r\n      getIsFiltered: () => column.getFilterIndex() > -1,\r\n\r\n      getFilterValue: () =>\r\n        table.getState().columnFilters?.find(d => d.id === column.id)?.value,\r\n\r\n      getFilterIndex: () =>\r\n        table.getState().columnFilters?.findIndex(d => d.id === column.id) ??\r\n        -1,\r\n\r\n      setFilterValue: value => {\r\n        table.setColumnFilters(old => {\r\n          const filterFn = column.getFilterFn()\r\n          const previousfilter = old?.find(d => d.id === column.id)\r\n\r\n          const newFilter = functionalUpdate(\r\n            value,\r\n            previousfilter ? previousfilter.value : undefined\r\n          )\r\n\r\n          //\r\n          if (\r\n            shouldAutoRemoveFilter(\r\n              filterFn as FilterFn<TData>,\r\n              newFilter,\r\n              column\r\n            )\r\n          ) {\r\n            return old?.filter(d => d.id !== column.id) ?? []\r\n          }\r\n\r\n          const newFilterObj = { id: column.id, value: newFilter }\r\n\r\n          if (previousfilter) {\r\n            return (\r\n              old?.map(d => {\r\n                if (d.id === column.id) {\r\n                  return newFilterObj\r\n                }\r\n                return d\r\n              }) ?? []\r\n            )\r\n          }\r\n\r\n          if (old?.length) {\r\n            return [...old, newFilterObj]\r\n          }\r\n\r\n          return [newFilterObj]\r\n        })\r\n      },\r\n      _getFacetedRowModel:\r\n        table.options.getFacetedRowModel &&\r\n        table.options.getFacetedRowModel(table, column.id),\r\n      getFacetedRowModel: () => {\r\n        if (!column._getFacetedRowModel) {\r\n          return table.getPreFilteredRowModel()\r\n        }\r\n\r\n        return column._getFacetedRowModel()\r\n      },\r\n      _getFacetedUniqueValues:\r\n        table.options.getFacetedUniqueValues &&\r\n        table.options.getFacetedUniqueValues(table, column.id),\r\n      getFacetedUniqueValues: () => {\r\n        if (!column._getFacetedUniqueValues) {\r\n          return new Map()\r\n        }\r\n\r\n        return column._getFacetedUniqueValues()\r\n      },\r\n      _getFacetedMinMaxValues:\r\n        table.options.getFacetedMinMaxValues &&\r\n        table.options.getFacetedMinMaxValues(table, column.id),\r\n      getFacetedMinMaxValues: () => {\r\n        if (!column._getFacetedMinMaxValues) {\r\n          return undefined\r\n        }\r\n\r\n        return column._getFacetedMinMaxValues()\r\n      },\r\n      // () => [column.getFacetedRowModel()],\r\n      // facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),\r\n    }\r\n  },\r\n\r\n  createRow: <TData extends RowData>(\r\n    row: Row<TData>,\r\n    table: Table<TData>\r\n  ): FiltersRow<TData> => {\r\n    return {\r\n      columnFilters: {},\r\n      columnFiltersMeta: {},\r\n    }\r\n  },\r\n\r\n  createTable: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): FiltersInstance<TData> => {\r\n    return {\r\n      getGlobalAutoFilterFn: () => {\r\n        return filterFns.includesString\r\n      },\r\n\r\n      getGlobalFilterFn: () => {\r\n        const { globalFilterFn: globalFilterFn } = table.options\r\n\r\n        return isFunction(globalFilterFn)\r\n          ? globalFilterFn\r\n          : globalFilterFn === 'auto'\r\n          ? table.getGlobalAutoFilterFn()\r\n          // @ts-ignore\r\n          : table.options.filterFns?.[globalFilterFn as string] ??\r\n            filterFns[globalFilterFn as BuiltInFilterFn]\r\n      },\r\n\r\n      setColumnFilters: (updater: Updater<ColumnFiltersState>) => {\r\n        const leafColumns = table.getAllLeafColumns()\r\n\r\n        const updateFn = (old: ColumnFiltersState) => {\r\n          return functionalUpdate(updater, old)?.filter(filter => {\r\n            const column = leafColumns.find(d => d.id === filter.id)\r\n\r\n            if (column) {\r\n              const filterFn = column.getFilterFn()\r\n\r\n              if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\r\n                return false\r\n              }\r\n            }\r\n\r\n            return true\r\n          })\r\n        }\r\n\r\n        table.options.onColumnFiltersChange?.(updateFn)\r\n      },\r\n\r\n      setGlobalFilter: updater => {\r\n        table.options.onGlobalFilterChange?.(updater)\r\n      },\r\n\r\n      resetGlobalFilter: defaultState => {\r\n        table.setGlobalFilter(\r\n          defaultState ? undefined : table.initialState.globalFilter\r\n        )\r\n      },\r\n\r\n      resetColumnFilters: defaultState => {\r\n        table.setColumnFilters(\r\n          defaultState ? [] : table.initialState?.columnFilters ?? []\r\n        )\r\n      },\r\n\r\n      getPreFilteredRowModel: () => table.getCoreRowModel(),\r\n      getFilteredRowModel: () => {\r\n        if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\r\n          table._getFilteredRowModel = table.options.getFilteredRowModel(table)\r\n        }\r\n\r\n        if (table.options.manualFiltering || !table._getFilteredRowModel) {\r\n          return table.getPreFilteredRowModel()\r\n        }\r\n\r\n        return table._getFilteredRowModel()\r\n      },\r\n\r\n      _getGlobalFacetedRowModel:\r\n        table.options.getFacetedRowModel &&\r\n        table.options.getFacetedRowModel(table, '__global__'),\r\n\r\n      getGlobalFacetedRowModel: () => {\r\n        if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\r\n          return table.getPreFilteredRowModel()\r\n        }\r\n\r\n        return table._getGlobalFacetedRowModel()\r\n      },\r\n\r\n      _getGlobalFacetedUniqueValues:\r\n        table.options.getFacetedUniqueValues &&\r\n        table.options.getFacetedUniqueValues(table, '__global__'),\r\n      getGlobalFacetedUniqueValues: () => {\r\n        if (!table._getGlobalFacetedUniqueValues) {\r\n          return new Map()\r\n        }\r\n\r\n        return table._getGlobalFacetedUniqueValues()\r\n      },\r\n\r\n      _getGlobalFacetedMinMaxValues:\r\n        table.options.getFacetedMinMaxValues &&\r\n        table.options.getFacetedMinMaxValues(table, '__global__'),\r\n      getGlobalFacetedMinMaxValues: () => {\r\n        if (!table._getGlobalFacetedMinMaxValues) {\r\n          return\r\n        }\r\n\r\n        return table._getGlobalFacetedMinMaxValues()\r\n      },\r\n    }\r\n  },\r\n}\r\n\r\nexport function shouldAutoRemoveFilter<TData extends RowData>(\r\n  filterFn?: FilterFn<TData>,\r\n  value?: any,\r\n  column?: Column<TData, unknown>\r\n) {\r\n  return (\r\n    (filterFn && filterFn.autoRemove\r\n      ? filterFn.autoRemove(value, column)\r\n      : false) ||\r\n    typeof value === 'undefined' ||\r\n    (typeof value === 'string' && !value)\r\n  )\r\n}\r\n","import { AggregationFn } from './features/Grouping'\r\n\r\nconst sum: AggregationFn<any> = (columnId, _leafRows, childRows) => {\r\n  // It's faster to just add the aggregations together instead of\r\n  // process leaf nodes individually\r\n  return childRows.reduce((sum, next) => {\r\n    const nextValue = next.getValue(columnId)\r\n    return sum + (typeof nextValue === 'number' ? nextValue : 0)\r\n  }, 0)\r\n}\r\n\r\nconst min: AggregationFn<any> = (columnId, _leafRows, childRows) => {\r\n  let min: number | undefined\r\n\r\n  childRows.forEach(row => {\r\n    const value = row.getValue<number>(columnId)\r\n\r\n    if (\r\n      value != null &&\r\n      (min! > value || (min === undefined && value >= value))\r\n    ) {\r\n      min = value\r\n    }\r\n  })\r\n\r\n  return min\r\n}\r\n\r\nconst max: AggregationFn<any> = (columnId, _leafRows, childRows) => {\r\n  let max: number | undefined\r\n\r\n  childRows.forEach(row => {\r\n    const value = row.getValue<number>(columnId)\r\n    if (\r\n      value != null &&\r\n      (max! < value || (max === undefined && value >= value))\r\n    ) {\r\n      max = value\r\n    }\r\n  })\r\n\r\n  return max\r\n}\r\n\r\nconst extent: AggregationFn<any> = (columnId, _leafRows, childRows) => {\r\n  let min: number | undefined\r\n  let max: number | undefined\r\n\r\n  childRows.forEach(row => {\r\n    const value = row.getValue<number>(columnId)\r\n    if (value != null) {\r\n      if (min === undefined) {\r\n        if (value >= value) min = max = value\r\n      } else {\r\n        if (min > value) min = value\r\n        if (max! < value) max = value\r\n      }\r\n    }\r\n  })\r\n\r\n  return [min, max]\r\n}\r\n\r\nconst mean: AggregationFn<any> = (columnId, leafRows) => {\r\n  let count = 0\r\n  let sum = 0\r\n\r\n  leafRows.forEach(row => {\r\n    let value = row.getValue<number>(columnId)\r\n    if (value != null && (value = +value) >= value) {\r\n      ++count, (sum += value)\r\n    }\r\n  })\r\n\r\n  if (count) return sum / count\r\n\r\n  return\r\n}\r\n\r\nconst median: AggregationFn<any> = (columnId, leafRows) => {\r\n  if (!leafRows.length) {\r\n    return\r\n  }\r\n\r\n  let min = 0\r\n  let max = 0\r\n\r\n  leafRows.forEach(row => {\r\n    let value = row.getValue(columnId)\r\n    if (typeof value === 'number') {\r\n      min = Math.min(min, value)\r\n      max = Math.max(max, value)\r\n    }\r\n  })\r\n\r\n  return (min + max) / 2\r\n}\r\n\r\nconst unique: AggregationFn<any> = (columnId, leafRows) => {\r\n  return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values())\r\n}\r\n\r\nconst uniqueCount: AggregationFn<any> = (columnId, leafRows) => {\r\n  return new Set(leafRows.map(d => d.getValue(columnId))).size\r\n}\r\n\r\nconst count: AggregationFn<any> = (_columnId, leafRows) => {\r\n  return leafRows.length\r\n}\r\n\r\nexport const aggregationFns = {\r\n  sum,\r\n  min,\r\n  max,\r\n  extent,\r\n  mean,\r\n  median,\r\n  unique,\r\n  uniqueCount,\r\n  count,\r\n}\r\n\r\nexport type BuiltInAggregationFn = keyof typeof aggregationFns\r\n","import { RowModel } from '..'\r\nimport { BuiltInAggregationFn, aggregationFns } from '../aggregationFns'\r\nimport { TableFeature } from '../core/table'\r\nimport {\r\n  Cell,\r\n  Column,\r\n  OnChangeFn,\r\n  Table,\r\n  Row,\r\n  Updater,\r\n  ColumnDefTemplate,\r\n  RowData,\r\n  AggregationFns,\r\n} from '../types'\r\nimport { isFunction, makeStateUpdater } from '../utils'\r\n\r\nexport type GroupingState = string[]\r\n\r\nexport interface GroupingTableState {\r\n  grouping: GroupingState\r\n}\r\n\r\nexport type AggregationFn<TData extends RowData> = (\r\n  columnId: string,\r\n  leafRows: Row<TData>[],\r\n  childRows: Row<TData>[]\r\n) => any\r\n\r\nexport type CustomAggregationFns = Record<string, AggregationFn<any>>\r\n\r\nexport type AggregationFnOption<TData extends RowData> =\r\n  | 'auto'\r\n  | keyof AggregationFns\r\n  | BuiltInAggregationFn\r\n  | AggregationFn<TData>\r\n\r\nexport interface GroupingColumnDef<TData extends RowData, TValue> {\r\n  aggregationFn?: AggregationFnOption<TData>\r\n  aggregatedCell?: ColumnDefTemplate<\r\n    ReturnType<Cell<TData, TValue>['getContext']>\r\n  >\r\n  enableGrouping?: boolean\r\n}\r\n\r\nexport interface GroupingColumn<TData extends RowData> {\r\n  getCanGroup: () => boolean\r\n  getIsGrouped: () => boolean\r\n  getGroupedIndex: () => number\r\n  toggleGrouping: () => void\r\n  getToggleGroupingHandler: () => () => void\r\n  getAutoAggregationFn: () => AggregationFn<TData> | undefined\r\n  getAggregationFn: () => AggregationFn<TData> | undefined\r\n}\r\n\r\nexport interface GroupingRow {\r\n  groupingColumnId?: string\r\n  groupingValue?: unknown\r\n  getIsGrouped: () => boolean\r\n  _groupingValuesCache: Record<string, any>\r\n}\r\n\r\nexport interface GroupingCell {\r\n  getIsGrouped: () => boolean\r\n  getIsPlaceholder: () => boolean\r\n  getIsAggregated: () => boolean\r\n}\r\n\r\nexport interface ColumnDefaultOptions {\r\n  // Column\r\n  onGroupingChange: OnChangeFn<GroupingState>\r\n  enableGrouping: boolean\r\n}\r\n\r\ninterface GroupingOptionsBase {\r\n  manualGrouping?: boolean\r\n  onGroupingChange?: OnChangeFn<GroupingState>\r\n  enableGrouping?: boolean\r\n  getGroupedRowModel?: (table: Table<any>) => () => RowModel<any>\r\n  groupedColumnMode?: false | 'reorder' | 'remove'\r\n}\r\n\r\ntype ResolvedAggregationFns = keyof AggregationFns extends never\r\n  ? {\r\n      aggregationFns?: Record<string, AggregationFn<any>>\r\n    }\r\n  : {\r\n      aggregationFns: Record<keyof AggregationFns, AggregationFn<any>>\r\n    }\r\n\r\nexport interface GroupingOptions\r\n  extends GroupingOptionsBase,\r\n    ResolvedAggregationFns {}\r\n\r\nexport type GroupingColumnMode = false | 'reorder' | 'remove'\r\n\r\nexport interface GroupingInstance<TData extends RowData> {\r\n  setGrouping: (updater: Updater<GroupingState>) => void\r\n  resetGrouping: (defaultState?: boolean) => void\r\n  getPreGroupedRowModel: () => RowModel<TData>\r\n  getGroupedRowModel: () => RowModel<TData>\r\n  _getGroupedRowModel?: () => RowModel<TData>\r\n}\r\n\r\n//\r\n\r\nexport const Grouping: TableFeature = {\r\n  getDefaultColumnDef: <TData extends RowData>(): GroupingColumnDef<\r\n    TData,\r\n    unknown\r\n  > => {\r\n    return {\r\n      aggregatedCell: props => (props.getValue() as any)?.toString?.() ?? null,\r\n      aggregationFn: 'auto',\r\n    }\r\n  },\r\n\r\n  getInitialState: (state): GroupingTableState => {\r\n    return {\r\n      grouping: [],\r\n      ...state,\r\n    }\r\n  },\r\n\r\n  getDefaultOptions: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): GroupingOptions => {\r\n    return {\r\n      onGroupingChange: makeStateUpdater('grouping', table),\r\n      groupedColumnMode: 'reorder',\r\n    }\r\n  },\r\n\r\n  createColumn: <TData extends RowData, TValue>(\r\n    column: Column<TData, TValue>,\r\n    table: Table<TData>\r\n  ): GroupingColumn<TData> => {\r\n    return {\r\n      toggleGrouping: () => {\r\n        table.setGrouping(old => {\r\n          // Find any existing grouping for this column\r\n          if (old?.includes(column.id)) {\r\n            return old.filter(d => d !== column.id)\r\n          }\r\n\r\n          return [...(old ?? []), column.id]\r\n        })\r\n      },\r\n\r\n      getCanGroup: () => {\r\n        return (\r\n          column.columnDef.enableGrouping ??\r\n          true ??\r\n          table.options.enableGrouping ??\r\n          true ??\r\n          !!column.accessorFn\r\n        )\r\n      },\r\n\r\n      getIsGrouped: () => {\r\n        return table.getState().grouping?.includes(column.id)\r\n      },\r\n\r\n      getGroupedIndex: () => table.getState().grouping?.indexOf(column.id),\r\n\r\n      getToggleGroupingHandler: () => {\r\n        const canGroup = column.getCanGroup()\r\n\r\n        return () => {\r\n          if (!canGroup) return\r\n          column.toggleGrouping()\r\n        }\r\n      },\r\n      getAutoAggregationFn: () => {\r\n        const firstRow = table.getCoreRowModel().flatRows[0]\r\n\r\n        const value = firstRow?.getValue(column.id)\r\n\r\n        if (typeof value === 'number') {\r\n          return aggregationFns.sum\r\n        }\r\n\r\n        if (Object.prototype.toString.call(value) === '[object Date]') {\r\n          return aggregationFns.extent\r\n        }\r\n      },\r\n      getAggregationFn: () => {\r\n        if (!column) {\r\n          throw new Error()\r\n        }\r\n\r\n        return isFunction(column.columnDef.aggregationFn)\r\n          ? column.columnDef.aggregationFn\r\n          : column.columnDef.aggregationFn === 'auto'\r\n          ? column.getAutoAggregationFn()\r\n          : table.options.aggregationFns?.[\r\n              column.columnDef.aggregationFn as string\r\n            ] ??\r\n            aggregationFns[\r\n              column.columnDef.aggregationFn as BuiltInAggregationFn\r\n            ]\r\n      },\r\n    }\r\n  },\r\n\r\n  createTable: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): GroupingInstance<TData> => {\r\n    return {\r\n      setGrouping: updater => table.options.onGroupingChange?.(updater),\r\n\r\n      resetGrouping: defaultState => {\r\n        table.setGrouping(\r\n          defaultState ? [] : table.initialState?.grouping ?? []\r\n        )\r\n      },\r\n\r\n      getPreGroupedRowModel: () => table.getFilteredRowModel(),\r\n      getGroupedRowModel: () => {\r\n        if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\r\n          table._getGroupedRowModel = table.options.getGroupedRowModel(table)\r\n        }\r\n\r\n        if (table.options.manualGrouping || !table._getGroupedRowModel) {\r\n          return table.getPreGroupedRowModel()\r\n        }\r\n\r\n        return table._getGroupedRowModel()\r\n      },\r\n    }\r\n  },\r\n\r\n  createRow: <TData extends RowData>(row: Row<TData>): GroupingRow => {\r\n    return {\r\n      getIsGrouped: () => !!row.groupingColumnId,\r\n      _groupingValuesCache: {},\r\n    }\r\n  },\r\n\r\n  createCell: <TData extends RowData, TValue>(\r\n    cell: Cell<TData, TValue>,\r\n    column: Column<TData, TValue>,\r\n    row: Row<TData>,\r\n    table: Table<TData>\r\n  ): GroupingCell => {\r\n    const getRenderValue = () =>\r\n      cell.getValue() ?? table.options.renderFallbackValue\r\n\r\n    return {\r\n      getIsGrouped: () =>\r\n        column.getIsGrouped() && column.id === row.groupingColumnId,\r\n      getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),\r\n      getIsAggregated: () =>\r\n        !cell.getIsGrouped() &&\r\n        !cell.getIsPlaceholder() &&\r\n        !!row.subRows?.length,\r\n    }\r\n  },\r\n}\r\n\r\nexport function orderColumns<TData extends RowData>(\r\n  leafColumns: Column<TData, unknown>[],\r\n  grouping: string[],\r\n  groupedColumnMode?: GroupingColumnMode\r\n) {\r\n  if (!grouping?.length || !groupedColumnMode) {\r\n    return leafColumns\r\n  }\r\n\r\n  const nonGroupingColumns = leafColumns.filter(\r\n    col => !grouping.includes(col.id)\r\n  )\r\n\r\n  if (groupedColumnMode === 'remove') {\r\n    return nonGroupingColumns\r\n  }\r\n\r\n  const groupingColumns = grouping\r\n    .map(g => leafColumns.find(col => col.id === g)!)\r\n    .filter(Boolean)\r\n\r\n  return [...groupingColumns, ...nonGroupingColumns]\r\n}\r\n","import { makeStateUpdater, memo } from '../utils'\r\n\r\nimport { Table, OnChangeFn, Updater, Column, RowData } from '../types'\r\n\r\nimport { orderColumns } from './Grouping'\r\nimport { TableFeature } from '../core/table'\r\n\r\nexport interface ColumnOrderTableState {\r\n  columnOrder: ColumnOrderState\r\n}\r\n\r\nexport type ColumnOrderState = string[]\r\n\r\nexport interface ColumnOrderOptions {\r\n  onColumnOrderChange?: OnChangeFn<ColumnOrderState>\r\n}\r\n\r\nexport interface ColumnOrderDefaultOptions {\r\n  onColumnOrderChange: OnChangeFn<ColumnOrderState>\r\n}\r\n\r\nexport interface ColumnOrderInstance<TData extends RowData> {\r\n  setColumnOrder: (updater: Updater<ColumnOrderState>) => void\r\n  resetColumnOrder: (defaultState?: boolean) => void\r\n  _getOrderColumnsFn: () => (\r\n    columns: Column<TData, unknown>[]\r\n  ) => Column<TData, unknown>[]\r\n}\r\n\r\n//\r\n\r\nexport const Ordering: TableFeature = {\r\n  getInitialState: (state): ColumnOrderTableState => {\r\n    return {\r\n      columnOrder: [],\r\n      ...state,\r\n    }\r\n  },\r\n\r\n  getDefaultOptions: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): ColumnOrderDefaultOptions => {\r\n    return {\r\n      onColumnOrderChange: makeStateUpdater('columnOrder', table),\r\n    }\r\n  },\r\n\r\n  createTable: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): ColumnOrderInstance<TData> => {\r\n    return {\r\n      setColumnOrder: updater => table.options.onColumnOrderChange?.(updater),\r\n      resetColumnOrder: defaultState => {\r\n        table.setColumnOrder(\r\n          defaultState ? [] : table.initialState.columnOrder ?? []\r\n        )\r\n      },\r\n      _getOrderColumnsFn: memo(\r\n        () => [\r\n          table.getState().columnOrder,\r\n          table.getState().grouping,\r\n          table.options.groupedColumnMode,\r\n        ],\r\n        (columnOrder, grouping, groupedColumnMode) => columns => {\r\n          // Sort grouped columns to the start of the column list\r\n          // before the headers are built\r\n          let orderedColumns: Column<TData, unknown>[] = []\r\n\r\n          // If there is no order, return the normal columns\r\n          if (!columnOrder?.length) {\r\n            orderedColumns = columns\r\n          } else {\r\n            const columnOrderCopy = [...columnOrder]\r\n\r\n            // If there is an order, make a copy of the columns\r\n            const columnsCopy = [...columns]\r\n\r\n            // And make a new ordered array of the columns\r\n\r\n            // Loop over the columns and place them in order into the new array\r\n            while (columnsCopy.length && columnOrderCopy.length) {\r\n              const targetColumnId = columnOrderCopy.shift()\r\n              const foundIndex = columnsCopy.findIndex(\r\n                d => d.id === targetColumnId\r\n              )\r\n              if (foundIndex > -1) {\r\n                orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]!)\r\n              }\r\n            }\r\n\r\n            // If there are any columns left, add them to the end\r\n            orderedColumns = [...orderedColumns, ...columnsCopy]\r\n          }\r\n\r\n          return orderColumns(orderedColumns, grouping, groupedColumnMode)\r\n        },\r\n        {\r\n          key: process.env.NODE_ENV === 'development' && 'getOrderColumnsFn',\r\n          // debug: () => table.options.debugAll ?? table.options.debugTable,\r\n        }\r\n      ),\r\n    }\r\n  },\r\n}\r\n","import { TableFeature } from '../core/table'\r\nimport { OnChangeFn, Table, RowModel, Updater, RowData } from '../types'\r\nimport { functionalUpdate, makeStateUpdater, memo } from '../utils'\r\n\r\nexport interface PaginationState {\r\n  pageIndex: number\r\n  pageSize: number\r\n}\r\n\r\nexport interface PaginationTableState {\r\n  pagination: PaginationState\r\n}\r\n\r\nexport interface PaginationInitialTableState {\r\n  pagination?: Partial<PaginationState>\r\n}\r\n\r\nexport interface PaginationOptions {\r\n  pageCount?: number\r\n  manualPagination?: boolean\r\n  onPaginationChange?: OnChangeFn<PaginationState>\r\n  autoResetPageIndex?: boolean\r\n  getPaginationRowModel?: (table: Table<any>) => () => RowModel<any>\r\n}\r\n\r\nexport interface PaginationDefaultOptions {\r\n  onPaginationChange: OnChangeFn<PaginationState>\r\n}\r\n\r\nexport interface PaginationInstance<TData extends RowData> {\r\n  _autoResetPageIndex: () => void\r\n  setPagination: (updater: Updater<PaginationState>) => void\r\n  resetPagination: (defaultState?: boolean) => void\r\n  setPageIndex: (updater: Updater<number>) => void\r\n  resetPageIndex: (defaultState?: boolean) => void\r\n  setPageSize: (updater: Updater<number>) => void\r\n  resetPageSize: (defaultState?: boolean) => void\r\n  setPageCount: (updater: Updater<number>) => void\r\n  getPageOptions: () => number[]\r\n  getCanPreviousPage: () => boolean\r\n  getCanNextPage: () => boolean\r\n  previousPage: () => void\r\n  nextPage: () => void\r\n  getPrePaginationRowModel: () => RowModel<TData>\r\n  getPaginationRowModel: () => RowModel<TData>\r\n  _getPaginationRowModel?: () => RowModel<TData>\r\n  getPageCount: () => number\r\n}\r\n\r\n//\r\n\r\nconst defaultPageIndex = 0\r\nconst defaultPageSize = 10\r\n\r\nconst getDefaultPaginationState = (): PaginationState => ({\r\n  pageIndex: defaultPageIndex,\r\n  pageSize: defaultPageSize,\r\n})\r\n\r\nexport const Pagination: TableFeature = {\r\n  getInitialState: (state): PaginationTableState => {\r\n    return {\r\n      ...state,\r\n      pagination: {\r\n        ...getDefaultPaginationState(),\r\n        ...state?.pagination,\r\n      },\r\n    }\r\n  },\r\n\r\n  getDefaultOptions: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): PaginationDefaultOptions => {\r\n    return {\r\n      onPaginationChange: makeStateUpdater('pagination', table),\r\n    }\r\n  },\r\n\r\n  createTable: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): PaginationInstance<TData> => {\r\n    let registered = false\r\n    let queued = false\r\n\r\n    return {\r\n      _autoResetPageIndex: () => {\r\n        if (!registered) {\r\n          table._queue(() => {\r\n            registered = true\r\n          })\r\n          return\r\n        }\r\n\r\n        if (\r\n          table.options.autoResetAll ??\r\n          table.options.autoResetPageIndex ??\r\n          !table.options.manualPagination\r\n        ) {\r\n          if (queued) return\r\n          queued = true\r\n          table._queue(() => {\r\n            table.resetPageIndex()\r\n            queued = false\r\n          })\r\n        }\r\n      },\r\n      setPagination: updater => {\r\n        const safeUpdater: Updater<PaginationState> = old => {\r\n          let newState = functionalUpdate(updater, old)\r\n\r\n          return newState\r\n        }\r\n\r\n        return table.options.onPaginationChange?.(safeUpdater)\r\n      },\r\n      resetPagination: defaultState => {\r\n        table.setPagination(\r\n          defaultState\r\n            ? getDefaultPaginationState()\r\n            : table.initialState.pagination ?? getDefaultPaginationState()\r\n        )\r\n      },\r\n      setPageIndex: updater => {\r\n        table.setPagination(old => {\r\n          let pageIndex = functionalUpdate(updater, old.pageIndex)\r\n\r\n          const maxPageIndex =\r\n            typeof table.options.pageCount === 'undefined' ||\r\n            table.options.pageCount === -1\r\n              ? Number.MAX_SAFE_INTEGER\r\n              : table.options.pageCount - 1\r\n\r\n          pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex))\r\n\r\n          return {\r\n            ...old,\r\n            pageIndex,\r\n          }\r\n        })\r\n      },\r\n      resetPageIndex: defaultState => {\r\n        table.setPageIndex(\r\n          defaultState\r\n            ? defaultPageIndex\r\n            : table.initialState?.pagination?.pageIndex ?? defaultPageIndex\r\n        )\r\n      },\r\n      resetPageSize: defaultState => {\r\n        table.setPageSize(\r\n          defaultState\r\n            ? defaultPageSize\r\n            : table.initialState?.pagination?.pageSize ?? defaultPageSize\r\n        )\r\n      },\r\n      setPageSize: updater => {\r\n        table.setPagination(old => {\r\n          const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize))\r\n          const topRowIndex = old.pageSize * old.pageIndex!\r\n          const pageIndex = Math.floor(topRowIndex / pageSize)\r\n\r\n          return {\r\n            ...old,\r\n            pageIndex,\r\n            pageSize,\r\n          }\r\n        })\r\n      },\r\n      setPageCount: updater =>\r\n        table.setPagination(old => {\r\n          let newPageCount = functionalUpdate(\r\n            updater,\r\n            table.options.pageCount ?? -1\r\n          )\r\n\r\n          if (typeof newPageCount === 'number') {\r\n            newPageCount = Math.max(-1, newPageCount)\r\n          }\r\n\r\n          return {\r\n            ...old,\r\n            pageCount: newPageCount,\r\n          }\r\n        }),\r\n\r\n      getPageOptions: memo(\r\n        () => [table.getPageCount()],\r\n        pageCount => {\r\n          let pageOptions: number[] = []\r\n          if (pageCount && pageCount > 0) {\r\n            pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i)\r\n          }\r\n          return pageOptions\r\n        },\r\n        {\r\n          key: process.env.NODE_ENV === 'development' && 'getPageOptions',\r\n          debug: () => table.options.debugAll ?? table.options.debugTable,\r\n        }\r\n      ),\r\n\r\n      getCanPreviousPage: () => table.getState().pagination.pageIndex > 0,\r\n\r\n      getCanNextPage: () => {\r\n        const { pageIndex } = table.getState().pagination\r\n\r\n        const pageCount = table.getPageCount()\r\n\r\n        if (pageCount === -1) {\r\n          return true\r\n        }\r\n\r\n        if (pageCount === 0) {\r\n          return false\r\n        }\r\n\r\n        return pageIndex < pageCount - 1\r\n      },\r\n\r\n      previousPage: () => {\r\n        return table.setPageIndex(old => old - 1)\r\n      },\r\n\r\n      nextPage: () => {\r\n        return table.setPageIndex(old => {\r\n          return old + 1\r\n        })\r\n      },\r\n\r\n      getPrePaginationRowModel: () => table.getExpandedRowModel(),\r\n      getPaginationRowModel: () => {\r\n        if (\r\n          !table._getPaginationRowModel &&\r\n          table.options.getPaginationRowModel\r\n        ) {\r\n          table._getPaginationRowModel =\r\n            table.options.getPaginationRowModel(table)\r\n        }\r\n\r\n        if (table.options.manualPagination || !table._getPaginationRowModel) {\r\n          return table.getPrePaginationRowModel()\r\n        }\r\n\r\n        return table._getPaginationRowModel()\r\n      },\r\n\r\n      getPageCount: () => {\r\n        return (\r\n          table.options.pageCount ??\r\n          Math.ceil(\r\n            table.getPrePaginationRowModel().rows.length /\r\n              table.getState().pagination.pageSize\r\n          )\r\n        )\r\n      },\r\n    }\r\n  },\r\n}\r\n","import { TableFeature } from '../core/table'\r\nimport {\r\n  OnChangeFn,\r\n  Updater,\r\n  Table,\r\n  Column,\r\n  Row,\r\n  Cell,\r\n  RowData,\r\n} from '../types'\r\nimport { makeStateUpdater, memo } from '../utils'\r\n\r\nexport type ColumnPinningPosition = false | 'left' | 'right'\r\n\r\nexport interface ColumnPinningState {\r\n  left?: string[]\r\n  right?: string[]\r\n}\r\n\r\nexport interface ColumnPinningTableState {\r\n  columnPinning: ColumnPinningState\r\n}\r\n\r\nexport interface ColumnPinningOptions {\r\n  onColumnPinningChange?: OnChangeFn<ColumnPinningState>\r\n  enablePinning?: boolean\r\n}\r\n\r\nexport interface ColumnPinningDefaultOptions {\r\n  onColumnPinningChange: OnChangeFn<ColumnPinningState>\r\n}\r\n\r\nexport interface ColumnPinningColumnDef {\r\n  enablePinning?: boolean\r\n}\r\n\r\nexport interface ColumnPinningColumn {\r\n  getCanPin: () => boolean\r\n  getPinnedIndex: () => number\r\n  getIsPinned: () => ColumnPinningPosition\r\n  pin: (position: ColumnPinningPosition) => void\r\n}\r\n\r\nexport interface ColumnPinningRow<TData extends RowData> {\r\n  getLeftVisibleCells: () => Cell<TData, unknown>[]\r\n  getCenterVisibleCells: () => Cell<TData, unknown>[]\r\n  getRightVisibleCells: () => Cell<TData, unknown>[]\r\n}\r\n\r\nexport interface ColumnPinningInstance<TData extends RowData> {\r\n  setColumnPinning: (updater: Updater<ColumnPinningState>) => void\r\n  resetColumnPinning: (defaultState?: boolean) => void\r\n  getIsSomeColumnsPinned: (position?: ColumnPinningPosition) => boolean\r\n  getLeftLeafColumns: () => Column<TData, unknown>[]\r\n  getRightLeafColumns: () => Column<TData, unknown>[]\r\n  getCenterLeafColumns: () => Column<TData, unknown>[]\r\n}\r\n\r\n//\r\n\r\nconst getDefaultPinningState = (): ColumnPinningState => ({\r\n  left: [],\r\n  right: [],\r\n})\r\n\r\nexport const Pinning: TableFeature = {\r\n  getInitialState: (state): ColumnPinningTableState => {\r\n    return {\r\n      columnPinning: getDefaultPinningState(),\r\n      ...state,\r\n    }\r\n  },\r\n\r\n  getDefaultOptions: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): ColumnPinningDefaultOptions => {\r\n    return {\r\n      onColumnPinningChange: makeStateUpdater('columnPinning', table),\r\n    }\r\n  },\r\n\r\n  createColumn: <TData extends RowData, TValue>(\r\n    column: Column<TData, TValue>,\r\n    table: Table<TData>\r\n  ): ColumnPinningColumn => {\r\n    return {\r\n      pin: position => {\r\n        const columnIds = column\r\n          .getLeafColumns()\r\n          .map(d => d.id)\r\n          .filter(Boolean) as string[]\r\n\r\n        table.setColumnPinning(old => {\r\n          if (position === 'right') {\r\n            return {\r\n              left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),\r\n              right: [\r\n                ...(old?.right ?? []).filter(d => !columnIds?.includes(d)),\r\n                ...columnIds,\r\n              ],\r\n            }\r\n          }\r\n\r\n          if (position === 'left') {\r\n            return {\r\n              left: [\r\n                ...(old?.left ?? []).filter(d => !columnIds?.includes(d)),\r\n                ...columnIds,\r\n              ],\r\n              right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),\r\n            }\r\n          }\r\n\r\n          return {\r\n            left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),\r\n            right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),\r\n          }\r\n        })\r\n      },\r\n\r\n      getCanPin: () => {\r\n        const leafColumns = column.getLeafColumns()\r\n\r\n        return leafColumns.some(\r\n          d =>\r\n            (d.columnDef.enablePinning ?? true) &&\r\n            (table.options.enablePinning ?? true)\r\n        )\r\n      },\r\n\r\n      getIsPinned: () => {\r\n        const leafColumnIds = column.getLeafColumns().map(d => d.id)\r\n\r\n        const { left, right } = table.getState().columnPinning\r\n\r\n        const isLeft = leafColumnIds.some(d => left?.includes(d))\r\n        const isRight = leafColumnIds.some(d => right?.includes(d))\r\n\r\n        return isLeft ? 'left' : isRight ? 'right' : false\r\n      },\r\n\r\n      getPinnedIndex: () => {\r\n        const position = column.getIsPinned()\r\n\r\n        return position\r\n          ? table.getState().columnPinning?.[position]?.indexOf(column.id) ?? -1\r\n          : 0\r\n      },\r\n    }\r\n  },\r\n\r\n  createRow: <TData extends RowData>(\r\n    row: Row<TData>,\r\n    table: Table<TData>\r\n  ): ColumnPinningRow<TData> => {\r\n    return {\r\n      getCenterVisibleCells: memo(\r\n        () => [\r\n          row._getAllVisibleCells(),\r\n          table.getState().columnPinning.left,\r\n          table.getState().columnPinning.right,\r\n        ],\r\n        (allCells, left, right) => {\r\n          const leftAndRight: string[] = [...(left ?? []), ...(right ?? [])]\r\n\r\n          return allCells.filter(d => !leftAndRight.includes(d.column.id))\r\n        },\r\n        {\r\n          key:\r\n            process.env.NODE_ENV === 'production' &&\r\n            'row.getCenterVisibleCells',\r\n          debug: () => table.options.debugAll ?? table.options.debugRows,\r\n        }\r\n      ),\r\n      getLeftVisibleCells: memo(\r\n        () => [\r\n          row._getAllVisibleCells(),\r\n          table.getState().columnPinning.left,\r\n          ,\r\n        ],\r\n        (allCells, left) => {\r\n          const cells = (left ?? [])\r\n            .map(\r\n              columnId => allCells.find(cell => cell.column.id === columnId)!\r\n            )\r\n            .filter(Boolean)\r\n            .map(d => ({ ...d, position: 'left' } as Cell<TData, unknown>))\r\n\r\n          return cells\r\n        },\r\n        {\r\n          key:\r\n            process.env.NODE_ENV === 'production' && 'row.getLeftVisibleCells',\r\n          debug: () => table.options.debugAll ?? table.options.debugRows,\r\n        }\r\n      ),\r\n      getRightVisibleCells: memo(\r\n        () => [row._getAllVisibleCells(), table.getState().columnPinning.right],\r\n        (allCells, right) => {\r\n          const cells = (right ?? [])\r\n            .map(\r\n              columnId => allCells.find(cell => cell.column.id === columnId)!\r\n            )\r\n            .filter(Boolean)\r\n            .map(d => ({ ...d, position: 'right' } as Cell<TData, unknown>))\r\n\r\n          return cells\r\n        },\r\n        {\r\n          key:\r\n            process.env.NODE_ENV === 'production' && 'row.getRightVisibleCells',\r\n          debug: () => table.options.debugAll ?? table.options.debugRows,\r\n        }\r\n      ),\r\n    }\r\n  },\r\n\r\n  createTable: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): ColumnPinningInstance<TData> => {\r\n    return {\r\n      setColumnPinning: updater =>\r\n        table.options.onColumnPinningChange?.(updater),\r\n\r\n      resetColumnPinning: defaultState =>\r\n        table.setColumnPinning(\r\n          defaultState\r\n            ? getDefaultPinningState()\r\n            : table.initialState?.columnPinning ?? getDefaultPinningState()\r\n        ),\r\n\r\n      getIsSomeColumnsPinned: position => {\r\n        const pinningState = table.getState().columnPinning\r\n\r\n        if (!position) {\r\n          return Boolean(\r\n            pinningState.left?.length || pinningState.right?.length\r\n          )\r\n        }\r\n        return Boolean(pinningState[position]?.length)\r\n      },\r\n\r\n      getLeftLeafColumns: memo(\r\n        () => [table.getAllLeafColumns(), table.getState().columnPinning.left],\r\n        (allColumns, left) => {\r\n          return (left ?? [])\r\n            .map(columnId => allColumns.find(column => column.id === columnId)!)\r\n            .filter(Boolean)\r\n        },\r\n        {\r\n          key: process.env.NODE_ENV === 'development' && 'getLeftLeafColumns',\r\n          debug: () => table.options.debugAll ?? table.options.debugColumns,\r\n        }\r\n      ),\r\n\r\n      getRightLeafColumns: memo(\r\n        () => [table.getAllLeafColumns(), table.getState().columnPinning.right],\r\n        (allColumns, right) => {\r\n          return (right ?? [])\r\n            .map(columnId => allColumns.find(column => column.id === columnId)!)\r\n            .filter(Boolean)\r\n        },\r\n        {\r\n          key: process.env.NODE_ENV === 'development' && 'getRightLeafColumns',\r\n          debug: () => table.options.debugAll ?? table.options.debugColumns,\r\n        }\r\n      ),\r\n\r\n      getCenterLeafColumns: memo(\r\n        () => [\r\n          table.getAllLeafColumns(),\r\n          table.getState().columnPinning.left,\r\n          table.getState().columnPinning.right,\r\n        ],\r\n        (allColumns, left, right) => {\r\n          const leftAndRight: string[] = [...(left ?? []), ...(right ?? [])]\r\n\r\n          return allColumns.filter(d => !leftAndRight.includes(d.id))\r\n        },\r\n        {\r\n          key: process.env.NODE_ENV === 'development' && 'getCenterLeafColumns',\r\n          debug: () => table.options.debugAll ?? table.options.debugColumns,\r\n        }\r\n      ),\r\n    }\r\n  },\r\n}\r\n","import { TableFeature } from '../core/table'\r\nimport { OnChangeFn, Table, Row, RowModel, Updater, RowData } from '../types'\r\nimport { makeStateUpdater, memo } from '../utils'\r\n\r\nexport type RowSelectionState = Record<string, boolean>\r\n\r\nexport interface RowSelectionTableState {\r\n  rowSelection: RowSelectionState\r\n}\r\n\r\nexport interface RowSelectionOptions<TData extends RowData> {\r\n  enableRowSelection?: boolean | ((row: Row<TData>) => boolean)\r\n  enableMultiRowSelection?: boolean | ((row: Row<TData>) => boolean)\r\n  enableSubRowSelection?: boolean | ((row: Row<TData>) => boolean)\r\n  onRowSelectionChange?: OnChangeFn<RowSelectionState>\r\n  // enableGroupingRowSelection?:\r\n  //   | boolean\r\n  //   | ((\r\n  //       row: Row<TData>\r\n  //     ) => boolean)\r\n  // isAdditiveSelectEvent?: (e: unknown) => boolean\r\n  // isInclusiveSelectEvent?: (e: unknown) => boolean\r\n  // selectRowsFn?: (\r\n  //   table: Table<TData>,\r\n  //   rowModel: RowModel<TData>\r\n  // ) => RowModel<TData>\r\n}\r\n\r\nexport interface RowSelectionRow {\r\n  getIsSelected: () => boolean\r\n  getIsSomeSelected: () => boolean\r\n  getIsAllSubRowsSelected: () => boolean\r\n  getCanSelect: () => boolean\r\n  getCanMultiSelect: () => boolean\r\n  getCanSelectSubRows: () => boolean\r\n  toggleSelected: (value?: boolean) => void\r\n  getToggleSelectedHandler: () => (event: unknown) => void\r\n}\r\n\r\nexport interface RowSelectionInstance<TData extends RowData> {\r\n  getToggleAllRowsSelectedHandler: () => (event: unknown) => void\r\n  getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void\r\n  setRowSelection: (updater: Updater<RowSelectionState>) => void\r\n  resetRowSelection: (defaultState?: boolean) => void\r\n  getIsAllRowsSelected: () => boolean\r\n  getIsAllPageRowsSelected: () => boolean\r\n  getIsSomeRowsSelected: () => boolean\r\n  getIsSomePageRowsSelected: () => boolean\r\n  toggleAllRowsSelected: (value?: boolean) => void\r\n  toggleAllPageRowsSelected: (value?: boolean) => void\r\n  getPreSelectedRowModel: () => RowModel<TData>\r\n  getSelectedRowModel: () => RowModel<TData>\r\n  getFilteredSelectedRowModel: () => RowModel<TData>\r\n  getGroupedSelectedRowModel: () => RowModel<TData>\r\n}\r\n\r\n//\r\n\r\nexport const RowSelection: TableFeature = {\r\n  getInitialState: (state): RowSelectionTableState => {\r\n    return {\r\n      rowSelection: {},\r\n      ...state,\r\n    }\r\n  },\r\n\r\n  getDefaultOptions: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): RowSelectionOptions<TData> => {\r\n    return {\r\n      onRowSelectionChange: makeStateUpdater('rowSelection', table),\r\n      enableRowSelection: true,\r\n      enableMultiRowSelection: true,\r\n      enableSubRowSelection: true,\r\n      // enableGroupingRowSelection: false,\r\n      // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\r\n      // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\r\n    }\r\n  },\r\n\r\n  createTable: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): RowSelectionInstance<TData> => {\r\n    return {\r\n      setRowSelection: updater => table.options.onRowSelectionChange?.(updater),\r\n      resetRowSelection: defaultState =>\r\n        table.setRowSelection(\r\n          defaultState ? {} : table.initialState.rowSelection ?? {}\r\n        ),\r\n      toggleAllRowsSelected: value => {\r\n        table.setRowSelection(old => {\r\n          value =\r\n            typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected()\r\n\r\n          const rowSelection = { ...old }\r\n\r\n          const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows\r\n\r\n          // We don't use `mutateRowIsSelected` here for performance reasons.\r\n          // All of the rows are flat already, so it wouldn't be worth it\r\n          if (value) {\r\n            preGroupedFlatRows.forEach(row => {\r\n              if (!row.getCanSelect()) {\r\n                return\r\n              }\r\n              rowSelection[row.id] = true\r\n            })\r\n          } else {\r\n            preGroupedFlatRows.forEach(row => {\r\n              delete rowSelection[row.id]\r\n            })\r\n          }\r\n\r\n          return rowSelection\r\n        })\r\n      },\r\n      toggleAllPageRowsSelected: value =>\r\n        table.setRowSelection(old => {\r\n          const resolvedValue =\r\n            typeof value !== 'undefined'\r\n              ? value\r\n              : !table.getIsAllPageRowsSelected()\r\n\r\n          const rowSelection: RowSelectionState = { ...old }\r\n\r\n          table.getRowModel().rows.forEach(row => {\r\n            mutateRowIsSelected(rowSelection, row.id, resolvedValue, table)\r\n          })\r\n\r\n          return rowSelection\r\n        }),\r\n\r\n      // addRowSelectionRange: rowId => {\r\n      //   const {\r\n      //     rows,\r\n      //     rowsById,\r\n      //     options: { selectGroupingRows, selectSubRows },\r\n      //   } = table\r\n\r\n      //   const findSelectedRow = (rows: Row[]) => {\r\n      //     let found\r\n      //     rows.find(d => {\r\n      //       if (d.getIsSelected()) {\r\n      //         found = d\r\n      //         return true\r\n      //       }\r\n      //       const subFound = findSelectedRow(d.subRows || [])\r\n      //       if (subFound) {\r\n      //         found = subFound\r\n      //         return true\r\n      //       }\r\n      //       return false\r\n      //     })\r\n      //     return found\r\n      //   }\r\n\r\n      //   const firstRow = findSelectedRow(rows) || rows[0]\r\n      //   const lastRow = rowsById[rowId]\r\n\r\n      //   let include = false\r\n      //   const selectedRowIds = {}\r\n\r\n      //   const addRow = (row: Row) => {\r\n      //     mutateRowIsSelected(selectedRowIds, row.id, true, {\r\n      //       rowsById,\r\n      //       selectGroupingRows: selectGroupingRows!,\r\n      //       selectSubRows: selectSubRows!,\r\n      //     })\r\n      //   }\r\n\r\n      //   table.rows.forEach(row => {\r\n      //     const isFirstRow = row.id === firstRow.id\r\n      //     const isLastRow = row.id === lastRow.id\r\n\r\n      //     if (isFirstRow || isLastRow) {\r\n      //       if (!include) {\r\n      //         include = true\r\n      //       } else if (include) {\r\n      //         addRow(row)\r\n      //         include = false\r\n      //       }\r\n      //     }\r\n\r\n      //     if (include) {\r\n      //       addRow(row)\r\n      //     }\r\n      //   })\r\n\r\n      //   table.setRowSelection(selectedRowIds)\r\n      // },\r\n      getPreSelectedRowModel: () => table.getCoreRowModel(),\r\n      getSelectedRowModel: memo(\r\n        () => [table.getState().rowSelection, table.getCoreRowModel()],\r\n        (rowSelection, rowModel) => {\r\n          if (!Object.keys(rowSelection).length) {\r\n            return {\r\n              rows: [],\r\n              flatRows: [],\r\n              rowsById: {},\r\n            }\r\n          }\r\n\r\n          return selectRowsFn(table, rowModel)\r\n        },\r\n        {\r\n          key: process.env.NODE_ENV === 'development' && 'getSelectedRowModel',\r\n          debug: () => table.options.debugAll ?? table.options.debugTable,\r\n        }\r\n      ),\r\n\r\n      getFilteredSelectedRowModel: memo(\r\n        () => [table.getState().rowSelection, table.getFilteredRowModel()],\r\n        (rowSelection, rowModel) => {\r\n          if (!Object.keys(rowSelection).length) {\r\n            return {\r\n              rows: [],\r\n              flatRows: [],\r\n              rowsById: {},\r\n            }\r\n          }\r\n\r\n          return selectRowsFn(table, rowModel)\r\n        },\r\n        {\r\n          key:\r\n            process.env.NODE_ENV === 'production' &&\r\n            'getFilteredSelectedRowModel',\r\n          debug: () => table.options.debugAll ?? table.options.debugTable,\r\n        }\r\n      ),\r\n\r\n      getGroupedSelectedRowModel: memo(\r\n        () => [table.getState().rowSelection, table.getSortedRowModel()],\r\n        (rowSelection, rowModel) => {\r\n          if (!Object.keys(rowSelection).length) {\r\n            return {\r\n              rows: [],\r\n              flatRows: [],\r\n              rowsById: {},\r\n            }\r\n          }\r\n\r\n          return selectRowsFn(table, rowModel)\r\n        },\r\n        {\r\n          key:\r\n            process.env.NODE_ENV === 'production' &&\r\n            'getGroupedSelectedRowModel',\r\n          debug: () => table.options.debugAll ?? table.options.debugTable,\r\n        }\r\n      ),\r\n\r\n      ///\r\n\r\n      // getGroupingRowCanSelect: rowId => {\r\n      //   const row = table.getRow(rowId)\r\n\r\n      //   if (!row) {\r\n      //     throw new Error()\r\n      //   }\r\n\r\n      //   if (typeof table.options.enableGroupingRowSelection === 'function') {\r\n      //     return table.options.enableGroupingRowSelection(row)\r\n      //   }\r\n\r\n      //   return table.options.enableGroupingRowSelection ?? false\r\n      // },\r\n\r\n      getIsAllRowsSelected: () => {\r\n        const preGroupedFlatRows = table.getFilteredRowModel().flatRows\r\n        const { rowSelection } = table.getState()\r\n\r\n        let isAllRowsSelected = Boolean(\r\n          preGroupedFlatRows.length && Object.keys(rowSelection).length\r\n        )\r\n\r\n        if (isAllRowsSelected) {\r\n          if (\r\n            preGroupedFlatRows.some(\r\n              row => row.getCanSelect() && !rowSelection[row.id]\r\n            )\r\n          ) {\r\n            isAllRowsSelected = false\r\n          }\r\n        }\r\n\r\n        return isAllRowsSelected\r\n      },\r\n\r\n      getIsAllPageRowsSelected: () => {\r\n        const paginationFlatRows = table.getPaginationRowModel().flatRows\r\n        const { rowSelection } = table.getState()\r\n\r\n        let isAllPageRowsSelected = !!paginationFlatRows.length\r\n\r\n        if (\r\n          isAllPageRowsSelected &&\r\n          paginationFlatRows.some(\r\n            row => row.getCanSelect() && !rowSelection[row.id]\r\n          )\r\n        ) {\r\n          isAllPageRowsSelected = false\r\n        }\r\n\r\n        return isAllPageRowsSelected\r\n      },\r\n\r\n      getIsSomeRowsSelected: () => {\r\n        const totalSelected = Object.keys(\r\n          table.getState().rowSelection ?? {}\r\n        ).length\r\n        return (\r\n          totalSelected > 0 &&\r\n          totalSelected < table.getFilteredRowModel().flatRows.length\r\n        )\r\n      },\r\n\r\n      getIsSomePageRowsSelected: () => {\r\n        const paginationFlatRows = table.getPaginationRowModel().flatRows\r\n        return table.getIsAllPageRowsSelected()\r\n          ? false\r\n          : paginationFlatRows.some(\r\n              d => d.getIsSelected() || d.getIsSomeSelected()\r\n            )\r\n      },\r\n\r\n      getToggleAllRowsSelectedHandler: () => {\r\n        return (e: unknown) => {\r\n          table.toggleAllRowsSelected(\r\n            ((e as MouseEvent).target as HTMLInputElement).checked\r\n          )\r\n        }\r\n      },\r\n\r\n      getToggleAllPageRowsSelectedHandler: () => {\r\n        return (e: unknown) => {\r\n          table.toggleAllPageRowsSelected(\r\n            ((e as MouseEvent).target as HTMLInputElement).checked\r\n          )\r\n        }\r\n      },\r\n    }\r\n  },\r\n\r\n  createRow: <TData extends RowData>(\r\n    row: Row<TData>,\r\n    table: Table<TData>\r\n  ): RowSelectionRow => {\r\n    return {\r\n      toggleSelected: value => {\r\n        const isSelected = row.getIsSelected()\r\n\r\n        table.setRowSelection(old => {\r\n          value = typeof value !== 'undefined' ? value : !isSelected\r\n\r\n          if (isSelected === value) {\r\n            return old\r\n          }\r\n\r\n          const selectedRowIds = { ...old }\r\n\r\n          mutateRowIsSelected(selectedRowIds, row.id, value, table)\r\n\r\n          return selectedRowIds\r\n        })\r\n      },\r\n      getIsSelected: () => {\r\n        const { rowSelection } = table.getState()\r\n        return isRowSelected(row, rowSelection)\r\n      },\r\n\r\n      getIsSomeSelected: () => {\r\n        const { rowSelection } = table.getState()\r\n        return isSubRowSelected(row, rowSelection, table) === 'some'\r\n      },\r\n\r\n      getIsAllSubRowsSelected: () => {\r\n        const { rowSelection } = table.getState()\r\n        return isSubRowSelected(row, rowSelection, table) === 'all'\r\n      },\r\n\r\n      getCanSelect: () => {\r\n        if (typeof table.options.enableRowSelection === 'function') {\r\n          return table.options.enableRowSelection(row)\r\n        }\r\n\r\n        return table.options.enableRowSelection ?? true\r\n      },\r\n\r\n      getCanSelectSubRows: () => {\r\n        if (typeof table.options.enableSubRowSelection === 'function') {\r\n          return table.options.enableSubRowSelection(row)\r\n        }\r\n\r\n        return table.options.enableSubRowSelection ?? true\r\n      },\r\n\r\n      getCanMultiSelect: () => {\r\n        if (typeof table.options.enableMultiRowSelection === 'function') {\r\n          return table.options.enableMultiRowSelection(row)\r\n        }\r\n\r\n        return table.options.enableMultiRowSelection ?? true\r\n      },\r\n      getToggleSelectedHandler: () => {\r\n        const canSelect = row.getCanSelect()\r\n\r\n        return (e: unknown) => {\r\n          if (!canSelect) return\r\n          row.toggleSelected(\r\n            ((e as MouseEvent).target as HTMLInputElement)?.checked\r\n          )\r\n        }\r\n      },\r\n    }\r\n  },\r\n}\r\n\r\nconst mutateRowIsSelected = <TData extends RowData>(\r\n  selectedRowIds: Record<string, boolean>,\r\n  id: string,\r\n  value: boolean,\r\n  table: Table<TData>\r\n) => {\r\n  const row = table.getRow(id)\r\n\r\n  // const isGrouped = row.getIsGrouped()\r\n\r\n  // if ( // TODO: enforce grouping row selection rules\r\n  //   !isGrouped ||\r\n  //   (isGrouped && table.options.enableGroupingRowSelection)\r\n  // ) {\r\n  if (value) {\r\n    if (!row.getCanMultiSelect()) {\r\n      Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key])\r\n    }\r\n    if (row.getCanSelect()) {\r\n      selectedRowIds[id] = true\r\n    }\r\n  } else {\r\n    delete selectedRowIds[id]\r\n  }\r\n  // }\r\n\r\n  if (row.subRows?.length && row.getCanSelectSubRows()) {\r\n    row.subRows.forEach(row =>\r\n      mutateRowIsSelected(selectedRowIds, row.id, value, table)\r\n    )\r\n  }\r\n}\r\n\r\nexport function selectRowsFn<TData extends RowData>(\r\n  table: Table<TData>,\r\n  rowModel: RowModel<TData>\r\n): RowModel<TData> {\r\n  const rowSelection = table.getState().rowSelection\r\n\r\n  const newSelectedFlatRows: Row<TData>[] = []\r\n  const newSelectedRowsById: Record<string, Row<TData>> = {}\r\n\r\n  // Filters top level and nested rows\r\n  const recurseRows = (rows: Row<TData>[], depth = 0): Row<TData>[] => {\r\n    return rows\r\n      .map(row => {\r\n        const isSelected = isRowSelected(row, rowSelection)\r\n\r\n        if (isSelected) {\r\n          newSelectedFlatRows.push(row)\r\n          newSelectedRowsById[row.id] = row\r\n        }\r\n\r\n        if (row.subRows?.length) {\r\n          row = {\r\n            ...row,\r\n            subRows: recurseRows(row.subRows, depth + 1),\r\n          }\r\n        }\r\n\r\n        if (isSelected) {\r\n          return row\r\n        }\r\n      })\r\n      .filter(Boolean) as Row<TData>[]\r\n  }\r\n\r\n  return {\r\n    rows: recurseRows(rowModel.rows),\r\n    flatRows: newSelectedFlatRows,\r\n    rowsById: newSelectedRowsById,\r\n  }\r\n}\r\n\r\nexport function isRowSelected<TData extends RowData>(\r\n  row: Row<TData>,\r\n  selection: Record<string, boolean>\r\n): boolean {\r\n  return selection[row.id] ?? false\r\n}\r\n\r\nexport function isSubRowSelected<TData extends RowData>(\r\n  row: Row<TData>,\r\n  selection: Record<string, boolean>,\r\n  table: Table<TData>\r\n): boolean | 'some' | 'all' {\r\n  if (row.subRows && row.subRows.length) {\r\n    let allChildrenSelected = true\r\n    let someSelected = false\r\n\r\n    row.subRows.forEach(subRow => {\r\n      // Bail out early if we know both of these\r\n      if (someSelected && !allChildrenSelected) {\r\n        return\r\n      }\r\n\r\n      if (isRowSelected(subRow, selection)) {\r\n        someSelected = true\r\n      } else {\r\n        allChildrenSelected = false\r\n      }\r\n    })\r\n\r\n    return allChildrenSelected ? 'all' : someSelected ? 'some' : false\r\n  }\r\n\r\n  return false\r\n}\r\n","import { SortingFn } from './features/Sorting'\r\n\r\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\r\n\r\nconst alphanumeric: SortingFn<any> = (rowA, rowB, columnId) => {\r\n  return compareAlphanumeric(\r\n    toString(rowA.getValue(columnId)).toLowerCase(),\r\n    toString(rowB.getValue(columnId)).toLowerCase()\r\n  )\r\n}\r\n\r\nconst alphanumericCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\r\n  return compareAlphanumeric(\r\n    toString(rowA.getValue(columnId)),\r\n    toString(rowB.getValue(columnId))\r\n  )\r\n}\r\n\r\n// The text filter is more basic (less numeric support)\r\n// but is much faster\r\nconst text: SortingFn<any> = (rowA, rowB, columnId) => {\r\n  return compareBasic(\r\n    toString(rowA.getValue(columnId)).toLowerCase(),\r\n    toString(rowB.getValue(columnId)).toLowerCase()\r\n  )\r\n}\r\n\r\n// The text filter is more basic (less numeric support)\r\n// but is much faster\r\nconst textCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\r\n  return compareBasic(\r\n    toString(rowA.getValue(columnId)),\r\n    toString(rowB.getValue(columnId))\r\n  )\r\n}\r\n\r\nconst datetime: SortingFn<any> = (rowA, rowB, columnId) => {\r\n  const a = rowA.getValue<Date>(columnId)\r\n  const b = rowB.getValue<Date>(columnId)\r\n\r\n  // Can handle nullish values\r\n  // Use > and < because == (and ===) doesn't work with\r\n  // Date objects (would require calling getTime()).\r\n  return a > b ? 1 : a < b ? -1 : 0\r\n}\r\n\r\nconst basic: SortingFn<any> = (rowA, rowB, columnId) => {\r\n  return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))\r\n}\r\n\r\n// Utils\r\n\r\nfunction compareBasic(a: any, b: any) {\r\n  return a === b ? 0 : a > b ? 1 : -1\r\n}\r\n\r\nfunction toString(a: any) {\r\n  if (typeof a === 'number') {\r\n    if (isNaN(a) || a === Infinity || a === -Infinity) {\r\n      return ''\r\n    }\r\n    return String(a)\r\n  }\r\n  if (typeof a === 'string') {\r\n    return a\r\n  }\r\n  return ''\r\n}\r\n\r\n// Mixed sorting is slow, but very inclusive of many edge cases.\r\n// It handles numbers, mixed alphanumeric combinations, and even\r\n// null, undefined, and Infinity\r\nfunction compareAlphanumeric(aStr: string, bStr: string) {\r\n  // Split on number groups, but keep the delimiter\r\n  // Then remove falsey split values\r\n  const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)\r\n  const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)\r\n\r\n  // While\r\n  while (a.length && b.length) {\r\n    const aa = a.shift()!\r\n    const bb = b.shift()!\r\n\r\n    const an = parseInt(aa, 10)\r\n    const bn = parseInt(bb, 10)\r\n\r\n    const combo = [an, bn].sort()\r\n\r\n    // Both are string\r\n    if (isNaN(combo[0]!)) {\r\n      if (aa > bb) {\r\n        return 1\r\n      }\r\n      if (bb > aa) {\r\n        return -1\r\n      }\r\n      continue\r\n    }\r\n\r\n    // One is a string, one is a number\r\n    if (isNaN(combo[1]!)) {\r\n      return isNaN(an) ? -1 : 1\r\n    }\r\n\r\n    // Both are numbers\r\n    if (an > bn) {\r\n      return 1\r\n    }\r\n    if (bn > an) {\r\n      return -1\r\n    }\r\n  }\r\n\r\n  return a.length - b.length\r\n}\r\n\r\n// Exports\r\n\r\nexport const sortingFns = {\r\n  alphanumeric,\r\n  alphanumericCaseSensitive,\r\n  text,\r\n  textCaseSensitive,\r\n  datetime,\r\n  basic,\r\n}\r\n\r\nexport type BuiltInSortingFn = keyof typeof sortingFns\r\n","import { RowModel } from '..'\r\nimport { TableFeature } from '../core/table'\r\nimport {\r\n  BuiltInSortingFn,\r\n  reSplitAlphaNumeric,\r\n  sortingFns,\r\n} from '../sortingFns'\r\n\r\nimport {\r\n  Column,\r\n  OnChangeFn,\r\n  Table,\r\n  Row,\r\n  Updater,\r\n  RowData,\r\n  SortingFns,\r\n} from '../types'\r\n\r\nimport { isFunction, makeStateUpdater } from '../utils'\r\n\r\nexport type SortDirection = 'asc' | 'desc'\r\n\r\nexport interface ColumnSort {\r\n  id: string\r\n  desc: boolean\r\n}\r\n\r\nexport type SortingState = ColumnSort[]\r\n\r\nexport interface SortingTableState {\r\n  sorting: SortingState\r\n}\r\n\r\nexport interface SortingFn<TData extends RowData> {\r\n  (rowA: Row<TData>, rowB: Row<TData>, columnId: string): number\r\n}\r\n\r\nexport type CustomSortingFns<TData extends RowData> = Record<\r\n  string,\r\n  SortingFn<TData>\r\n>\r\n\r\nexport type SortingFnOption<TData extends RowData> =\r\n  | 'auto'\r\n  | keyof SortingFns\r\n  | BuiltInSortingFn\r\n  | SortingFn<TData>\r\n\r\nexport interface SortingColumnDef<TData extends RowData> {\r\n  sortingFn?: SortingFnOption<TData>\r\n  sortDescFirst?: boolean\r\n  enableSorting?: boolean\r\n  enableMultiSort?: boolean\r\n  invertSorting?: boolean\r\n  sortUndefined?: false | -1 | 1\r\n}\r\n\r\nexport interface SortingColumn<TData extends RowData> {\r\n  getAutoSortingFn: () => SortingFn<TData>\r\n  getAutoSortDir: () => SortDirection\r\n  getSortingFn: () => SortingFn<TData>\r\n  getFirstSortDir: () => SortDirection\r\n  getNextSortingOrder: () => SortDirection | false\r\n  getCanSort: () => boolean\r\n  getCanMultiSort: () => boolean\r\n  getSortIndex: () => number\r\n  getIsSorted: () => false | SortDirection\r\n  clearSorting: () => void\r\n  toggleSorting: (desc?: boolean, isMulti?: boolean) => void\r\n  getToggleSortingHandler: () => undefined | ((event: unknown) => void)\r\n}\r\n\r\ninterface SortingOptionsBase {\r\n  manualSorting?: boolean\r\n  onSortingChange?: OnChangeFn<SortingState>\r\n  enableSorting?: boolean\r\n  enableSortingRemoval?: boolean\r\n  enableMultiRemove?: boolean\r\n  enableMultiSort?: boolean\r\n  sortDescFirst?: boolean\r\n  getSortedRowModel?: (table: Table<any>) => () => RowModel<any>\r\n  maxMultiSortColCount?: number\r\n  isMultiSortEvent?: (e: unknown) => boolean\r\n}\r\n\r\ntype ResolvedSortingFns = keyof SortingFns extends never\r\n  ? {\r\n      sortingFns?: Record<string, SortingFn<any>>\r\n    }\r\n  : {\r\n      sortingFns: Record<keyof SortingFns, SortingFn<any>>\r\n    }\r\n\r\nexport interface SortingOptions<TData extends RowData>\r\n  extends SortingOptionsBase,\r\n    ResolvedSortingFns {}\r\n\r\nexport interface SortingInstance<TData extends RowData> {\r\n  setSorting: (updater: Updater<SortingState>) => void\r\n  resetSorting: (defaultState?: boolean) => void\r\n  getPreSortedRowModel: () => RowModel<TData>\r\n  getSortedRowModel: () => RowModel<TData>\r\n  _getSortedRowModel?: () => RowModel<TData>\r\n}\r\n\r\n//\r\n\r\nexport const Sorting: TableFeature = {\r\n  getInitialState: (state): SortingTableState => {\r\n    return {\r\n      sorting: [],\r\n      ...state,\r\n    }\r\n  },\r\n\r\n  getDefaultColumnDef: <TData extends RowData>(): SortingColumnDef<TData> => {\r\n    return {\r\n      sortingFn: 'auto',\r\n    }\r\n  },\r\n\r\n  getDefaultOptions: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): SortingOptions<TData> => {\r\n    return {\r\n      onSortingChange: makeStateUpdater('sorting', table),\r\n      isMultiSortEvent: (e: unknown) => {\r\n        return (e as MouseEvent).shiftKey\r\n      },\r\n    }\r\n  },\r\n\r\n  createColumn: <TData extends RowData, TValue>(\r\n    column: Column<TData, TValue>,\r\n    table: Table<TData>\r\n  ): SortingColumn<TData> => {\r\n    return {\r\n      getAutoSortingFn: () => {\r\n        const firstRows = table.getFilteredRowModel().flatRows.slice(10)\r\n\r\n        let isString = false\r\n\r\n        for (const row of firstRows) {\r\n          const value = row?.getValue(column.id)\r\n\r\n          if (Object.prototype.toString.call(value) === '[object Date]') {\r\n            return sortingFns.datetime\r\n          }\r\n\r\n          if (typeof value === 'string') {\r\n            isString = true\r\n\r\n            if (value.split(reSplitAlphaNumeric).length > 1) {\r\n              return sortingFns.alphanumeric\r\n            }\r\n          }\r\n        }\r\n\r\n        if (isString) {\r\n          return sortingFns.text\r\n        }\r\n\r\n        return sortingFns.basic\r\n      },\r\n      getAutoSortDir: () => {\r\n        const firstRow = table.getFilteredRowModel().flatRows[0]\r\n\r\n        const value = firstRow?.getValue(column.id)\r\n\r\n        if (typeof value === 'string') {\r\n          return 'asc'\r\n        }\r\n\r\n        return 'desc'\r\n      },\r\n      getSortingFn: () => {\r\n        if (!column) {\r\n          throw new Error()\r\n        }\r\n\r\n        return isFunction(column.columnDef.sortingFn)\r\n          ? column.columnDef.sortingFn\r\n          : column.columnDef.sortingFn === 'auto'\r\n          ? column.getAutoSortingFn()\r\n          : table.options.sortingFns?.[column.columnDef.sortingFn as string] ??\r\n            sortingFns[column.columnDef.sortingFn as BuiltInSortingFn]\r\n      },\r\n      toggleSorting: (desc, multi) => {\r\n        // if (column.columns.length) {\r\n        //   column.columns.forEach((c, i) => {\r\n        //     if (c.id) {\r\n        //       table.toggleColumnSorting(c.id, undefined, multi || !!i)\r\n        //     }\r\n        //   })\r\n        //   return\r\n        // }\r\n\r\n        // this needs to be outside of table.setSorting to be in sync with rerender\r\n        const nextSortingOrder = column.getNextSortingOrder()\r\n        const hasManualValue = typeof desc !== 'undefined' && desc !== null\r\n\r\n        table.setSorting(old => {\r\n          // Find any existing sorting for this column\r\n          const existingSorting = old?.find(d => d.id === column.id)\r\n          const existingIndex = old?.findIndex(d => d.id === column.id)\r\n\r\n          let newSorting: SortingState = []\r\n\r\n          // What should we do with this sort action?\r\n          let sortAction: 'add' | 'remove' | 'toggle' | 'replace'\r\n          let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\r\n\r\n          // Multi-mode\r\n          if (old?.length && column.getCanMultiSort() && multi) {\r\n            if (existingSorting) {\r\n              sortAction = 'toggle'\r\n            } else {\r\n              sortAction = 'add'\r\n            }\r\n          } else {\r\n            // Normal mode\r\n            if (old?.length && existingIndex !== old.length - 1) {\r\n              sortAction = 'replace'\r\n            } else if (existingSorting) {\r\n              sortAction = 'toggle'\r\n            } else {\r\n              sortAction = 'replace'\r\n            }\r\n          }\r\n\r\n          // Handle toggle states that will remove the sorting\r\n          if (sortAction === 'toggle') {\r\n            // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\r\n            if (!hasManualValue) {\r\n              // Is our intention to remove?\r\n              if (!nextSortingOrder) {\r\n                sortAction = 'remove'\r\n              }\r\n            }\r\n          }\r\n\r\n          if (sortAction === 'add') {\r\n            newSorting = [\r\n              ...old,\r\n              {\r\n                id: column.id,\r\n                desc: nextDesc,\r\n              },\r\n            ]\r\n            // Take latest n columns\r\n            newSorting.splice(\r\n              0,\r\n              newSorting.length -\r\n                (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER)\r\n            )\r\n          } else if (sortAction === 'toggle') {\r\n            // This flips (or sets) the\r\n            newSorting = old.map(d => {\r\n              if (d.id === column.id) {\r\n                return {\r\n                  ...d,\r\n                  desc: nextDesc,\r\n                }\r\n              }\r\n              return d\r\n            })\r\n          } else if (sortAction === 'remove') {\r\n            newSorting = old.filter(d => d.id !== column.id)\r\n          } else {\r\n            newSorting = [\r\n              {\r\n                id: column.id,\r\n                desc: nextDesc,\r\n              },\r\n            ]\r\n          }\r\n\r\n          return newSorting\r\n        })\r\n      },\r\n\r\n      getFirstSortDir: () => {\r\n        const sortDescFirst =\r\n          column.columnDef.sortDescFirst ??\r\n          table.options.sortDescFirst ??\r\n          column.getAutoSortDir() === 'desc'\r\n        return sortDescFirst ? 'desc' : 'asc'\r\n      },\r\n\r\n      getNextSortingOrder: (multi?: boolean) => {\r\n        const firstSortDirection = column.getFirstSortDir()\r\n        const isSorted = column.getIsSorted()\r\n\r\n        if (!isSorted) {\r\n          return firstSortDirection\r\n        }\r\n\r\n        if (\r\n          isSorted !== firstSortDirection &&\r\n          (table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\r\n          (multi ? table.options.enableMultiRemove ?? true : true) // If multi, don't allow if enableMultiRemove))\r\n        ) {\r\n          return false\r\n        }\r\n        return isSorted === 'desc' ? 'asc' : 'desc'\r\n      },\r\n\r\n      getCanSort: () => {\r\n        return (\r\n          (column.columnDef.enableSorting ?? true) &&\r\n          (table.options.enableSorting ?? true) &&\r\n          !!column.accessorFn\r\n        )\r\n      },\r\n\r\n      getCanMultiSort: () => {\r\n        return (\r\n          column.columnDef.enableMultiSort ??\r\n          table.options.enableMultiSort ??\r\n          !!column.accessorFn\r\n        )\r\n      },\r\n\r\n      getIsSorted: () => {\r\n        const columnSort = table\r\n          .getState()\r\n          .sorting?.find(d => d.id === column.id)\r\n\r\n        return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\r\n      },\r\n\r\n      getSortIndex: () =>\r\n        table.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,\r\n\r\n      clearSorting: () => {\r\n        //clear sorting for just 1 column\r\n        table.setSorting(old =>\r\n          old?.length ? old.filter(d => d.id !== column.id) : []\r\n        )\r\n      },\r\n\r\n      getToggleSortingHandler: () => {\r\n        const canSort = column.getCanSort()\r\n\r\n        return (e: unknown) => {\r\n          if (!canSort) return\r\n          ;(e as any).persist?.()\r\n          column.toggleSorting?.(\r\n            undefined,\r\n            column.getCanMultiSort()\r\n              ? table.options.isMultiSortEvent?.(e)\r\n              : false\r\n          )\r\n        }\r\n      },\r\n    }\r\n  },\r\n\r\n  createTable: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): SortingInstance<TData> => {\r\n    return {\r\n      setSorting: updater => table.options.onSortingChange?.(updater),\r\n      resetSorting: defaultState => {\r\n        table.setSorting(defaultState ? [] : table.initialState?.sorting ?? [])\r\n      },\r\n      getPreSortedRowModel: () => table.getGroupedRowModel(),\r\n      getSortedRowModel: () => {\r\n        if (!table._getSortedRowModel && table.options.getSortedRowModel) {\r\n          table._getSortedRowModel = table.options.getSortedRowModel(table)\r\n        }\r\n\r\n        if (table.options.manualSorting || !table._getSortedRowModel) {\r\n          return table.getPreSortedRowModel()\r\n        }\r\n\r\n        return table._getSortedRowModel()\r\n      },\r\n    }\r\n  },\r\n}\r\n","import { TableFeature } from '../core/table'\r\nimport {\r\n  Cell,\r\n  Column,\r\n  OnChangeFn,\r\n  Table,\r\n  Updater,\r\n  Row,\r\n  RowData,\r\n} from '../types'\r\nimport { makeStateUpdater, memo } from '../utils'\r\n\r\nexport type VisibilityState = Record<string, boolean>\r\n\r\nexport interface VisibilityTableState {\r\n  columnVisibility: VisibilityState\r\n}\r\n\r\nexport interface VisibilityOptions {\r\n  onColumnVisibilityChange?: OnChangeFn<VisibilityState>\r\n  enableHiding?: boolean\r\n}\r\n\r\nexport interface VisibilityDefaultOptions {\r\n  onColumnVisibilityChange: OnChangeFn<VisibilityState>\r\n}\r\n\r\nexport interface VisibilityInstance<TData extends RowData> {\r\n  getVisibleFlatColumns: () => Column<TData, unknown>[]\r\n  getVisibleLeafColumns: () => Column<TData, unknown>[]\r\n  getLeftVisibleLeafColumns: () => Column<TData, unknown>[]\r\n  getRightVisibleLeafColumns: () => Column<TData, unknown>[]\r\n  getCenterVisibleLeafColumns: () => Column<TData, unknown>[]\r\n  setColumnVisibility: (updater: Updater<VisibilityState>) => void\r\n  resetColumnVisibility: (defaultState?: boolean) => void\r\n  toggleAllColumnsVisible: (value?: boolean) => void\r\n  getIsAllColumnsVisible: () => boolean\r\n  getIsSomeColumnsVisible: () => boolean\r\n  getToggleAllColumnsVisibilityHandler: () => (event: unknown) => void\r\n}\r\n\r\nexport interface VisibilityColumnDef {\r\n  enableHiding?: boolean\r\n}\r\n\r\nexport interface VisibilityRow<TData extends RowData> {\r\n  _getAllVisibleCells: () => Cell<TData, unknown>[]\r\n  getVisibleCells: () => Cell<TData, unknown>[]\r\n}\r\n\r\nexport interface VisibilityColumn {\r\n  getCanHide: () => boolean\r\n  getIsVisible: () => boolean\r\n  toggleVisibility: (value?: boolean) => void\r\n  getToggleVisibilityHandler: () => (event: unknown) => void\r\n}\r\n\r\n//\r\n\r\nexport const Visibility: TableFeature = {\r\n  getInitialState: (state): VisibilityTableState => {\r\n    return {\r\n      columnVisibility: {},\r\n      ...state,\r\n    }\r\n  },\r\n\r\n  getDefaultOptions: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): VisibilityDefaultOptions => {\r\n    return {\r\n      onColumnVisibilityChange: makeStateUpdater('columnVisibility', table),\r\n    }\r\n  },\r\n\r\n  createColumn: <TData extends RowData, TValue>(\r\n    column: Column<TData, TValue>,\r\n    table: Table<TData>\r\n  ): VisibilityColumn => {\r\n    return {\r\n      toggleVisibility: value => {\r\n        if (column.getCanHide()) {\r\n          table.setColumnVisibility(old => ({\r\n            ...old,\r\n            [column.id]: value ?? !column.getIsVisible(),\r\n          }))\r\n        }\r\n      },\r\n      getIsVisible: () => {\r\n        return table.getState().columnVisibility?.[column.id] ?? true\r\n      },\r\n\r\n      getCanHide: () => {\r\n        return (\r\n          (column.columnDef.enableHiding ?? true) &&\r\n          (table.options.enableHiding ?? true)\r\n        )\r\n      },\r\n      getToggleVisibilityHandler: () => {\r\n        return (e: unknown) => {\r\n          column.toggleVisibility?.(\r\n            ((e as MouseEvent).target as HTMLInputElement).checked\r\n          )\r\n        }\r\n      },\r\n    }\r\n  },\r\n\r\n  createRow: <TData extends RowData>(\r\n    row: Row<TData>,\r\n    table: Table<TData>\r\n  ): VisibilityRow<TData> => {\r\n    return {\r\n      _getAllVisibleCells: memo(\r\n        () => [row.getAllCells(), table.getState().columnVisibility],\r\n        cells => {\r\n          return cells.filter(cell => cell.column.getIsVisible())\r\n        },\r\n        {\r\n          key:\r\n            process.env.NODE_ENV === 'production' && 'row._getAllVisibleCells',\r\n          debug: () => table.options.debugAll ?? table.options.debugRows,\r\n        }\r\n      ),\r\n      getVisibleCells: memo(\r\n        () => [\r\n          row.getLeftVisibleCells(),\r\n          row.getCenterVisibleCells(),\r\n          row.getRightVisibleCells(),\r\n        ],\r\n        (left, center, right) => [...left, ...center, ...right],\r\n        {\r\n          key: process.env.NODE_ENV === 'development' && 'row.getVisibleCells',\r\n          debug: () => table.options.debugAll ?? table.options.debugRows,\r\n        }\r\n      ),\r\n    }\r\n  },\r\n\r\n  createTable: <TData extends RowData>(\r\n    table: Table<TData>\r\n  ): VisibilityInstance<TData> => {\r\n    const makeVisibleColumnsMethod = (\r\n      key: string,\r\n      getColumns: () => Column<TData, unknown>[]\r\n    ): (() => Column<TData, unknown>[]) => {\r\n      return memo(\r\n        () => [\r\n          getColumns(),\r\n          getColumns()\r\n            .filter(d => d.getIsVisible())\r\n            .map(d => d.id)\r\n            .join('_'),\r\n        ],\r\n        columns => {\r\n          return columns.filter(d => d.getIsVisible?.())\r\n        },\r\n        {\r\n          key,\r\n          debug: () => table.options.debugAll ?? table.options.debugColumns,\r\n        }\r\n      )\r\n    }\r\n\r\n    return {\r\n      getVisibleFlatColumns: makeVisibleColumnsMethod(\r\n        'getVisibleFlatColumns',\r\n        () => table.getAllFlatColumns()\r\n      ),\r\n      getVisibleLeafColumns: makeVisibleColumnsMethod(\r\n        'getVisibleLeafColumns',\r\n        () => table.getAllLeafColumns()\r\n      ),\r\n      getLeftVisibleLeafColumns: makeVisibleColumnsMethod(\r\n        'getLeftVisibleLeafColumns',\r\n        () => table.getLeftLeafColumns()\r\n      ),\r\n      getRightVisibleLeafColumns: makeVisibleColumnsMethod(\r\n        'getRightVisibleLeafColumns',\r\n        () => table.getRightLeafColumns()\r\n      ),\r\n      getCenterVisibleLeafColumns: makeVisibleColumnsMethod(\r\n        'getCenterVisibleLeafColumns',\r\n        () => table.getCenterLeafColumns()\r\n      ),\r\n\r\n      setColumnVisibility: updater =>\r\n        table.options.onColumnVisibilityChange?.(updater),\r\n\r\n      resetColumnVisibility: defaultState => {\r\n        table.setColumnVisibility(\r\n          defaultState ? {} : table.initialState.columnVisibility ?? {}\r\n        )\r\n      },\r\n\r\n      toggleAllColumnsVisible: value => {\r\n        value = value ?? !table.getIsAllColumnsVisible()\r\n\r\n        table.setColumnVisibility(\r\n          table.getAllLeafColumns().reduce(\r\n            (obj, column) => ({\r\n              ...obj,\r\n              [column.id]: !value ? !column.getCanHide?.() : value,\r\n            }),\r\n            {}\r\n          )\r\n        )\r\n      },\r\n\r\n      getIsAllColumnsVisible: () =>\r\n        !table.getAllLeafColumns().some(column => !column.getIsVisible?.()),\r\n\r\n      getIsSomeColumnsVisible: () =>\r\n        table.getAllLeafColumns().some(column => column.getIsVisible?.()),\r\n\r\n      getToggleAllColumnsVisibilityHandler: () => {\r\n        return (e: unknown) => {\r\n          table.toggleAllColumnsVisible(\r\n            ((e as MouseEvent).target as HTMLInputElement)?.checked\r\n          )\r\n        }\r\n      },\r\n    }\r\n  },\r\n}\r\n","import { functionalUpdate, memo, RequiredKeys } from '../utils'\n\nimport {\n  Updater,\n  TableOptionsResolved,\n  TableState,\n  Table,\n  InitialTableState,\n  Row,\n  Column,\n  RowModel,\n  ColumnDef,\n  TableOptions,\n  RowData,\n  TableMeta,\n  ColumnDefResolved,\n  GroupColumnDef,\n} from '../types'\n\n//\nimport { createColumn } from './column'\nimport { Headers } from './headers'\n//\n\nimport { ColumnSizing } from '../features/ColumnSizing'\nimport { Expanding } from '../features/Expanding'\nimport { Filters } from '../features/Filters'\nimport { Grouping } from '../features/Grouping'\nimport { Ordering } from '../features/Ordering'\nimport { Pagination } from '../features/Pagination'\nimport { Pinning } from '../features/Pinning'\nimport { RowSelection } from '../features/RowSelection'\nimport { Sorting } from '../features/Sorting'\nimport { Visibility } from '../features/Visibility'\n\nexport interface TableFeature {\n  getDefaultOptions?: (table: any) => any\n  getInitialState?: (initialState?: InitialTableState) => any\n  createTable?: (table: any) => any\n  getDefaultColumnDef?: () => any\n  createColumn?: (column: any, table: any) => any\n  createHeader?: (column: any, table: any) => any\n  createCell?: (cell: any, column: any, row: any, table: any) => any\n  createRow?: (row: any, table: any) => any\n}\n\nconst features = [\n  Headers,\n  Visibility,\n  Ordering,\n  Pinning,\n  Filters,\n  Sorting,\n  Grouping,\n  Expanding,\n  Pagination,\n  RowSelection,\n  ColumnSizing,\n] as const\n\n//\n\nexport interface CoreTableState {}\n\nexport interface CoreOptions<TData extends RowData> {\n  data: TData[]\n  state: Partial<TableState>\n  onStateChange: (updater: Updater<TableState>) => void\n  debugAll?: boolean\n  debugTable?: boolean\n  debugHeaders?: boolean\n  debugColumns?: boolean\n  debugRows?: boolean\n  initialState?: InitialTableState\n  autoResetAll?: boolean\n  mergeOptions?: (\n    defaultOptions: TableOptions<TData>,\n    options: Partial<TableOptions<TData>>\n  ) => TableOptions<TData>\n  meta?: TableMeta<TData>\n  getCoreRowModel: (table: Table<any>) => () => RowModel<any>\n  getSubRows?: (originalRow: TData, index: number) => undefined | TData[]\n  getRowId?: (originalRow: TData, index: number, parent?: Row<TData>) => string\n  columns: ColumnDef<TData, any>[]\n  defaultColumn?: Partial<ColumnDef<TData, unknown>>\n  renderFallbackValue: any\n}\n\nexport interface CoreInstance<TData extends RowData> {\n  initialState: TableState\n  reset: () => void\n  options: RequiredKeys<TableOptionsResolved<TData>, 'state'>\n  setOptions: (newOptions: Updater<TableOptionsResolved<TData>>) => void\n  getState: () => TableState\n  setState: (updater: Updater<TableState>) => void\n  _features: readonly TableFeature[]\n  _queue: (cb: () => void) => void\n  _getRowId: (_: TData, index: number, parent?: Row<TData>) => string\n  getCoreRowModel: () => RowModel<TData>\n  _getCoreRowModel?: () => RowModel<TData>\n  getRowModel: () => RowModel<TData>\n  getRow: (id: string) => Row<TData>\n  _getDefaultColumnDef: () => Partial<ColumnDef<TData, unknown>>\n  _getColumnDefs: () => ColumnDef<TData, unknown>[]\n  _getAllFlatColumnsById: () => Record<string, Column<TData, unknown>>\n  getAllColumns: () => Column<TData, unknown>[]\n  getAllFlatColumns: () => Column<TData, unknown>[]\n  getAllLeafColumns: () => Column<TData, unknown>[]\n  getColumn: (columnId: string) => Column<TData, unknown> | undefined\n}\n\nexport function createTable<TData extends RowData>(\n  options: TableOptionsResolved<TData>\n): Table<TData> {\n  if (options.debugAll || options.debugTable) {\n    console.info('Creating Table Instance...')\n  }\n\n  let table = { _features: features } as unknown as Table<TData>\n\n  const defaultOptions = table._features.reduce((obj, feature) => {\n    return Object.assign(obj, feature.getDefaultOptions?.(table))\n  }, {}) as TableOptionsResolved<TData>\n\n  const mergeOptions = (options: TableOptionsResolved<TData>) => {\n    if (table.options.mergeOptions) {\n      return table.options.mergeOptions(defaultOptions, options)\n    }\n\n    return {\n      ...defaultOptions,\n      ...options,\n    }\n  }\n\n  const coreInitialState: CoreTableState = {}\n\n  let initialState = {\n    ...coreInitialState,\n    ...(options.initialState ?? {}),\n  } as TableState\n\n  table._features.forEach(feature => {\n    initialState = feature.getInitialState?.(initialState) ?? initialState\n  })\n\n  const queued: (() => void)[] = []\n  let queuedTimeout = false\n\n  const coreInstance: CoreInstance<TData> = {\n    _features: features,\n    options: {\n      ...defaultOptions,\n      ...options,\n    },\n    initialState,\n    _queue: cb => {\n      queued.push(cb)\n\n      if (!queuedTimeout) {\n        queuedTimeout = true\n\n        // Schedule a microtask to run the queued callbacks after\n        // the current call stack (render, etc) has finished.\n        Promise.resolve()\n          .then(() => {\n            while (queued.length) {\n              queued.shift()!()\n            }\n            queuedTimeout = false\n          })\n          .catch(error =>\n            setTimeout(() => {\n              throw error\n            })\n          )\n      }\n    },\n    reset: () => {\n      table.setState(table.initialState)\n    },\n    setOptions: updater => {\n      const newOptions = functionalUpdate(updater, table.options)\n      table.options = mergeOptions(newOptions) as RequiredKeys<\n        TableOptionsResolved<TData>,\n        'state'\n      >\n    },\n\n    getState: () => {\n      return table.options.state as TableState\n    },\n\n    setState: (updater: Updater<TableState>) => {\n      table.options.onStateChange?.(updater)\n    },\n\n    _getRowId: (row: TData, index: number, parent?: Row<TData>) =>\n      table.options.getRowId?.(row, index, parent) ??\n      `${parent ? [parent.id, index].join('.') : index}`,\n\n    getCoreRowModel: () => {\n      if (!table._getCoreRowModel) {\n        table._getCoreRowModel = table.options.getCoreRowModel(table)\n      }\n\n      return table._getCoreRowModel!()\n    },\n\n    // The final calls start at the bottom of the model,\n    // expanded rows, which then work their way up\n\n    getRowModel: () => {\n      return table.getPaginationRowModel()\n    },\n    getRow: (id: string) => {\n      const row = table.getRowModel().rowsById[id]\n\n      if (!row) {\n        if (process.env.NODE_ENV !== 'production') {\n          throw new Error(`getRow expected an ID, but got ${id}`)\n        }\n        throw new Error()\n      }\n\n      return row\n    },\n    _getDefaultColumnDef: memo(\n      () => [table.options.defaultColumn],\n      defaultColumn => {\n        defaultColumn = (defaultColumn ?? {}) as Partial<\n          ColumnDef<TData, unknown>\n        >\n\n        return {\n          header: props => {\n            const resolvedColumnDef = props.header.column\n              .columnDef as ColumnDefResolved<TData>\n\n            if (resolvedColumnDef.accessorKey) {\n              return resolvedColumnDef.accessorKey\n            }\n\n            if (resolvedColumnDef.accessorFn) {\n              return resolvedColumnDef.id\n            }\n\n            return null\n          },\n          // footer: props => props.header.column.id,\n          cell: props => props.renderValue<any>()?.toString?.() ?? null,\n          ...table._features.reduce((obj, feature) => {\n            return Object.assign(obj, feature.getDefaultColumnDef?.())\n          }, {}),\n          ...defaultColumn,\n        } as Partial<ColumnDef<TData, unknown>>\n      },\n      {\n        debug: () => table.options.debugAll ?? table.options.debugColumns,\n        key: process.env.NODE_ENV === 'development' && 'getDefaultColumnDef',\n      }\n    ),\n\n    _getColumnDefs: () => table.options.columns,\n\n    getAllColumns: memo(\n      () => [table._getColumnDefs()],\n      columnDefs => {\n        const recurseColumns = (\n          columnDefs: ColumnDef<TData, unknown>[],\n          parent?: Column<TData, unknown>,\n          depth = 0\n        ): Column<TData, unknown>[] => {\n          return columnDefs.map(columnDef => {\n            const column = createColumn(table, columnDef, depth, parent)\n\n            const groupingColumnDef = columnDef as GroupColumnDef<\n              TData,\n              unknown\n            >\n\n            column.columns = groupingColumnDef.columns\n              ? recurseColumns(groupingColumnDef.columns, column, depth + 1)\n              : []\n\n            return column\n          })\n        }\n\n        return recurseColumns(columnDefs)\n      },\n      {\n        key: process.env.NODE_ENV === 'development' && 'getAllColumns',\n        debug: () => table.options.debugAll ?? table.options.debugColumns,\n      }\n    ),\n\n    getAllFlatColumns: memo(\n      () => [table.getAllColumns()],\n      allColumns => {\n        return allColumns.flatMap(column => {\n          return column.getFlatColumns()\n        })\n      },\n      {\n        key: process.env.NODE_ENV === 'development' && 'getAllFlatColumns',\n        debug: () => table.options.debugAll ?? table.options.debugColumns,\n      }\n    ),\n\n    _getAllFlatColumnsById: memo(\n      () => [table.getAllFlatColumns()],\n      flatColumns => {\n        return flatColumns.reduce((acc, column) => {\n          acc[column.id] = column\n          return acc\n        }, {} as Record<string, Column<TData, unknown>>)\n      },\n      {\n        key: process.env.NODE_ENV === 'development' && 'getAllFlatColumnsById',\n        debug: () => table.options.debugAll ?? table.options.debugColumns,\n      }\n    ),\n\n    getAllLeafColumns: memo(\n      () => [table.getAllColumns(), table._getOrderColumnsFn()],\n      (allColumns, orderColumns) => {\n        let leafColumns = allColumns.flatMap(column => column.getLeafColumns())\n        return orderColumns(leafColumns)\n      },\n      {\n        key: process.env.NODE_ENV === 'development' && 'getAllLeafColumns',\n        debug: () => table.options.debugAll ?? table.options.debugColumns,\n      }\n    ),\n\n    getColumn: columnId => {\n      const column = table._getAllFlatColumnsById()[columnId]\n\n      if (process.env.NODE_ENV !== 'production' && !column) {\n        console.error(`[Table] Column with id '${columnId}' does not exist.`)\n      }\n\n      return column\n    },\n  }\n\n  Object.assign(table, coreInstance)\n\n  table._features.forEach(feature => {\n    return Object.assign(table, feature.createTable?.(table))\n  })\n\n  return table\n}\n","import { RowData, Cell, Column, Row, Table } from '../types'\r\nimport { Getter, memo } from '../utils'\r\n\r\nexport interface CellContext<TData extends RowData, TValue> {\r\n  table: Table<TData>\r\n  column: Column<TData, TValue>\r\n  row: Row<TData>\r\n  cell: Cell<TData, TValue>\r\n  getValue: Getter<TValue>\r\n  renderValue: Getter<TValue | null>\r\n}\r\n\r\nexport interface CoreCell<TData extends RowData, TValue> {\r\n  id: string\r\n  getValue: CellContext<TData, TValue>['getValue']\r\n  renderValue: CellContext<TData, TValue>['renderValue']\r\n  row: Row<TData>\r\n  column: Column<TData, TValue>\r\n  getContext: () => CellContext<TData, TValue>\r\n}\r\n\r\nexport function createCell<TData extends RowData, TValue>(\r\n  table: Table<TData>,\r\n  row: Row<TData>,\r\n  column: Column<TData, TValue>,\r\n  columnId: string\r\n): Cell<TData, TValue> {\r\n  const getRenderValue = () =>\r\n    cell.getValue() ?? table.options.renderFallbackValue\r\n\r\n  const cell: CoreCell<TData, TValue> = {\r\n    id: `${row.id}_${column.id}`,\r\n    row,\r\n    column,\r\n    getValue: () => row.getValue(columnId),\r\n    renderValue: getRenderValue,\r\n    getContext: memo(\r\n      () => [table, column, row, cell],\r\n      (table, column, row, cell) => ({\r\n        table,\r\n        column,\r\n        row,\r\n        cell: cell as Cell<TData, TValue>,\r\n        getValue: cell.getValue,\r\n        renderValue: cell.renderValue,\r\n      }),\r\n      {\r\n        key: process.env.NODE_ENV === 'development' && 'cell.getContext',\r\n        debug: () => table.options.debugAll,\r\n      }\r\n    ),\r\n  }\r\n\r\n  table._features.forEach(feature => {\r\n    Object.assign(\r\n      cell,\r\n      feature.createCell?.(\r\n        cell as Cell<TData, TValue>,\r\n        column,\r\n        row as Row<TData>,\r\n        table\r\n      )\r\n    )\r\n  }, {})\r\n\r\n  return cell as Cell<TData, TValue>\r\n}\r\n","import { RowData, Cell, Row, Table } from '../types'\r\nimport { flattenBy, memo } from '../utils'\r\nimport { createCell } from './cell'\r\n\r\nexport interface CoreRow<TData extends RowData> {\r\n  id: string\r\n  index: number\r\n  original: TData\r\n  depth: number\r\n  _valuesCache: Record<string, unknown>\r\n  _uniqueValuesCache: Record<string, unknown>\r\n  getValue: <TValue>(columnId: string) => TValue\r\n  getUniqueValues: <TValue>(columnId: string) => TValue[]\r\n  renderValue: <TValue>(columnId: string) => TValue\r\n  subRows: Row<TData>[]\r\n  getLeafRows: () => Row<TData>[]\r\n  originalSubRows?: TData[]\r\n  getAllCells: () => Cell<TData, unknown>[]\r\n  _getAllCellsByColumnId: () => Record<string, Cell<TData, unknown>>\r\n}\r\n\r\nexport const createRow = <TData extends RowData>(\r\n  table: Table<TData>,\r\n  id: string,\r\n  original: TData,\r\n  rowIndex: number,\r\n  depth: number,\r\n  subRows?: Row<TData>[]\r\n): Row<TData> => {\r\n  let row: CoreRow<TData> = {\r\n    id,\r\n    index: rowIndex,\r\n    original,\r\n    depth,\r\n    _valuesCache: {},\r\n    _uniqueValuesCache: {},\r\n    getValue: columnId => {\r\n      if (row._valuesCache.hasOwnProperty(columnId)) {\r\n        return row._valuesCache[columnId]\r\n      }\r\n\r\n      const column = table.getColumn(columnId)\r\n\r\n      if (!column?.accessorFn) {\r\n        return undefined\r\n      }\r\n\r\n      row._valuesCache[columnId] = column.accessorFn(\r\n        row.original as TData,\r\n        rowIndex\r\n      )\r\n\r\n      return row._valuesCache[columnId] as any\r\n    },\r\n    getUniqueValues: columnId => {\r\n      if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\r\n        return row._uniqueValuesCache[columnId]\r\n      }\r\n\r\n      const column = table.getColumn(columnId)\r\n\r\n      if (!column?.accessorFn) {\r\n        return undefined\r\n      }\r\n\r\n      if (!column.columnDef.getUniqueValues) {\r\n        row._uniqueValuesCache[columnId] = [row.getValue(columnId)]\r\n        return row._uniqueValuesCache[columnId]\r\n      }\r\n\r\n      row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(\r\n        row.original as TData,\r\n        rowIndex\r\n      )\r\n\r\n      return row._uniqueValuesCache[columnId] as any\r\n    },\r\n    renderValue: columnId =>\r\n      row.getValue(columnId) ?? table.options.renderFallbackValue,\r\n    subRows: subRows ?? [],\r\n    getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\r\n    getAllCells: memo(\r\n      () => [table.getAllLeafColumns()],\r\n      leafColumns => {\r\n        return leafColumns.map(column => {\r\n          return createCell(table, row as Row<TData>, column, column.id)\r\n        })\r\n      },\r\n      {\r\n        key: process.env.NODE_ENV === 'development' && 'row.getAllCells',\r\n        debug: () => table.options.debugAll ?? table.options.debugRows,\r\n      }\r\n    ),\r\n\r\n    _getAllCellsByColumnId: memo(\r\n      () => [row.getAllCells()],\r\n      allCells => {\r\n        return allCells.reduce((acc, cell) => {\r\n          acc[cell.column.id] = cell\r\n          return acc\r\n        }, {} as Record<string, Cell<TData, unknown>>)\r\n      },\r\n      {\r\n        key:\r\n          process.env.NODE_ENV === 'production' && 'row.getAllCellsByColumnId',\r\n        debug: () => table.options.debugAll ?? table.options.debugRows,\r\n      }\r\n    ),\r\n  }\r\n\r\n  for (let i = 0; i < table._features.length; i++) {\r\n    const feature = table._features[i]\r\n    Object.assign(row, feature?.createRow?.(row, table))\r\n  }\r\n\r\n  return row as Row<TData>\r\n}\r\n","import {\r\n  AccessorFn,\r\n  ColumnDef,\r\n  DisplayColumnDef,\r\n  GroupColumnDef,\r\n  IdentifiedColumnDef,\r\n  RowData,\r\n} from './types'\r\nimport { DeepKeys, DeepValue, RequiredKeys } from './utils'\r\n\r\n// type Person = {\r\n//   firstName: string\r\n//   lastName: string\r\n//   age: number\r\n//   visits: number\r\n//   status: string\r\n//   progress: number\r\n//   createdAt: Date\r\n//   nested: {\r\n//     foo: [\r\n//       {\r\n//         bar: 'bar'\r\n//       }\r\n//     ]\r\n//     bar: { subBar: boolean }[]\r\n//     baz: {\r\n//       foo: 'foo'\r\n//       bar: {\r\n//         baz: 'baz'\r\n//       }\r\n//     }\r\n//   }\r\n// }\r\n\r\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\r\n// const test2: DeepKeys<Person> = 'nested.bar'\r\n\r\n// const helper = createColumnHelper<Person>()\r\n\r\n// helper.accessor('nested.foo', {\r\n//   cell: info => info.getValue(),\r\n// })\r\n\r\n// helper.accessor('nested.foo.0.bar', {\r\n//   cell: info => info.getValue(),\r\n// })\r\n\r\n// helper.accessor('nested.bar', {\r\n//   cell: info => info.getValue(),\r\n// })\r\n\r\nexport type ColumnHelper<TData extends RowData> = {\r\n  accessor: <\r\n    TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\r\n    TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\r\n      ? TReturn\r\n      : TAccessor extends DeepKeys<TData>\r\n      ? DeepValue<TData, TAccessor>\r\n      : never\r\n  >(\r\n    accessor: TAccessor,\r\n    column: TAccessor extends AccessorFn<TData>\r\n      ? DisplayColumnDef<TData, TValue>\r\n      : IdentifiedColumnDef<TData, TValue>\r\n  ) => ColumnDef<TData, TValue>\r\n  display: (column: DisplayColumnDef<TData>) => ColumnDef<TData, unknown>\r\n  group: (column: GroupColumnDef<TData>) => ColumnDef<TData, unknown>\r\n}\r\n\r\nexport function createColumnHelper<\r\n  TData extends RowData\r\n>(): ColumnHelper<TData> {\r\n  return {\r\n    accessor: (accessor, column) => {\r\n      return typeof accessor === 'function'\r\n        ? ({\r\n            ...column,\r\n            accessorFn: accessor,\r\n          } as any)\r\n        : {\r\n            ...column,\r\n            accessorKey: accessor,\r\n          }\r\n    },\r\n    display: column => column as ColumnDef<TData, unknown>,\r\n    group: column => column as ColumnDef<TData, unknown>,\r\n  }\r\n}\r\n","import { createRow } from '../core/row'\r\nimport { Table, Row, RowModel, RowData } from '../types'\r\nimport { memo } from '../utils'\r\n\r\nexport function getCoreRowModel<TData extends RowData>(): (\r\n  table: Table<TData>\r\n) => () => RowModel<TData> {\r\n  return table =>\r\n    memo(\r\n      () => [table.options.data],\r\n      (\r\n        data\r\n      ): {\r\n        rows: Row<TData>[]\r\n        flatRows: Row<TData>[]\r\n        rowsById: Record<string, Row<TData>>\r\n      } => {\r\n        const rowModel: RowModel<TData> = {\r\n          rows: [],\r\n          flatRows: [],\r\n          rowsById: {},\r\n        }\r\n\r\n        const accessRows = (\r\n          originalRows: TData[],\r\n          depth = 0,\r\n          parent?: Row<TData>\r\n        ): Row<TData>[] => {\r\n          const rows = [] as Row<TData>[]\r\n\r\n          for (let i = 0; i < originalRows.length; i++) {\r\n            // This could be an expensive check at scale, so we should move it somewhere else, but where?\r\n            // if (!id) {\r\n            //   if (process.env.NODE_ENV !== 'production') {\r\n            //     throw new Error(`getRowId expected an ID, but got ${id}`)\r\n            //   }\r\n            // }\r\n\r\n            // Make the row\r\n            const row = createRow(\r\n              table,\r\n              table._getRowId(originalRows[i]!, i, parent),\r\n              originalRows[i]!,\r\n              i,\r\n              depth\r\n            )\r\n\r\n            // Keep track of every row in a flat array\r\n            rowModel.flatRows.push(row)\r\n            // Also keep track of every row by its ID\r\n            rowModel.rowsById[row.id] = row\r\n            // Push table row into parent\r\n            rows.push(row)\r\n\r\n            // Get the original subrows\r\n            if (table.options.getSubRows) {\r\n              row.originalSubRows = table.options.getSubRows(\r\n                originalRows[i]!,\r\n                i\r\n              )\r\n\r\n              // Then recursively access them\r\n              if (row.originalSubRows?.length) {\r\n                row.subRows = accessRows(row.originalSubRows, depth + 1, row)\r\n              }\r\n            }\r\n          }\r\n\r\n          return rows\r\n        }\r\n\r\n        rowModel.rows = accessRows(data)\r\n\r\n        return rowModel\r\n      },\r\n      {\r\n        key: process.env.NODE_ENV === 'development' && 'getRowModel',\r\n        debug: () => table.options.debugAll ?? table.options.debugTable,\r\n        onChange: () => {\r\n          table._autoResetPageIndex()\r\n        },\r\n      }\r\n    )\r\n}\r\n","import { createRow } from '../core/row'\r\nimport { Row, RowModel, Table, RowData } from '../types'\r\n\r\nexport function filterRows<TData extends RowData>(\r\n  rows: Row<TData>[],\r\n  filterRowImpl: (row: Row<TData>) => any,\r\n  table: Table<TData>\r\n) {\r\n  if (table.options.filterFromLeafRows) {\r\n    return filterRowModelFromLeafs(rows, filterRowImpl, table)\r\n  }\r\n\r\n  return filterRowModelFromRoot(rows, filterRowImpl, table)\r\n}\r\n\r\nexport function filterRowModelFromLeafs<TData extends RowData>(\r\n  rowsToFilter: Row<TData>[],\r\n  filterRow: (row: Row<TData>) => Row<TData>[],\r\n  table: Table<TData>\r\n): RowModel<TData> {\r\n  const newFilteredFlatRows: Row<TData>[] = []\r\n  const newFilteredRowsById: Record<string, Row<TData>> = {}\r\n  const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\r\n\r\n  const recurseFilterRows = (rowsToFilter: Row<TData>[], depth = 0) => {\r\n    const rows: Row<TData>[] = []\r\n\r\n    // Filter from children up first\r\n    for (let i = 0; i < rowsToFilter.length; i++) {\r\n      let row = rowsToFilter[i]!\r\n\r\n      const newRow = createRow(\r\n        table,\r\n        row.id,\r\n        row.original,\r\n        row.index,\r\n        row.depth\r\n      )\r\n      newRow.columnFilters = row.columnFilters\r\n\r\n      if (row.subRows?.length && depth < maxDepth) {\r\n        newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\r\n        row = newRow\r\n\r\n        if (filterRow(row) && !newRow.subRows.length) {\r\n          rows.push(row)\r\n          newFilteredRowsById[row.id] = row\r\n          newFilteredRowsById[i] = row\r\n          continue\r\n        }\r\n\r\n        if (filterRow(row) || newRow.subRows.length) {\r\n          rows.push(row)\r\n          newFilteredRowsById[row.id] = row\r\n          newFilteredRowsById[i] = row\r\n          continue\r\n        }\r\n      } else {\r\n        row = newRow\r\n        if (filterRow(row)) {\r\n          rows.push(row)\r\n          newFilteredRowsById[row.id] = row\r\n          newFilteredRowsById[i] = row\r\n        }\r\n      }\r\n    }\r\n\r\n    return rows\r\n  }\r\n\r\n  return {\r\n    rows: recurseFilterRows(rowsToFilter),\r\n    flatRows: newFilteredFlatRows,\r\n    rowsById: newFilteredRowsById,\r\n  }\r\n}\r\n\r\nexport function filterRowModelFromRoot<TData extends RowData>(\r\n  rowsToFilter: Row<TData>[],\r\n  filterRow: (row: Row<TData>) => any,\r\n  table: Table<TData>\r\n): RowModel<TData> {\r\n  const newFilteredFlatRows: Row<TData>[] = []\r\n  const newFilteredRowsById: Record<string, Row<TData>> = {}\r\n  const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\r\n\r\n  // Filters top level and nested rows\r\n  const recurseFilterRows = (rowsToFilter: Row<TData>[], depth = 0) => {\r\n    // Filter from parents downward first\r\n\r\n    const rows: Row<TData>[] = []\r\n\r\n    // Apply the filter to any subRows\r\n    for (let i = 0; i < rowsToFilter.length; i++) {\r\n      let row = rowsToFilter[i]!\r\n\r\n      const pass = filterRow(row)\r\n\r\n      if (pass) {\r\n        if (row.subRows?.length && depth < maxDepth) {\r\n          const newRow = createRow(\r\n            table,\r\n            row.id,\r\n            row.original,\r\n            row.index,\r\n            row.depth\r\n          )\r\n          newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\r\n          row = newRow\r\n        }\r\n\r\n        rows.push(row)\r\n        newFilteredFlatRows.push(row)\r\n        newFilteredRowsById[row.id] = row\r\n      }\r\n    }\r\n\r\n    return rows\r\n  }\r\n\r\n  return {\r\n    rows: recurseFilterRows(rowsToFilter),\r\n    flatRows: newFilteredFlatRows,\r\n    rowsById: newFilteredRowsById,\r\n  }\r\n}\r\n","import { ResolvedColumnFilter } from '../features/Filters'\r\nimport { Table, RowModel, Row, RowData } from '../types'\r\nimport { memo } from '../utils'\r\nimport { filterRows } from './filterRowsUtils'\r\n\r\nexport function getFilteredRowModel<TData extends RowData>(): (\r\n  table: Table<TData>\r\n) => () => RowModel<TData> {\r\n  return table =>\r\n    memo(\r\n      () => [\r\n        table.getPreFilteredRowModel(),\r\n        table.getState().columnFilters,\r\n        table.getState().globalFilter,\r\n      ],\r\n      (rowModel, columnFilters, globalFilter) => {\r\n        if (\r\n          !rowModel.rows.length ||\r\n          (!columnFilters?.length && !globalFilter)\r\n        ) {\r\n          for (let i = 0; i < rowModel.flatRows.length; i++) {\r\n            rowModel.flatRows[i]!.columnFilters = {}\r\n            rowModel.flatRows[i]!.columnFiltersMeta = {}\r\n          }\r\n          return rowModel\r\n        }\r\n\r\n        const resolvedColumnFilters: ResolvedColumnFilter<TData>[] = []\r\n        const resolvedGlobalFilters: ResolvedColumnFilter<TData>[] = []\r\n\r\n        ;(columnFilters ?? []).forEach(d => {\r\n          const column = table.getColumn(d.id)\r\n\r\n          if (!column) {\r\n            return\r\n          }\r\n\r\n          const filterFn = column.getFilterFn()\r\n\r\n          if (!filterFn) {\r\n            if (process.env.NODE_ENV !== 'production') {\r\n              console.warn(\r\n                `Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`\r\n              )\r\n            }\r\n            return\r\n          }\r\n\r\n          resolvedColumnFilters.push({\r\n            id: d.id,\r\n            filterFn,\r\n            resolvedValue: filterFn.resolveFilterValue?.(d.value) ?? d.value,\r\n          })\r\n        })\r\n\r\n        const filterableIds = columnFilters.map(d => d.id)\r\n\r\n        const globalFilterFn = table.getGlobalFilterFn()\r\n\r\n        const globallyFilterableColumns = table\r\n          .getAllLeafColumns()\r\n          .filter(column => column.getCanGlobalFilter())\r\n\r\n        if (\r\n          globalFilter &&\r\n          globalFilterFn &&\r\n          globallyFilterableColumns.length\r\n        ) {\r\n          filterableIds.push('__global__')\r\n\r\n          globallyFilterableColumns.forEach(column => {\r\n            resolvedGlobalFilters.push({\r\n              id: column.id,\r\n              filterFn: globalFilterFn,\r\n              resolvedValue:\r\n                globalFilterFn.resolveFilterValue?.(globalFilter) ??\r\n                globalFilter,\r\n            })\r\n          })\r\n        }\r\n\r\n        let currentColumnFilter\r\n        let currentGlobalFilter\r\n\r\n        // Flag the prefiltered row model with each filter state\r\n        for (let j = 0; j < rowModel.flatRows.length; j++) {\r\n          const row = rowModel.flatRows[j]!\r\n\r\n          row.columnFilters = {}\r\n\r\n          if (resolvedColumnFilters.length) {\r\n            for (let i = 0; i < resolvedColumnFilters.length; i++) {\r\n              currentColumnFilter = resolvedColumnFilters[i]!\r\n              const id = currentColumnFilter.id\r\n\r\n              // Tag the row with the column filter state\r\n              row.columnFilters[id] = currentColumnFilter.filterFn(\r\n                row,\r\n                id,\r\n                currentColumnFilter.resolvedValue,\r\n                filterMeta => {\r\n                  row.columnFiltersMeta[id] = filterMeta\r\n                }\r\n              )\r\n            }\r\n          }\r\n\r\n          if (resolvedGlobalFilters.length) {\r\n            for (let i = 0; i < resolvedGlobalFilters.length; i++) {\r\n              currentGlobalFilter = resolvedGlobalFilters[i]!\r\n              const id = currentGlobalFilter.id\r\n              // Tag the row with the first truthy global filter state\r\n              if (\r\n                currentGlobalFilter.filterFn(\r\n                  row,\r\n                  id,\r\n                  currentGlobalFilter.resolvedValue,\r\n                  filterMeta => {\r\n                    row.columnFiltersMeta[id] = filterMeta\r\n                  }\r\n                )\r\n              ) {\r\n                row.columnFilters.__global__ = true\r\n                break\r\n              }\r\n            }\r\n\r\n            if (row.columnFilters.__global__ !== true) {\r\n              row.columnFilters.__global__ = false\r\n            }\r\n          }\r\n        }\r\n\r\n        const filterRowsImpl = (row: Row<TData>) => {\r\n          // Horizontally filter rows through each column\r\n          for (let i = 0; i < filterableIds.length; i++) {\r\n            if (row.columnFilters[filterableIds[i]!] === false) {\r\n              return false\r\n            }\r\n          }\r\n          return true\r\n        }\r\n\r\n        // Filter final rows using all of the active filters\r\n        return filterRows(rowModel.rows, filterRowsImpl, table)\r\n      },\r\n      {\r\n        key: process.env.NODE_ENV === 'development' && 'getFilteredRowModel',\r\n        debug: () => table.options.debugAll ?? table.options.debugTable,\r\n        onChange: () => {\r\n          table._autoResetPageIndex()\r\n        },\r\n      }\r\n    )\r\n}\r\n","import { Table, RowModel, Row, RowData } from '../types'\r\nimport { memo } from '../utils'\r\nimport { filterRows } from './filterRowsUtils'\r\n\r\nexport function getFacetedRowModel<TData extends RowData>(): (\r\n  table: Table<TData>,\r\n  columnId: string\r\n) => () => RowModel<TData> {\r\n  return (table, columnId) =>\r\n    memo(\r\n      () => [\r\n        table.getPreFilteredRowModel(),\r\n        table.getState().columnFilters,\r\n        table.getState().globalFilter,\r\n        table.getFilteredRowModel(),\r\n      ],\r\n      (preRowModel, columnFilters, globalFilter) => {\r\n        if (\r\n          !preRowModel.rows.length ||\r\n          (!columnFilters?.length && !globalFilter)\r\n        ) {\r\n          return preRowModel\r\n        }\r\n\r\n        const filterableIds = [\r\n          ...columnFilters.map(d => d.id).filter(d => d !== columnId),\r\n          globalFilter ? '__global__' : undefined,\r\n        ].filter(Boolean) as string[]\r\n\r\n        const filterRowsImpl = (row: Row<TData>) => {\r\n          // Horizontally filter rows through each column\r\n          for (let i = 0; i < filterableIds.length; i++) {\r\n            if (row.columnFilters[filterableIds[i]!] === false) {\r\n              return false\r\n            }\r\n          }\r\n          return true\r\n        }\r\n\r\n        return filterRows(preRowModel.rows, filterRowsImpl, table)\r\n      },\r\n      {\r\n        key:\r\n          process.env.NODE_ENV === 'development' &&\r\n          'getFacetedRowModel_' + columnId,\r\n        debug: () => table.options.debugAll ?? table.options.debugTable,\r\n        onChange: () => {},\r\n      }\r\n    )\r\n}\r\n","import { Table, RowData } from '../types'\r\nimport { memo } from '../utils'\r\n\r\nexport function getFacetedUniqueValues<TData extends RowData>(): (\r\n  table: Table<TData>,\r\n  columnId: string\r\n) => () => Map<any, number> {\r\n  return (table, columnId) =>\r\n    memo(\r\n      () => [table.getColumn(columnId)?.getFacetedRowModel()],\r\n      facetedRowModel => {\r\n        if (!facetedRowModel) return new Map()\r\n\r\n        let facetedUniqueValues = new Map<any, number>()\r\n\r\n        for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\r\n          const values =\r\n            facetedRowModel.flatRows[i]!.getUniqueValues<number>(columnId)\r\n\r\n          for (let j = 0; j < values.length; j++) {\r\n            const value = values[j]!\r\n\r\n            if (facetedUniqueValues.has(value)) {\r\n              facetedUniqueValues.set(\r\n                value,\r\n                (facetedUniqueValues.get(value) ?? 0) + 1\r\n              )\r\n            } else {\r\n              facetedUniqueValues.set(value, 1)\r\n            }\r\n          }\r\n        }\r\n\r\n        return facetedUniqueValues\r\n      },\r\n      {\r\n        key:\r\n          process.env.NODE_ENV === 'development' &&\r\n          'getFacetedUniqueValues_' + columnId,\r\n        debug: () => table.options.debugAll ?? table.options.debugTable,\r\n        onChange: () => {},\r\n      }\r\n    )\r\n}\r\n","import { Table, RowData } from '../types'\r\nimport { memo } from '../utils'\r\n\r\nexport function getFacetedMinMaxValues<TData extends RowData>(): (\r\n  table: Table<TData>,\r\n  columnId: string\r\n) => () => undefined | [number, number] {\r\n  return (table, columnId) =>\r\n    memo(\r\n      () => [table.getColumn(columnId)?.getFacetedRowModel()],\r\n      facetedRowModel => {\r\n        if (!facetedRowModel) return undefined\r\n        \r\n        const firstValue =\r\n          facetedRowModel.flatRows[0]?.getUniqueValues(columnId)\r\n\r\n        if (typeof firstValue === 'undefined') {\r\n          return undefined\r\n        }\r\n\r\n        let facetedMinMaxValues: [any, any] = [firstValue, firstValue]\r\n\r\n        for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\r\n          const values =\r\n            facetedRowModel.flatRows[i]!.getUniqueValues<number>(columnId)\r\n\r\n          for (let j = 0; j < values.length; j++) {\r\n            const value = values[j]!\r\n\r\n            if (value < facetedMinMaxValues[0]) {\r\n              facetedMinMaxValues[0] = value\r\n            } else if (value > facetedMinMaxValues[1]) {\r\n              facetedMinMaxValues[1] = value\r\n            }\r\n          }\r\n        }\r\n\r\n        return facetedMinMaxValues\r\n      },\r\n      {\r\n        key:\r\n          process.env.NODE_ENV === 'development' &&\r\n          'getFacetedMinMaxValues_' + columnId,\r\n        debug: () => table.options.debugAll ?? table.options.debugTable,\r\n        onChange: () => {},\r\n      }\r\n    )\r\n}\r\n","import { Table, Row, RowModel, RowData } from '../types'\r\nimport { SortingFn } from '../features/Sorting'\r\nimport { memo } from '../utils'\r\n\r\nexport function getSortedRowModel<TData extends RowData>(): (\r\n  table: Table<TData>\r\n) => () => RowModel<TData> {\r\n  return table =>\r\n    memo(\r\n      () => [table.getState().sorting, table.getPreSortedRowModel()],\r\n      (sorting, rowModel) => {\r\n        if (!rowModel.rows.length || !sorting?.length) {\r\n          return rowModel\r\n        }\r\n\r\n        const sortingState = table.getState().sorting\r\n\r\n        const sortedFlatRows: Row<TData>[] = []\r\n\r\n        // Filter out sortings that correspond to non existing columns\r\n        const availableSorting = sortingState.filter(sort =>\r\n          table.getColumn(sort.id)?.getCanSort()\r\n        )\r\n\r\n        const columnInfoById: Record<\r\n          string,\r\n          {\r\n            sortUndefined?: false | -1 | 1\r\n            invertSorting?: boolean\r\n            sortingFn: SortingFn<TData>\r\n          }\r\n        > = {}\r\n\r\n        availableSorting.forEach(sortEntry => {\r\n          const column = table.getColumn(sortEntry.id)\r\n          if(!column) return\r\n\r\n          columnInfoById[sortEntry.id] = {\r\n            sortUndefined: column.columnDef.sortUndefined,\r\n            invertSorting: column.columnDef.invertSorting,\r\n            sortingFn: column.getSortingFn(),\r\n          }\r\n        })\r\n\r\n        const sortData = (rows: Row<TData>[]) => {\r\n          // This will also perform a stable sorting using the row index\r\n          // if needed.\r\n          const sortedData = [...rows]\r\n\r\n          sortedData.sort((rowA, rowB) => {\r\n            for (let i = 0; i < availableSorting.length; i += 1) {\r\n              const sortEntry = availableSorting[i]!\r\n              const columnInfo = columnInfoById[sortEntry.id]!\r\n              const isDesc = sortEntry?.desc ?? false\r\n\r\n              if (columnInfo.sortUndefined) {\r\n                const aValue = rowA.getValue(sortEntry.id)\r\n                const bValue = rowB.getValue(sortEntry.id)\r\n\r\n                const aUndefined = typeof aValue === 'undefined'\r\n                const bUndefined = typeof bValue === 'undefined'\r\n\r\n                if (aUndefined || bUndefined) {\r\n                  return aUndefined && bUndefined\r\n                    ? 0\r\n                    : aUndefined\r\n                    ? columnInfo.sortUndefined\r\n                    : -columnInfo.sortUndefined\r\n                }\r\n              }\r\n\r\n              // This function should always return in ascending order\r\n              let sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id)\r\n\r\n              if (sortInt !== 0) {\r\n                if (isDesc) {\r\n                  sortInt *= -1\r\n                }\r\n\r\n                if (columnInfo.invertSorting) {\r\n                  sortInt *= -1\r\n                }\r\n\r\n                return sortInt\r\n              }\r\n            }\r\n\r\n            return rowA.index - rowB.index\r\n          })\r\n\r\n          // If there are sub-rows, sort them\r\n          sortedData.forEach(row => {\r\n            sortedFlatRows.push(row)\r\n            if (row.subRows?.length) {\r\n              row.subRows = sortData(row.subRows)\r\n            }\r\n          })\r\n\r\n          return sortedData\r\n        }\r\n\r\n        return {\r\n          rows: sortData(rowModel.rows),\r\n          flatRows: sortedFlatRows,\r\n          rowsById: rowModel.rowsById,\r\n        }\r\n      },\r\n      {\r\n        key: process.env.NODE_ENV === 'development' && 'getSortedRowModel',\r\n        debug: () => table.options.debugAll ?? table.options.debugTable,\r\n        onChange: () => {\r\n          table._autoResetPageIndex()\r\n        },\r\n      }\r\n    )\r\n}\r\n","import { createRow } from '../core/row'\r\nimport { Table, Row, RowModel, RowData } from '../types'\r\nimport { flattenBy, memo } from '../utils'\r\n\r\nexport function getGroupedRowModel<TData extends RowData>(): (\r\n  table: Table<TData>\r\n) => () => RowModel<TData> {\r\n  return table =>\r\n    memo(\r\n      () => [table.getState().grouping, table.getPreGroupedRowModel()],\r\n      (grouping, rowModel) => {\r\n        if (!rowModel.rows.length || !grouping.length) {\r\n          return rowModel\r\n        }\r\n\r\n        // Filter the grouping list down to columns that exist\r\n        const existingGrouping = grouping.filter(columnId =>\r\n          table.getColumn(columnId)\r\n        )\r\n\r\n        const groupedFlatRows: Row<TData>[] = []\r\n        const groupedRowsById: Record<string, Row<TData>> = {}\r\n        // const onlyGroupedFlatRows: Row[] = [];\r\n        // const onlyGroupedRowsById: Record<RowId, Row> = {};\r\n        // const nonGroupedFlatRows: Row[] = [];\r\n        // const nonGroupedRowsById: Record<RowId, Row> = {};\r\n\r\n        // Recursively group the data\r\n        const groupUpRecursively = (\r\n          rows: Row<TData>[],\r\n          depth = 0,\r\n          parentId?: string\r\n        ) => {\r\n          // Grouping depth has been been met\r\n          // Stop grouping and simply rewrite thd depth and row relationships\r\n          if (depth >= existingGrouping.length) {\r\n            return rows.map(row => {\r\n              row.depth = depth\r\n\r\n              groupedFlatRows.push(row)\r\n              groupedRowsById[row.id] = row\r\n\r\n              if (row.subRows) {\r\n                row.subRows = groupUpRecursively(row.subRows, depth + 1)\r\n              }\r\n\r\n              return row\r\n            })\r\n          }\r\n\r\n          const columnId: string = existingGrouping[depth]!\r\n\r\n          // Group the rows together for this level\r\n          const rowGroupsMap = groupBy(rows, columnId)\r\n\r\n          // Peform aggregations for each group\r\n          const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\r\n            ([groupingValue, groupedRows], index) => {\r\n              let id = `${columnId}:${groupingValue}`\r\n              id = parentId ? `${parentId}>${id}` : id\r\n\r\n              // First, Recurse to group sub rows before aggregation\r\n              const subRows = groupUpRecursively(groupedRows, depth + 1, id)\r\n\r\n              // Flatten the leaf rows of the rows in this group\r\n              const leafRows = depth\r\n                ? flattenBy(groupedRows, row => row.subRows)\r\n                : groupedRows\r\n\r\n              const row = createRow(\r\n                table,\r\n                id,\r\n                leafRows[0]!.original,\r\n                index,\r\n                depth\r\n              )\r\n\r\n              Object.assign(row, {\r\n                groupingColumnId: columnId,\r\n                groupingValue,\r\n                subRows,\r\n                leafRows,\r\n                getValue: (columnId: string) => {\r\n                  // Don't aggregate columns that are in the grouping\r\n                  if (existingGrouping.includes(columnId)) {\r\n                    if (row._valuesCache.hasOwnProperty(columnId)) {\r\n                      return row._valuesCache[columnId]\r\n                    }\r\n\r\n                    if (groupedRows[0]) {\r\n                      row._valuesCache[columnId] =\r\n                        groupedRows[0].getValue(columnId) ?? undefined\r\n                    }\r\n\r\n                    return row._valuesCache[columnId]\r\n                  }\r\n\r\n                  if (row._groupingValuesCache.hasOwnProperty(columnId)) {\r\n                    return row._groupingValuesCache[columnId]\r\n                  }\r\n\r\n                  // Aggregate the values\r\n                  const column = table.getColumn(columnId)\r\n                  const aggregateFn = column?.getAggregationFn()\r\n\r\n                  if (aggregateFn) {\r\n                    row._groupingValuesCache[columnId] = aggregateFn(\r\n                      columnId,\r\n                      leafRows,\r\n                      groupedRows\r\n                    )\r\n\r\n                    return row._groupingValuesCache[columnId]\r\n                  }\r\n                },\r\n              })\r\n\r\n              subRows.forEach(subRow => {\r\n                groupedFlatRows.push(subRow)\r\n                groupedRowsById[subRow.id] = subRow\r\n                // if (subRow.getIsGrouped?.()) {\r\n                //   onlyGroupedFlatRows.push(subRow);\r\n                //   onlyGroupedRowsById[subRow.id] = subRow;\r\n                // } else {\r\n                //   nonGroupedFlatRows.push(subRow);\r\n                //   nonGroupedRowsById[subRow.id] = subRow;\r\n                // }\r\n              })\r\n\r\n              return row\r\n            }\r\n          )\r\n\r\n          return aggregatedGroupedRows\r\n        }\r\n\r\n        const groupedRows = groupUpRecursively(rowModel.rows, 0, '')\r\n\r\n        groupedRows.forEach(subRow => {\r\n          groupedFlatRows.push(subRow)\r\n          groupedRowsById[subRow.id] = subRow\r\n          // if (subRow.getIsGrouped?.()) {\r\n          //   onlyGroupedFlatRows.push(subRow);\r\n          //   onlyGroupedRowsById[subRow.id] = subRow;\r\n          // } else {\r\n          //   nonGroupedFlatRows.push(subRow);\r\n          //   nonGroupedRowsById[subRow.id] = subRow;\r\n          // }\r\n        })\r\n\r\n        return {\r\n          rows: groupedRows,\r\n          flatRows: groupedFlatRows,\r\n          rowsById: groupedRowsById,\r\n        }\r\n      },\r\n      {\r\n        key: process.env.NODE_ENV === 'development' && 'getGroupedRowModel',\r\n        debug: () => table.options.debugAll ?? table.options.debugTable,\r\n        onChange: () => {\r\n          table._queue(() => {\r\n            table._autoResetExpanded()\r\n            table._autoResetPageIndex()\r\n          })\r\n        },\r\n      }\r\n    )\r\n}\r\n\r\nfunction groupBy<TData extends RowData>(rows: Row<TData>[], columnId: string) {\r\n  const groupMap = new Map<any, Row<TData>[]>()\r\n\r\n  return rows.reduce((map, row) => {\r\n    const resKey = `${row.getValue(columnId)}`\r\n    const previous = map.get(resKey)\r\n    if (!previous) {\r\n      map.set(resKey, [row])\r\n    } else {\r\n      previous.push(row)\r\n    }\r\n    return map\r\n  }, groupMap)\r\n}\r\n","import { Table, Row, RowModel, RowData } from '../types'\r\nimport { memo } from '../utils'\r\n\r\nexport function getExpandedRowModel<TData extends RowData>(): (\r\n  table: Table<TData>\r\n) => () => RowModel<TData> {\r\n  return table =>\r\n    memo(\r\n      () => [\r\n        table.getState().expanded,\r\n        table.getPreExpandedRowModel(),\r\n        table.options.paginateExpandedRows,\r\n      ],\r\n      (expanded, rowModel, paginateExpandedRows) => {\r\n        if (\r\n          !rowModel.rows.length ||\r\n          (expanded !== true && !Object.keys(expanded ?? {}).length)\r\n        ) {\r\n          return rowModel\r\n        }\r\n\r\n        if (!paginateExpandedRows) {\r\n          // Only expand rows at this point if they are being paginated\r\n          return rowModel\r\n        }\r\n\r\n        return expandRows(rowModel)\r\n      },\r\n      {\r\n        key: process.env.NODE_ENV === 'development' && 'getExpandedRowModel',\r\n        debug: () => table.options.debugAll ?? table.options.debugTable,\r\n      }\r\n    )\r\n}\r\n\r\nexport function expandRows<TData extends RowData>(rowModel: RowModel<TData>) {\r\n  const expandedRows: Row<TData>[] = []\r\n\r\n  const handleRow = (row: Row<TData>) => {\r\n    expandedRows.push(row)\r\n\r\n    if (row.subRows?.length && row.getIsExpanded()) {\r\n      row.subRows.forEach(handleRow)\r\n    }\r\n  }\r\n\r\n  rowModel.rows.forEach(handleRow)\r\n\r\n  return {\r\n    rows: expandedRows,\r\n    flatRows: rowModel.flatRows,\r\n    rowsById: rowModel.rowsById,\r\n  }\r\n}\r\n","import { Table, RowModel, Row, RowData } from '../types'\r\nimport { memo } from '../utils'\r\nimport { expandRows } from './getExpandedRowModel'\r\n\r\nexport function getPaginationRowModel<TData extends RowData>(opts?: {\r\n  initialSync: boolean\r\n}): (table: Table<TData>) => () => RowModel<TData> {\r\n  return table =>\r\n    memo(\r\n      () => [\r\n        table.getState().pagination,\r\n        table.getPrePaginationRowModel(),\r\n        table.options.paginateExpandedRows\r\n          ? undefined\r\n          : table.getState().expanded,\r\n      ],\r\n      (pagination, rowModel) => {\r\n        if (!rowModel.rows.length) {\r\n          return rowModel\r\n        }\r\n\r\n        const { pageSize, pageIndex } = pagination\r\n        let { rows, flatRows, rowsById } = rowModel\r\n        const pageStart = pageSize * pageIndex\r\n        const pageEnd = pageStart + pageSize\r\n\r\n        rows = rows.slice(pageStart, pageEnd)\r\n\r\n        let paginatedRowModel: RowModel<TData>\r\n\r\n        if (!table.options.paginateExpandedRows) {\r\n          paginatedRowModel = expandRows({\r\n            rows,\r\n            flatRows,\r\n            rowsById,\r\n          })\r\n        } else {\r\n          paginatedRowModel = {\r\n            rows,\r\n            flatRows,\r\n            rowsById,\r\n          }\r\n        }\r\n\r\n        paginatedRowModel.flatRows = []\r\n\r\n        const handleRow = (row: Row<TData>) => {\r\n          paginatedRowModel.flatRows.push(row)\r\n          if (row.subRows.length) {\r\n            row.subRows.forEach(handleRow)\r\n          }\r\n        }\r\n\r\n        paginatedRowModel.rows.forEach(handleRow)\r\n\r\n        return paginatedRowModel\r\n      },\r\n      {\r\n        key: process.env.NODE_ENV === 'development' && 'getPaginationRowModel',\r\n        debug: () => table.options.debugAll ?? table.options.debugTable,\r\n      }\r\n    )\r\n}\r\n"],"names":["functionalUpdate","updater","input","noop","makeStateUpdater","key","instance","setState","old","isFunction","d","Function","flattenBy","arr","getChildren","flat","recurse","subArr","forEach","item","push","children","length","memo","getDeps","fn","opts","deps","result","depTime","debug","Date","now","newDeps","depsChanged","some","dep","index","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","createColumn","table","columnDef","depth","parent","defaultColumn","_getDefaultColumnDef","resolvedColumnDef","rowSpanGrow","accessorKey","id","replace","undefined","header","accessorFn","includes","originalRow","split","process","env","NODE_ENV","warn","Error","column","columns","getFlatColumns","flatMap","options","debugAll","debugColumns","getLeafColumns","_getOrderColumnsFn","orderColumns","leafColumns","_features","reduce","obj","feature","Object","assign","createHeader","isPlaceholder","placeholderId","subHeaders","getParentHeader","colSpan","rowSpan","headerGroup","getLeafHeaders","leafHeaders","recurseHeader","h","map","getContext","Headers","createTable","getHeaderGroups","getAllColumns","getVisibleLeafColumns","getState","columnPinning","left","right","allColumns","leftColumns","columnId","find","filter","Boolean","rightColumns","centerColumns","headerGroups","buildHeaderGroups","debugHeaders","getCenterHeaderGroups","getLeftHeaderGroups","orderedLeafColumns","getRightHeaderGroups","getFooterGroups","reverse","getLeftFooterGroups","getCenterFooterGroups","getRightFooterGroups","getFlatHeaders","headers","getLeftFlatHeaders","getCenterFlatHeaders","getRightFlatHeaders","getCenterLeafHeaders","flatHeaders","getLeftLeafHeaders","getRightLeafHeaders","center","columnsToGroup","headerFamily","maxDepth","findMaxDepth","getIsVisible","filterHideColumns","allShowColumns","createHeaderGroup","headersToGroup","join","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","parentHeaderId","bottomHeaders","leafHeader","colHeaders","recurseHeaders","parentHeader","containerLength","sumColumnDepth","items","slice","i","Array","fill","isCover","sizeItems","k","assignedItems","allocatableSpace","assignedSpace","acc","log","sum","value","sort","a","b","allSizeItem","currentGrow","recurseHeadersForSpans","filteredHeaders","childColSpan","defaultColumnSizing","size","minSize","maxSize","Number","MAX_SAFE_INTEGER","getDefaultColumnSizingInfoState","startOffset","startSize","deltaOffset","deltaPercentage","isResizingColumn","columnSizingStart","ColumnSizing","getDefaultColumnDef","getInitialState","state","columnSizing","columnSizingInfo","getDefaultOptions","columnResizeMode","onColumnSizingChange","onColumnSizingInfoChange","getSize","columnSize","getStart","position","getLeftVisibleLeafColumns","getRightVisibleLeafColumns","findIndex","prevSiblingColumn","resetSize","setColumnSizing","_","rest","getCanResize","enableResizing","enableColumnResizing","getIsResizing","prevSiblingHeader","getResizeHandler","getColumn","canResize","e","persist","isTouchStartEvent","touches","clientX","newColumnSizing","updateOffset","eventType","clientXPos","setColumnSizingInfo","headerSize","onMove","onEnd","mouseEvents","moveHandler","upHandler","document","removeEventListener","touchEvents","cancelable","preventDefault","stopPropagation","passiveIfSupported","passiveEventSupported","passive","addEventListener","resetColumnSizing","defaultState","initialState","resetHeaderSizeInfo","getTotalSize","getLeftTotalSize","getCenterTotalSize","getRightTotalSize","passiveSupported","supported","window","err","type","Expanding","expanded","onExpandedChange","paginateExpandedRows","registered","queued","_autoResetExpanded","_queue","autoResetAll","autoResetExpanded","manualExpanding","resetExpanded","setExpanded","toggleAllRowsExpanded","getIsAllRowsExpanded","getCanSomeRowsExpand","getRowModel","flatRows","row","getCanExpand","getToggleAllRowsExpandedHandler","getIsSomeRowsExpanded","values","keys","getIsExpanded","getExpandedDepth","rowIds","rowsById","splitId","getPreExpandedRowModel","getSortedRowModel","getExpandedRowModel","_getExpandedRowModel","createRow","toggleExpanded","exists","oldExpanded","rowId","getIsRowExpanded","getRowCanExpand","enableExpanding","subRows","getToggleExpandedHandler","canExpand","includesString","filterValue","search","toLowerCase","getValue","autoRemove","val","testFalsey","includesStringSensitive","equalsString","arrIncludes","arrIncludesAll","arrIncludesSome","equals","weakEquals","inNumberRange","rowValue","resolveFilterValue","unsafeMin","unsafeMax","parsedMin","parseFloat","parsedMax","isNaN","Infinity","temp","filterFns","Filters","filterFn","columnFilters","globalFilter","onColumnFiltersChange","onGlobalFilterChange","filterFromLeafRows","maxLeafRowFilterDepth","globalFilterFn","getColumnCanGlobalFilter","getCoreRowModel","_getAllCellsByColumnId","getAutoFilterFn","firstRow","isArray","getFilterFn","getCanFilter","enableColumnFilter","enableColumnFilters","enableFilters","getCanGlobalFilter","enableGlobalFilter","getIsFiltered","getFilterIndex","getFilterValue","setFilterValue","setColumnFilters","previousfilter","newFilter","shouldAutoRemoveFilter","newFilterObj","_getFacetedRowModel","getFacetedRowModel","getPreFilteredRowModel","_getFacetedUniqueValues","getFacetedUniqueValues","Map","_getFacetedMinMaxValues","getFacetedMinMaxValues","columnFiltersMeta","getGlobalAutoFilterFn","getGlobalFilterFn","getAllLeafColumns","updateFn","setGlobalFilter","resetGlobalFilter","resetColumnFilters","getFilteredRowModel","_getFilteredRowModel","manualFiltering","_getGlobalFacetedRowModel","getGlobalFacetedRowModel","_getGlobalFacetedUniqueValues","getGlobalFacetedUniqueValues","_getGlobalFacetedMinMaxValues","getGlobalFacetedMinMaxValues","_leafRows","childRows","next","nextValue","extent","mean","leafRows","count","median","unique","from","Set","uniqueCount","_columnId","aggregationFns","Grouping","aggregatedCell","props","toString","aggregationFn","grouping","onGroupingChange","groupedColumnMode","toggleGrouping","setGrouping","getCanGroup","enableGrouping","getIsGrouped","getGroupedIndex","indexOf","getToggleGroupingHandler","canGroup","getAutoAggregationFn","prototype","call","getAggregationFn","resetGrouping","getPreGroupedRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","groupingColumnId","_groupingValuesCache","createCell","cell","getIsPlaceholder","getIsAggregated","nonGroupingColumns","col","groupingColumns","g","Ordering","columnOrder","onColumnOrderChange","setColumnOrder","resetColumnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","shift","foundIndex","splice","defaultPageIndex","defaultPageSize","getDefaultPaginationState","pageIndex","pageSize","Pagination","pagination","onPaginationChange","_autoResetPageIndex","autoResetPageIndex","manualPagination","resetPageIndex","setPagination","safeUpdater","newState","resetPagination","setPageIndex","maxPageIndex","pageCount","resetPageSize","setPageSize","topRowIndex","floor","setPageCount","newPageCount","getPageOptions","getPageCount","pageOptions","debugTable","getCanPreviousPage","getCanNextPage","previousPage","nextPage","getPrePaginationRowModel","getPaginationRowModel","_getPaginationRowModel","ceil","rows","getDefaultPinningState","Pinning","onColumnPinningChange","pin","columnIds","setColumnPinning","getCanPin","enablePinning","getIsPinned","leafColumnIds","isLeft","isRight","getPinnedIndex","getCenterVisibleCells","_getAllVisibleCells","allCells","leftAndRight","debugRows","getLeftVisibleCells","cells","getRightVisibleCells","resetColumnPinning","getIsSomeColumnsPinned","pinningState","getLeftLeafColumns","getRightLeafColumns","getCenterLeafColumns","RowSelection","rowSelection","onRowSelectionChange","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","setRowSelection","resetRowSelection","toggleAllRowsSelected","getIsAllRowsSelected","preGroupedFlatRows","getCanSelect","toggleAllPageRowsSelected","resolvedValue","getIsAllPageRowsSelected","mutateRowIsSelected","getPreSelectedRowModel","getSelectedRowModel","rowModel","selectRowsFn","getFilteredSelectedRowModel","getGroupedSelectedRowModel","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","getIsSomeRowsSelected","totalSelected","getIsSomePageRowsSelected","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","target","checked","getToggleAllPageRowsSelectedHandler","toggleSelected","isSelected","selectedRowIds","isRowSelected","isSubRowSelected","getIsAllSubRowsSelected","getCanSelectSubRows","getCanMultiSelect","getToggleSelectedHandler","canSelect","getRow","newSelectedFlatRows","newSelectedRowsById","recurseRows","selection","allChildrenSelected","someSelected","subRow","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","parseInt","bn","combo","sortingFns","Sorting","sorting","sortingFn","onSortingChange","isMultiSortEvent","shiftKey","getAutoSortingFn","firstRows","isString","getAutoSortDir","getSortingFn","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","existingSorting","existingIndex","newSorting","sortAction","nextDesc","getCanMultiSort","maxMultiSortColCount","getFirstSortDir","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","enableMultiSort","columnSort","getSortIndex","clearSorting","getToggleSortingHandler","canSort","resetSorting","getPreSortedRowModel","_getSortedRowModel","manualSorting","Visibility","columnVisibility","onColumnVisibilityChange","toggleVisibility","getCanHide","setColumnVisibility","enableHiding","getToggleVisibilityHandler","getAllCells","getVisibleCells","makeVisibleColumnsMethod","getColumns","getVisibleFlatColumns","getAllFlatColumns","getCenterVisibleLeafColumns","resetColumnVisibility","toggleAllColumnsVisible","getIsAllColumnsVisible","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler","features","defaultOptions","mergeOptions","coreInitialState","queuedTimeout","coreInstance","cb","Promise","resolve","then","catch","error","setTimeout","reset","setOptions","newOptions","onStateChange","_getRowId","getRowId","_getCoreRowModel","renderValue","_getColumnDefs","columnDefs","recurseColumns","groupingColumnDef","_getAllFlatColumnsById","flatColumns","getRenderValue","renderFallbackValue","original","rowIndex","_valuesCache","_uniqueValuesCache","hasOwnProperty","getUniqueValues","getLeafRows","createColumnHelper","accessor","display","group","data","accessRows","originalRows","getSubRows","originalSubRows","filterRows","filterRowImpl","filterRowModelFromLeafs","filterRowModelFromRoot","rowsToFilter","filterRow","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","pass","resolvedColumnFilters","resolvedGlobalFilters","filterableIds","globallyFilterableColumns","currentColumnFilter","currentGlobalFilter","j","filterMeta","__global__","filterRowsImpl","preRowModel","facetedRowModel","facetedUniqueValues","has","set","get","firstValue","facetedMinMaxValues","sortingState","sortedFlatRows","availableSorting","columnInfoById","sortEntry","sortUndefined","invertSorting","sortData","sortedData","columnInfo","isDesc","aValue","bValue","aUndefined","bUndefined","sortInt","existingGrouping","groupedFlatRows","groupedRowsById","groupUpRecursively","parentId","rowGroupsMap","groupBy","aggregatedGroupedRows","entries","groupingValue","groupedRows","aggregateFn","groupMap","resKey","previous","expandRows","expandedRows","handleRow","pageStart","pageEnd","paginatedRowModel"],"mappings":"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"}