• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

humanspeak / svelte-headless-table / 33085356528
90%

Build:
DEFAULT BRANCH: main
Ran 27 Aug 2026 03:01PM UTC
Jobs 1
Files 37
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

27 Aug 2026 02:59PM UTC coverage: 84.584% (+0.6%) from 84.025%
33085356528

push

github

web-flow
feat(view-model): survive column rebuilds without losing plugin state (#297)

* feat(virtual-scroll): export row props and range context types

`addVirtualScroll` is the only plugin whose types live in a separate
`.types.ts`, so its public surface is a hand-maintained re-export list
rather than the automatic `export *` the other plugins get. That list
had drifted and was missing two of the six types it declares:

- `VirtualScrollRowProps`, the shape of the props the plugin adds to
  `tbody.tr` — consumers had to redeclare it locally to type the bag.
- `RangeChangeContext`, the second argument to `onRangeChange` — needed
  to type a handler once it is lifted out into a named function.

Purely additive; no existing export changed.

* test(virtual-scroll): cover state loss across a view model rebuild

Failing tests, ahead of hoisting the plugin's container-bound state to
the config closure.

`createViewModel` instantiates every plugin, so a consumer whose column
array is derived mints a fresh instance per rebuild. Svelte actions bind
at mount and ignore a changed function identity, so the container stays
wired to an instance nothing reads: `scrollContainer` is null and
`viewportHeight` is 0, collapsing the visible range to the buffer.

Asserts the action identity, viewport height, scroll position, visible
range and measured heights all survive a rebuild; that re-attaching
reconciles a fresh node against the retained scroll position; and the
single-table contract that sharing the state implies.

* fix(virtual-scroll): hoist geometry to the config closure

The plugin was a two-level factory whose inner level held every piece of
state that matters — scroll position, viewport height, the height cache,
the container reference and the action itself. `createViewModel` calls
that inner level once per build, so a consumer whose column array is
derived minted a fresh instance on every rebuild.

Svelte binds an action at mount and ignores a changed function identit... (continued)

569 of 720 branches covered (79.03%)

Branch coverage included in aggregate %.

183 of 209 new or added lines in 3 files covered. (87.56%)

2 existing lines in 1 file now uncovered.

1494 of 1719 relevant lines covered (86.91%)

20445.58 hits per line

Uncovered Changes

Lines Coverage ∆ File
26
85.06
3.34% src/lib/plugins/addVirtualScroll.ts

Coverage Regressions

Lines Coverage ∆ File
2
85.06
3.34% src/lib/plugins/addVirtualScroll.ts
Jobs
ID Job ID Ran Files Coverage
1 node-22 - 33085356528.1 27 Aug 2026 03:01PM UTC 37
84.58
GitHub Action Run
Source Files on build 33085356528
  • Tree
  • List 37
  • Changed 4
  • Source Changed 4
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #33085356528
  • ef2be2fc on github
  • Prev Build on main (#33070185568)
  • Next Build on main (#33108531333)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc