Adam Shaw пре 7 година
родитељ
комит
cc147b85db

+ 4 - 7
src/common/GlobalContext.ts → src/common/browser-context.ts

@@ -8,9 +8,7 @@ import EventDragging from '../interactions/EventDragging'
 import EventResizing from '../interactions/EventResizing'
 import { DateSpan } from '../reducers/date-span'
 
-// TODO: rename to BrowserContext?
-
-export class GlobalContext { // TODO: rename file to something better
+export class BrowserContext {
 
   pointer: PointerDragging
   componentCnt: number = 0
@@ -53,10 +51,10 @@ export class GlobalContext { // TODO: rename file to something better
   bindComponent(component: DateComponent) {
     this.listenerHash[component.uid] = {
       dateClicking: new DateClicking(component),
-      dateSelecting: new DateSelecting(component, globalContext),
+      dateSelecting: new DateSelecting(component),
       eventClicking: new EventClicking(component),
       eventHovering: new EventHovering(component),
-      eventDragging: new EventDragging(component, globalContext),
+      eventDragging: new EventDragging(component),
       eventResizing: new EventResizing(component)
     }
   }
@@ -119,5 +117,4 @@ export class GlobalContext { // TODO: rename file to something better
 
 }
 
-let globalContext = new GlobalContext()
-export default globalContext
+export default new BrowserContext()

+ 3 - 3
src/component/DateComponent.ts

@@ -15,7 +15,7 @@ import { DateEnv } from '../datelib/env'
 import Theme from '../theme/Theme'
 import { EventInteractionState } from '../reducers/event-interaction'
 import { assignTo } from '../util/object'
-import GlobalContext from '../common/GlobalContext'
+import browserContext from '../common/browser-context'
 import { Hit } from '../interactions/HitDragging'
 
 
@@ -199,14 +199,14 @@ export default abstract class DateComponent extends Component {
 
   bindGlobalHandlers() {
     if (this.isInteractable) {
-      GlobalContext.registerComponent(this)
+      browserContext.registerComponent(this)
     }
   }
 
 
   unbindGlobalHandlers() {
     if (this.isInteractable) {
-      GlobalContext.unregisterComponent(this)
+      browserContext.unregisterComponent(this)
     }
   }
 

+ 3 - 15
src/interactions-external/ExternalElementDragging.ts

@@ -1,6 +1,6 @@
 import ElementDragging from '../dnd/ElementDragging'
 import HitDragging, { Hit } from '../interactions/HitDragging'
-import globalContext from '../common/GlobalContext'
+import browserContext from '../common/browser-context'
 import { PointerDragEvent } from '../dnd/PointerDragging'
 import { EventStore, parseDef, createInstance } from '../reducers/event-store'
 import UnzonedRange from '../models/UnzonedRange'
@@ -18,7 +18,7 @@ export default class ExternalElementDragging {
   eventCreationData: any
 
   constructor(dragging: ElementDragging, rawEventCreationData?) {
-    let hitDragging = this.hitDragging = new HitDragging(dragging, globalContext.componentHash)
+    let hitDragging = this.hitDragging = new HitDragging(dragging, browserContext.componentHash)
     hitDragging.requireInitial = false
     hitDragging.emitter.on('dragstart', this.onDragStart)
     hitDragging.emitter.on('hitover', this.onHitOver)
@@ -31,19 +31,7 @@ export default class ExternalElementDragging {
   }
 
   onDragStart = (ev: PointerDragEvent) => {
-
-    // TODO: nicer accessors in GlobalContext for this?
-    if (globalContext.eventSelectedComponent) {
-      let selectedCalendar = globalContext.eventSelectedComponent.getCalendar()
-
-      if (selectedCalendar) {
-        selectedCalendar.dispatch({
-          type: 'CLEAR_SELECTED_EVENT'
-        })
-        globalContext.eventSelectedComponent = null
-      }
-    }
-
+    browserContext.unselectEvent()
     this.eventCreationData = this.explicitEventCreationData || getDraggedElMeta(ev.subjectEl)
   }
 

+ 5 - 8
src/interactions/DateSelecting.ts

@@ -6,19 +6,17 @@ import { DateSpan } from '../reducers/date-span'
 import UnzonedRange from '../models/UnzonedRange'
 import { PointerDragEvent } from '../dnd/PointerDragging'
 import FeaturefulElementDragging from '../dnd/FeaturefulElementDragging'
-import { GlobalContext } from '../common/GlobalContext'
+import browserContext from '../common/browser-context'
 
 export default class DateSelecting {
 
   component: DateComponent
-  globalContext: GlobalContext
   dragging: FeaturefulElementDragging
   hitDragging: HitDragging
   dragSelection: DateSpan
 
-  constructor(component: DateComponent, globalContext: GlobalContext) {
+  constructor(component: DateComponent) {
     this.component = component
-    this.globalContext = globalContext
 
     this.dragging = new FeaturefulElementDragging(component.el)
     this.dragging.touchScrollAllowed = false
@@ -48,8 +46,7 @@ export default class DateSelecting {
   }
 
   onDragStart = (ev: PointerDragEvent) => {
-    let { globalContext } = this
-    globalContext.unselectDates(ev)
+    browserContext.unselectDates(ev)
   }
 
   onHitOver = (overHit: Hit) => { // TODO: do a onHitChange instead?
@@ -80,12 +77,12 @@ export default class DateSelecting {
   }
 
   onDocumentPointerUp = (ev: PointerDragEvent, wasTouchScroll: boolean, downEl: HTMLElement) => {
-    let { component, globalContext } = this
+    let { component } = this
 
     if (this.dragSelection) {
 
       // the selection is already rendered, so just need to report it
-      globalContext.reportDateSelection(component, this.dragSelection, ev)
+      browserContext.reportDateSelection(component, this.dragSelection, ev)
 
       this.dragSelection = null
 

+ 6 - 10
src/interactions/EventDragging.ts

@@ -2,7 +2,7 @@ import { default as DateComponent, Seg } from '../component/DateComponent'
 import { PointerDragEvent } from '../dnd/PointerDragging'
 import HitDragging, { isHitsEqual, Hit } from './HitDragging'
 import { EventMutation, diffDates, getRelatedEvents, applyMutationToAll } from '../reducers/event-mutation'
-import { GlobalContext } from '../common/GlobalContext'
+import browserContext from '../common/browser-context'
 import { startOfDay } from '../datelib/marker'
 import { elementClosest } from '../util/dom-manip'
 import FeaturefulElementDragging from '../dnd/FeaturefulElementDragging'
@@ -10,21 +10,19 @@ import FeaturefulElementDragging from '../dnd/FeaturefulElementDragging'
 export default class EventDragging {
 
   component: DateComponent
-  globalContext: GlobalContext // need this as a member?
   dragging: FeaturefulElementDragging
   hitDragging: HitDragging
   draggingSeg: Seg
   mutation: EventMutation
 
-  constructor(component: DateComponent, globalContext: GlobalContext) {
+  constructor(component: DateComponent) {
     this.component = component
-    this.globalContext = globalContext
 
     this.dragging = new FeaturefulElementDragging(component.el)
     this.dragging.pointer.selector = '.fc-draggable'
     this.dragging.touchScrollAllowed = false
 
-    let hitDragging = this.hitDragging = new HitDragging(this.dragging, globalContext.componentHash)
+    let hitDragging = this.hitDragging = new HitDragging(this.dragging, browserContext.componentHash)
     hitDragging.useSubjectCenter = true
     hitDragging.emitter.on('pointerdown', this.onPointerDown)
     hitDragging.emitter.on('dragstart', this.onDragStart)
@@ -65,9 +63,7 @@ export default class EventDragging {
   }
 
   onDragStart = (ev: PointerDragEvent) => {
-    let { globalContext } = this
-
-    globalContext.unselectEvent()
+    browserContext.unselectEvent()
     this.draggingSeg = (ev.subjectEl as any).fcSeg
 
     if (ev.isTouch) {
@@ -78,7 +74,7 @@ export default class EventDragging {
         eventInstanceId
       })
 
-      globalContext.reportEventSelection(this.component)
+      browserContext.reportEventSelection(this.component)
     }
   }
 
@@ -141,7 +137,7 @@ export default class EventDragging {
       !this.mutation &&
       !wasTouchScroll &&
       // was the previously event-selected component?
-      this.globalContext.eventSelectedComponent === this.component
+      browserContext.eventSelectedComponent === this.component
     ) {
       this.component.getCalendar().dispatch({
         type: 'CLEAR_SELECTED_EVENT'