Skip to content

Commit

Permalink
Fix svelte-virtual
Browse files Browse the repository at this point in the history
  • Loading branch information
lachlancollins committed Feb 17, 2024
1 parent 9368a80 commit ec5bef4
Show file tree
Hide file tree
Showing 5 changed files with 153 additions and 25 deletions.
8 changes: 8 additions & 0 deletions packages/svelte-virtual/.svelte-kit/__package__/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { PartialKeys, Virtualizer, VirtualizerOptions } from '@tanstack/virtual-core';
export * from '@tanstack/virtual-core';
import { Readable } from 'svelte/store';
export type SvelteVirtualizer<TScrollElement extends Element | Window, TItemElement extends Element> = Omit<Virtualizer<TScrollElement, TItemElement>, 'setOptions'> & {
setOptions: (options: Partial<VirtualizerOptions<TScrollElement, TItemElement>>) => void;
};
export declare function createVirtualizer<TScrollElement extends Element, TItemElement extends Element>(options: PartialKeys<VirtualizerOptions<TScrollElement, TItemElement>, 'observeElementRect' | 'observeElementOffset' | 'scrollToFn'>): Readable<SvelteVirtualizer<TScrollElement, TItemElement>>;
export declare function createWindowVirtualizer<TItemElement extends Element>(options: PartialKeys<VirtualizerOptions<Window, TItemElement>, 'getScrollElement' | 'observeElementRect' | 'observeElementOffset' | 'scrollToFn'>): Readable<SvelteVirtualizer<Window, TItemElement>>;
46 changes: 46 additions & 0 deletions packages/svelte-virtual/.svelte-kit/__package__/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { elementScroll, observeElementOffset, observeElementRect, observeWindowOffset, observeWindowRect, Virtualizer, windowScroll, } from '@tanstack/virtual-core';
export * from '@tanstack/virtual-core';
import { derived, writable } from 'svelte/store';
function createVirtualizerBase(initialOptions) {
const virtualizer = new Virtualizer(initialOptions);
const originalSetOptions = virtualizer.setOptions;
let virtualizerWritable;
const setOptions = (options) => {
const resolvedOptions = {
...virtualizer.options,
...options,
onChange: options.onChange,
};
originalSetOptions({
...resolvedOptions,
onChange: (instance, sync) => {
virtualizerWritable.set(instance);
resolvedOptions.onChange?.(instance, sync);
},
});
virtualizer._willUpdate();
};
virtualizerWritable = writable(virtualizer, () => {
setOptions(initialOptions);
return virtualizer._didMount();
});
return derived(virtualizerWritable, (instance) => Object.assign(instance, { setOptions }));
}
export function createVirtualizer(options) {
return createVirtualizerBase({
observeElementRect: observeElementRect,
observeElementOffset: observeElementOffset,
scrollToFn: elementScroll,
...options,
});
}
export function createWindowVirtualizer(options) {
return createVirtualizerBase({
getScrollElement: () => (typeof document !== 'undefined' ? window : null),
observeElementRect: observeWindowRect,
observeElementOffset: observeWindowOffset,
scrollToFn: windowScroll,
initialOffset: typeof document !== 'undefined' ? window.scrollY : undefined,
...options,
});
}
56 changes: 31 additions & 25 deletions packages/svelte-virtual/package.json
Original file line number Diff line number Diff line change
@@ -1,53 +1,59 @@
{
"name": "@tanstack/svelte-virtual",
"author": "Tanner Linsley",
"version": "3.0.4",
"description": "Headless UI for virtualizing scrollable elements in Svelte",
"author": "Tanner Linsley",
"license": "MIT",
"homepage": "https://github.com/tanstack/virtual#readme",
"repository": {
"type": "git",
"url": "git+https://github.com/tanstack/virtual.git"
},
"publishConfig": {
"registry": "https://registry.npmjs.org/"
},
"keywords": [
"react",
"vue",
"solid",
"svelte",
"virtual",
"virtual-core",
"datagrid"
],
"homepage": "https://github.com/tanstack/virtual#readme",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
},
"types": "build/lib/index.d.ts",
"main": "build/lib/index.js",
"module": "build/lib/index.esm.js",
"type": "module",
"types": "dist/index.d.ts",
"module": "dist/index.js",
"svelte": "./dist/index.js",
"exports": {
".": {
"types": "./build/lib/index.d.ts",
"import": "./build/lib/index.mjs",
"default": "./build/lib/index.js"
"types": "./dist/index.d.ts",
"svelte": "./dist/index.js",
"import": "./dist/index.js"
},
"./package.json": "./package.json"
},
"sideEffects": false,
"scripts": {
"clean": "rimraf ./dist && rimraf ./coverage",
"test:types": "svelte-check --tsconfig ./tsconfig.json",
"test:build": "publint --strict",
"build": "svelte-package --input ./src --output ./dist"
},
"keywords": [
"react",
"vue",
"solid",
"svelte",
"virtual",
"virtual-core",
"datagrid"
],
"files": [
"build/lib/*",
"build/umd/*",
"dist",
"src"
],
"devDependencies": {
"svelte": "^4.2.2"
},
"dependencies": {
"@tanstack/virtual-core": "workspace:*"
},
"devDependencies": {
"@sveltejs/package": "^2.2.6",
"@sveltejs/vite-plugin-svelte": "^2.4.2",
"svelte": "^4.2.2",
"svelte-check": "^3.4.6"
},
"peerDependencies": {
"svelte": "^3.48.0 || ^4.0.0"
}
Expand Down
6 changes: 6 additions & 0 deletions packages/svelte-virtual/vite.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { svelte } from '@sveltejs/vite-plugin-svelte'
import { defineConfig } from 'vitest/config'

export default defineConfig({
plugins: [svelte()],
})
62 changes: 62 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit ec5bef4

Please sign in to comment.