vlist 3.0.0 → 3.0.1-next.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.
package/dist/types.d.ts CHANGED
@@ -294,15 +294,30 @@ export interface ScrollConfig {
294
294
  * Useful for carousels, wizards, and circular navigation.
295
295
  */
296
296
  wrap?: boolean;
297
- /** Native visibility: "none" hides the browser scrollbar, "native" keeps it.
298
- * Options are consumed by vlist/config; with the low-level factory install
299
- * scrollbar() explicitly. The synthetic entry rejects both string values.
297
+ /** "none": no scrollbar, the browser's or the one a synthetic list draws.
298
+ * "native" keeps the browser's, so it needs native input. Options configure
299
+ * the scrollbar a synthetic list draws, and vlist/config installs
300
+ * scrollbar() from them.
300
301
  */
301
302
  scrollbar?: "native" | "none" | ScrollbarOptions;
302
303
  /** External scroll element for window scrolling */
303
304
  element?: Window;
304
305
  /** Scroll idle detection timeout in ms (default: 150) */
305
306
  idleTimeout?: number;
307
+ /**
308
+ * Who owns scroll input (RFC-015, default: `"auto"`).
309
+ * - `"auto"` — native scrolling; past the browser's element size limit
310
+ * (16,000,000 px of content) the list swaps to synthetic input in place,
311
+ * and back below 12,000,000 px.
312
+ * - `"native"` — always native; past the limit the last rows are out of reach.
313
+ * - `"synthetic"` — vlist owns wheel, touch and keys from the start.
314
+ *
315
+ * The synthetic driver is a separate chunk, downloaded the first time a
316
+ * list needs it; until then the list scrolls natively. A synthetic list
317
+ * draws a scrollbar, since the browser draws none: `scroll.scrollbar`
318
+ * configures it, "none" skips it, and a list with scrollbar() keeps that one.
319
+ */
320
+ mode?: "auto" | "native" | "synthetic";
306
321
  }
307
322
  /** Custom scrollbar fine-tuning options */
308
323
  export interface ScrollbarOptions {
@@ -534,6 +549,10 @@ export interface VListEvents<T extends VListItem = VListItem> extends EventMap {
534
549
  "scroll:idle": {
535
550
  scrollPosition: number;
536
551
  };
552
+ /** Scroll input swapped in place (`scroll.mode`, RFC-015). */
553
+ "scroll:mode": {
554
+ mode: "native" | "synthetic";
555
+ };
537
556
  /** Data changed — fired after item removal or other data mutations */
538
557
  "data:change": {
539
558
  type: "insert";
@@ -0,0 +1 @@
1
+ {"version":"3.0.1-next.1","commit":"75053a1","builtAt":"2026-09-27T20:48:01.516Z","released":true}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vlist",
3
- "version": "3.0.0",
3
+ "version": "3.0.1-next.1",
4
4
  "description": "Lightweight, high-performance virtual list with zero dependencies",
5
5
  "author": {
6
6
  "name": "Floor IO",
@@ -69,6 +69,7 @@
69
69
  "dist/**/*.d.ts",
70
70
  "dist/**/*.css",
71
71
  "dist/size.json",
72
+ "dist/version.json",
72
73
  "!dist/**/*.d.ts.map"
73
74
  ],
74
75
  "sideEffects": [
@@ -79,7 +80,7 @@
79
80
  "dev": "bun run build.ts --watch",
80
81
  "test": "bun test",
81
82
  "test:changed": "bun test --changed",
82
- "test:browser": "bun scripts/rtl-cross-axis-browser.mjs && bun scripts/synthetic-browser.mjs && bun scripts/synthetic-carousel-browser.mjs && bun scripts/synthetic-sortable-browser.mjs && bun scripts/select-next-browser.mjs && bun scripts/item-fill-browser.mjs",
83
+ "test:browser": "bun scripts/rtl-cross-axis-browser.mjs && bun scripts/synthetic-browser.mjs && bun scripts/synthetic-carousel-browser.mjs && bun scripts/synthetic-sortable-browser.mjs && bun scripts/select-next-browser.mjs && bun scripts/item-fill-browser.mjs && bun scripts/scroll-mode-browser.mjs && bun scripts/native-cap-browser.mjs",
83
84
  "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.types.json && tsc --noEmit -p tsconfig.test.json",
84
85
  "bench": "bun run scripts/bench.ts",
85
86
  "bench:quick": "bun run scripts/bench.ts --quick",