Skip to content

Commit 25233e1

Browse files
committed
Migrate to svelte5 using "npx sv migrate svelte-5"
1 parent aa251ef commit 25233e1

File tree

11 files changed

+276
-141
lines changed

11 files changed

+276
-141
lines changed

package-lock.json

Lines changed: 53 additions & 102 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@
2828
"rollup-plugin-serve": "^1.0.3",
2929
"rollup-plugin-svelte": "^7.2.2",
3030
"@rollup/plugin-node-resolve": "^15.3.0",
31-
"rollup-plugin-css-only": "^4.5.2",
32-
"svelte": "^4.2.19"
31+
"rollup-plugin-css-only": "^4.5.2",
32+
"svelte": "^5.0.0"
3333
},
3434
"peerDependencies": {
35-
"svelte": "^3.0.0 || ^4.0.0"
35+
"svelte": "^3.0.0 || ^4.0.0 || ^5.0.0"
3636
},
3737
"keywords": [
3838
"svelte",

src/components/Placeholder.svelte

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,20 @@
33
{#if typeof placeholder === 'string'}
44
<div>{placeholder}</div>
55
{:else if ['function', 'object'].includes(typeof placeholder)}
6-
<svelte:component this={placeholder} {...placeholderProps} />
6+
{@const SvelteComponent = placeholder}
7+
<SvelteComponent {...placeholderProps} />
78
{/if}
89
</div>
910
{/if}
1011

1112
<script>
12-
export let placeholder = null;
13-
export let placeholderProps = null;
13+
/**
14+
* @typedef {Object} Props
15+
* @property {any} [placeholder]
16+
* @property {any} [placeholderProps]
17+
*/
18+
19+
/** @type {Props} */
20+
let { placeholder = null, placeholderProps = null } = $props();
1421
const placeholderClass = 'svelte-lazy-placeholder';
1522
</script>

src/index.svelte

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55
class={contentClass}
66
style={contentStyle}
77
>
8-
<slot>Lazy load content</slot>
8+
{#if children}
9+
{@render children()}
10+
{:else}
11+
Lazy load content
12+
{/if}
913
</div>
1014
{#if !contentShow && placeholder}
1115
<Placeholder {placeholder} {placeholderProps} />
@@ -18,28 +22,46 @@
1822
<script>
1923
import { fade } from 'svelte/transition';
2024
import Placeholder from './components/Placeholder.svelte';
21-
export let keep = false;
22-
export let height = 0;
23-
export let offset = 150;
24-
export let fadeOption = {
25+
/**
26+
* @typedef {Object} Props
27+
* @property {boolean} [keep]
28+
* @property {number} [height]
29+
* @property {number} [offset]
30+
* @property {any} [fadeOption]
31+
* @property {number} [resetHeightDelay]
32+
* @property {any} [onload]
33+
* @property {any} [placeholder]
34+
* @property {any} [placeholderProps]
35+
* @property {string} [class]
36+
* @property {import('svelte').Snippet} [children]
37+
*/
38+
39+
/** @type {Props} */
40+
let {
41+
keep = false,
42+
height = 0,
43+
offset = 150,
44+
fadeOption = {
2545
delay: 0,
2646
duration: 400,
27-
};
28-
export let resetHeightDelay = 0;
29-
export let onload = null;
30-
export let placeholder = null;
31-
export let placeholderProps = null;
32-
let className = '';
33-
export { className as class };
47+
},
48+
resetHeightDelay = 0,
49+
onload = null,
50+
placeholder = null,
51+
placeholderProps = null,
52+
class: className = '',
53+
children
54+
} = $props();
55+
3456
3557
const rootClass = 'svelte-lazy'
3658
+ (className ? ' ' + className : '');
3759
const contentClass = 'svelte-lazy-content';
3860
const rootInitialHeight = getStyleHeight();
39-
let loaded = false;
61+
let loaded = $state(false);
4062
41-
let contentShow = true;
42-
$: contentStyle = !contentShow ? 'display: none' : '';
63+
let contentShow = $state(true);
64+
let contentStyle = $derived(!contentShow ? 'display: none' : '');
4365
4466
function load(node) {
4567
setHeight(node);

test/FilterList.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script>
22
import Lazy from '../src/index.svelte';
33
4-
let search = '';
4+
let search = $state('');
55
let data = [
66
{id: 1, text: "one"},
77
{id: 2, text: "two"},
@@ -50,7 +50,7 @@ const filterData = (() => {
5050
else
5151
return [...data.filter(x => x.text.toLowerCase().includes(search.toLowerCase()))]
5252
})
53-
$: filteredData = filterData(search);
53+
let filteredData = $derived(filterData(search));
5454
5555
</script>
5656

0 commit comments

Comments
 (0)