UNPKG

appear-polyfill

Version:

[![npm](https://img.shields.io/npm/v/rax-appear.svg)](https://www.npmjs.com/package/rax-appear)

42 lines (34 loc) 1.22 kB
"use strict"; 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); }