appear-polyfill
Version:
[](https://www.npmjs.com/package/rax-appear)
42 lines (34 loc) • 1.22 kB
JavaScript
;
exports.__esModule = true;
exports.setupAppear = setupAppear;
var _intersectionObserverManager = require("./intersectionObserverManager");
/**
* Simulate appear & disappear events.
*/
// hijack Node.prototype.addEventListener
var injectEventListenerHook = function (instances, Node) {
if (instances === void 0) {
instances = [];
}
var nativeAddEventListener = Node.prototype.addEventListener;
Node.prototype.addEventListener = function (eventName, eventHandler, useCapture) {
var lowerCaseEventName = eventName && String(eventName).toLowerCase();
if (lowerCaseEventName === 'appear' || lowerCaseEventName === 'disappear') (0, _intersectionObserverManager.observerElement)(this);
nativeAddEventListener.call(this, eventName, eventHandler, useCapture);
};
return function () {
Node.prototype.addEventListener = nativeAddEventListener;
(0, _intersectionObserverManager.destroyIntersectionObserver)();
};
};
function setupAppear(win) {
if (!win) {
if (typeof window !== 'undefined') {
win = window;
} else {
return;
}
}
(0, _intersectionObserverManager.createIntersectionObserver)();
return injectEventListenerHook([], win.Node);
}