1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

rename more components and update references

This commit is contained in:
dkanada 2020-05-17 17:04:36 +09:00
parent 35094da328
commit 1aaaffde4c
24 changed files with 23 additions and 23 deletions

View file

@ -0,0 +1,67 @@
/* eslint-disable indent */
export class LazyLoader {
constructor(options) {
this.options = options;
}
createObserver() {
const callback = this.options.callback;
const observer = new IntersectionObserver(
(entries) => {
entries.forEach(entry => {
callback(entry);
},
{rootMargin: '50%'});
});
this.observer = observer;
}
addElements(elements) {
let observer = this.observer;
if (!observer) {
this.createObserver();
observer = this.observer;
}
Array.from(elements).forEach(element => {
observer.observe(element);
});
}
destroyObserver() {
const observer = this.observer;
if (observer) {
observer.disconnect();
this.observer = null;
}
}
destroy() {
this.destroyObserver();
this.options = null;
}
}
function unveilElements(elements, root, callback) {
if (!elements.length) {
return;
}
const lazyLoader = new LazyLoader({
callback: callback
});
lazyLoader.addElements(elements);
}
export function lazyChildren(elem, callback) {
unveilElements(elem.getElementsByClassName('lazy'), elem, callback);
}
/* eslint-enable indent */
export default {
LazyLoader: LazyLoader,
lazyChildren: lazyChildren
};