94 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
(function (global, factory) {
 | 
						|
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
 | 
						|
  typeof define === 'function' && define.amd ? define(factory) :
 | 
						|
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.scrollPlugin = factory());
 | 
						|
}(this, (function () { 'use strict';
 | 
						|
 | 
						|
  function getEventTarget(event) {
 | 
						|
      try {
 | 
						|
          if (typeof event.composedPath === "function") {
 | 
						|
              var path = event.composedPath();
 | 
						|
              return path[0];
 | 
						|
          }
 | 
						|
          return event.target;
 | 
						|
      }
 | 
						|
      catch (error) {
 | 
						|
          return event.target;
 | 
						|
      }
 | 
						|
  }
 | 
						|
 | 
						|
  if (typeof window.CustomEvent !== "function") {
 | 
						|
      var CustomEvent = function (typeArg, eventInitDict) {
 | 
						|
          eventInitDict = eventInitDict || {
 | 
						|
              bubbles: false,
 | 
						|
              cancelable: false,
 | 
						|
              detail: undefined,
 | 
						|
          };
 | 
						|
          var evt = document.createEvent("CustomEvent");
 | 
						|
          evt.initCustomEvent(typeArg, eventInitDict.bubbles, eventInitDict.cancelable, eventInitDict.detail);
 | 
						|
          return evt;
 | 
						|
      };
 | 
						|
      CustomEvent.prototype = window.Event.prototype;
 | 
						|
      window.CustomEvent = CustomEvent;
 | 
						|
  }
 | 
						|
  function delta(e) {
 | 
						|
      return Math.max(-1, Math.min(1, e.wheelDelta || -e.deltaY));
 | 
						|
  }
 | 
						|
  var scroll = function (e) {
 | 
						|
      e.preventDefault();
 | 
						|
      var ev = new CustomEvent("increment", {
 | 
						|
          bubbles: true,
 | 
						|
      });
 | 
						|
      ev.delta = delta(e);
 | 
						|
      getEventTarget(e).dispatchEvent(ev);
 | 
						|
  };
 | 
						|
  function scrollMonth(fp) {
 | 
						|
      return function (e) {
 | 
						|
          e.preventDefault();
 | 
						|
          var mDelta = delta(e);
 | 
						|
          fp.changeMonth(mDelta);
 | 
						|
      };
 | 
						|
  }
 | 
						|
  function scrollPlugin() {
 | 
						|
      return function (fp) {
 | 
						|
          var monthScroller = scrollMonth(fp);
 | 
						|
          return {
 | 
						|
              onReady: function () {
 | 
						|
                  if (fp.timeContainer) {
 | 
						|
                      fp.timeContainer.addEventListener("wheel", scroll);
 | 
						|
                  }
 | 
						|
                  if (fp.yearElements) {
 | 
						|
                      fp.yearElements.forEach(function (yearElem) {
 | 
						|
                          return yearElem.addEventListener("wheel", scroll);
 | 
						|
                      });
 | 
						|
                  }
 | 
						|
                  if (fp.monthElements) {
 | 
						|
                      fp.monthElements.forEach(function (monthElem) {
 | 
						|
                          return monthElem.addEventListener("wheel", monthScroller);
 | 
						|
                      });
 | 
						|
                  }
 | 
						|
                  fp.loadedPlugins.push("scroll");
 | 
						|
              },
 | 
						|
              onDestroy: function () {
 | 
						|
                  if (fp.timeContainer) {
 | 
						|
                      fp.timeContainer.removeEventListener("wheel", scroll);
 | 
						|
                  }
 | 
						|
                  if (fp.yearElements) {
 | 
						|
                      fp.yearElements.forEach(function (yearElem) {
 | 
						|
                          return yearElem.removeEventListener("wheel", scroll);
 | 
						|
                      });
 | 
						|
                  }
 | 
						|
                  if (fp.monthElements) {
 | 
						|
                      fp.monthElements.forEach(function (monthElem) {
 | 
						|
                          return monthElem.removeEventListener("wheel", monthScroller);
 | 
						|
                      });
 | 
						|
                  }
 | 
						|
              },
 | 
						|
          };
 | 
						|
      };
 | 
						|
  }
 | 
						|
 | 
						|
  return scrollPlugin;
 | 
						|
 | 
						|
})));
 |