Skip to content

Commit aaafb30

Browse files
committed
refactor: fix some svelte errors
1 parent e7721f1 commit aaafb30

File tree

6 files changed

+35
-16
lines changed

6 files changed

+35
-16
lines changed

src/lib/SizeAndPositionManager.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,9 +220,9 @@ export default class SizeAndPositionManager {
220220
* Determines a new offset that ensures a certain item is visible, given the alignment.
221221
*
222222
* @param {'auto' | 'start' | 'center' | 'end'} align Desired alignment within container
223-
* @param {number | undefined} containerSize Size (width or height) of the container viewport
224-
* @param {number | undefined} currentOffset
225-
* @param {number | undefined} targetIndex
223+
* @param {number} containerSize Size (width or height) of the container viewport
224+
* @param {number} currentOffset
225+
* @param {number} targetIndex
226226
* @return {number} Offset to use to ensure the specified item is visible
227227
*/
228228
getUpdatedOffsetForIndex(align, containerSize, currentOffset, targetIndex) {
@@ -259,7 +259,7 @@ export default class SizeAndPositionManager {
259259
* @param {number} containerSize
260260
* @param {number} offset
261261
* @param {number} overscanCount
262-
* @return {{start: number|undefined, end: number|undefined}}
262+
* @return {{start?: number, end?: number}}
263263
*/
264264
getVisibleRange(containerSize, offset, overscanCount) {
265265
const totalSize = this.getTotalSize();

src/lib/SizeAndPositionManager.test.js

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ import { ALIGNMENT } from './constants.js';
33
import SizeAndPositionManager from './SizeAndPositionManager.js';
44

55
const ITEM_SIZE = 10;
6+
/**
7+
* @param {number} N
8+
* @returns {number[]}
9+
*/
610
const range = (N) => Array.from({ length: N }, (_, k) => k + 1);
711

812
describe('SizeAndPositionManager', () => {
@@ -36,7 +40,7 @@ describe('SizeAndPositionManager', () => {
3640
* @return {{sizeAndPositionManager: SizeAndPositionManager, totalSize: number, itemSize: number}}
3741
*/
3842
function getItemSizeAndPositionManagerNumber(itemCount = 100, itemSize = 50) {
39-
const sizeAndPositionManager = new SizeAndPositionManager(itemSize, itemCount);
43+
const sizeAndPositionManager = new SizeAndPositionManager(itemSize, itemCount, 50);
4044

4145
return {
4246
sizeAndPositionManager,
@@ -54,7 +58,7 @@ describe('SizeAndPositionManager', () => {
5458
return Math.max(Math.round(Math.random() * 100), 32);
5559
});
5660

57-
const sizeAndPositionManager = new SizeAndPositionManager(itemSize, itemCount);
61+
const sizeAndPositionManager = new SizeAndPositionManager(itemSize, itemCount, 66);
5862

5963
return {
6064
sizeAndPositionManager,
@@ -232,13 +236,17 @@ describe('SizeAndPositionManager', () => {
232236

233237
describe('getUpdatedOffsetForIndex', () => {
234238
/**
235-
* @param {'auto' | 'start' | 'center' | 'end'} align
236-
* @param {number} itemCount
237-
* @param {number} itemSize
238-
* @param {number} containerSize
239-
* @param {number} currentOffset
240-
* @param {number} estimatedItemSize
241-
* @param {number} targetIndex
239+
* @typedef {Object} GetUpdatedOffsetForIndexParams
240+
* @property {'auto' | 'start' | 'center' | 'end'} [align]
241+
* @property {number} [itemCount]
242+
* @property {number} [itemSize]
243+
* @property {number} [containerSize]
244+
* @property {number} [currentOffset]
245+
* @property {number} [estimatedItemSize]
246+
* @property {number} [targetIndex]
247+
*/
248+
/**
249+
* @param {GetUpdatedOffsetForIndexParams} params
242250
* @return {number}
243251
*/
244252
function getUpdatedOffsetForIndexHelper({

src/routes/demos/hacker-news/+page.svelte

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,12 @@
1010
1111
let page = $state(1);
1212
let listHeight = $state(0);
13+
/** @type {{story_id: string, created_at: string, title: string, author: string, url: string, points: number, num_comments: number}[]} */
1314
let list = $state([]);
1415
16+
/**
17+
* @param {CustomEvent<{ loaded: () => void; complete: () => void; error: () => void }>} event
18+
*/
1519
function infiniteHandler({ detail: { loaded, complete, error } }) {
1620
fetch(`${api}&page=${page}`)
1721
.then((response) => response.json())
@@ -27,15 +31,21 @@
2731
.catch(() => error());
2832
}
2933
34+
/**
35+
* @param {string} url
36+
*/
3037
function formatSite(url) {
3138
const domain = new URL(url).hostname;
3239
return domain.startsWith('www.') ? domain.slice(4) : domain;
3340
}
3441
3542
const dateFormatter = new Intl.RelativeTimeFormat('en', { style: 'long' });
3643
44+
/**
45+
* @param {string} createdAt
46+
*/
3747
function formatCreatedAt(createdAt) {
38-
const seconds = Math.floor((new Date() - new Date(createdAt)) / 1000);
48+
const seconds = Math.floor((Date.now() - new Date(createdAt).getTime()) / 1000);
3949
if (seconds <= 60) {
4050
return dateFormatter.format(-seconds, 'second');
4151
} else if (seconds <= 3600) {

src/routes/examples/controlled-scroll-offset/+page.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<script>
22
import VirtualList from '$lib/VirtualList.svelte';
33
4+
/** @type {number[]} */
45
let rowHeights = $state([]);
56
67
let scrollOffset = $state();

src/routes/examples/scroll-to-index/+page.svelte

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script>
22
import VirtualList from '$lib/VirtualList.svelte';
33
4-
let virtualList = $state.raw();
4+
/** @type {number[]} */
55
let rowHeights = $state.raw([]);
66
77
let scrollToIndex = $state();
@@ -58,7 +58,6 @@
5858

5959
<article>
6060
<VirtualList
61-
bind:this={virtualList}
6261
height={500}
6362
width="auto"
6463
itemCount={10000}

src/routes/examples/variable-heights/+page.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<script>
22
import VirtualList from '$lib/VirtualList.svelte';
33
4+
/** @type {number[]} */
45
let rowHeights = $state([]);
56
67
randomize();

0 commit comments

Comments
 (0)