Adam Shaw před 8 roky
rodič
revize
55d9aba909

+ 2 - 2
src/View.ts

@@ -1,6 +1,6 @@
 import * as $ from 'jquery'
 import * as moment from 'moment'
-import { parseFieldSpecs, proxy, isPrimaryMouseButton } from './util'
+import { parseFieldSpecs, isPrimaryMouseButton } from './util'
 import { assignTo } from './util/object'
 import RenderQueue from './common/RenderQueue'
 import Calendar from './Calendar'
@@ -420,7 +420,7 @@ export default abstract class View extends InteractiveDateComponent {
     if (this.opt('nowIndicator')) {
       unit = this.getNowIndicatorUnit()
       if (unit) {
-        update = proxy(this, 'updateNowIndicator') // bind to `this`
+        update = this.updateNowIndicator.bind(this)
 
         this.initialNowDate = this.calendar.getNow()
         this.initialNowQueriedMs = new Date().valueOf()

+ 2 - 2
src/agenda/TimeGridEventRenderer.ts

@@ -1,4 +1,4 @@
-import { htmlEscape, cssToStr, proxy } from '../util'
+import { htmlEscape, cssToStr } from '../util'
 import { removeElement, applyStyle } from '../util/dom'
 import EventRenderer from '../component/renderers/EventRenderer'
 
@@ -216,7 +216,7 @@ export default class TimeGridEventRenderer extends EventRenderer {
 
 
   sortForwardSegs(forwardSegs) {
-    forwardSegs.sort(proxy(this, 'compareForwardSegs'))
+    forwardSegs.sort(this.compareForwardSegs.bind(this))
   }
 
 

+ 2 - 3
src/common/DragListener.ts

@@ -8,8 +8,7 @@ import {
   isPrimaryMouseButton,
   allowSelection,
   preventDefault,
-  debounce,
-  proxy
+  debounce
 } from '../util'
 import { default as ListenerMixin, ListenerInterface } from './ListenerMixin'
 import GlobalEmitter from './GlobalEmitter'
@@ -431,7 +430,7 @@ export default class DragListener {
     // if there is non-zero velocity, and an animation loop hasn't already started, then START
     if ((this.scrollTopVel || this.scrollLeftVel) && !this.scrollIntervalId) {
       this.scrollIntervalId = setInterval(
-        proxy(this, 'scrollIntervalFunc'), // scope to `this`
+        this.scrollIntervalFunc.bind(this),
         this.scrollIntervalMs
       )
     }

+ 6 - 12
src/common/GlobalEmitter.ts

@@ -29,8 +29,6 @@ export default class GlobalEmitter {
 
   isTouching: boolean = false
   mouseIgnoreDepth: number = 0
-  handleScrollProxy: (ev: Event) => void
-  handleTouchMoveProxy: (ev: Event) => void
 
 
   // gets the singleton
@@ -81,9 +79,7 @@ export default class GlobalEmitter {
     // TODO: investigate performance because this is a global handler
     window.addEventListener(
       'touchmove',
-      this.handleTouchMoveProxy = (ev) => {
-        this.handleTouchMove(ev)
-      },
+      this.handleTouchMove, // always bound to `this`
       { passive: false } as any // allows preventDefault()
     )
 
@@ -92,9 +88,7 @@ export default class GlobalEmitter {
     // http://stackoverflow.com/a/32954565/96342
     window.addEventListener(
       'scroll',
-      this.handleScrollProxy = (ev) => {
-        this.handleScroll(ev)
-      },
+      this.handleScroll, // always bound to `this`
       true // useCapture
     )
   }
@@ -104,12 +98,12 @@ export default class GlobalEmitter {
 
     window.removeEventListener(
       'touchmove',
-      this.handleTouchMoveProxy
+      this.handleTouchMove
     )
 
     window.removeEventListener(
       'scroll',
-      this.handleScrollProxy,
+      this.handleScroll,
       true // useCapture
     )
   }
@@ -128,7 +122,7 @@ export default class GlobalEmitter {
     this.trigger('touchstart', ev)
   }
 
-  handleTouchMove(ev) {
+  handleTouchMove = (ev) => {
     if (this.isTouching) {
       this.trigger('touchmove', ev)
     }
@@ -188,7 +182,7 @@ export default class GlobalEmitter {
     this.trigger('contextmenu', ev)
   }
 
-  handleScroll(ev) {
+  handleScroll = (ev) => {
     this.trigger('scroll', ev)
   }
 

+ 2 - 2
src/component/renderers/EventRenderer.ts

@@ -1,4 +1,4 @@
-import { compareByFieldSpecs, proxy } from '../../util'
+import { compareByFieldSpecs } from '../../util'
 import { htmlToElements } from '../../util/dom'
 
 export default class EventRenderer {
@@ -420,7 +420,7 @@ export default class EventRenderer {
 
 
   sortEventSegs(segs) {
-    segs.sort(proxy(this, 'compareEventSegs'))
+    segs.sort(this.compareEventSegs.bind(this))
   }
 
 

+ 0 - 1
src/exports.ts

@@ -19,7 +19,6 @@ export {
   isInt,
   htmlEscape,
   cssToStr,
-  proxy,
   capitaliseFirstLetter,
   getInnerRect,
   getEdges,

+ 0 - 12
src/util.ts

@@ -872,18 +872,6 @@ export function isInt(n) {
 }
 
 
-// Returns a method bound to the given object context.
-// Just like one of the jQuery.proxy signatures, but without the undesired behavior of treating the same method with
-// different contexts as identical when binding/unbinding events.
-export function proxy(obj, methodName) {
-  let method = obj[methodName]
-
-  return function() {
-    return method.apply(obj, arguments)
-  }
-}
-
-
 // Returns a function, that, as long as it continues to be invoked, will not
 // be triggered. The function will be called after it stops being called for
 // N milliseconds. If `immediate` is passed, trigger the function on the