mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
First separation commit.
Added LICENSE, README.md, CONTRIBUTORS.md
This commit is contained in:
parent
09513af31b
commit
4678528d00
657 changed files with 422 additions and 0 deletions
45
src/bower_components/emby-webcomponents/lazyloader/lazyloader-intersectionobserver.js
vendored
Normal file
45
src/bower_components/emby-webcomponents/lazyloader/lazyloader-intersectionobserver.js
vendored
Normal file
|
@ -0,0 +1,45 @@
|
|||
define(["require", "browser"], function(require, browser) {
|
||||
"use strict";
|
||||
|
||||
function LazyLoader(options) {
|
||||
this.options = options
|
||||
}
|
||||
|
||||
function unveilElements(elements, root, callback) {
|
||||
if (elements.length) {
|
||||
new LazyLoader({
|
||||
callback: callback
|
||||
}).addElements(elements)
|
||||
}
|
||||
}
|
||||
return browser.edge && require(["css!./lazyedgehack"]), LazyLoader.prototype.createObserver = function() {
|
||||
var observerOptions = {},
|
||||
options = this.options,
|
||||
loadedCount = 0,
|
||||
callback = options.callback;
|
||||
observerOptions.rootMargin = "50%";
|
||||
var observerId = "obs" + (new Date).getTime(),
|
||||
self = this,
|
||||
observer = new IntersectionObserver(function(entries) {
|
||||
for (var j = 0, length2 = entries.length; j < length2; j++) {
|
||||
var entry = entries[j];
|
||||
if (entry.intersectionRatio > 0) {
|
||||
var target = entry.target;
|
||||
observer.unobserve(target), target[observerId] || (target[observerId] = 1, callback(target), ++loadedCount >= self.elementCount && self.destroyObserver())
|
||||
}
|
||||
}
|
||||
}, observerOptions);
|
||||
this.observer = observer
|
||||
}, LazyLoader.prototype.addElements = function(elements) {
|
||||
var observer = this.observer;
|
||||
observer || (this.createObserver(), observer = this.observer), this.elementCount = (this.elementCount || 0) + elements.length;
|
||||
for (var i = 0, length = elements.length; i < length; i++) observer.observe(elements[i])
|
||||
}, LazyLoader.prototype.destroyObserver = function(elements) {
|
||||
var observer = this.observer;
|
||||
observer && (observer.disconnect(), this.observer = null)
|
||||
}, LazyLoader.prototype.destroy = function(elements) {
|
||||
this.destroyObserver(), this.options = null
|
||||
}, LazyLoader.lazyChildren = function(elem, callback) {
|
||||
unveilElements(elem.getElementsByClassName("lazy"), elem, callback)
|
||||
}, LazyLoader
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue