svelte-lazy
Advanced tools
Comparing version 1.2.0 to 1.2.1
49
index.js
@@ -1224,3 +1224,3 @@ (function (global, factory) { | ||
function getContainerHeight(e) { | ||
if (e && e.target && e.target.getBoundingClientRect) { | ||
if (e?.target?.getBoundingClientRect) { | ||
return e.target.getBoundingClientRect().bottom; | ||
@@ -1288,4 +1288,21 @@ } else { | ||
setHeight(node); | ||
const handler = createHandler(node); | ||
addListeners(handler); | ||
const loadHandler = throttle( | ||
setTimeout(() => { | ||
handler(); | ||
}); | ||
const observer = observeNode(node, handler); | ||
return { | ||
destroy: () => { | ||
removeListeners(handler); | ||
observer.unobserve(node); | ||
} | ||
}; | ||
} | ||
function createHandler(node) { | ||
const handler = throttle( | ||
e => { | ||
@@ -1296,3 +1313,3 @@ const nodeTop = node.getBoundingClientRect().top; | ||
if (nodeTop <= expectedTop) { | ||
loadNode(node, loadHandler); | ||
loadNode(node, handler); | ||
} | ||
@@ -1303,20 +1320,9 @@ }, | ||
addListeners(loadHandler); | ||
setTimeout(() => { | ||
loadHandler(); | ||
observeNode(node, loadHandler); | ||
}); | ||
return { | ||
destroy: () => { | ||
removeListeners(loadHandler); | ||
} | ||
}; | ||
return handler; | ||
} | ||
function observeNode(node, loadHandler) { | ||
function observeNode(node, handler) { | ||
const observer = new IntersectionObserver(entries => { | ||
if (entries[0].intersectionRatio > 0) { | ||
loadNode(node, loadHandler); | ||
loadNode(node, handler); | ||
observer.unobserve(entries[0].target); | ||
@@ -1327,5 +1333,10 @@ } | ||
observer.observe(node); | ||
return observer; | ||
} | ||
function loadNode(node, loadHandler) { | ||
function loadNode(node, handler) { | ||
if (loaded) { | ||
return; | ||
} | ||
$$invalidate(4, loaded = true); | ||
@@ -1338,3 +1349,3 @@ resetHeight(node); | ||
removeListeners(loadHandler); | ||
removeListeners(handler); | ||
} | ||
@@ -1341,0 +1352,0 @@ |
@@ -6,3 +6,3 @@ { | ||
"main": "index.js", | ||
"version": "1.2.0", | ||
"version": "1.2.1", | ||
"types": "index.d.ts", | ||
@@ -9,0 +9,0 @@ "repository": "leafOfTree/svelte-lazy", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
93479
2692