You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix core grid bugs and rendering performance (#78)
Filtering: OR-only expression trees matched every record because the
empty AND set was vacuously true; nullish cell values crashed string
conditions. Fix the match logic and coerce nullish operands once in
normalizeCase.
Events: cancelable sorting/filtering fired after state was already
mutated. Hand listeners a candidate copy and commit it onto the
state-held object only when the event passes, preserving both object
identity and the listener-can-modify contract. Emit sorted/filtered
after the data view updates.
Pipeline: concurrent async runs could resolve out of order. Sequence
them with an epoch token; stale results are discarded and a rejected
hook keeps the previous data state. Expose the documented but missing
public columns setter and stop columnReducer from dropping sibling
columns inside containers.
Navigation: state was module-level and shared across grid instances;
hidden columns were reachable and a nullish active node produced NaN
row indices. Move state per instance and clamp over visible columns.
Performance: key row rendering by column field so cells are reused,
share a single Intl.Collator, memoize dot-path segments, and drive
the scrollbar offset from a ResizeObserver coalesced into rAF instead
of per-render measurement.
Tests: 178 -> 227, coverage 98%.
0 commit comments