zubin-grid 0.41.13 → 0.42.13

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/README.md CHANGED
@@ -4,6 +4,8 @@ A lightweight grid state manager for React and TypeScript.
4
4
 
5
5
  `zubin-grid` helps you model a 2D grid of reactive cells, update row and column headers, and compute derived row or column summaries with simple hooks.
6
6
 
7
+ The root package now stays framework-agnostic. React hooks live on the `zubin-grid/adaptors/react` subpath.
8
+
7
9
  ## Why use it?
8
10
 
9
11
  - Reactive cell store with subscriptions
@@ -24,7 +26,7 @@ npm install zubin-grid react
24
26
 
25
27
  ## Local example app
26
28
 
27
- This repository also includes a small Vite + React playground under `examples/` so you can try the JSON-friendly grid API, persistence, demo controls, and a Conway's Game of Life reactivity showcase locally.
29
+ This repository also includes a small Vite + React playground under `examples/` so you can try the JSON-friendly grid API, sparse-cell editing, elastic row/column resizing, persistence, demo controls, and a Conway's Game of Life reactivity showcase locally.
28
30
 
29
31
  ```bash
30
32
  npm install
@@ -82,7 +84,8 @@ console.log(salesGrid.getValue('north', 'jan'))
82
84
  Create the grid once outside render, or memoize it if you build it inside a component.
83
85
 
84
86
  ```tsx
85
- import { grid, useCell } from 'zubin-grid'
87
+ import { grid } from 'zubin-grid'
88
+ import { useCell } from 'zubin-grid/adaptors/react'
86
89
 
87
90
  type BudgetRowId = 'marketing' | 'ops'
88
91
  type BudgetColumnId = 'planned' | 'actual'
@@ -124,26 +127,52 @@ export function BudgetCell(props: {
124
127
  row: number
125
128
  col: number
126
129
  }) {
127
- const [value, setValue] = useCell(budgetGrid, { row: props.row, col: props.col })
130
+ const [value, setValue, meta] = useCell(
131
+ budgetGrid,
132
+ { row: props.row, col: props.col },
133
+ {
134
+ placeholder: ({ rowId, columnId }) => ({
135
+ rowId,
136
+ columnId,
137
+ value: 0,
138
+ }),
139
+ },
140
+ )
128
141
 
129
142
  return (
130
- <input
131
- type="number"
132
- value={value}
133
- onChange={(event) => setValue(Number(event.target.value))}
134
- />
143
+ <label>
144
+ <input
145
+ type="number"
146
+ value={value.value}
147
+ onChange={(event) =>
148
+ setValue({
149
+ ...value,
150
+ value: Number(event.target.value),
151
+ })
152
+ }
153
+ />
154
+
155
+ <small>{meta.existsInDb ? 'stored' : 'placeholder'}</small>
156
+ </label>
135
157
  )
136
158
  }
137
159
  ```
138
160
 
139
- `useCell(grid, { row, col })` returns a React-friendly setter for that cell. For row-bound and column-bound dimension grids, pass `{ row }` or `{ col }` respectively. Outside React, mutate store cells with `grid.upsertCell(...)` or `grid.upsertCells(...)` rather than a store-level `setValue(...)` helper.
161
+ `useCell(...)` now returns `[value, setValue, meta]`.
162
+
163
+ - `meta.existsInDb` tells you whether the sparse store currently has a persisted cell for that coordinate.
164
+ - `meta.isDirty` tells you whether the cell differs from the last hydrated or persisted snapshot.
165
+ - Passing a `placeholder` keeps the UI dense even when the store is sparse.
166
+ - Calling `setValue(undefined)` removes that sparse cell entry again.
167
+
168
+ For row-bound and column-bound dimension grids, pass `{ row }` or `{ col }` respectively. `useCellValue(...)` follows the same sparse read rules but returns only the current value.
140
169
 
141
170
  ## Working with heads
142
171
 
143
172
  Headers are stored separately from cell values, so labels and order can change without rebuilding the grid.
144
173
 
145
174
  ```tsx
146
- import { useColumnHead, useRowHead } from 'zubin-grid'
175
+ import { useColumnHead, useRowHead } from 'zubin-grid/adaptors/react'
147
176
 
148
177
  export function HeaderControls() {
149
178
  const { head: rowHead, updateLabel } = useRowHead(budgetGrid, 'marketing')
@@ -168,7 +197,7 @@ export function HeaderControls() {
168
197
  Tails let you compute summaries such as totals.
169
198
 
170
199
  ```tsx
171
- import { useRowTail } from 'zubin-grid'
200
+ import { useRowTail } from 'zubin-grid/adaptors/react'
172
201
 
173
202
  export function MarketingRowTotal() {
174
203
  const total = useRowTail(budgetGrid, 'marketing', (cells) => {
@@ -181,10 +210,10 @@ export function MarketingRowTotal() {
181
210
 
182
211
  ## Reordering rows and columns
183
212
 
184
- `useGrid` now stays focused on reading the ordered row and column ids. Mutating helpers such as `reorderRow` and `reorderColumn` live on the `zubin-grid/helpers` subpath so the root package stays focused on the core store and hook primitives.
213
+ `useGrid` now stays focused on reading the ordered row and column ids. Mutating helpers such as `reorderRow` and `reorderColumn` live on the `zubin-grid/helpers` subpath, and the React hooks themselves live on `zubin-grid/adaptors/react`.
185
214
 
186
215
  ```tsx
187
- import { useGrid } from 'zubin-grid'
216
+ import { useGrid } from 'zubin-grid/adaptors/react'
188
217
  import { reorderColumn, reorderRow } from 'zubin-grid/helpers'
189
218
 
190
219
  export function GridToolbar() {
@@ -346,19 +375,25 @@ availabilityGrid.getValue(true, new Date('2026-04-14T00:00:00.000Z'))
346
375
  ```ts
347
376
  const snapshot = salesGrid.getState()
348
377
 
378
+ const northFebruary = salesGrid.readCell('north', 'feb')
379
+ // { value: undefined, meta: { existsInDb: false, isDirty: false } }
380
+
349
381
  salesGrid.upsertRows([{ id: 'west', label: 'West' }])
350
382
  salesGrid.upsertColumns([{ id: 'mar', label: 'March' }])
351
383
  salesGrid.upsertCell({ rowId: 'west', columnId: 'mar', value: 21 })
384
+ salesGrid.setCell('west', 'apr', { rowId: 'west', columnId: 'apr', value: 13 })
385
+ salesGrid.setCell('west', 'apr', undefined)
352
386
  ```
353
387
 
354
- `getValue`, `getRowHead`, and `getColumnHead` are also non-reactive getters when you only need a targeted read.
388
+ `readCell(rowId, columnId)` is the sparse-aware getter, and `setCell(rowId, columnId, nextValue)` lazily creates or removes sparse cell entries. `getValue`, `getRowHead`, and `getColumnHead` remain strict non-reactive getters when you only need an already-materialized cell or a targeted header read.
355
389
 
356
390
  ## Dimension grids
357
391
 
358
392
  Use `createDimensionGrid` when you want one reactive cell per row or one reactive cell per column instead of a full row/column matrix. This is handy for statuses, visibility flags, notes, or other metadata attached to a single axis.
359
393
 
360
394
  ```tsx
361
- import { createDimensionGrid, useCell } from 'zubin-grid'
395
+ import { createDimensionGrid } from 'zubin-grid'
396
+ import { useCell } from 'zubin-grid/adaptors/react'
362
397
 
363
398
  type ShipmentStatus = 'pending' | 'packed' | 'shipped'
364
399
 
@@ -402,7 +437,8 @@ function RowStatus(props: { row: number }) {
402
437
  Use `createSubGrid` when you want a second grid layer that reuses the parent grid's row and column dimensions, but stores a different cell shape.
403
438
 
404
439
  ```ts
405
- import { createSubGrid, useCell } from 'zubin-grid'
440
+ import { createSubGrid } from 'zubin-grid'
441
+ import { useCell } from 'zubin-grid/adaptors/react'
406
442
 
407
443
  type SalesNoteCell = {
408
444
  note: string
@@ -441,7 +477,7 @@ Sub grids behave like normal grids for cell and hook usage, with a few important
441
477
 
442
478
  - They inherit the parent grid's row ids, column ids, row heads, and column heads.
443
479
  - Parent row and column changes stay in sync, including upserts, label changes, order changes, `setGrid(...)`, and `clearGrid()`.
444
- - `useCell`, `useCellValue`, `useGrid`, `useRowHead`, `useColumnHead`, `useRowTail`, and `useColumnTail` all work with sub grids.
480
+ - `useCell`, `useCellValue`, `useGrid`, `useRowHead`, `useColumnHead`, `useRowTail`, and `useColumnTail` from `zubin-grid/adaptors/react` all work with sub grids.
445
481
  - Persistence inherits from the parent when omitted, can be disabled with `persist: false`, or can use a custom key with `persist: ['your-key']`.
446
482
  - Row and column mutations called on a sub grid are forwarded to the parent grid.
447
483
  - `clearGrid()` on a sub grid clears the sub grid's own cells while keeping the inherited parent dimensions intact.
@@ -507,6 +543,8 @@ const persistedWithCustomAdapter = grid<SalesSchema>(initialState, {
507
543
  - `useCell(columnDimensionGrid, { col })`
508
544
  - `useCellValue(...)`
509
545
 
546
+ All React hooks are exported from `zubin-grid/adaptors/react`, not the root package.
547
+
510
548
  ### Head hooks
511
549
 
512
550
  - `useRowHead(grid, rowId)`
@@ -519,10 +557,11 @@ const persistedWithCustomAdapter = grid<SalesSchema>(initialState, {
519
557
 
520
558
  ### Grid helpers
521
559
 
522
- - `useGrid(grid, { onGridUpdate })` - reads the current ordered row and column ids and can subscribe to every grid mutation
523
560
  - `createGridKey(rowId, columnId)`
524
561
  - `grid.getState()`
562
+ - `grid.readCell(rowId, columnId)`
525
563
  - `grid.setGrid(nextState, mode?)`
564
+ - `grid.setCell(rowId, columnId, nextValue)`
526
565
  - `grid.upsertRow(...)`
527
566
  - `grid.upsertRows(...)`
528
567
  - `grid.upsertColumn(...)`
@@ -538,9 +577,17 @@ const persistedWithCustomAdapter = grid<SalesSchema>(initialState, {
538
577
  - `reorderRow(grid, activeRowId, overRowId)` from `zubin-grid/helpers`
539
578
  - `reorderColumn(grid, activeColumnId, overColumnId)` from `zubin-grid/helpers`
540
579
 
580
+ ### React adaptor
581
+
582
+ - `useCell(...)` from `zubin-grid/adaptors/react`
583
+ - `useCellValue(...)` from `zubin-grid/adaptors/react`
584
+ - `useGrid(grid, { onGridUpdate })` from `zubin-grid/adaptors/react`
585
+ - `useRowHead(...)` / `useColumnHead(...)` from `zubin-grid/adaptors/react`
586
+ - `useRowTail(...)` / `useColumnTail(...)` from `zubin-grid/adaptors/react`
587
+
541
588
  ## Imports
542
589
 
543
- Use the root package for most cases:
590
+ Use the root package for framework-agnostic state primitives:
544
591
 
545
592
  ```ts
546
593
  import {
@@ -548,6 +595,13 @@ import {
548
595
  createDimensionGrid,
549
596
  createSubGrid,
550
597
  grid,
598
+ } from 'zubin-grid'
599
+ ```
600
+
601
+ Use the React adaptor for hooks:
602
+
603
+ ```ts
604
+ import {
551
605
  useCell,
552
606
  useCellValue,
553
607
  useRowHead,
@@ -555,7 +609,7 @@ import {
555
609
  useRowTail,
556
610
  useColumnTail,
557
611
  useGrid,
558
- } from 'zubin-grid'
612
+ } from 'zubin-grid/adaptors/react'
559
613
  ```
560
614
 
561
615
  Subpath imports are also available:
@@ -563,7 +617,7 @@ Subpath imports are also available:
563
617
  ```ts
564
618
  import { grid } from 'zubin-grid/grid'
565
619
  import { reorderColumn, reorderRow } from 'zubin-grid/helpers'
566
- import { useRowTail } from 'zubin-grid/tail'
620
+ import { useRowTail } from 'zubin-grid/adaptors/react'
567
621
  ```
568
622
 
569
623
  ## Links
@@ -0,0 +1,71 @@
1
+ import type { Cell, Updater } from "../../core/types/cell.types.js";
2
+ import type { DimensionGrid, DimensionGridPosition, Grid, GridAxisIds, GridCellMeta, GridCellPosition, GridDimension, GridState, GridSubscriber } from "../../core/types/grid.types.js";
3
+ import type { GridHead, GridHeadHookResult, GridId } from "../../core/types/head.types.js";
4
+ import type { GridAxisTailUpdater, GridTailHookValue } from "../../core/types/tail.types.js";
5
+ export type { GridCellMeta } from "../../core/types/grid.types.js";
6
+ export type { GridHeadHookResult } from "../../core/types/head.types.js";
7
+ export type { GridTailHookValue } from "../../core/types/tail.types.js";
8
+ export interface UseGridOptions<TCell, TRowId extends GridId = GridId, TColumnId extends GridId = GridId, TRowHead extends GridHead<TRowId> = GridHead<TRowId>, TColumnHead extends GridHead<TColumnId> = GridHead<TColumnId>, TStateCell = unknown, TState extends GridState<TStateCell, TRowHead, TColumnHead> = GridState<TStateCell, TRowHead, TColumnHead>> {
9
+ onGridUpdate?: GridSubscriber<TCell, TRowId, TColumnId, TRowHead, TColumnHead, TStateCell, TState>;
10
+ }
11
+ export type UseCellPlaceholder<TValue, TContext> = TValue | ((context: TContext) => TValue);
12
+ export interface GridCellPlaceholderContext<TRowId extends GridId = GridId, TColumnId extends GridId = GridId> {
13
+ row: number;
14
+ col: number;
15
+ rowId: TRowId;
16
+ columnId: TColumnId;
17
+ meta: GridCellMeta;
18
+ }
19
+ export interface DimensionCellPlaceholderContext<TDimension extends GridDimension = GridDimension, TRowId extends GridId = GridId, TColumnId extends GridId = GridId> {
20
+ dimension: TDimension;
21
+ index: number;
22
+ row?: number;
23
+ col?: number;
24
+ rowId?: TRowId;
25
+ columnId?: TColumnId;
26
+ meta: GridCellMeta;
27
+ }
28
+ export interface UseCellOptions<TValue, TContext> {
29
+ placeholder?: UseCellPlaceholder<TValue, TContext>;
30
+ }
31
+ export declare function useGrid<TCell, TRowId extends GridId, TColumnId extends GridId, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>, TStateCell, TState extends GridState<TStateCell, TRowHead, TColumnHead>>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead, TStateCell, TState>, options?: UseGridOptions<TCell, TRowId, TColumnId, TRowHead, TColumnHead, TStateCell, TState>): GridAxisIds<TRowId, TColumnId>;
32
+ export declare function useRowHead<TCell, TRowId extends GridId, TColumnId extends GridId, 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): GridHeadHookResult<TRowHead>;
33
+ export declare function useColumnHead<TCell, TRowId extends GridId, TColumnId extends GridId, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>, TStateCell, TState extends GridState<TStateCell, TRowHead, TColumnHead>>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead, TStateCell, TState>, columnId: TColumnId): GridHeadHookResult<TColumnHead>;
34
+ export declare const useColHead: typeof useColumnHead;
35
+ export declare function useRowTail<TCell, TRowId extends GridId, TColumnId extends GridId, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>, TStateCell, TState extends GridState<TStateCell, TRowHead, TColumnHead>, TTail = void>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead, TStateCell, TState>, rowId: TRowId, onRowUpdate?: GridAxisTailUpdater<TCell, TRowId, TColumnId, TTail>): GridTailHookValue<TTail>;
36
+ export declare function useColumnTail<TCell, TRowId extends GridId, TColumnId extends GridId, TRowHead extends GridHead<TRowId>, TColumnHead extends GridHead<TColumnId>, TStateCell, TState extends GridState<TStateCell, TRowHead, TColumnHead>, TTail = void>(currentGrid: Grid<TCell, TRowId, TColumnId, TRowHead, TColumnHead, TStateCell, TState>, columnId: TColumnId, onColumnUpdate?: GridAxisTailUpdater<TCell, TRowId, TColumnId, TTail>): GridTailHookValue<TTail>;
37
+ export declare function useCell<TCell>(currentCell: Cell<TCell>): readonly [TCell, (newValue: Updater<TCell>) => void, GridCellMeta];
38
+ export declare function useCell<TCell, TDimension extends GridDimension, TRowId extends GridId, TColumnId extends GridId>(currentGrid: DimensionGrid<TCell, TDimension, TRowId, TColumnId>, position: DimensionGridPosition<TDimension>): readonly [
39
+ TCell | undefined,
40
+ (newValue: Updater<TCell | undefined>) => void,
41
+ GridCellMeta
42
+ ];
43
+ export declare function useCell<TCell, TDimension extends GridDimension, TRowId extends GridId, TColumnId extends GridId>(currentGrid: DimensionGrid<TCell, TDimension, TRowId, TColumnId>, position: DimensionGridPosition<TDimension>, options: UseCellOptions<TCell, DimensionCellPlaceholderContext<TDimension, TRowId, TColumnId>> & {
44
+ placeholder: UseCellPlaceholder<TCell, DimensionCellPlaceholderContext<TDimension, TRowId, TColumnId>>;
45
+ }): readonly [
46
+ TCell,
47
+ (newValue: TCell | undefined | ((currentValue: TCell) => TCell | undefined)) => void,
48
+ GridCellMeta
49
+ ];
50
+ export declare function useCell<TCell, TRowId extends GridId, TColumnId extends GridId, 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: GridCellPosition): readonly [
51
+ TCell | undefined,
52
+ (newValue: Updater<TCell | undefined>) => void,
53
+ GridCellMeta
54
+ ];
55
+ export declare function useCell<TCell, TRowId extends GridId, TColumnId extends GridId, 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: GridCellPosition, options: UseCellOptions<TCell, GridCellPlaceholderContext<TRowId, TColumnId>> & {
56
+ placeholder: UseCellPlaceholder<TCell, GridCellPlaceholderContext<TRowId, TColumnId>>;
57
+ }): readonly [
58
+ TCell,
59
+ (newValue: TCell | undefined | ((currentValue: TCell) => TCell | undefined)) => void,
60
+ GridCellMeta
61
+ ];
62
+ export declare function useCellValue<TCell>(currentCell: Cell<TCell>): TCell;
63
+ export declare function useCellValue<TCell, TDimension extends GridDimension, TRowId extends GridId, TColumnId extends GridId>(currentGrid: DimensionGrid<TCell, TDimension, TRowId, TColumnId>, position: DimensionGridPosition<TDimension>): TCell | undefined;
64
+ export declare function useCellValue<TCell, TDimension extends GridDimension, TRowId extends GridId, TColumnId extends GridId>(currentGrid: DimensionGrid<TCell, TDimension, TRowId, TColumnId>, position: DimensionGridPosition<TDimension>, options: UseCellOptions<TCell, DimensionCellPlaceholderContext<TDimension, TRowId, TColumnId>> & {
65
+ placeholder: UseCellPlaceholder<TCell, DimensionCellPlaceholderContext<TDimension, TRowId, TColumnId>>;
66
+ }): TCell;
67
+ export declare function useCellValue<TCell, TRowId extends GridId, TColumnId extends GridId, 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: GridCellPosition): TCell | undefined;
68
+ export declare function useCellValue<TCell, TRowId extends GridId, TColumnId extends GridId, 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: GridCellPosition, options: UseCellOptions<TCell, GridCellPlaceholderContext<TRowId, TColumnId>> & {
69
+ placeholder: UseCellPlaceholder<TCell, GridCellPlaceholderContext<TRowId, TColumnId>>;
70
+ }): TCell;
71
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../adaptors/react/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,249 @@
1
+ import { useCallback, useEffect, useRef, useSyncExternalStore } from "react";
2
+ import { isDimensionGrid, isGrid, resolveDimensionGridIndex, resolveGridCoordinatesFromIndex, } from "../../core/cell.js";
3
+ import { readReactiveTailValue } from "../../core/tail.js";
4
+ const STATIC_CELL_META = {
5
+ existsInDb: true,
6
+ isDirty: false,
7
+ };
8
+ export function useGrid(currentGrid, options) {
9
+ const snapshotRef = useRef({
10
+ rows: currentGrid.rowHeaders,
11
+ cols: currentGrid.colHeaders,
12
+ });
13
+ const onGridUpdateRef = useRef(options?.onGridUpdate);
14
+ useEffect(() => {
15
+ onGridUpdateRef.current = options?.onGridUpdate;
16
+ }, [options?.onGridUpdate]);
17
+ useEffect(() => {
18
+ return currentGrid.subscribeGrid((updatedGrid, diff) => {
19
+ onGridUpdateRef.current?.(updatedGrid, diff);
20
+ });
21
+ }, [currentGrid]);
22
+ const subscribe = useCallback((callback) => currentGrid.subscribeGrid(() => callback()), [currentGrid]);
23
+ const getSnapshot = useCallback(() => {
24
+ const nextRows = currentGrid.rowHeaders;
25
+ const nextCols = currentGrid.colHeaders;
26
+ const currentSnapshot = snapshotRef.current;
27
+ if (currentSnapshot.rows === nextRows && currentSnapshot.cols === nextCols) {
28
+ return currentSnapshot;
29
+ }
30
+ const nextSnapshot = {
31
+ rows: nextRows,
32
+ cols: nextCols,
33
+ };
34
+ snapshotRef.current = nextSnapshot;
35
+ return nextSnapshot;
36
+ }, [currentGrid]);
37
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
38
+ }
39
+ export function useRowHead(currentGrid, rowId) {
40
+ const subscribe = useCallback((callback) => currentGrid.subscribeRowHead(rowId, callback), [currentGrid, rowId]);
41
+ const getSnapshot = useCallback(() => currentGrid.getRowHead(rowId), [currentGrid, rowId]);
42
+ const head = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
43
+ const setHead = useCallback((nextHead) => {
44
+ currentGrid.updateRowHead(rowId, nextHead);
45
+ }, [currentGrid, rowId]);
46
+ const updateLabel = useCallback((label) => {
47
+ currentGrid.updateRowHead(rowId, (currentHead) => ({
48
+ ...currentHead,
49
+ label,
50
+ }));
51
+ }, [currentGrid, rowId]);
52
+ const updateOrder = useCallback((order) => {
53
+ currentGrid.updateRowHead(rowId, (currentHead) => ({
54
+ ...currentHead,
55
+ order,
56
+ }));
57
+ }, [currentGrid, rowId]);
58
+ return {
59
+ head,
60
+ setHead,
61
+ updateLabel,
62
+ updateOrder,
63
+ };
64
+ }
65
+ export function useColumnHead(currentGrid, columnId) {
66
+ const subscribe = useCallback((callback) => currentGrid.subscribeColumnHead(columnId, callback), [currentGrid, columnId]);
67
+ const getSnapshot = useCallback(() => currentGrid.getColumnHead(columnId), [currentGrid, columnId]);
68
+ const head = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
69
+ const setHead = useCallback((nextHead) => {
70
+ currentGrid.updateColumnHead(columnId, nextHead);
71
+ }, [currentGrid, columnId]);
72
+ const updateLabel = useCallback((label) => {
73
+ currentGrid.updateColumnHead(columnId, (currentHead) => ({
74
+ ...currentHead,
75
+ label,
76
+ }));
77
+ }, [currentGrid, columnId]);
78
+ const updateOrder = useCallback((order) => {
79
+ currentGrid.updateColumnHead(columnId, (currentHead) => ({
80
+ ...currentHead,
81
+ order,
82
+ }));
83
+ }, [currentGrid, columnId]);
84
+ return {
85
+ head,
86
+ setHead,
87
+ updateLabel,
88
+ updateOrder,
89
+ };
90
+ }
91
+ export const useColHead = useColumnHead;
92
+ export function useRowTail(currentGrid, rowId, onRowUpdate) {
93
+ useEffect(() => {
94
+ if (!onRowUpdate)
95
+ return;
96
+ return currentGrid.registerRowTail(rowId, onRowUpdate);
97
+ }, [currentGrid, rowId, onRowUpdate]);
98
+ const subscribe = useCallback((callback) => currentGrid.subscribeRowTail(rowId, callback), [currentGrid, rowId]);
99
+ const getSnapshot = useCallback(() => readReactiveTailValue(currentGrid.getRowTailState(rowId)), [currentGrid, rowId]);
100
+ const tail = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
101
+ return tail;
102
+ }
103
+ export function useColumnTail(currentGrid, columnId, onColumnUpdate) {
104
+ useEffect(() => {
105
+ if (!onColumnUpdate)
106
+ return;
107
+ return currentGrid.registerColumnTail(columnId, onColumnUpdate);
108
+ }, [currentGrid, columnId, onColumnUpdate]);
109
+ const subscribe = useCallback((callback) => currentGrid.subscribeColumnTail(columnId, callback), [currentGrid, columnId]);
110
+ const getSnapshot = useCallback(() => readReactiveTailValue(currentGrid.getColumnTailState(columnId)), [currentGrid, columnId]);
111
+ const tail = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
112
+ return tail;
113
+ }
114
+ export function useCell(cellOrGrid, position, options) {
115
+ const snapshot = useCellStoreSnapshot(cellOrGrid, position, options?.placeholder);
116
+ const setValue = useResolvedCellSetter(cellOrGrid, position, options?.placeholder);
117
+ return [snapshot.value, setValue, snapshot.meta];
118
+ }
119
+ export function useCellValue(cellOrGrid, position, options) {
120
+ return useCellStoreSnapshot(cellOrGrid, position, options?.placeholder).value;
121
+ }
122
+ function useCellStoreSnapshot(cellOrGrid, position, placeholder) {
123
+ const snapshotRef = useRef();
124
+ const subscribe = useCallback((callback) => subscribeToCellSource(cellOrGrid, callback), [cellOrGrid]);
125
+ const getSnapshot = useCallback(() => {
126
+ const previousSnapshot = snapshotRef.current;
127
+ const nextSnapshot = readHookCellSnapshot(cellOrGrid, position, placeholder, previousSnapshot);
128
+ snapshotRef.current = nextSnapshot;
129
+ return nextSnapshot;
130
+ }, [cellOrGrid, placeholder, position]);
131
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
132
+ }
133
+ function useResolvedCellSetter(cellOrGrid, position, placeholder) {
134
+ return useCallback((nextValue) => {
135
+ const currentSnapshot = readHookCellSnapshot(cellOrGrid, position, placeholder);
136
+ if (isDimensionGrid(cellOrGrid)) {
137
+ const currentGrid = cellOrGrid;
138
+ const index = resolveDimensionGridIndex(currentGrid, position);
139
+ currentGrid.setCell(index, resolveUpdater(nextValue, currentSnapshot.value));
140
+ return;
141
+ }
142
+ if (isGrid(cellOrGrid)) {
143
+ const currentGrid = cellOrGrid;
144
+ const { rowId, columnId } = resolveGridCoordinatesFromIndex(currentGrid, position);
145
+ currentGrid.setCell(rowId, columnId, resolveUpdater(nextValue, currentSnapshot.value));
146
+ return;
147
+ }
148
+ const currentCell = cellOrGrid;
149
+ currentCell.set(resolveUpdater(nextValue, currentCell.get()));
150
+ }, [cellOrGrid, placeholder, position]);
151
+ }
152
+ function subscribeToCellSource(cellOrGrid, callback) {
153
+ if (isDimensionGrid(cellOrGrid) || isGrid(cellOrGrid)) {
154
+ return cellOrGrid.subscribeGrid(() => callback());
155
+ }
156
+ return cellOrGrid.subscribe(callback);
157
+ }
158
+ function readHookCellSnapshot(cellOrGrid, position, placeholder, previousSnapshot) {
159
+ if (isDimensionGrid(cellOrGrid)) {
160
+ const currentGrid = cellOrGrid;
161
+ const index = resolveDimensionGridIndex(currentGrid, position);
162
+ const storedSnapshot = currentGrid.readCell(index);
163
+ const placeholderContext = createDimensionPlaceholderContext(currentGrid, index, storedSnapshot.meta);
164
+ return createHookCellSnapshot(storedSnapshot.value, storedSnapshot.meta, placeholder, placeholderContext, previousSnapshot);
165
+ }
166
+ if (isGrid(cellOrGrid)) {
167
+ const currentGrid = cellOrGrid;
168
+ const resolvedPosition = position;
169
+ const { rowId, columnId } = resolveGridCoordinatesFromIndex(currentGrid, resolvedPosition);
170
+ const storedSnapshot = currentGrid.readCell(rowId, columnId);
171
+ const placeholderContext = {
172
+ row: resolvedPosition.row,
173
+ col: resolvedPosition.col,
174
+ rowId,
175
+ columnId,
176
+ meta: storedSnapshot.meta,
177
+ };
178
+ return createHookCellSnapshot(storedSnapshot.value, storedSnapshot.meta, placeholder, placeholderContext, previousSnapshot);
179
+ }
180
+ const currentCell = cellOrGrid;
181
+ const value = currentCell.get();
182
+ if (previousSnapshot &&
183
+ previousSnapshot.meta.existsInDb === STATIC_CELL_META.existsInDb &&
184
+ previousSnapshot.meta.isDirty === STATIC_CELL_META.isDirty &&
185
+ Object.is(previousSnapshot.value, value)) {
186
+ return previousSnapshot;
187
+ }
188
+ return {
189
+ value,
190
+ storedValue: value,
191
+ meta: STATIC_CELL_META,
192
+ };
193
+ }
194
+ function createHookCellSnapshot(storedValue, meta, placeholder, placeholderContext, previousSnapshot) {
195
+ const visibleValue = storedValue !== undefined
196
+ ? storedValue
197
+ : resolveVisiblePlaceholder(meta, placeholder, placeholderContext, previousSnapshot);
198
+ if (previousSnapshot &&
199
+ sameCellMeta(previousSnapshot.meta, meta) &&
200
+ Object.is(previousSnapshot.storedValue, storedValue) &&
201
+ Object.is(previousSnapshot.value, visibleValue)) {
202
+ return previousSnapshot;
203
+ }
204
+ return {
205
+ value: visibleValue,
206
+ storedValue,
207
+ meta,
208
+ };
209
+ }
210
+ function resolveVisiblePlaceholder(meta, placeholder, placeholderContext, previousSnapshot) {
211
+ if (placeholder === undefined) {
212
+ return undefined;
213
+ }
214
+ if (previousSnapshot &&
215
+ previousSnapshot.storedValue === undefined &&
216
+ sameCellMeta(previousSnapshot.meta, meta)) {
217
+ return previousSnapshot.value;
218
+ }
219
+ return typeof placeholder === "function"
220
+ ? placeholder(placeholderContext)
221
+ : placeholder;
222
+ }
223
+ function createDimensionPlaceholderContext(currentGrid, index, meta) {
224
+ if (currentGrid.dimension === "rows") {
225
+ return {
226
+ dimension: currentGrid.dimension,
227
+ index,
228
+ row: index,
229
+ rowId: currentGrid.rowHeaders[index],
230
+ meta,
231
+ };
232
+ }
233
+ return {
234
+ dimension: currentGrid.dimension,
235
+ index,
236
+ col: index,
237
+ columnId: currentGrid.colHeaders[index],
238
+ meta,
239
+ };
240
+ }
241
+ function resolveUpdater(nextValue, currentValue) {
242
+ return typeof nextValue === "function"
243
+ ? nextValue(currentValue)
244
+ : nextValue;
245
+ }
246
+ function sameCellMeta(leftMeta, rightMeta) {
247
+ return (leftMeta.existsInDb === rightMeta.existsInDb && leftMeta.isDirty === rightMeta.isDirty);
248
+ }
249
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../adaptors/react/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,21 @@
1
1
  import type { Cell, CellInitializer } from "./types/cell.types.js";
2
- import type { DimensionGrid, DimensionGridPosition, Grid, GridCellPosition, GridDimension, GridState } from "./types/grid.types.js";
3
- import type { GridHead, GridId } from "./types/head.types.js";
2
+ import type { DimensionGridPosition, GridCellPosition, GridDimension } from "./types/grid.types.js";
3
+ import type { GridId } from "./types/head.types.js";
4
4
  export type { Cell, Subscriber, Updater } from "./types/cell.types.js";
5
+ type IndexedGrid<TRowId extends GridId = GridId, TColumnId extends GridId = GridId> = {
6
+ rowHeaders: readonly TRowId[];
7
+ colHeaders: readonly TColumnId[];
8
+ };
9
+ type IndexedDimensionGrid<TDimension extends GridDimension = GridDimension> = {
10
+ dimension: TDimension;
11
+ size: number;
12
+ };
5
13
  export declare function cell<TCell>(initialValue: TCell | CellInitializer<TCell>): Cell<TCell>;
6
- export declare function useCell<TCell>(currentCell: Cell<TCell>): readonly [TCell, (newValue: TCell) => void];
7
- export declare function useCell<TCell, TDimension extends GridDimension, TRowId extends GridId, TColumnId extends GridId>(currentGrid: DimensionGrid<TCell, TDimension, TRowId, TColumnId>, position: DimensionGridPosition<TDimension>): readonly [TCell | undefined, (newValue: TCell | undefined) => void];
8
- export declare function useCell<TCell, TRowId extends GridId, TColumnId extends GridId, 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: GridCellPosition): readonly [TCell, (newValue: TCell) => void];
9
- export declare function useCellValue<TCell>(currentCell: Cell<TCell>): TCell;
10
- export declare function useCellValue<TCell, TDimension extends GridDimension, TRowId extends GridId, TColumnId extends GridId>(currentGrid: DimensionGrid<TCell, TDimension, TRowId, TColumnId>, position: DimensionGridPosition<TDimension>): TCell | undefined;
11
- export declare function useCellValue<TCell, TRowId extends GridId, TColumnId extends GridId, 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: GridCellPosition): TCell;
14
+ export declare function isGrid(value: unknown): value is IndexedGrid;
15
+ export declare function isDimensionGrid(value: unknown): value is IndexedDimensionGrid;
16
+ export declare function resolveDimensionGridIndex(currentGrid: IndexedDimensionGrid, position: DimensionGridPosition): number;
17
+ export declare function resolveGridCoordinatesFromIndex<TRowId extends GridId, TColumnId extends GridId>(currentGrid: IndexedGrid<TRowId, TColumnId>, position: GridCellPosition): {
18
+ rowId: TRowId;
19
+ columnId: TColumnId;
20
+ };
12
21
  //# sourceMappingURL=cell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../core/cell.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAuB,MAAM,uBAAuB,CAAC;AACxF,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,IAAI,EACJ,gBAAgB,EAChB,aAAa,EACb,SAAS,EAEV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE9D,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAsBvE,wBAAgB,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAiCrF;AAED,wBAAgB,OAAO,CAAC,KAAK,EAC3B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,GACvB,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC;AAC/C,wBAAgB,OAAO,CACrB,KAAK,EACL,UAAU,SAAS,aAAa,EAChC,MAAM,SAAS,MAAM,EACrB,SAAS,SAAS,MAAM,EAExB,WAAW,EAAE,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAChE,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,GAC1C,SAAS,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC;AACvE,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,EACtF,QAAQ,EAAE,gBAAgB,GACzB,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC;AA6B/C,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACrE,wBAAgB,YAAY,CAC1B,KAAK,EACL,UAAU,SAAS,aAAa,EAChC,MAAM,SAAS,MAAM,EACrB,SAAS,SAAS,MAAM,EAExB,WAAW,EAAE,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAChE,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,GAC1C,KAAK,GAAG,SAAS,CAAC;AACrB,wBAAgB,YAAY,CAC1B,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,EACtF,QAAQ,EAAE,gBAAgB,GACzB,KAAK,CAAC"}
1
+ {"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../core/cell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAc,MAAM,uBAAuB,CAAC;AAC/E,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEvE,KAAK,WAAW,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI;IACpF,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;CAClC,CAAC;AAEF,KAAK,oBAAoB,CAAC,UAAU,SAAS,aAAa,GAAG,aAAa,IAAI;IAC5E,SAAS,EAAE,UAAU,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAiCrF;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAQ3D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAU7E;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,oBAAoB,EACjC,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,CAkCR;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,SAAS,MAAM,EACrB,SAAS,SAAS,MAAM,EACxB,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,gBAAgB;;;EAwBxE"}