@trsys-tech/matrix-library 1.1.8-alpha.1 → 1.1.8-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/data-table/DataTable.types.d.ts +22 -6
- package/dist/components/data-table/DataTable.types.d.ts.map +1 -1
- package/dist/components/data-table/DataTableHeader.d.ts.map +1 -1
- package/dist/components/data-table/dataTableModel.d.ts +16 -4
- package/dist/components/data-table/dataTableModel.d.ts.map +1 -1
- package/dist/components/data-table/useDataTableInstance.d.ts +3 -70
- package/dist/components/data-table/useDataTableInstance.d.ts.map +1 -1
- package/dist/datatableheader.es.js +60 -53
- package/dist/datatableheader.es.js.map +1 -1
- package/dist/datatablemodel.es.js.map +1 -1
- package/dist/datatablerowview.es.js +33 -34
- package/dist/datatablerowview.es.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/usedatatableinstance.es.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usedatatableinstance.es.js","sources":["../src/components/data-table/useDataTableInstance.ts"],"sourcesContent":["import * as React from \"react\";\nimport { functionalUpdate, useTable, type ColumnDef } from \"@tanstack/react-table\";\nimport { DataTableAlignmentContext } from \"./DataTableContext\";\nimport { dataTableFeatures } from \"./dataTableFeatures\";\nimport { filterType, getCellValue, getColumnId, getFlexSizes, matchesFilter } from \"./dataTableModel\";\nimport type {\n DataTableColumnDef,\n DataTableContentProps,\n DataTableFeatures,\n DataTableFilter,\n DataTableInstance,\n DataTableRow,\n DataTableState,\n} from \"./DataTable.types\";\n\nconst emptyRows: never[] = [];\ntype DataTableInstanceOptions<T extends object> = Pick<\n DataTableContentProps<T>,\n | \"rowData\"\n | \"columnDefs\"\n | \"getRowId\"\n | \"tableOptions\"\n | \"externalFilter\"\n | \"rowSelection\"\n | \"renderSubComponent\"\n | \"getRowCanExpand\"\n | \"onQuickFilterTextChange\"\n> & {\n defaultColDef: Partial<DataTableColumnDef<T>>;\n paginationPageSize: number;\n pagination: boolean;\n patches: Record<string, { source: T; data: T }>;\n alignment: React.ContextType<typeof DataTableAlignmentContext>;\n isPrinting: boolean;\n viewportWidth: number;\n selectionWidth: number;\n searchText: string;\n setSearch: (value: string) => void;\n};\n\n/** Own TanStack configuration, controlled state precedence and stable row identities. */\nexport function useDataTableInstance<T extends object>({\n rowData,\n columnDefs,\n defaultColDef,\n getRowId,\n paginationPageSize,\n tableOptions,\n externalFilter,\n rowSelection,\n pagination,\n renderSubComponent,\n getRowCanExpand,\n onQuickFilterTextChange,\n patches,\n alignment,\n isPrinting,\n viewportWidth,\n selectionWidth,\n searchText,\n setSearch,\n}: DataTableInstanceOptions<T>) {\n const [columnSizing, setColumnSizing] = React.useState<DataTableState[\"columnSizing\"]>(tableOptions?.initialState?.columnSizing ?? {});\n const [columnVisibility, setColumnVisibility] = React.useState<DataTableState[\"columnVisibility\"]>({});\n const [columnFilters, setColumnFilters] = React.useState<DataTableState[\"columnFilters\"]>(tableOptions?.initialState?.columnFilters ?? []);\n const resolveId = React.useCallback(\n (data: T, index: number) => String(getRowId?.(data, index) ?? (data as { id?: unknown } | null)?.id ?? index),\n [getRowId],\n );\n const definitions = React.useMemo(() => {\n const result = columnDefs.map(column => ({ ...defaultColDef, ...column }));\n const ids = result.map(getColumnId);\n if (new Set(ids).size !== ids.length) throw new Error(\"DataTable column ids must be unique.\");\n return result;\n }, [columnDefs, defaultColDef]);\n const definitionsById = React.useMemo(() => new Map(definitions.map(column => [getColumnId(column), column])), [definitions]);\n const sourcesById = React.useMemo(() => {\n const entries = (rowData ?? emptyRows).map((row, index) => [resolveId(row, index), row] as const);\n if (new Set(entries.map(([id]) => id)).size !== entries.length) throw new Error(\"DataTable row ids must be unique.\");\n return new Map(entries);\n }, [rowData, resolveId]);\n const data = React.useMemo(\n () =>\n (rowData ?? emptyRows).map((row, index) => {\n const patch = patches[resolveId(row, index)];\n return patch?.source === row ? patch.data : row;\n }),\n [rowData, patches, resolveId],\n );\n // Keep original indices/ids through external filtering; index ids must not shift when a chip changes.\n const rowIndices = React.useMemo(() => new Map(data.map((row, index) => [row, index])), [data]);\n const initialState = React.useMemo(\n () => ({\n columnVisibility: Object.fromEntries(definitions.filter(column => column.hide).map(column => [getColumnId(column), false])),\n columnPinning: {\n start: definitions.filter(column => column.pinned === \"left\" || column.pinned === \"start\").map(getColumnId),\n end: definitions.filter(column => column.pinned === \"right\" || column.pinned === \"end\").map(getColumnId),\n },\n pagination: { pageIndex: 0, pageSize: paginationPageSize },\n ...tableOptions?.initialState,\n }),\n [definitions, paginationPageSize, tableOptions?.initialState],\n );\n\n const effectiveFilters = React.useMemo(\n () => [\n ...(tableOptions?.state?.columnFilters ?? columnFilters).filter(filter => filter.id !== \"__external\"),\n ...(externalFilter ? [{ id: \"__external\", value: externalFilter }] : []),\n ],\n [tableOptions?.state?.columnFilters, columnFilters, externalFilter],\n );\n const effectiveVisibility = React.useMemo<DataTableState[\"columnVisibility\"]>(\n () => ({\n ...initialState.columnVisibility,\n ...columnVisibility,\n ...alignment?.state.columnVisibility,\n ...tableOptions?.state?.columnVisibility,\n __external: false,\n }),\n [initialState.columnVisibility, columnVisibility, alignment?.state.columnVisibility, tableOptions?.state?.columnVisibility],\n );\n const effectiveSizing = tableOptions?.state?.columnSizing ?? alignment?.state.columnSizing ?? columnSizing;\n const flexSizes = React.useMemo(\n () =>\n getFlexSizes(\n definitions.filter(column => effectiveVisibility[getColumnId(column)] !== false && (!isPrinting || !column.hideInPrint)),\n Math.max(0, viewportWidth - selectionWidth),\n effectiveSizing,\n ),\n [definitions, effectiveVisibility, isPrinting, viewportWidth, selectionWidth, effectiveSizing],\n );\n const columns = React.useMemo<ColumnDef<DataTableFeatures, T, any>[]>(\n () => [\n ...definitions.map(column => ({\n id: getColumnId(column),\n header: typeof column.headerName === \"string\" ? column.headerName : getColumnId(column),\n accessorFn: (row: T, index: number) => getCellValue(row, column, rowIndices.get(row) ?? index),\n size: flexSizes[getColumnId(column)] ?? column.width ?? 150,\n minSize: column.minWidth ?? 60,\n maxSize: column.maxWidth,\n enableSorting: column.sortable !== false && (!!column.field || !!column.valueGetter),\n enableColumnFilter: !!column.filter,\n enableGlobalFilter: !!column.field || !!column.valueGetter,\n enableResizing: column.resizable !== false,\n enableHiding: false,\n enablePinning: false,\n sortFn:\n column.cellDataType === \"number\" ? (\"basic\" as const) : column.cellDataType === \"date\" ? (\"datetime\" as const) : (\"alphanumeric\" as const),\n filterFn: (row: DataTableRow<T>, id: string, value: DataTableFilter) => matchesFilter(row.getValue(id), value, filterType(column)),\n ...column.tableOptions,\n })),\n {\n id: \"__external\",\n enableHiding: false,\n enablePinning: false,\n accessorFn: () => true,\n enableGlobalFilter: false,\n enableSorting: false,\n filterFn: (row, _id, predicate: (data: T) => boolean) => predicate(row.original),\n },\n ],\n [definitions, rowIndices, flexSizes],\n );\n const table: DataTableInstance<T> = useTable<DataTableFeatures, T>({\n columnResizeMode: \"onChange\",\n sortDescFirst: false,\n keepPinnedRows: true,\n enableRowSelection: row => !!rowSelection && (rowSelection.isRowSelectable?.(row.original) ?? true),\n enableMultiRowSelection: rowSelection?.mode === \"multiRow\",\n enableSubRowSelection: false,\n manualPagination: !pagination,\n getColumnCanGlobalFilter: column => {\n const definition = definitionsById.get(column.id);\n return !!definition && (!!definition.field || !!definition.valueGetter);\n },\n globalFilterFn: (row, id, value) => {\n const column = definitionsById.get(id);\n const cellValue = row.getValue(id);\n return String(column?.getQuickFilterText?.({ data: row.original, value: cellValue }) ?? cellValue ?? \"\")\n .toLocaleLowerCase()\n .includes(String(value).toLocaleLowerCase());\n },\n ...tableOptions,\n getRowCanExpand: row =>\n !!renderSubComponent && tableOptions?.enableExpanding !== false && (getRowCanExpand?.(row) ?? tableOptions?.getRowCanExpand?.(row) ?? true),\n features: dataTableFeatures,\n columns,\n data,\n getRowId: (row, index) => resolveId(row, rowIndices.get(row) ?? index),\n initialState,\n state: {\n ...alignment?.state,\n ...tableOptions?.state,\n columnSizing: effectiveSizing,\n columnVisibility: effectiveVisibility,\n columnFilters: effectiveFilters,\n globalFilter: searchText,\n },\n onColumnSizingChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnSizing.get());\n setColumnSizing(next);\n tableOptions?.onColumnSizingChange?.(updater);\n },\n onColumnVisibilityChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnVisibility.get());\n setColumnVisibility(next);\n tableOptions?.onColumnVisibilityChange?.(updater);\n },\n onColumnFiltersChange: updater => {\n const update = (previous: DataTableState[\"columnFilters\"]) => functionalUpdate(updater, previous).filter(filter => filter.id !== \"__external\");\n if (tableOptions?.state?.columnFilters === undefined) setColumnFilters(update);\n tableOptions?.onColumnFiltersChange?.(update);\n },\n onGlobalFilterChange: updater => {\n const value = functionalUpdate(updater, searchText) as string;\n setSearch(value);\n onQuickFilterTextChange?.(value);\n tableOptions?.onGlobalFilterChange?.(updater);\n },\n ...(alignment\n ? {\n onColumnSizingChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnSizing.get());\n alignment.setState(previous => ({ ...previous, columnSizing: next }));\n tableOptions?.onColumnSizingChange?.(updater);\n },\n onColumnOrderChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnOrder.get());\n alignment.setState(previous => ({ ...previous, columnOrder: next }));\n tableOptions?.onColumnOrderChange?.(updater);\n },\n onColumnPinningChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnPinning.get());\n alignment.setState(previous => ({ ...previous, columnPinning: next }));\n tableOptions?.onColumnPinningChange?.(updater);\n },\n onColumnVisibilityChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnVisibility.get());\n alignment.setState(previous => ({ ...previous, columnVisibility: next }));\n tableOptions?.onColumnVisibilityChange?.(updater);\n },\n }\n : {}),\n });\n\n return { table, definitionsById, sourcesById, data, rowIndices, resolveId };\n}\n"],"names":["emptyRows","useDataTableInstance","rowData","columnDefs","defaultColDef","getRowId","paginationPageSize","tableOptions","externalFilter","rowSelection","pagination","renderSubComponent","getRowCanExpand","onQuickFilterTextChange","patches","alignment","isPrinting","viewportWidth","selectionWidth","searchText","setSearch","columnSizing","setColumnSizing","React","columnVisibility","setColumnVisibility","columnFilters","setColumnFilters","resolveId","data","index","definitions","result","column","ids","getColumnId","definitionsById","sourcesById","entries","row","id","patch","rowIndices","initialState","effectiveFilters","filter","effectiveVisibility","effectiveSizing","flexSizes","getFlexSizes","columns","getCellValue","value","matchesFilter","filterType","_id","predicate","table","useTable","definition","cellValue","dataTableFeatures","updater","next","functionalUpdate","update","previous"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usedatatableinstance.es.js","sources":["../src/components/data-table/useDataTableInstance.ts"],"sourcesContent":["import * as React from \"react\";\nimport { functionalUpdate, useTable, type ColumnDef } from \"@tanstack/react-table\";\nimport { DataTableAlignmentContext } from \"./DataTableContext\";\nimport { dataTableFeatures } from \"./dataTableFeatures\";\nimport { filterType, getCellValue, getColumnId, getFlexSizes, matchesFilter } from \"./dataTableModel\";\nimport type {\n DataTableColumnDef,\n DataTableContentProps,\n DataTableFeatures,\n DataTableFilter,\n DataTableInstance,\n DataTableRow,\n DataTableState,\n} from \"./DataTable.types\";\n\nconst emptyRows: never[] = [];\ntype DataTableInstanceOptions<T extends object> = Pick<\n DataTableContentProps<T>,\n | \"rowData\"\n | \"columnDefs\"\n | \"getRowId\"\n | \"tableOptions\"\n | \"externalFilter\"\n | \"rowSelection\"\n | \"renderSubComponent\"\n | \"getRowCanExpand\"\n | \"onQuickFilterTextChange\"\n> & {\n defaultColDef: NonNullable<DataTableContentProps<T>[\"defaultColDef\"]>;\n paginationPageSize: number;\n pagination: boolean;\n patches: Record<string, { source: T; data: T }>;\n alignment: React.ContextType<typeof DataTableAlignmentContext>;\n isPrinting: boolean;\n viewportWidth: number;\n selectionWidth: number;\n searchText: string;\n setSearch: (value: string) => void;\n};\n\n/** Own TanStack configuration, controlled state precedence and stable row identities. */\nexport function useDataTableInstance<T extends object>({\n rowData,\n columnDefs,\n defaultColDef,\n getRowId,\n paginationPageSize,\n tableOptions,\n externalFilter,\n rowSelection,\n pagination,\n renderSubComponent,\n getRowCanExpand,\n onQuickFilterTextChange,\n patches,\n alignment,\n isPrinting,\n viewportWidth,\n selectionWidth,\n searchText,\n setSearch,\n}: DataTableInstanceOptions<T>) {\n const [columnSizing, setColumnSizing] = React.useState<DataTableState[\"columnSizing\"]>(tableOptions?.initialState?.columnSizing ?? {});\n const [columnVisibility, setColumnVisibility] = React.useState<DataTableState[\"columnVisibility\"]>({});\n const [columnFilters, setColumnFilters] = React.useState<DataTableState[\"columnFilters\"]>(tableOptions?.initialState?.columnFilters ?? []);\n const resolveId = React.useCallback(\n (data: T, index: number) => String(getRowId?.(data, index) ?? (data as { id?: unknown } | null)?.id ?? index),\n [getRowId],\n );\n const definitions = React.useMemo(() => {\n // Column overrides preserve the field/renderer pairing that TypeScript loses through the spread.\n const result = columnDefs.map(column => ({ ...defaultColDef, ...column }) as DataTableColumnDef<T>);\n const ids = result.map(getColumnId);\n if (new Set(ids).size !== ids.length) throw new Error(\"DataTable column ids must be unique.\");\n return result;\n }, [columnDefs, defaultColDef]);\n const definitionsById = React.useMemo(() => new Map(definitions.map(column => [getColumnId(column), column])), [definitions]);\n const sourcesById = React.useMemo(() => {\n const entries = (rowData ?? emptyRows).map((row, index) => [resolveId(row, index), row] as const);\n if (new Set(entries.map(([id]) => id)).size !== entries.length) throw new Error(\"DataTable row ids must be unique.\");\n return new Map(entries);\n }, [rowData, resolveId]);\n const data = React.useMemo(\n () =>\n (rowData ?? emptyRows).map((row, index) => {\n const patch = patches[resolveId(row, index)];\n return patch?.source === row ? patch.data : row;\n }),\n [rowData, patches, resolveId],\n );\n // Keep original indices/ids through external filtering; index ids must not shift when a chip changes.\n const rowIndices = React.useMemo(() => new Map(data.map((row, index) => [row, index])), [data]);\n const initialState = React.useMemo(\n () => ({\n columnVisibility: Object.fromEntries(definitions.filter(column => column.hide).map(column => [getColumnId(column), false])),\n columnPinning: {\n start: definitions.filter(column => column.pinned === \"left\" || column.pinned === \"start\").map(getColumnId),\n end: definitions.filter(column => column.pinned === \"right\" || column.pinned === \"end\").map(getColumnId),\n },\n pagination: { pageIndex: 0, pageSize: paginationPageSize },\n ...tableOptions?.initialState,\n }),\n [definitions, paginationPageSize, tableOptions?.initialState],\n );\n\n const effectiveFilters = React.useMemo(\n () => [\n ...(tableOptions?.state?.columnFilters ?? columnFilters).filter(filter => filter.id !== \"__external\"),\n ...(externalFilter ? [{ id: \"__external\", value: externalFilter }] : []),\n ],\n [tableOptions?.state?.columnFilters, columnFilters, externalFilter],\n );\n const effectiveVisibility = React.useMemo<DataTableState[\"columnVisibility\"]>(\n () => ({\n ...initialState.columnVisibility,\n ...columnVisibility,\n ...alignment?.state.columnVisibility,\n ...tableOptions?.state?.columnVisibility,\n __external: false,\n }),\n [initialState.columnVisibility, columnVisibility, alignment?.state.columnVisibility, tableOptions?.state?.columnVisibility],\n );\n const effectiveSizing = tableOptions?.state?.columnSizing ?? alignment?.state.columnSizing ?? columnSizing;\n const flexSizes = React.useMemo(\n () =>\n getFlexSizes(\n definitions.filter(column => effectiveVisibility[getColumnId(column)] !== false && (!isPrinting || !column.hideInPrint)),\n Math.max(0, viewportWidth - selectionWidth),\n effectiveSizing,\n ),\n [definitions, effectiveVisibility, isPrinting, viewportWidth, selectionWidth, effectiveSizing],\n );\n const columns = React.useMemo<ColumnDef<DataTableFeatures, T, any>[]>(\n () => [\n ...definitions.map(column => ({\n id: getColumnId(column),\n header: typeof column.headerName === \"string\" ? column.headerName : getColumnId(column),\n accessorFn: (row: T, index: number) => getCellValue(row, column, rowIndices.get(row) ?? index),\n size: flexSizes[getColumnId(column)] ?? column.width ?? 150,\n minSize: column.minWidth ?? 60,\n maxSize: column.maxWidth,\n enableSorting: column.sortable !== false && (!!column.field || !!column.valueGetter),\n enableColumnFilter: !!column.filter,\n enableGlobalFilter: !!column.field || !!column.valueGetter,\n enableResizing: column.resizable !== false,\n enableHiding: false,\n enablePinning: false,\n sortFn:\n column.cellDataType === \"number\" ? (\"basic\" as const) : column.cellDataType === \"date\" ? (\"datetime\" as const) : (\"alphanumeric\" as const),\n filterFn: (row: DataTableRow<T>, id: string, value: DataTableFilter) => matchesFilter(row.getValue(id), value, filterType(column)),\n ...column.tableOptions,\n })),\n {\n id: \"__external\",\n enableHiding: false,\n enablePinning: false,\n accessorFn: () => true,\n enableGlobalFilter: false,\n enableSorting: false,\n filterFn: (row, _id, predicate: (data: T) => boolean) => predicate(row.original),\n },\n ],\n [definitions, rowIndices, flexSizes],\n );\n const table: DataTableInstance<T> = useTable<DataTableFeatures, T>({\n columnResizeMode: \"onChange\",\n sortDescFirst: false,\n keepPinnedRows: true,\n enableRowSelection: row => !!rowSelection && (rowSelection.isRowSelectable?.(row.original) ?? true),\n enableMultiRowSelection: rowSelection?.mode === \"multiRow\",\n enableSubRowSelection: false,\n manualPagination: !pagination,\n getColumnCanGlobalFilter: column => {\n const definition = definitionsById.get(column.id);\n return !!definition && (!!definition.field || !!definition.valueGetter);\n },\n globalFilterFn: (row, id, value) => {\n const column = definitionsById.get(id);\n const cellValue = row.getValue(id);\n return String(column?.getQuickFilterText?.({ data: row.original, value: cellValue }) ?? cellValue ?? \"\")\n .toLocaleLowerCase()\n .includes(String(value).toLocaleLowerCase());\n },\n ...tableOptions,\n getRowCanExpand: row =>\n !!renderSubComponent && tableOptions?.enableExpanding !== false && (getRowCanExpand?.(row) ?? tableOptions?.getRowCanExpand?.(row) ?? true),\n features: dataTableFeatures,\n columns,\n data,\n getRowId: (row, index) => resolveId(row, rowIndices.get(row) ?? index),\n initialState,\n state: {\n ...alignment?.state,\n ...tableOptions?.state,\n columnSizing: effectiveSizing,\n columnVisibility: effectiveVisibility,\n columnFilters: effectiveFilters,\n globalFilter: searchText,\n },\n onColumnSizingChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnSizing.get());\n setColumnSizing(next);\n tableOptions?.onColumnSizingChange?.(updater);\n },\n onColumnVisibilityChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnVisibility.get());\n setColumnVisibility(next);\n tableOptions?.onColumnVisibilityChange?.(updater);\n },\n onColumnFiltersChange: updater => {\n const update = (previous: DataTableState[\"columnFilters\"]) => functionalUpdate(updater, previous).filter(filter => filter.id !== \"__external\");\n if (tableOptions?.state?.columnFilters === undefined) setColumnFilters(update);\n tableOptions?.onColumnFiltersChange?.(update);\n },\n onGlobalFilterChange: updater => {\n const value = functionalUpdate(updater, searchText) as string;\n setSearch(value);\n onQuickFilterTextChange?.(value);\n tableOptions?.onGlobalFilterChange?.(updater);\n },\n ...(alignment\n ? {\n onColumnSizingChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnSizing.get());\n alignment.setState(previous => ({ ...previous, columnSizing: next }));\n tableOptions?.onColumnSizingChange?.(updater);\n },\n onColumnOrderChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnOrder.get());\n alignment.setState(previous => ({ ...previous, columnOrder: next }));\n tableOptions?.onColumnOrderChange?.(updater);\n },\n onColumnPinningChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnPinning.get());\n alignment.setState(previous => ({ ...previous, columnPinning: next }));\n tableOptions?.onColumnPinningChange?.(updater);\n },\n onColumnVisibilityChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnVisibility.get());\n alignment.setState(previous => ({ ...previous, columnVisibility: next }));\n tableOptions?.onColumnVisibilityChange?.(updater);\n },\n }\n : {}),\n });\n\n return { table, definitionsById, sourcesById, data, rowIndices, resolveId };\n}\n"],"names":["emptyRows","useDataTableInstance","rowData","columnDefs","defaultColDef","getRowId","paginationPageSize","tableOptions","externalFilter","rowSelection","pagination","renderSubComponent","getRowCanExpand","onQuickFilterTextChange","patches","alignment","isPrinting","viewportWidth","selectionWidth","searchText","setSearch","columnSizing","setColumnSizing","React","columnVisibility","setColumnVisibility","columnFilters","setColumnFilters","resolveId","data","index","definitions","result","column","ids","getColumnId","definitionsById","sourcesById","entries","row","id","patch","rowIndices","initialState","effectiveFilters","filter","effectiveVisibility","effectiveSizing","flexSizes","getFlexSizes","columns","getCellValue","value","matchesFilter","filterType","_id","predicate","table","useTable","definition","cellValue","dataTableFeatures","updater","next","functionalUpdate","update","previous"],"mappings":"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"}
|