Skip to content

Commit 51e33b8

Browse files
authored
Merge pull request #91 from abdel-17/expose-range-extractor
feat: add `rangeExtractor` prop to `VirtualList`
2 parents 14cae00 + d74249e commit 51e33b8

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

.changeset/crazy-wolves-spend.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"svelte-file-tree": minor
3+
---
4+
5+
feat: add `rangeExtractor` prop to `VirtualList`

packages/svelte-file-tree/src/lib/components/VirtualList.svelte

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script lang="ts" module>
22
import {
3+
defaultRangeExtractor,
34
elementScroll,
45
observeElementOffset,
56
observeElementRect,
@@ -36,6 +37,7 @@
3637
let {
3738
children,
3839
estimateSize,
40+
rangeExtractor = defaultRangeExtractor,
3941
overscan = 1,
4042
paddingStart,
4143
paddingEnd,
@@ -63,6 +65,7 @@
6365
getScrollElement: () => ref,
6466
getItemKey: (order) => visibleItems[order]!.node.id,
6567
estimateSize: (order) => estimateSize(visibleItems[order]!, order),
68+
rangeExtractor: (range) => rangeExtractor(range),
6669
onChange: (instance) => {
6770
instance._willUpdate();
6871
treeSize = instance.getTotalSize();

packages/svelte-file-tree/src/lib/components/types.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ScrollToOptions } from "@tanstack/virtual-core";
1+
import type { Range, ScrollToOptions } from "@tanstack/virtual-core";
22
import type { Snippet } from "svelte";
33
import type { HTMLAttributes } from "svelte/elements";
44
import type { SvelteSet } from "svelte/reactivity";
@@ -132,6 +132,8 @@ export type VirtualListItem<
132132
end: number;
133133
};
134134

135+
export type VirtualListRange = Range;
136+
135137
export type VirtualListChildrenSnippetArgs<
136138
TFile extends FileNode = FileNode,
137139
TFolder extends FolderNode<TFile | TFolder> = DefaultTFolder<TFile>,
@@ -146,6 +148,7 @@ export interface VirtualListProps<
146148
> extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
147149
children: Snippet<[args: VirtualListChildrenSnippetArgs<TFile, TFolder>]>;
148150
estimateSize: (item: TreeItemState<TFile, TFolder>, order: number) => number;
151+
rangeExtractor?: (range: VirtualListRange) => Array<number>;
149152
overscan?: number;
150153
paddingStart?: number;
151154
paddingEnd?: number;

0 commit comments

Comments
 (0)