'use strict'; import $ from 'jquery'; /** * Route side-wide events */ const EventsUI = (($) => { const on = $.fn.on; const off = $.fn.off; // Constants const W = window; const $W = $(W); const D = document; const $Body = $('body'); const NAME = 'EventsUI'; class EventsUI { static process(el, args) { let modEl = el; const eventName = args[0]; const tagName = typeof el !== undefined ? $(el).prop('tagName') : null; switch (tagName) { case 'HTML': case 'BODY': modEl = $W; break; } return [modEl, args]; } } // rewrite jQuery functions $.fn.on = function () { const result = EventsUI.process(this, arguments); return on.apply(...result); }; $.fn.off = function () { const result = EventsUI.process(this, arguments); return off.apply(...result); }; const scrollTop = $.fn.scrollTop; // rewrite scrollTop $.fn.scrollTop = function () { let el = this; const args = arguments; const tagName = typeof el !== undefined ? $(el).prop('tagName') : null; switch (tagName) { case 'HTML': case 'BODY': el = $W; break; } return scrollTop.apply(el, args); }; })($); export default EventsUI;