73 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
| import { getEventTarget } from "../utils/dom";
 | |
| if (typeof window.CustomEvent !== "function") {
 | |
|     var CustomEvent_1 = 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_1.prototype = window.Event.prototype;
 | |
|     window.CustomEvent = CustomEvent_1;
 | |
| }
 | |
| 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);
 | |
|                     });
 | |
|                 }
 | |
|             },
 | |
|         };
 | |
|     };
 | |
| }
 | |
| export default scrollPlugin;
 |