zubin-grid 0.1.1 → 0.2.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 (43) hide show
  1. package/README.md +184 -52
  2. package/dist/core/cell.d.ts +8 -16
  3. package/dist/core/cell.d.ts.map +1 -1
  4. package/dist/core/cell.js.map +1 -1
  5. package/dist/core/cell.types.d.ts +10 -0
  6. package/dist/core/cell.types.d.ts.map +1 -0
  7. package/dist/core/cell.types.js +2 -0
  8. package/dist/core/cell.types.js.map +1 -0
  9. package/dist/core/grid.d.ts +11 -53
  10. package/dist/core/grid.d.ts.map +1 -1
  11. package/dist/core/grid.js +397 -93
  12. package/dist/core/grid.js.map +1 -1
  13. package/dist/core/grid.types.d.ts +93 -0
  14. package/dist/core/grid.types.d.ts.map +1 -0
  15. package/dist/core/grid.types.js +2 -0
  16. package/dist/core/grid.types.js.map +1 -0
  17. package/dist/core/gridPersist.d.ts +8 -0
  18. package/dist/core/gridPersist.d.ts.map +1 -0
  19. package/dist/core/gridPersist.js +208 -0
  20. package/dist/core/gridPersist.js.map +1 -0
  21. package/dist/core/gridPersist.types.d.ts +19 -0
  22. package/dist/core/gridPersist.types.d.ts.map +1 -0
  23. package/dist/core/gridPersist.types.js +2 -0
  24. package/dist/core/gridPersist.types.js.map +1 -0
  25. package/dist/core/head.d.ts +8 -26
  26. package/dist/core/head.d.ts.map +1 -1
  27. package/dist/core/head.js.map +1 -1
  28. package/dist/core/head.types.d.ts +22 -0
  29. package/dist/core/head.types.d.ts.map +1 -0
  30. package/dist/core/head.types.js +2 -0
  31. package/dist/core/head.types.js.map +1 -0
  32. package/dist/core/tail.d.ts +9 -21
  33. package/dist/core/tail.d.ts.map +1 -1
  34. package/dist/core/tail.js.map +1 -1
  35. package/dist/core/tail.types.d.ts +15 -0
  36. package/dist/core/tail.types.d.ts.map +1 -0
  37. package/dist/core/tail.types.js +2 -0
  38. package/dist/core/tail.types.js.map +1 -0
  39. package/dist/index.d.ts +5 -4
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +1 -0
  42. package/dist/index.js.map +1 -1
  43. package/package.json +11 -3
package/README.md CHANGED
@@ -10,7 +10,7 @@ A lightweight grid state manager for React and TypeScript.
10
10
  - Typed grid API for rows, columns, heads, and tails
11
11
  - React hooks for reading and updating state
12
12
  - Row and column reordering helpers
13
- - Support for both matrix-style input and flat record collections
13
+ - JSON-friendly initialization with typed row, column, and cell records
14
14
 
15
15
  ## Installation
16
16
 
@@ -20,33 +20,59 @@ npm install zubin-grid react
20
20
 
21
21
  > `react` is a peer dependency. Hooks are designed for React 18+.
22
22
 
23
+ ## Local example app
24
+
25
+ This repository also includes a small Vite + React playground under `examples/` so you can try the JSON-friendly grid API, persistence, and the demo controls locally.
26
+
27
+ ```bash
28
+ npm install
29
+ npm run example
30
+ ```
31
+
32
+ Useful companion scripts:
33
+
34
+ ```bash
35
+ npm run example:check
36
+ npm run example:build
37
+ ```
38
+
23
39
  ## Quick start
24
40
 
25
- Create a grid from a 2D array of cells:
41
+ Create a grid from JSON-friendly row, column, and cell records:
26
42
 
27
43
  ```ts
28
- import { cell, grid } from 'zubin-grid'
44
+ import { grid } from 'zubin-grid'
45
+
46
+ type SalesSchema = {
47
+ rows: Array<{ id: string; label: string }>
48
+ columns: Array<{ id: string; label: string }>
49
+ cells: Array<{ rowId: string; columnId: string; value: number }>
50
+ }
29
51
 
30
- const salesGrid = grid(
31
- [
32
- [cell(12), cell(9), cell(4)],
33
- [cell(7), cell(15), cell(8)],
52
+ const initialState: SalesSchema = {
53
+ rows: [
54
+ { id: 'north', label: 'North' },
55
+ { id: 'south', label: 'South' },
34
56
  ],
35
- {
36
- rowHeaders: [
37
- { id: 'north', label: 'North' },
38
- { id: 'south', label: 'South' },
39
- ],
40
- colHeaders: ['jan', 'feb', 'mar'],
41
- },
42
- )
57
+ columns: [
58
+ { id: 'jan', label: 'January' },
59
+ { id: 'feb', label: 'February' },
60
+ ],
61
+ cells: [
62
+ { rowId: 'north', columnId: 'jan', value: 12 },
63
+ { rowId: 'north', columnId: 'feb', value: 9 },
64
+ { rowId: 'south', columnId: 'jan', value: 7 },
65
+ { rowId: 'south', columnId: 'feb', value: 15 },
66
+ ],
67
+ }
68
+
69
+ const salesGrid = grid<SalesSchema>(initialState, {
70
+ rowHeaders: ['id', 'rowId'],
71
+ colHeaders: ['id', 'columnId'],
72
+ })
43
73
 
44
74
  console.log(salesGrid.getValue('north', 'jan'))
45
75
  // 12
46
-
47
- salesGrid.setValue('south', 'mar', 11)
48
- console.log(salesGrid.getValue('south', 'mar'))
49
- // 11
50
76
  ```
51
77
 
52
78
  ## React example
@@ -54,22 +80,47 @@ console.log(salesGrid.getValue('south', 'mar'))
54
80
  Create the grid once outside render, or memoize it if you build it inside a component.
55
81
 
56
82
  ```tsx
57
- import { cell, grid, useCell } from 'zubin-grid'
83
+ import { grid, useCell } from 'zubin-grid'
84
+
85
+ type BudgetRowId = 'marketing' | 'ops'
86
+ type BudgetColumnId = 'planned' | 'actual'
87
+
88
+ type BudgetSchema = {
89
+ rows: Array<{ id: BudgetRowId; label: string }>
90
+ columns: Array<{ id: BudgetColumnId; label: string }>
91
+ cells: Array<{
92
+ rowId: BudgetRowId
93
+ columnId: BudgetColumnId
94
+ value: number
95
+ }>
96
+ }
58
97
 
59
- const budgetGrid = grid(
60
- [
61
- [cell(1000), cell(1200)],
62
- [cell(800), cell(950)],
63
- ],
98
+ const budgetGrid = grid<BudgetSchema>(
99
+ {
100
+ rows: [
101
+ { id: 'marketing', label: 'Marketing' },
102
+ { id: 'ops', label: 'Operations' },
103
+ ],
104
+ columns: [
105
+ { id: 'planned', label: 'Planned' },
106
+ { id: 'actual', label: 'Actual' },
107
+ ],
108
+ cells: [
109
+ { rowId: 'marketing', columnId: 'planned', value: 1000 },
110
+ { rowId: 'marketing', columnId: 'actual', value: 1200 },
111
+ { rowId: 'ops', columnId: 'planned', value: 800 },
112
+ { rowId: 'ops', columnId: 'actual', value: 950 },
113
+ ],
114
+ },
64
115
  {
65
- rowHeaders: ['marketing', 'ops'],
66
- colHeaders: ['planned', 'actual'],
116
+ rowHeaders: ['id', 'rowId'],
117
+ colHeaders: ['id', 'columnId'],
67
118
  },
68
119
  )
69
120
 
70
121
  export function BudgetCell(props: {
71
- rowId: 'marketing' | 'ops'
72
- columnId: 'planned' | 'actual'
122
+ rowId: BudgetRowId
123
+ columnId: BudgetColumnId
73
124
  }) {
74
125
  const [value, setValue] = useCell(budgetGrid, props.rowId, props.columnId)
75
126
 
@@ -149,33 +200,108 @@ export function GridToolbar() {
149
200
  }
150
201
  ```
151
202
 
152
- ## Creating a grid from flat records
203
+ ## Creating a grid from JSON-friendly state
153
204
 
154
- If your data already exists as records, you can build the grid without manually creating a 2D cell array.
205
+ If your data already exists as JSON-like records, you can create the grid from a single schema object.
155
206
 
156
207
  ```ts
157
208
  import { grid } from 'zubin-grid'
158
209
 
159
- const rowHeaders = [
160
- { id: 'north', label: 'North' },
161
- { id: 'south', label: 'South' },
162
- ] as const
163
-
164
- const colHeaders = [
165
- { id: 'jan', label: 'January' },
166
- { id: 'feb', label: 'February' },
167
- ] as const
168
-
169
- const records = [
170
- { rowId: 'north', columnId: 'jan', value: 12 },
171
- { rowId: 'north', columnId: 'feb', value: 9 },
172
- { rowId: 'south', columnId: 'jan', value: 7 },
173
- { rowId: 'south', columnId: 'feb', value: 15 },
174
- ] as const
175
-
176
- const salesGrid = grid(records, {
177
- rowHeaders: [rowHeaders, 'id', 'rowId'],
178
- colHeaders: [colHeaders, 'id', 'columnId'],
210
+ type SalesSchema = {
211
+ rows: Array<{ id: string; label: string }>
212
+ columns: Array<{ id: string; label: string }>
213
+ cells: Array<{ rowId: string; columnId: string; value: number }>
214
+ }
215
+
216
+ const initialState: SalesSchema = {
217
+ rows: [
218
+ { id: 'north', label: 'North' },
219
+ { id: 'south', label: 'South' },
220
+ ],
221
+ columns: [
222
+ { id: 'jan', label: 'January' },
223
+ { id: 'feb', label: 'February' },
224
+ ],
225
+ cells: [
226
+ { rowId: 'north', columnId: 'jan', value: 12 },
227
+ { rowId: 'north', columnId: 'feb', value: 9 },
228
+ { rowId: 'south', columnId: 'jan', value: 7 },
229
+ { rowId: 'south', columnId: 'feb', value: 15 },
230
+ ],
231
+ }
232
+
233
+ const salesGrid = grid<SalesSchema>(initialState, {
234
+ rowHeaders: ['id', 'rowId'],
235
+ colHeaders: ['id', 'columnId'],
236
+ })
237
+ ```
238
+
239
+ You can also lazily create that state with a function, which is handy when you want explicit typing during bootstrap:
240
+
241
+ ```ts
242
+ const emptySalesGrid = grid<SalesSchema>(() => ({
243
+ rows: [],
244
+ columns: [],
245
+ cells: [],
246
+ }), {
247
+ rowHeaders: ['id', 'rowId'],
248
+ colHeaders: ['id', 'columnId'],
249
+ })
250
+ ```
251
+
252
+ You can keep the initializer even lighter and let missing arrays default to `[]`:
253
+
254
+ ```ts
255
+ const bootstrappedSalesGrid = grid<SalesSchema>({}, {
256
+ rowHeaders: ['id', 'rowId'],
257
+ colHeaders: ['id', 'columnId'],
258
+ })
259
+ ```
260
+
261
+ ## Non-reactive snapshots and upserts
262
+
263
+ `grid.getState()` returns a plain snapshot of the current rows, columns, and cells without subscribing React to anything.
264
+
265
+ ```ts
266
+ const snapshot = salesGrid.getState()
267
+
268
+ salesGrid.upsertRow({ id: 'west', label: 'West' })
269
+ salesGrid.upsertColumn({ id: 'mar', label: 'March' })
270
+ salesGrid.upsertCell({ rowId: 'west', columnId: 'mar', value: 21 })
271
+ ```
272
+
273
+ `getValue`, `getRowHead`, and `getColumnHead` are also non-reactive getters when you only need a targeted read.
274
+
275
+ ## Persistence
276
+
277
+ Use `persist` to cache the current grid snapshot under a storage key. A custom adapter can be provided, otherwise `zubin-grid` falls back to a default async browser storage implementation with a runtime cache.
278
+
279
+ ```ts
280
+ const persistedSalesGrid = grid<SalesSchema>(initialState, {
281
+ rowHeaders: ['id', 'rowId'],
282
+ colHeaders: ['id', 'columnId'],
283
+ persist: ['sales-grid'],
284
+ })
285
+ ```
286
+
287
+ Custom adapters receive `get`, `set`, and `remove` methods:
288
+
289
+ ```ts
290
+ const persistedWithCustomAdapter = grid<SalesSchema>(initialState, {
291
+ rowHeaders: ['id', 'rowId'],
292
+ colHeaders: ['id', 'columnId'],
293
+ persist: [
294
+ 'sales-grid',
295
+ {
296
+ get: async (key) => window.myStore.get(key) ?? null,
297
+ set: async (key, value) => {
298
+ await window.myStore.set(key, value)
299
+ },
300
+ remove: async (key) => {
301
+ await window.myStore.remove(key)
302
+ },
303
+ },
304
+ ],
179
305
  })
180
306
  ```
181
307
 
@@ -184,7 +310,8 @@ const salesGrid = grid(records, {
184
310
  ### Store creators
185
311
 
186
312
  - `cell(initialValue)` - creates a reactive cell
187
- - `grid(cells, options)` - creates a grid from a 2D matrix or record collection
313
+ - `grid({ rows, columns, cells }, options)` - creates a grid from JSON-friendly state
314
+ - `grid(() => ({ rows, columns, cells }), options)` - lazily creates typed grid state
188
315
 
189
316
  ### Cell hooks
190
317
 
@@ -206,6 +333,11 @@ const salesGrid = grid(records, {
206
333
 
207
334
  - `useGrid(grid)`
208
335
  - `createGridKey(rowId, columnId)`
336
+ - `grid.getState()`
337
+ - `grid.upsertRow(...)`
338
+ - `grid.upsertColumn(...)`
339
+ - `grid.upsertCell(...)`
340
+ - `grid.upsertCells(...)`
209
341
 
210
342
  ## Imports
211
343
 
@@ -1,20 +1,12 @@
1
- import type { Grid, GridPosition } from "./grid.js";
2
- import type { GridHead } from "./head.js";
3
- export type Subscriber = () => void;
4
- type CellInitializer<TCell> = () => TCell | Promise<TCell>;
5
- export type Updater<TValue> = TValue | ((currentValue: TValue) => TValue);
6
- export interface Cell<TCell> {
7
- get: () => TCell;
8
- set: (newValue: TCell) => void;
9
- subscribe: (callback: Subscriber) => () => void;
10
- _subscribers: () => number;
11
- }
1
+ import type { Cell, CellInitializer } from "./cell.types.js";
2
+ import type { Grid, GridPosition, GridState } from "./grid.types.js";
3
+ import type { GridHead } from "./head.types.js";
4
+ export type { Cell, Subscriber, Updater } from "./cell.types.js";
12
5
  export declare function cell<TCell>(initialValue: TCell | CellInitializer<TCell>): Cell<TCell>;
13
6
  export declare function useCell<TCell>(currentCell: Cell<TCell>): readonly [TCell, (newValue: TCell) => void];
14
- export declare function useCell<TCell, TRowId extends string, TColumnId extends string, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead>, position: GridPosition<TColumnId, TRowId>): readonly [TCell, (newValue: TCell) => void];
15
- export declare function useCell<TCell, TRowId extends string, TColumnId extends string, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead>, rowId: TRowId, columnId: TColumnId): readonly [TCell, (newValue: TCell) => void];
7
+ export declare function useCell<TCell, TRowId extends string, TColumnId extends string, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>, TStateCell, TState extends GridState<TStateCell, TRowHead, TColumnHead>>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead, TStateCell, TState>, position: GridPosition<TColumnId, TRowId>): readonly [TCell, (newValue: TCell) => void];
8
+ export declare function useCell<TCell, TRowId extends string, TColumnId extends string, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>, TStateCell, TState extends GridState<TStateCell, TRowHead, TColumnHead>>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead, TStateCell, TState>, rowId: TRowId, columnId: TColumnId): readonly [TCell, (newValue: TCell) => void];
16
9
  export declare function useCellValue<TCell>(currentCell: Cell<TCell>): TCell;
17
- export declare function useCellValue<TCell, TRowId extends string, TColumnId extends string, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead>, position: GridPosition<TColumnId, TRowId>): TCell;
18
- export declare function useCellValue<TCell, TRowId extends string, TColumnId extends string, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead>, rowId: TRowId, columnId: TColumnId): TCell;
19
- export {};
10
+ export declare function useCellValue<TCell, TRowId extends string, TColumnId extends string, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>, TStateCell, TState extends GridState<TStateCell, TRowHead, TColumnHead>>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead, TStateCell, TState>, position: GridPosition<TColumnId, TRowId>): TCell;
11
+ export declare function useCellValue<TCell, TRowId extends string, TColumnId extends string, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>, TStateCell, TState extends GridState<TStateCell, TRowHead, TColumnHead>>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead, TStateCell, TState>, rowId: TRowId, columnId: TColumnId): TCell;
20
12
  //# sourceMappingURL=cell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../core/cell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../core/cell.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cell.js","sourceRoot":"","sources":["../../core/cell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cell.js","sourceRoot":"","sources":["../../core/cell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type Subscriber = () => void;
2
+ export type CellInitializer<TCell> = () => TCell | Promise<TCell>;
3
+ export type Updater<TValue> = TValue | ((currentValue: TValue) => TValue);
4
+ export interface Cell<TCell> {
5
+ get: () => TCell;
6
+ set: (newValue: TCell) => void;
7
+ subscribe: (callback: Subscriber) => () => void;
8
+ _subscribers: () => number;
9
+ }
10
+ //# sourceMappingURL=cell.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell.types.d.ts","sourceRoot":"","sources":["../../core/cell.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC;AAEpC,MAAM,MAAM,eAAe,CAAC,KAAK,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAElE,MAAM,MAAM,OAAO,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;AAE1E,MAAM,WAAW,IAAI,CAAC,KAAK;IACzB,GAAG,EAAE,MAAM,KAAK,CAAC;IACjB,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,SAAS,EAAE,CAAC,QAAQ,EAAE,UAAU,KAAK,MAAM,IAAI,CAAC;IAChD,YAAY,EAAE,MAAM,MAAM,CAAC;CAC5B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cell.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell.types.js","sourceRoot":"","sources":["../../core/cell.types.ts"],"names":[],"mappings":""}
@@ -1,55 +1,13 @@
1
- import type { Cell, Subscriber, Updater } from "./cell.js";
2
- import type { GridHead, GridHeadId, GridHeadInput, ResolvedGridHead } from "./head.js";
3
- import type { GridAxisCell, GridAxisTailUpdater, GridTailState } from "./tail.js";
4
- export interface GridOptions<TRowHeadInput extends GridHeadInput, TColumnHeadInput extends GridHeadInput> {
5
- rowHeaders: readonly TRowHeadInput[];
6
- colHeaders: readonly TColumnHeadInput[];
7
- }
8
- export type GridPosition<TColumnId extends string = string, TRowId extends string = string> = readonly [columnId: TColumnId, rowId: TRowId];
9
- export type GridRows<TColumnId extends string = string, TRowId extends string = string> = readonly (readonly GridPosition<TColumnId, TRowId>[])[];
10
- type GridRecord = Record<string, unknown>;
11
- export type GridCollectionInput<THead extends GridRecord, THeadIdKey extends keyof THead & string, TCell extends GridRecord, TCellKey extends keyof TCell & string> = readonly [heads: readonly THead[], headIdKey: THeadIdKey, cellKey: TCellKey];
12
- export interface GridCollectionOptions<TCell extends GridRecord, TRowHead extends GridRecord, TColumnHead extends GridRecord, TRowHeadIdKey extends keyof TRowHead & string, TColumnHeadIdKey extends keyof TColumnHead & string, TRowCellKey extends keyof TCell & string, TColumnCellKey extends keyof TCell & string> {
13
- rowHeaders: GridCollectionInput<TRowHead, TRowHeadIdKey, TCell, TRowCellKey>;
14
- colHeaders: GridCollectionInput<TColumnHead, TColumnHeadIdKey, TCell, TColumnCellKey>;
15
- }
16
- export interface Grid<TCell, TRowId extends string = string, TColumnId extends string = string, TRowHead extends GridHead<TRowId> = GridHead<TRowId>, TColumnHead extends GridHead<TColumnId> = GridHead<TColumnId>> {
17
- readonly rowHeaders: readonly TRowId[];
18
- readonly colHeaders: readonly TColumnId[];
19
- getCell: (rowId: TRowId, columnId: TColumnId) => Cell<TCell>;
20
- getValue: (rowId: TRowId, columnId: TColumnId) => TCell;
21
- setValue: (rowId: TRowId, columnId: TColumnId, newValue: TCell) => void;
22
- hasCell: (rowId: TRowId, columnId: TColumnId) => boolean;
23
- getRowHead: (rowId: TRowId) => TRowHead;
24
- getColumnHead: (columnId: TColumnId) => TColumnHead;
25
- updateRowHead: (rowId: TRowId, nextRowHead: Updater<TRowHead>) => void;
26
- updateColumnHead: (columnId: TColumnId, nextColumnHead: Updater<TColumnHead>) => void;
27
- subscribeRowHead: (rowId: TRowId, callback: Subscriber) => () => void;
28
- subscribeColumnHead: (columnId: TColumnId, callback: Subscriber) => () => void;
29
- getRowCells: (rowId: TRowId) => readonly GridAxisCell<TCell, TRowId, TColumnId>[];
30
- getColumnCells: (columnId: TColumnId) => readonly GridAxisCell<TCell, TRowId, TColumnId>[];
31
- getRowTailState: <TTail>(rowId: TRowId) => GridTailState<TTail>;
32
- getColumnTailState: <TTail>(columnId: TColumnId) => GridTailState<TTail>;
33
- getRowTail: <TTail>(rowId: TRowId) => TTail | null;
34
- getColumnTail: <TTail>(columnId: TColumnId) => TTail | null;
35
- updateRowTail: (rowId: TRowId, nextRowTail: Updater<unknown | null>) => void;
36
- updateColumnTail: (columnId: TColumnId, nextColumnTail: Updater<unknown | null>) => void;
37
- subscribeRowTail: (rowId: TRowId, callback: Subscriber) => () => void;
38
- subscribeColumnTail: (columnId: TColumnId, callback: Subscriber) => () => void;
39
- registerRowTail: <TTail>(rowId: TRowId, onRowUpdate: GridAxisTailUpdater<TCell, TRowId, TColumnId, TTail>) => () => void;
40
- registerColumnTail: <TTail>(columnId: TColumnId, onColumnUpdate: GridAxisTailUpdater<TCell, TRowId, TColumnId, TTail>) => () => void;
41
- recomputeRowTail: (rowId: TRowId) => void;
42
- recomputeColumnTail: (columnId: TColumnId) => void;
43
- }
44
- export interface GridAxisIds<TRowId extends string, TColumnId extends string> {
45
- rows: readonly TRowId[];
46
- cols: readonly TColumnId[];
47
- reorderRow: (activeRowId: TRowId | string, overRowId: TRowId | string) => boolean;
48
- reorderColumn: (activeColumnId: TColumnId | string, overColumnId: TColumnId | string) => boolean;
49
- }
50
- export declare function grid<TCell, TRowHeadInput extends GridHeadInput, TColumnHeadInput extends GridHeadInput>(cells: Cell<TCell>[][], { colHeaders, rowHeaders }: GridOptions<TRowHeadInput, TColumnHeadInput>): Grid<TCell, GridHeadId<TRowHeadInput>, GridHeadId<TColumnHeadInput>, ResolvedGridHead<TRowHeadInput>, ResolvedGridHead<TColumnHeadInput>>;
51
- export declare function grid<TCell extends GridRecord, TRowHead extends GridRecord, TColumnHead extends GridRecord, TRowHeadIdKey extends keyof TRowHead & string, TColumnHeadIdKey extends keyof TColumnHead & string, TRowCellKey extends keyof TCell & string, TColumnCellKey extends keyof TCell & string>(cells: readonly (TCell & Record<TRowCellKey, Extract<TRowHead[TRowHeadIdKey], string>> & Record<TColumnCellKey, Extract<TColumnHead[TColumnHeadIdKey], string>>)[], { rowHeaders, colHeaders, }: GridCollectionOptions<TCell, TRowHead, TColumnHead, TRowHeadIdKey, TColumnHeadIdKey, TRowCellKey, TColumnCellKey>): Grid<TCell & Record<TRowCellKey, Extract<TRowHead[TRowHeadIdKey], string>> & Record<TColumnCellKey, Extract<TColumnHead[TColumnHeadIdKey], string>>, Extract<TRowHead[TRowHeadIdKey], string>, Extract<TColumnHead[TColumnHeadIdKey], string>, TRowHead & GridHead<Extract<TRowHead[TRowHeadIdKey], string>>, TColumnHead & GridHead<Extract<TColumnHead[TColumnHeadIdKey], string>>>;
1
+ import type { Cell } from "./cell.types.js";
2
+ import type { Grid, GridAxisIds, GridMatrixSnapshot, GridOptions, GridRecord, GridSchemaOptions, GridState, GridStateCell, GridStateInitializer, SchemaCell, SchemaCellValue, SchemaColumn, SchemaColumnHead, SchemaColumnId, SchemaRow, SchemaRowHead, SchemaRowId, SchemaSnapshot } from "./grid.types.js";
3
+ import type { GridHead, GridHeadId, GridHeadInput, ResolvedGridHead } from "./head.types.js";
4
+ export type { Grid, GridAxisIds, GridOptions, GridPersistAdapter, GridPersistOption, GridPosition, GridRows, GridSchemaOptions, GridState, GridStateCell, GridStateInitializer, GridUpsertHead, } from "./grid.types.js";
5
+ type BroadSchemaRowHead<TState extends GridState<GridRecord, GridRecord, GridRecord>> = SchemaRow<TState> & GridHead<string>;
6
+ type BroadSchemaColumnHead<TState extends GridState<GridRecord, GridRecord, GridRecord>> = SchemaColumn<TState> & GridHead<string>;
7
+ type BroadSchemaSnapshot<TState extends GridState<GridRecord, GridRecord, GridRecord>> = GridState<SchemaCell<TState>, BroadSchemaRowHead<TState>, BroadSchemaColumnHead<TState>>;
8
+ export declare function grid<TCell, TRowHeadInput extends GridHeadInput, TColumnHeadInput extends GridHeadInput>(cells: Cell<TCell>[][], options: GridOptions<TRowHeadInput, TColumnHeadInput, GridMatrixSnapshot<TCell, TRowHeadInput, TColumnHeadInput>>): Grid<TCell, GridHeadId<TRowHeadInput>, GridHeadId<TColumnHeadInput>, ResolvedGridHead<TRowHeadInput>, ResolvedGridHead<TColumnHeadInput>, GridStateCell<TCell, GridHeadId<TRowHeadInput>, GridHeadId<TColumnHeadInput>>, GridMatrixSnapshot<TCell, TRowHeadInput, TColumnHeadInput>>;
9
+ export declare function grid<TState extends GridState<GridRecord, GridRecord, GridRecord>>(source: GridStateInitializer<TState>, options: GridSchemaOptions<TState, keyof SchemaRow<TState> & string, keyof SchemaColumn<TState> & string, keyof SchemaCell<TState> & string, keyof SchemaCell<TState> & string, BroadSchemaSnapshot<TState>>): Grid<SchemaCell<TState>, string, string, BroadSchemaRowHead<TState>, BroadSchemaColumnHead<TState>, SchemaCell<TState>, BroadSchemaSnapshot<TState>>;
10
+ export declare function grid<TState extends GridState<GridRecord, GridRecord, GridRecord>, TRowHeadIdKey extends keyof SchemaRow<TState> & string, TColumnHeadIdKey extends keyof SchemaColumn<TState> & string, TRowCellKey extends keyof SchemaCell<TState> & string, TColumnCellKey extends keyof SchemaCell<TState> & string>(source: GridStateInitializer<TState>, options: GridSchemaOptions<TState, TRowHeadIdKey, TColumnHeadIdKey, TRowCellKey, TColumnCellKey, SchemaSnapshot<TState, TRowHeadIdKey, TColumnHeadIdKey, TRowCellKey, TColumnCellKey>>): Grid<SchemaCellValue<TState, TRowHeadIdKey, TColumnHeadIdKey, TRowCellKey, TColumnCellKey>, SchemaRowId<TState, TRowHeadIdKey>, SchemaColumnId<TState, TColumnHeadIdKey>, SchemaRowHead<TState, TRowHeadIdKey>, SchemaColumnHead<TState, TColumnHeadIdKey>, SchemaCellValue<TState, TRowHeadIdKey, TColumnHeadIdKey, TRowCellKey, TColumnCellKey>, SchemaSnapshot<TState, TRowHeadIdKey, TColumnHeadIdKey, TRowCellKey, TColumnCellKey>>;
52
11
  export declare function createGridKey(rowId: string, columnId: string): string;
53
- export declare function useGrid<TCell, TRowId extends string, TColumnId extends string, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead>): GridAxisIds<TRowId, TColumnId>;
54
- export {};
12
+ export declare function useGrid<TCell, TRowId extends string, TColumnId extends string, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>, TStateCell, TState extends GridState<TStateCell, TRowHead, TColumnHead>>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead, TStateCell, TState>): GridAxisIds<TRowId, TColumnId>;
55
13
  //# sourceMappingURL=grid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../core/grid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../core/grid.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAuB,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EACV,IAAI,EACJ,WAAW,EAEX,kBAAkB,EAClB,WAAW,EAGX,UAAU,EACV,iBAAiB,EACjB,SAAS,EAET,aAAa,EACb,oBAAoB,EAEpB,UAAU,EACV,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACf,MAAM,iBAAiB,CAAC;AAYzB,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,aAAa,EACb,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,IAAI,EACJ,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,oBAAoB,EACpB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,KAAK,kBAAkB,CAAC,MAAM,SAAS,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,IAClF,SAAS,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAEvC,KAAK,qBAAqB,CAAC,MAAM,SAAS,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,IACrF,YAAY,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAE1C,KAAK,mBAAmB,CAAC,MAAM,SAAS,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,IACnF,SAAS,CACP,UAAU,CAAC,MAAM,CAAC,EAClB,kBAAkB,CAAC,MAAM,CAAC,EAC1B,qBAAqB,CAAC,MAAM,CAAC,CAC9B,CAAC;AAEJ,wBAAgB,IAAI,CAClB,KAAK,EACL,aAAa,SAAS,aAAa,EACnC,gBAAgB,SAAS,aAAa,EAEtC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EACtB,OAAO,EAAE,WAAW,CAClB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAC3D,GACA,IAAI,CACL,KAAK,EACL,UAAU,CAAC,aAAa,CAAC,EACzB,UAAU,CAAC,gBAAgB,CAAC,EAC5B,gBAAgB,CAAC,aAAa,CAAC,EAC/B,gBAAgB,CAAC,gBAAgB,CAAC,EAClC,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC,EAC7E,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAC3D,CAAC;AAEF,wBAAgB,IAAI,CAAC,MAAM,SAAS,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAC/E,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,EACpC,OAAO,EAAE,iBAAiB,CACxB,MAAM,EACN,MAAM,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,EAChC,MAAM,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,EACnC,MAAM,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,EACjC,MAAM,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,EACjC,mBAAmB,CAAC,MAAM,CAAC,CAC5B,GACA,IAAI,CACL,UAAU,CAAC,MAAM,CAAC,EAClB,MAAM,EACN,MAAM,EACN,kBAAkB,CAAC,MAAM,CAAC,EAC1B,qBAAqB,CAAC,MAAM,CAAC,EAC7B,UAAU,CAAC,MAAM,CAAC,EAClB,mBAAmB,CAAC,MAAM,CAAC,CAC5B,CAAC;AAEF,wBAAgB,IAAI,CAClB,MAAM,SAAS,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAC5D,aAAa,SAAS,MAAM,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,EACtD,gBAAgB,SAAS,MAAM,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,EAC5D,WAAW,SAAS,MAAM,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,EACrD,cAAc,SAAS,MAAM,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,EAExD,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,EACpC,OAAO,EAAE,iBAAiB,CACxB,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,CAAC,CACrF,GACA,IAAI,CACL,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,CAAC,EACrF,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAClC,cAAc,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACxC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,EACpC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC1C,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,CAAC,EACrF,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,CAAC,CACrF,CAAC;AAinBF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAE5D;AAED,wBAAgB,OAAO,CACrB,KAAK,EACL,MAAM,SAAS,MAAM,EACrB,SAAS,SAAS,MAAM,EACxB,QAAQ,SAAS,QAAQ,CAAC,MAAM,CAAC,EACjC,WAAW,SAAS,QAAQ,CAAC,SAAS,CAAC,EACvC,UAAU,EACV,MAAM,SAAS,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,EAE3D,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,GACrF,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAwDhC"}