react-hook-tanstack-table 0.0.1

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.
Files changed (102) hide show
  1. package/LICENSE +21 -0
  2. package/README.org +29 -0
  3. package/dist/TableContext.cjs +6 -0
  4. package/dist/TableContext.d.cts +7 -0
  5. package/dist/TableContext.d.cts.map +1 -0
  6. package/dist/TableContext.d.ts +7 -0
  7. package/dist/TableContext.d.ts.map +1 -0
  8. package/dist/TableContext.js +8 -0
  9. package/dist/TableContext.js.map +1 -0
  10. package/dist/hasTableArg-Bu3FbcSo.js +8 -0
  11. package/dist/hasTableArg-Bu3FbcSo.js.map +1 -0
  12. package/dist/hasTableArg-dMtayKWH.cjs +11 -0
  13. package/dist/index.cjs +40 -0
  14. package/dist/index.d.cts +11 -0
  15. package/dist/index.d.ts +11 -0
  16. package/dist/index.js +11 -0
  17. package/dist/invariant-BgWq7zZS.js +12 -0
  18. package/dist/invariant-BgWq7zZS.js.map +1 -0
  19. package/dist/invariant-D8b385d_.cjs +21 -0
  20. package/dist/isShallowEqual-D6PQ041u.cjs +36 -0
  21. package/dist/isShallowEqual-Kynsoe7a.js +33 -0
  22. package/dist/isShallowEqual-Kynsoe7a.js.map +1 -0
  23. package/dist/runGetters-BfRTE7LZ.js +16 -0
  24. package/dist/runGetters-BfRTE7LZ.js.map +1 -0
  25. package/dist/runGetters-Q-UsPG2j.cjs +19 -0
  26. package/dist/types-DIWB6wdO.d.cts +11 -0
  27. package/dist/types-DIWB6wdO.d.cts.map +1 -0
  28. package/dist/types-DIWB6wdO.d.ts +11 -0
  29. package/dist/types-DIWB6wdO.d.ts.map +1 -0
  30. package/dist/useCell.cjs +53 -0
  31. package/dist/useCell.d.cts +17 -0
  32. package/dist/useCell.d.cts.map +1 -0
  33. package/dist/useCell.d.ts +17 -0
  34. package/dist/useCell.d.ts.map +1 -0
  35. package/dist/useCell.js +53 -0
  36. package/dist/useCell.js.map +1 -0
  37. package/dist/useColumn.cjs +54 -0
  38. package/dist/useColumn.d.cts +19 -0
  39. package/dist/useColumn.d.cts.map +1 -0
  40. package/dist/useColumn.d.ts +19 -0
  41. package/dist/useColumn.d.ts.map +1 -0
  42. package/dist/useColumn.js +54 -0
  43. package/dist/useColumn.js.map +1 -0
  44. package/dist/useHeader.cjs +48 -0
  45. package/dist/useHeader.d.cts +19 -0
  46. package/dist/useHeader.d.cts.map +1 -0
  47. package/dist/useHeader.d.ts +19 -0
  48. package/dist/useHeader.d.ts.map +1 -0
  49. package/dist/useHeader.js +48 -0
  50. package/dist/useHeader.js.map +1 -0
  51. package/dist/useReactTable-Y2z5JrT_.js +70 -0
  52. package/dist/useReactTable-Y2z5JrT_.js.map +1 -0
  53. package/dist/useReactTable-nxQRPiMU.cjs +95 -0
  54. package/dist/useReactTable.cjs +3 -0
  55. package/dist/useReactTable.d.cts +10 -0
  56. package/dist/useReactTable.d.cts.map +1 -0
  57. package/dist/useReactTable.d.ts +10 -0
  58. package/dist/useReactTable.d.ts.map +1 -0
  59. package/dist/useReactTable.js +2 -0
  60. package/dist/useRow.cjs +54 -0
  61. package/dist/useRow.d.cts +19 -0
  62. package/dist/useRow.d.cts.map +1 -0
  63. package/dist/useRow.d.ts +19 -0
  64. package/dist/useRow.d.ts.map +1 -0
  65. package/dist/useRow.js +54 -0
  66. package/dist/useRow.js.map +1 -0
  67. package/dist/useTable.cjs +44 -0
  68. package/dist/useTable.d.cts +11 -0
  69. package/dist/useTable.d.cts.map +1 -0
  70. package/dist/useTable.d.ts +11 -0
  71. package/dist/useTable.d.ts.map +1 -0
  72. package/dist/useTable.js +44 -0
  73. package/dist/useTable.js.map +1 -0
  74. package/dist/useTableWithSelector-Bdsf6Zxk.cjs +79 -0
  75. package/dist/useTableWithSelector-D3f689pF.js +70 -0
  76. package/dist/useTableWithSelector-D3f689pF.js.map +1 -0
  77. package/dist/useTableWithSelector.cjs +3 -0
  78. package/dist/useTableWithSelector.d.cts +8 -0
  79. package/dist/useTableWithSelector.d.cts.map +1 -0
  80. package/dist/useTableWithSelector.d.ts +8 -0
  81. package/dist/useTableWithSelector.d.ts.map +1 -0
  82. package/dist/useTableWithSelector.js +2 -0
  83. package/package.json +99 -0
  84. package/src/contexts/TableContext.ts +7 -0
  85. package/src/hooks/useCell.ts +156 -0
  86. package/src/hooks/useColumn.ts +168 -0
  87. package/src/hooks/useHeader.ts +151 -0
  88. package/src/hooks/useReactTable.ts +88 -0
  89. package/src/hooks/useRow.ts +132 -0
  90. package/src/hooks/useTable.ts +113 -0
  91. package/src/hooks/useTableWithSelector.ts +143 -0
  92. package/src/index.ts +13 -0
  93. package/src/lib/hasTableArg.ts +19 -0
  94. package/src/lib/identity.ts +1 -0
  95. package/src/lib/invariant.ts +12 -0
  96. package/src/lib/isShallowEqual.ts +77 -0
  97. package/src/lib/runGetters.ts +17 -0
  98. package/src/lib/tableRegistry.ts +3 -0
  99. package/src/lib/uncapitalize.ts +2 -0
  100. package/src/lib/useLayoutEffect.ts +3 -0
  101. package/src/lib/useShallowMemo.ts +12 -0
  102. package/src/types.ts +24 -0
package/dist/useRow.js ADDED
@@ -0,0 +1,54 @@
1
+ import { t as isShallowEqual } from "./isShallowEqual-Kynsoe7a.js";
2
+ import { n as identity, t as useTableWithSelector } from "./useTableWithSelector-D3f689pF.js";
3
+ import { t as runGetters } from "./runGetters-BfRTE7LZ.js";
4
+ import { t as hasTableArg } from "./hasTableArg-Bu3FbcSo.js";
5
+ import { useCallback } from "react";
6
+ //#region src/hooks/useRow.ts
7
+ const hookRowCache = /* @__PURE__ */ new WeakMap();
8
+ const rowHandlersCache = /* @__PURE__ */ new WeakMap();
9
+ const getRowValues = (table, rowId) => {
10
+ let rowCache = hookRowCache.get(table.options);
11
+ if (!rowCache) {
12
+ rowCache = /* @__PURE__ */ new Map();
13
+ hookRowCache.set(table.options, rowCache);
14
+ }
15
+ let cached = rowCache.get(rowId);
16
+ if (!cached) {
17
+ const row = table.getRow(rowId);
18
+ let cachedHandlers = rowHandlersCache.get(row);
19
+ if (!cachedHandlers) {
20
+ cachedHandlers = {
21
+ toggleExpandedHandler: row.getToggleExpandedHandler(),
22
+ toggleSelectedHandler: row.getToggleSelectedHandler()
23
+ };
24
+ rowHandlersCache.set(row, cachedHandlers);
25
+ }
26
+ const { toggleExpandedHandler, toggleSelectedHandler } = cachedHandlers;
27
+ const { getGroupingValue, getUniqueValues, getValue, ...rest } = row;
28
+ cached = {
29
+ ...runGetters(rest),
30
+ getGroupingValue,
31
+ getUniqueValues,
32
+ getValue,
33
+ toggleExpandedHandler,
34
+ toggleSelectedHandler
35
+ };
36
+ rowCache.set(rowId, cached);
37
+ }
38
+ return cached;
39
+ };
40
+ const useRow = (...args) => {
41
+ const [table, rowOrId, selector = identity, isEqual = isShallowEqual] = hasTableArg(args) ? args : [void 0, ...args];
42
+ const rowId = typeof rowOrId === "string" ? rowOrId : rowOrId.id;
43
+ return useTableWithSelector(table, useCallback((table) => selector(getRowValues(table, rowId)), [rowId, selector]), isEqual);
44
+ };
45
+ const rowHook = useRow;
46
+ const rowHookʹ = (...args) => (selector, isEqual) => rowHook(...[
47
+ ...args,
48
+ selector,
49
+ isEqual
50
+ ]);
51
+ //#endregion
52
+ export { useRow, rowHookʹ as useRowʹ };
53
+
54
+ //# sourceMappingURL=useRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRow.js","names":[],"sources":["../src/hooks/useRow.ts"],"sourcesContent":["import { useCallback } from \"react\"\n\nimport type {\n RequiredKeys,\n Row,\n RowData,\n Table,\n TableOptionsResolved,\n} from \"@tanstack/table-core\"\n\nimport { identity } from \"../lib/identity\"\nimport { hasTableArg } from \"../lib/hasTableArg\"\nimport { runGetters } from \"../lib/runGetters\"\nimport { isShallowEqual } from \"../lib/isShallowEqual\"\n\nimport type { IsEqual, RunGetters } from \"../types\"\n\nimport { useTableWithSelector } from \"./useTableWithSelector\"\n\nexport interface RowValues<TData extends RowData> extends RunGetters<\n Row<TData>\n> {}\n\nconst hookRowCache = new WeakMap<\n RequiredKeys<TableOptionsResolved<any>, \"state\">,\n Map<string, RowValues<any>>\n>()\n\nconst rowHandlersCache = new WeakMap<\n Row<any>,\n {\n toggleExpandedHandler: ReturnType<Row<any>[\"getToggleExpandedHandler\"]>\n toggleSelectedHandler: ReturnType<Row<any>[\"getToggleSelectedHandler\"]>\n }\n>()\n\nconst getRowValues = <TData extends RowData>(\n table: Table<TData>,\n rowId: string,\n): RowValues<TData> => {\n let rowCache = hookRowCache.get(table.options)\n if (!rowCache) {\n rowCache = new Map()\n hookRowCache.set(table.options, rowCache)\n }\n\n let cached = rowCache.get(rowId)\n\n if (!cached) {\n const row = table.getRow(rowId)\n\n let cachedHandlers = rowHandlersCache.get(row)\n if (!cachedHandlers) {\n cachedHandlers = {\n toggleExpandedHandler: row.getToggleExpandedHandler(),\n toggleSelectedHandler: row.getToggleSelectedHandler(),\n }\n rowHandlersCache.set(row, cachedHandlers)\n }\n\n const { toggleExpandedHandler, toggleSelectedHandler } = cachedHandlers\n\n const { getGroupingValue, getUniqueValues, getValue, ...rest } = row\n\n cached = {\n ...runGetters(rest),\n getGroupingValue,\n getUniqueValues,\n getValue,\n toggleExpandedHandler,\n toggleSelectedHandler,\n }\n\n rowCache.set(rowId, cached)\n }\n\n return cached\n}\n\ntype Selector<TData extends RowData, Selection> = (\n rowValues: RowValues<TData>,\n) => Selection\n\nexport const useRow = <TData extends RowData, Selection = RowValues<TData>>(\n ...args:\n | [\n table: Table<TData> | undefined,\n row: Row<TData> | RowValues<TData> | { id: string } | string,\n selector?: Selector<TData, Selection> | undefined,\n isEqual?: IsEqual<NoInfer<Selection>> | undefined,\n ]\n | [\n row: Row<TData> | RowValues<TData> | { id: string } | string,\n selector?: Selector<TData, Selection> | undefined,\n isEqual?: IsEqual<NoInfer<Selection>> | undefined,\n ]\n): Selection => {\n const [\n table,\n rowOrId,\n selector = identity as never,\n isEqual = isShallowEqual,\n ] = hasTableArg(args) ? args : [undefined, ...args]\n\n const rowId = typeof rowOrId === \"string\" ? rowOrId : rowOrId.id\n\n const getSelection = useCallback(\n (table: Table<TData>) => selector(getRowValues(table, rowId)),\n [rowId, selector],\n )\n\n return useTableWithSelector(table, getSelection, isEqual)\n}\n\nconst rowHook = useRow\n\nconst rowHookʹ =\n <TData extends RowData>(\n ...args:\n | [\n table: Table<TData> | undefined,\n row: Row<TData> | RowValues<TData> | { id: string } | string,\n ]\n | [row: Row<TData> | RowValues<TData> | { id: string } | string]\n ) =>\n <Selection = RowValues<TData>>(\n selector?: Selector<TData, Selection> | undefined,\n isEqual?: IsEqual<NoInfer<Selection>> | undefined,\n ): Selection =>\n rowHook(...[...args, selector, isEqual])\n\nexport { rowHookʹ as useRowʹ }\n"],"mappings":";;;;;;AAuBA,MAAM,+BAAe,IAAI,QAGvB;AAEF,MAAM,mCAAmB,IAAI,QAM3B;AAEF,MAAM,gBACJ,OACA,UACqB;CACrB,IAAI,WAAW,aAAa,IAAI,MAAM,OAAO;CAC7C,IAAI,CAAC,UAAU;EACb,2BAAW,IAAI,IAAI;EACnB,aAAa,IAAI,MAAM,SAAS,QAAQ;CAC1C;CAEA,IAAI,SAAS,SAAS,IAAI,KAAK;CAE/B,IAAI,CAAC,QAAQ;EACX,MAAM,MAAM,MAAM,OAAO,KAAK;EAE9B,IAAI,iBAAiB,iBAAiB,IAAI,GAAG;EAC7C,IAAI,CAAC,gBAAgB;GACnB,iBAAiB;IACf,uBAAuB,IAAI,yBAAyB;IACpD,uBAAuB,IAAI,yBAAyB;GACtD;GACA,iBAAiB,IAAI,KAAK,cAAc;EAC1C;EAEA,MAAM,EAAE,uBAAuB,0BAA0B;EAEzD,MAAM,EAAE,kBAAkB,iBAAiB,UAAU,GAAG,SAAS;EAEjE,SAAS;GACP,GAAG,WAAW,IAAI;GAClB;GACA;GACA;GACA;GACA;EACF;EAEA,SAAS,IAAI,OAAO,MAAM;CAC5B;CAEA,OAAO;AACT;AAMA,MAAa,UACX,GAAG,SAYW;CACd,MAAM,CACJ,OACA,SACA,WAAW,UACX,UAAU,kBACR,YAAY,IAAI,IAAI,OAAO,CAAC,KAAA,GAAW,GAAG,IAAI;CAElD,MAAM,QAAQ,OAAO,YAAY,WAAW,UAAU,QAAQ;CAO9D,OAAO,qBAAqB,OALP,aAClB,UAAwB,SAAS,aAAa,OAAO,KAAK,CAAC,GAC5D,CAAC,OAAO,QAAQ,CAG4B,GAAG,OAAO;AAC1D;AAEA,MAAM,UAAU;AAEhB,MAAM,YAEF,GAAG,UAQH,UACA,YAEA,QAAQ,GAAG;CAAC,GAAG;CAAM;CAAU;AAAO,CAAC"}
@@ -0,0 +1,44 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_isShallowEqual = require("./isShallowEqual-D6PQ041u.cjs");
3
+ const require_useTableWithSelector = require("./useTableWithSelector-Bdsf6Zxk.cjs");
4
+ const require_runGetters = require("./runGetters-Q-UsPG2j.cjs");
5
+ let react = require("react");
6
+ //#region src/hooks/useTable.ts
7
+ const tableValuesCache = /* @__PURE__ */ new WeakMap();
8
+ const tableHandlersCache = /* @__PURE__ */ new WeakMap();
9
+ const getTableValues = (table) => {
10
+ let cached = tableValuesCache.get(table.options);
11
+ if (!cached) {
12
+ let cachedHandlers = tableHandlersCache.get(table);
13
+ if (!cachedHandlers) {
14
+ cachedHandlers = {
15
+ toggleAllColumnsVisibilityHandler: table.getToggleAllColumnsVisibilityHandler(),
16
+ toggleAllPageRowsSelectedHandler: table.getToggleAllPageRowsSelectedHandler(),
17
+ toggleAllRowsExpandedHandler: table.getToggleAllRowsExpandedHandler(),
18
+ toggleAllRowsSelectedHandler: table.getToggleAllRowsSelectedHandler()
19
+ };
20
+ tableHandlersCache.set(table, cachedHandlers);
21
+ }
22
+ const { toggleAllColumnsVisibilityHandler, toggleAllPageRowsSelectedHandler, toggleAllRowsExpandedHandler, toggleAllRowsSelectedHandler } = cachedHandlers;
23
+ const { getColumn, getRow, ...rest } = table;
24
+ cached = {
25
+ ...require_runGetters.runGetters(rest),
26
+ getColumn,
27
+ getRow,
28
+ toggleAllColumnsVisibilityHandler,
29
+ toggleAllPageRowsSelectedHandler,
30
+ toggleAllRowsExpandedHandler,
31
+ toggleAllRowsSelectedHandler
32
+ };
33
+ tableValuesCache.set(table.options, cached);
34
+ }
35
+ return cached;
36
+ };
37
+ const useTable = (table, selector = require_useTableWithSelector.identity, isEqual = require_isShallowEqual.isShallowEqual) => {
38
+ return require_useTableWithSelector.useTableWithSelector(table, (0, react.useCallback)((table) => selector(getTableValues(table)), [selector]), isEqual);
39
+ };
40
+ const tableHook = useTable;
41
+ const tableHookʹ = (table) => (selector = require_useTableWithSelector.identity, isEqual = require_isShallowEqual.isShallowEqual) => tableHook(table, selector, isEqual);
42
+ //#endregion
43
+ exports.useTable = useTable;
44
+ exports.useTableʹ = tableHookʹ;
@@ -0,0 +1,11 @@
1
+ import { n as RunGetters, t as IsEqual } from "./types-DIWB6wdO.cjs";
2
+ import { RowData, Table } from "@tanstack/table-core";
3
+
4
+ //#region src/hooks/useTable.d.ts
5
+ interface TableValues<TData extends RowData> extends RunGetters<Table<TData>> {}
6
+ type Selector<TData extends RowData, Selection> = (tableValues: TableValues<TData>) => Selection;
7
+ declare const useTable: <TData extends RowData, Selection = TableValues<TData>>(table?: Table<TData> | undefined, selector?: Selector<TData, Selection>, isEqual?: IsEqual<NoInfer<Selection>>) => Selection;
8
+ declare const tableHookʹ: <TData extends RowData>(table?: Table<TData> | undefined) => <Selection = TableValues<TData>>(selector?: Selector<TData, Selection>, isEqual?: IsEqual<NoInfer<Selection>>) => Selection;
9
+ //#endregion
10
+ export { TableValues, useTable, tableHookʹ as useTableʹ };
11
+ //# sourceMappingURL=useTable.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTable.d.cts","names":[],"sources":["../src/hooks/useTable.ts"],"mappings":";;;;UAiBiB,WAAA,eAA0B,OAAA,UAAiB,UAAA,CAC1D,KAAA,CAAM,KAAA;AAAA,KAmEH,QAAA,eAAuB,OAAA,gBAC1B,WAAA,EAAa,WAAA,CAAY,KAAA,MACtB,SAAA;AAAA,cAEQ,QAAA,iBAA0B,OAAA,cAAqB,WAAA,CAAY,KAAA,GACtE,KAAA,GAAQ,KAAA,CAAM,KAAA,eACd,QAAA,GAAU,QAAA,CAAS,KAAA,EAAO,SAAA,GAC1B,OAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,SAAA,OACxB,SAAA;AAAA,cAWG,UAAA,iBACW,OAAA,EAAS,KAAA,GAAQ,KAAA,CAAM,KAAA,+BACzB,WAAA,CAAY,KAAA,GACvB,QAAA,GAAU,QAAA,CAAS,KAAA,EAAO,SAAA,GAC1B,OAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,SAAA,OACxB,SAAA"}
@@ -0,0 +1,11 @@
1
+ import { n as RunGetters, t as IsEqual } from "./types-DIWB6wdO.js";
2
+ import { RowData, Table } from "@tanstack/table-core";
3
+
4
+ //#region src/hooks/useTable.d.ts
5
+ interface TableValues<TData extends RowData> extends RunGetters<Table<TData>> {}
6
+ type Selector<TData extends RowData, Selection> = (tableValues: TableValues<TData>) => Selection;
7
+ declare const useTable: <TData extends RowData, Selection = TableValues<TData>>(table?: Table<TData> | undefined, selector?: Selector<TData, Selection>, isEqual?: IsEqual<NoInfer<Selection>>) => Selection;
8
+ declare const tableHookʹ: <TData extends RowData>(table?: Table<TData> | undefined) => <Selection = TableValues<TData>>(selector?: Selector<TData, Selection>, isEqual?: IsEqual<NoInfer<Selection>>) => Selection;
9
+ //#endregion
10
+ export { TableValues, useTable, tableHookʹ as useTableʹ };
11
+ //# sourceMappingURL=useTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTable.d.ts","names":[],"sources":["../src/hooks/useTable.ts"],"mappings":";;;;UAiBiB,WAAA,eAA0B,OAAA,UAAiB,UAAA,CAC1D,KAAA,CAAM,KAAA;AAAA,KAmEH,QAAA,eAAuB,OAAA,gBAC1B,WAAA,EAAa,WAAA,CAAY,KAAA,MACtB,SAAA;AAAA,cAEQ,QAAA,iBAA0B,OAAA,cAAqB,WAAA,CAAY,KAAA,GACtE,KAAA,GAAQ,KAAA,CAAM,KAAA,eACd,QAAA,GAAU,QAAA,CAAS,KAAA,EAAO,SAAA,GAC1B,OAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,SAAA,OACxB,SAAA;AAAA,cAWG,UAAA,iBACW,OAAA,EAAS,KAAA,GAAQ,KAAA,CAAM,KAAA,+BACzB,WAAA,CAAY,KAAA,GACvB,QAAA,GAAU,QAAA,CAAS,KAAA,EAAO,SAAA,GAC1B,OAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,SAAA,OACxB,SAAA"}
@@ -0,0 +1,44 @@
1
+ import { t as isShallowEqual } from "./isShallowEqual-Kynsoe7a.js";
2
+ import { n as identity, t as useTableWithSelector } from "./useTableWithSelector-D3f689pF.js";
3
+ import { t as runGetters } from "./runGetters-BfRTE7LZ.js";
4
+ import { useCallback } from "react";
5
+ //#region src/hooks/useTable.ts
6
+ const tableValuesCache = /* @__PURE__ */ new WeakMap();
7
+ const tableHandlersCache = /* @__PURE__ */ new WeakMap();
8
+ const getTableValues = (table) => {
9
+ let cached = tableValuesCache.get(table.options);
10
+ if (!cached) {
11
+ let cachedHandlers = tableHandlersCache.get(table);
12
+ if (!cachedHandlers) {
13
+ cachedHandlers = {
14
+ toggleAllColumnsVisibilityHandler: table.getToggleAllColumnsVisibilityHandler(),
15
+ toggleAllPageRowsSelectedHandler: table.getToggleAllPageRowsSelectedHandler(),
16
+ toggleAllRowsExpandedHandler: table.getToggleAllRowsExpandedHandler(),
17
+ toggleAllRowsSelectedHandler: table.getToggleAllRowsSelectedHandler()
18
+ };
19
+ tableHandlersCache.set(table, cachedHandlers);
20
+ }
21
+ const { toggleAllColumnsVisibilityHandler, toggleAllPageRowsSelectedHandler, toggleAllRowsExpandedHandler, toggleAllRowsSelectedHandler } = cachedHandlers;
22
+ const { getColumn, getRow, ...rest } = table;
23
+ cached = {
24
+ ...runGetters(rest),
25
+ getColumn,
26
+ getRow,
27
+ toggleAllColumnsVisibilityHandler,
28
+ toggleAllPageRowsSelectedHandler,
29
+ toggleAllRowsExpandedHandler,
30
+ toggleAllRowsSelectedHandler
31
+ };
32
+ tableValuesCache.set(table.options, cached);
33
+ }
34
+ return cached;
35
+ };
36
+ const useTable = (table, selector = identity, isEqual = isShallowEqual) => {
37
+ return useTableWithSelector(table, useCallback((table) => selector(getTableValues(table)), [selector]), isEqual);
38
+ };
39
+ const tableHook = useTable;
40
+ const tableHookʹ = (table) => (selector = identity, isEqual = isShallowEqual) => tableHook(table, selector, isEqual);
41
+ //#endregion
42
+ export { useTable, tableHookʹ as useTableʹ };
43
+
44
+ //# sourceMappingURL=useTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTable.js","names":[],"sources":["../src/hooks/useTable.ts"],"sourcesContent":["import { useCallback } from \"react\"\n\nimport type {\n RequiredKeys,\n RowData,\n Table,\n TableOptionsResolved,\n} from \"@tanstack/table-core\"\n\nimport { identity } from \"../lib/identity\"\nimport { runGetters } from \"../lib/runGetters\"\nimport { isShallowEqual } from \"../lib/isShallowEqual\"\n\nimport type { IsEqual, RunGetters } from \"../types\"\n\nimport { useTableWithSelector } from \"./useTableWithSelector\"\n\nexport interface TableValues<TData extends RowData> extends RunGetters<\n Table<TData>\n> {}\n\nconst tableValuesCache = new WeakMap<\n RequiredKeys<TableOptionsResolved<any>, \"state\">,\n TableValues<any>\n>()\n\nconst tableHandlersCache = new WeakMap<\n Table<any>,\n {\n toggleAllColumnsVisibilityHandler: ReturnType<\n Table<any>[\"getToggleAllColumnsVisibilityHandler\"]\n >\n toggleAllPageRowsSelectedHandler: ReturnType<\n Table<any>[\"getToggleAllPageRowsSelectedHandler\"]\n >\n toggleAllRowsExpandedHandler: ReturnType<\n Table<any>[\"getToggleAllRowsExpandedHandler\"]\n >\n toggleAllRowsSelectedHandler: ReturnType<\n Table<any>[\"getToggleAllRowsSelectedHandler\"]\n >\n }\n>()\n\nconst getTableValues = <TData extends RowData>(\n table: Table<TData>,\n): TableValues<TData> => {\n let cached = tableValuesCache.get(table.options)\n if (!cached) {\n let cachedHandlers = tableHandlersCache.get(table)\n if (!cachedHandlers) {\n cachedHandlers = {\n toggleAllColumnsVisibilityHandler:\n table.getToggleAllColumnsVisibilityHandler(),\n toggleAllPageRowsSelectedHandler:\n table.getToggleAllPageRowsSelectedHandler(),\n toggleAllRowsExpandedHandler: table.getToggleAllRowsExpandedHandler(),\n toggleAllRowsSelectedHandler: table.getToggleAllRowsSelectedHandler(),\n }\n tableHandlersCache.set(table, cachedHandlers)\n }\n\n const {\n toggleAllColumnsVisibilityHandler,\n toggleAllPageRowsSelectedHandler,\n toggleAllRowsExpandedHandler,\n toggleAllRowsSelectedHandler,\n } = cachedHandlers\n\n const { getColumn, getRow, ...rest } = table\n\n cached = {\n ...runGetters(rest),\n getColumn,\n getRow,\n toggleAllColumnsVisibilityHandler,\n toggleAllPageRowsSelectedHandler,\n toggleAllRowsExpandedHandler,\n toggleAllRowsSelectedHandler,\n }\n tableValuesCache.set(table.options, cached)\n }\n return cached\n}\n\ntype Selector<TData extends RowData, Selection> = (\n tableValues: TableValues<TData>,\n) => Selection\n\nexport const useTable = <TData extends RowData, Selection = TableValues<TData>>(\n table?: Table<TData> | undefined,\n selector: Selector<TData, Selection> = identity as never,\n isEqual: IsEqual<NoInfer<Selection>> = isShallowEqual,\n): Selection => {\n const getSelection = useCallback(\n (table: Table<TData>) => selector(getTableValues(table)),\n [selector],\n )\n\n return useTableWithSelector(table, getSelection, isEqual)\n}\n\nconst tableHook = useTable\n\nconst tableHookʹ =\n <TData extends RowData>(table?: Table<TData> | undefined) =>\n <Selection = TableValues<TData>>(\n selector: Selector<TData, Selection> = identity as never,\n isEqual: IsEqual<NoInfer<Selection>> = isShallowEqual,\n ): Selection =>\n tableHook(table, selector, isEqual)\n\nexport { tableHookʹ as useTableʹ }\n"],"mappings":";;;;;AAqBA,MAAM,mCAAmB,IAAI,QAG3B;AAEF,MAAM,qCAAqB,IAAI,QAgB7B;AAEF,MAAM,kBACJ,UACuB;CACvB,IAAI,SAAS,iBAAiB,IAAI,MAAM,OAAO;CAC/C,IAAI,CAAC,QAAQ;EACX,IAAI,iBAAiB,mBAAmB,IAAI,KAAK;EACjD,IAAI,CAAC,gBAAgB;GACnB,iBAAiB;IACf,mCACE,MAAM,qCAAqC;IAC7C,kCACE,MAAM,oCAAoC;IAC5C,8BAA8B,MAAM,gCAAgC;IACpE,8BAA8B,MAAM,gCAAgC;GACtE;GACA,mBAAmB,IAAI,OAAO,cAAc;EAC9C;EAEA,MAAM,EACJ,mCACA,kCACA,8BACA,iCACE;EAEJ,MAAM,EAAE,WAAW,QAAQ,GAAG,SAAS;EAEvC,SAAS;GACP,GAAG,WAAW,IAAI;GAClB;GACA;GACA;GACA;GACA;GACA;EACF;EACA,iBAAiB,IAAI,MAAM,SAAS,MAAM;CAC5C;CACA,OAAO;AACT;AAMA,MAAa,YACX,OACA,WAAuC,UACvC,UAAuC,mBACzB;CAMd,OAAO,qBAAqB,OALP,aAClB,UAAwB,SAAS,eAAe,KAAK,CAAC,GACvD,CAAC,QAAQ,CAGmC,GAAG,OAAO;AAC1D;AAEA,MAAM,YAAY;AAElB,MAAM,cACoB,WAEtB,WAAuC,UACvC,UAAuC,mBAEvC,UAAU,OAAO,UAAU,OAAO"}
@@ -0,0 +1,79 @@
1
+ const require_TableContext = require("./TableContext.cjs");
2
+ const require_invariant = require("./invariant-D8b385d_.cjs");
3
+ let react = require("react");
4
+ //#region src/lib/identity.ts
5
+ const identity = (x, ..._) => x;
6
+ //#endregion
7
+ //#region src/hooks/useTableWithSelector.ts
8
+ const useTableWithSelector = (table, selector = identity, isEqual) => {
9
+ "use no memo";
10
+ const resolvedTable = table ?? (0, react.use)(require_TableContext.TableContext);
11
+ require_invariant.invariant(resolvedTable, "`useTableWithSelector` must be used as a descendent of `TableContext` or provided with a `Table` as an argument!");
12
+ const listeners = (0, react.useMemo)(() => (require_invariant.tableRegistry.get(resolvedTable) ?? {}).listeners, [resolvedTable]);
13
+ require_invariant.invariant(listeners, "The provided/found `Table` instance cannot be subscribed to. Was it created by the correct `useReactTable` hook?");
14
+ const subscribe = (0, react.useCallback)((onTableChange) => {
15
+ listeners.add(onTableChange);
16
+ return () => {
17
+ listeners.delete(onTableChange);
18
+ };
19
+ }, [listeners]);
20
+ const instRef = (0, react.useRef)({
21
+ hasValue: false,
22
+ value: null
23
+ });
24
+ const value = (0, react.useSyncExternalStore)(subscribe, (0, react.useMemo)(() => {
25
+ let hasMemo = false, memoizedTableOptions, memoizedSelection;
26
+ return () => {
27
+ const nextTableOptions = resolvedTable.options;
28
+ if (!hasMemo) {
29
+ hasMemo = true;
30
+ memoizedTableOptions = nextTableOptions;
31
+ const nextSelection = selector(resolvedTable);
32
+ if (isEqual !== void 0) {
33
+ if (instRef.current.hasValue) {
34
+ const currentSelection = instRef.current.value;
35
+ if (isEqual(currentSelection, nextSelection)) {
36
+ memoizedSelection = currentSelection;
37
+ return currentSelection;
38
+ }
39
+ }
40
+ }
41
+ memoizedSelection = nextSelection;
42
+ return nextSelection;
43
+ }
44
+ const prevTableOptions = memoizedTableOptions;
45
+ const prevSelection = memoizedSelection;
46
+ if (Object.is(prevTableOptions, nextTableOptions)) return prevSelection;
47
+ const nextSelection = selector(resolvedTable);
48
+ if (isEqual !== void 0 && isEqual(prevSelection, nextSelection)) {
49
+ memoizedTableOptions = nextTableOptions;
50
+ return prevSelection;
51
+ }
52
+ memoizedTableOptions = nextTableOptions;
53
+ memoizedSelection = nextSelection;
54
+ return nextSelection;
55
+ };
56
+ }, [
57
+ selector,
58
+ resolvedTable,
59
+ isEqual
60
+ ]));
61
+ (0, react.useInsertionEffect)(() => {
62
+ instRef.current.hasValue = true;
63
+ instRef.current.value = value;
64
+ }, [value]);
65
+ return value;
66
+ };
67
+ //#endregion
68
+ Object.defineProperty(exports, "identity", {
69
+ enumerable: true,
70
+ get: function() {
71
+ return identity;
72
+ }
73
+ });
74
+ Object.defineProperty(exports, "useTableWithSelector", {
75
+ enumerable: true,
76
+ get: function() {
77
+ return useTableWithSelector;
78
+ }
79
+ });
@@ -0,0 +1,70 @@
1
+ import { TableContext } from "./TableContext.js";
2
+ import { n as tableRegistry, t as invariant } from "./invariant-BgWq7zZS.js";
3
+ import { use, useCallback, useInsertionEffect, useMemo, useRef, useSyncExternalStore } from "react";
4
+ //#region src/lib/identity.ts
5
+ const identity = (x, ..._) => x;
6
+ //#endregion
7
+ //#region src/hooks/useTableWithSelector.ts
8
+ const useTableWithSelector = (table, selector = identity, isEqual) => {
9
+ "use no memo";
10
+ const resolvedTable = table ?? use(TableContext);
11
+ invariant(resolvedTable, "`useTableWithSelector` must be used as a descendent of `TableContext` or provided with a `Table` as an argument!");
12
+ const listeners = useMemo(() => (tableRegistry.get(resolvedTable) ?? {}).listeners, [resolvedTable]);
13
+ invariant(listeners, "The provided/found `Table` instance cannot be subscribed to. Was it created by the correct `useReactTable` hook?");
14
+ const subscribe = useCallback((onTableChange) => {
15
+ listeners.add(onTableChange);
16
+ return () => {
17
+ listeners.delete(onTableChange);
18
+ };
19
+ }, [listeners]);
20
+ const instRef = useRef({
21
+ hasValue: false,
22
+ value: null
23
+ });
24
+ const value = useSyncExternalStore(subscribe, useMemo(() => {
25
+ let hasMemo = false, memoizedTableOptions, memoizedSelection;
26
+ return () => {
27
+ const nextTableOptions = resolvedTable.options;
28
+ if (!hasMemo) {
29
+ hasMemo = true;
30
+ memoizedTableOptions = nextTableOptions;
31
+ const nextSelection = selector(resolvedTable);
32
+ if (isEqual !== void 0) {
33
+ if (instRef.current.hasValue) {
34
+ const currentSelection = instRef.current.value;
35
+ if (isEqual(currentSelection, nextSelection)) {
36
+ memoizedSelection = currentSelection;
37
+ return currentSelection;
38
+ }
39
+ }
40
+ }
41
+ memoizedSelection = nextSelection;
42
+ return nextSelection;
43
+ }
44
+ const prevTableOptions = memoizedTableOptions;
45
+ const prevSelection = memoizedSelection;
46
+ if (Object.is(prevTableOptions, nextTableOptions)) return prevSelection;
47
+ const nextSelection = selector(resolvedTable);
48
+ if (isEqual !== void 0 && isEqual(prevSelection, nextSelection)) {
49
+ memoizedTableOptions = nextTableOptions;
50
+ return prevSelection;
51
+ }
52
+ memoizedTableOptions = nextTableOptions;
53
+ memoizedSelection = nextSelection;
54
+ return nextSelection;
55
+ };
56
+ }, [
57
+ selector,
58
+ resolvedTable,
59
+ isEqual
60
+ ]));
61
+ useInsertionEffect(() => {
62
+ instRef.current.hasValue = true;
63
+ instRef.current.value = value;
64
+ }, [value]);
65
+ return value;
66
+ };
67
+ //#endregion
68
+ export { identity as n, useTableWithSelector as t };
69
+
70
+ //# sourceMappingURL=useTableWithSelector-D3f689pF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableWithSelector-D3f689pF.js","names":[],"sources":["../src/lib/identity.ts","../src/hooks/useTableWithSelector.ts"],"sourcesContent":["export const identity = <T>(x: T, ..._: any[]): T => x\n","import {\n use,\n useCallback,\n useInsertionEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n} from \"react\"\n\nimport type {\n RequiredKeys,\n RowData,\n Table,\n TableOptionsResolved,\n} from \"@tanstack/table-core\"\n\nimport { TableContext } from \"../contexts/TableContext\"\n\nimport { identity } from \"../lib/identity\"\nimport { tableRegistry } from \"../lib/tableRegistry\"\nimport { invariant } from \"../lib/invariant\"\n\nimport type { IsEqual } from \"../types\"\n\nexport const useTableWithSelector = <\n TData extends RowData,\n Selection = Table<TData>,\n>(\n table?: Table<TData> | undefined,\n selector: (table: Table<TData>) => Selection = identity as never,\n isEqual?: IsEqual<NoInfer<Selection>> | undefined,\n): Selection => {\n \"use no memo\"\n\n const resolvedTable = table ?? use<Table<TData> | null>(TableContext)\n\n invariant(\n resolvedTable,\n \"`useTableWithSelector` must be used as a descendent of `TableContext` or provided with a `Table` as an argument!\",\n )\n\n const listeners = useMemo(\n () => (tableRegistry.get(resolvedTable) ?? {}).listeners,\n [resolvedTable],\n )\n\n invariant(\n listeners,\n \"The provided/found `Table` instance cannot be subscribed to. Was it created by the correct `useReactTable` hook?\",\n )\n\n const subscribe = useCallback(\n (onTableChange: () => void) => {\n listeners.add(onTableChange)\n return () => {\n listeners.delete(onTableChange)\n }\n },\n [listeners],\n )\n\n // Use this to track the rendered snapshot.\n const instRef = useRef<\n | {\n hasValue: false\n value: null\n }\n | { hasValue: true; value: Selection }\n >({\n hasValue: false,\n value: null,\n })\n\n // eslint-disable-next-line react-hooks/immutability\n const getSnapshot = useMemo(() => {\n let hasMemo = false,\n memoizedTableOptions: RequiredKeys<TableOptionsResolved<TData>, \"state\">,\n memoizedSelection: Selection\n\n return () => {\n const nextTableOptions = resolvedTable.options\n if (!hasMemo) {\n // The first time the hook is called, there is no memoized result.\n // eslint-disable-next-line react-hooks/immutability -- should be fine 😅 this is how it is in the upstream, too\n hasMemo = true\n memoizedTableOptions = nextTableOptions\n const nextSelection = selector(resolvedTable)\n\n if (isEqual !== undefined) {\n // Even if the selector has changed, the currently rendered selection\n // may be equal to the new selection. We should attempt to reuse the\n // current value if possible, to preserve downstream memoizations.\n if (instRef.current.hasValue) {\n const currentSelection = instRef.current.value\n if (isEqual(currentSelection, nextSelection)) {\n memoizedSelection = currentSelection\n return currentSelection\n }\n }\n }\n\n memoizedSelection = nextSelection\n return nextSelection\n }\n\n const prevTableOptions = memoizedTableOptions\n // eslint-disable-next-line react-hooks/memo-dependencies\n const prevSelection = memoizedSelection\n\n if (Object.is(prevTableOptions, nextTableOptions)) {\n // The snapshot is the same as last time. Reuse the previous selection.\n return prevSelection\n }\n\n // The snapshot has changed, so we need to compute a new selection.\n const nextSelection = selector(resolvedTable)\n\n // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n if (isEqual !== undefined && isEqual(prevSelection, nextSelection)) {\n // The snapshot still has changed, so make sure to update to not keep\n // old references alive\n memoizedTableOptions = nextTableOptions\n return prevSelection\n }\n\n memoizedTableOptions = nextTableOptions\n memoizedSelection = nextSelection\n return nextSelection\n }\n }, [selector, resolvedTable, isEqual])\n\n const value = useSyncExternalStore(subscribe, getSnapshot)\n\n useInsertionEffect(() => {\n instRef.current.hasValue = true\n instRef.current.value = value\n }, [value])\n\n return value\n}\n"],"mappings":";;;;AAAA,MAAa,YAAe,GAAM,GAAG,MAAgB;;;ACwBrD,MAAa,wBAIX,OACA,WAA+C,UAC/C,YACc;CACd;CAEA,MAAM,gBAAgB,SAAS,IAAyB,YAAY;CAEpE,UACE,eACA,kHACF;CAEA,MAAM,YAAY,eACT,cAAc,IAAI,aAAa,KAAK,CAAC,GAAG,WAC/C,CAAC,aAAa,CAChB;CAEA,UACE,WACA,kHACF;CAEA,MAAM,YAAY,aACf,kBAA8B;EAC7B,UAAU,IAAI,aAAa;EAC3B,aAAa;GACX,UAAU,OAAO,aAAa;EAChC;CACF,GACA,CAAC,SAAS,CACZ;CAGA,MAAM,UAAU,OAMd;EACA,UAAU;EACV,OAAO;CACT,CAAC;CA+DD,MAAM,QAAQ,qBAAqB,WA5Df,cAAc;EAChC,IAAI,UAAU,OACZ,sBACA;EAEF,aAAa;GACX,MAAM,mBAAmB,cAAc;GACvC,IAAI,CAAC,SAAS;IAGZ,UAAU;IACV,uBAAuB;IACvB,MAAM,gBAAgB,SAAS,aAAa;IAE5C,IAAI,YAAY,KAAA;SAIV,QAAQ,QAAQ,UAAU;MAC5B,MAAM,mBAAmB,QAAQ,QAAQ;MACzC,IAAI,QAAQ,kBAAkB,aAAa,GAAG;OAC5C,oBAAoB;OACpB,OAAO;MACT;KACF;;IAGF,oBAAoB;IACpB,OAAO;GACT;GAEA,MAAM,mBAAmB;GAEzB,MAAM,gBAAgB;GAEtB,IAAI,OAAO,GAAG,kBAAkB,gBAAgB,GAE9C,OAAO;GAIT,MAAM,gBAAgB,SAAS,aAAa;GAM5C,IAAI,YAAY,KAAA,KAAa,QAAQ,eAAe,aAAa,GAAG;IAGlE,uBAAuB;IACvB,OAAO;GACT;GAEA,uBAAuB;GACvB,oBAAoB;GACpB,OAAO;EACT;CACF,GAAG;EAAC;EAAU;EAAe;CAAO,CAEoB,CAAC;CAEzD,yBAAyB;EACvB,QAAQ,QAAQ,WAAW;EAC3B,QAAQ,QAAQ,QAAQ;CAC1B,GAAG,CAAC,KAAK,CAAC;CAEV,OAAO;AACT"}
@@ -0,0 +1,3 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_useTableWithSelector = require("./useTableWithSelector-Bdsf6Zxk.cjs");
3
+ exports.useTableWithSelector = require_useTableWithSelector.useTableWithSelector;
@@ -0,0 +1,8 @@
1
+ import { t as IsEqual } from "./types-DIWB6wdO.cjs";
2
+ import { RowData, Table } from "@tanstack/table-core";
3
+
4
+ //#region src/hooks/useTableWithSelector.d.ts
5
+ declare const useTableWithSelector: <TData extends RowData, Selection = Table<TData>>(table?: Table<TData> | undefined, selector?: (table: Table<TData>) => Selection, isEqual?: IsEqual<NoInfer<Selection>> | undefined) => Selection;
6
+ //#endregion
7
+ export { useTableWithSelector };
8
+ //# sourceMappingURL=useTableWithSelector.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableWithSelector.d.cts","names":[],"sources":["../src/hooks/useTableWithSelector.ts"],"mappings":";;;;cAwBa,oBAAA,iBACG,OAAA,cACF,KAAA,CAAM,KAAA,GAElB,KAAA,GAAQ,KAAA,CAAM,KAAA,eACd,QAAA,IAAW,KAAA,EAAO,KAAA,CAAM,KAAA,MAAW,SAAA,EACnC,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAQ,SAAA,mBACzB,SAAA"}
@@ -0,0 +1,8 @@
1
+ import { t as IsEqual } from "./types-DIWB6wdO.js";
2
+ import { RowData, Table } from "@tanstack/table-core";
3
+
4
+ //#region src/hooks/useTableWithSelector.d.ts
5
+ declare const useTableWithSelector: <TData extends RowData, Selection = Table<TData>>(table?: Table<TData> | undefined, selector?: (table: Table<TData>) => Selection, isEqual?: IsEqual<NoInfer<Selection>> | undefined) => Selection;
6
+ //#endregion
7
+ export { useTableWithSelector };
8
+ //# sourceMappingURL=useTableWithSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableWithSelector.d.ts","names":[],"sources":["../src/hooks/useTableWithSelector.ts"],"mappings":";;;;cAwBa,oBAAA,iBACG,OAAA,cACF,KAAA,CAAM,KAAA,GAElB,KAAA,GAAQ,KAAA,CAAM,KAAA,eACd,QAAA,IAAW,KAAA,EAAO,KAAA,CAAM,KAAA,MAAW,SAAA,EACnC,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAQ,SAAA,mBACzB,SAAA"}
@@ -0,0 +1,2 @@
1
+ import { t as useTableWithSelector } from "./useTableWithSelector-D3f689pF.js";
2
+ export { useTableWithSelector };
package/package.json ADDED
@@ -0,0 +1,99 @@
1
+ {
2
+ "name": "react-hook-tanstack-table",
3
+ "packageManager": "yarn@4.15.0",
4
+ "type": "module",
5
+ "version": "0.0.1",
6
+ "description": "Rules-of-React respecting bindings for TanStack Table.",
7
+ "author": "Xandor Schiefer <me@xandor.co.za>",
8
+ "license": "MIT",
9
+ "homepage": "https://github.com/zeorin/react-hook-tanstack-table/?tab=readme-ov-file#readme-ov-file",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/zeorin/react-hook-tanstack-table.git"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/zeorin/react-hook-tanstack-table/issues"
16
+ },
17
+ "exports": {
18
+ ".": {
19
+ "import": "./dist/index.js",
20
+ "require": "./dist/index.cjs"
21
+ },
22
+ "./TableContext": {
23
+ "import": "./dist/TableContext.js",
24
+ "require": "./dist/TableContext.cjs"
25
+ },
26
+ "./useCell": {
27
+ "import": "./dist/useCell.js",
28
+ "require": "./dist/useCell.cjs"
29
+ },
30
+ "./useColumn": {
31
+ "import": "./dist/useColumn.js",
32
+ "require": "./dist/useColumn.cjs"
33
+ },
34
+ "./useHeader": {
35
+ "import": "./dist/useHeader.js",
36
+ "require": "./dist/useHeader.cjs"
37
+ },
38
+ "./useReactTable": {
39
+ "import": "./dist/useReactTable.js",
40
+ "require": "./dist/useReactTable.cjs"
41
+ },
42
+ "./useRow": {
43
+ "import": "./dist/useRow.js",
44
+ "require": "./dist/useRow.cjs"
45
+ },
46
+ "./useTable": {
47
+ "import": "./dist/useTable.js",
48
+ "require": "./dist/useTable.cjs"
49
+ },
50
+ "./useTableWithSelector": {
51
+ "import": "./dist/useTableWithSelector.js",
52
+ "require": "./dist/useTableWithSelector.cjs"
53
+ },
54
+ "./package.json": "./package.json"
55
+ },
56
+ "files": [
57
+ "dist",
58
+ "src"
59
+ ],
60
+ "publishConfig": {
61
+ "access": "public"
62
+ },
63
+ "scripts": {
64
+ "build": "tsdown",
65
+ "dev": "tsdown --watch",
66
+ "play": "vite",
67
+ "test": "vitest",
68
+ "typecheck": "tsc --noEmit",
69
+ "release": "bumpp",
70
+ "prepublishOnly": "yarn run build"
71
+ },
72
+ "peerDependencies": {
73
+ "@tanstack/react-table": "^8.21.3",
74
+ "@tanstack/table-core": "^8.21.3",
75
+ "react": "^19.2.0",
76
+ "react-dom": "^19.2.0"
77
+ },
78
+ "devDependencies": {
79
+ "@tanstack/react-table": "^8.21.3",
80
+ "@tanstack/table-core": "^8.21.3",
81
+ "@tsconfig/strictest": "^2.0.8",
82
+ "@types/node": "^25.6.2",
83
+ "@types/react": "^19.2.14",
84
+ "@types/react-dom": "^19.2.3",
85
+ "@vitejs/plugin-react": "^6.0.1",
86
+ "@vitest/browser-playwright": "^4.1.5",
87
+ "bumpp": "^11.1.0",
88
+ "tsdown": "^0.22.0",
89
+ "type-fest": "^5.6.0",
90
+ "typescript": "^6.0.3",
91
+ "typescript-language-server": "^5.3.0",
92
+ "vite": "^8.0.11",
93
+ "vitest": "^4.1.5",
94
+ "vitest-browser-react": "^2.2.0"
95
+ },
96
+ "main": "./dist/index.cjs",
97
+ "module": "./dist/index.js",
98
+ "types": "./dist/index.d.cts"
99
+ }
@@ -0,0 +1,7 @@
1
+ import { createContext } from "react"
2
+
3
+ import type { Table } from "@tanstack/table-core"
4
+
5
+ export const TableContext: React.Context<Table<any> | null> = createContext<Table<any> | null>(null)
6
+
7
+ TableContext.displayName = "TableContext"