Prechádzať zdrojové kódy

move ComponentContext into own file

Adam Shaw 6 rokov pred
rodič
commit
02cecad8d4

+ 1 - 1
packages/core/src/Calendar.ts

@@ -36,7 +36,7 @@ import EventHovering from './interactions/EventHovering'
 import StandardTheme from './theme/StandardTheme'
 import { CmdFormatterFunc } from './datelib/formatting-cmd'
 import { NamedTimeZoneImplClass } from './datelib/timezone'
-import { ComponentContext } from './component/Component'
+import ComponentContext from './component/ComponentContext'
 
 export interface DateClickApi extends DatePointApi {
   dayEl: HTMLElement

+ 3 - 1
packages/core/src/CalendarComponent.ts

@@ -1,4 +1,5 @@
-import Component, { ComponentContext } from './component/Component'
+import Component from './component/Component'
+import ComponentContext from './component/ComponentContext'
 import { ViewSpec } from './structs/view-spec'
 import View from './View'
 import Toolbar from './Toolbar'
@@ -17,6 +18,7 @@ import { CalendarState } from './reducers/types'
 import { ViewPropsTransformerClass } from './plugin-system'
 import { __assign } from 'tslib'
 
+
 export interface CalendarComponentProps extends CalendarState {
   viewSpec: ViewSpec
   dateProfileGenerator: DateProfileGenerator // for the current view

+ 1 - 1
packages/core/src/View.ts

@@ -12,7 +12,7 @@ import { DateSpan } from './structs/date-span'
 import { EventInteractionState } from './interactions/event-interaction-state'
 import { memoizeRendering } from './component/memoized-rendering'
 import { __assign } from 'tslib'
-import { ComponentContext } from './component/Component'
+import ComponentContext from './component/ComponentContext'
 
 export interface ViewProps {
   dateProfileGenerator: DateProfileGenerator

+ 2 - 1
packages/core/src/common/DayHeader.ts

@@ -1,4 +1,5 @@
-import Component, { ComponentContext } from '../component/Component'
+import Component from '../component/Component'
+import ComponentContext from '../component/ComponentContext'
 import { htmlToElement, removeElement } from '../util/dom-manip'
 import { DateMarker } from '../datelib/marker'
 import { DateProfile } from '../DateProfileGenerator'

+ 1 - 1
packages/core/src/common/table-utils.ts

@@ -3,7 +3,7 @@ import { htmlEscape } from '../util/html'
 import { buildGotoAnchorHtml, getDayClasses } from '../component/date-rendering'
 import { DateMarker, DAY_IDS } from '../datelib/marker'
 import { DateProfile } from '../DateProfileGenerator'
-import { ComponentContext } from '../component/Component'
+import ComponentContext from '../component/ComponentContext'
 
 // Computes a default column header formatting string if `colFormat` is not explicitly defined
 export function computeFallbackHeaderFormat(datesRepDistinctDays: boolean, dayCnt: number) {

+ 1 - 37
packages/core/src/component/Component.ts

@@ -1,44 +1,8 @@
-import Calendar from '../Calendar'
-import View from '../View'
-import Theme from '../theme/Theme'
-import { DateEnv } from '../datelib/env'
-import { parseFieldSpecs } from '../util/misc'
-import { createDuration, Duration } from '../datelib/duration'
+import ComponentContext from './ComponentContext'
 
 let guid = 0
 
 
-export class ComponentContext {
-
-  isRtl: boolean
-  eventOrderSpecs: any
-  nextDayThreshold: Duration
-
-  constructor(
-    public calendar: Calendar,
-    public theme: Theme,
-    public dateEnv: DateEnv,
-    public options: any,
-    public view?: View
-  ) {
-    this.isRtl = options.dir === 'rtl'
-    this.eventOrderSpecs = parseFieldSpecs(options.eventOrder)
-    this.nextDayThreshold = createDuration(options.nextDayThreshold)
-  }
-
-  extend(options?: any, view?: View) {
-    return new ComponentContext(
-      this.calendar,
-      this.theme,
-      this.dateEnv,
-      options || this.options,
-      view || this.view
-    )
-  }
-
-}
-
-
 export type EqualityFuncHash = { [propName: string]: (obj0, obj1) => boolean }
 
 export default class Component<PropsType> {

+ 39 - 0
packages/core/src/component/ComponentContext.ts

@@ -0,0 +1,39 @@
+import Calendar from '../Calendar'
+import View from '../View'
+import Theme from '../theme/Theme'
+import { DateEnv } from '../datelib/env'
+import { parseFieldSpecs } from '../util/misc'
+import { createDuration, Duration } from '../datelib/duration'
+
+
+export default class ComponentContext {
+
+  isRtl: boolean
+  eventOrderSpecs: any
+  nextDayThreshold: Duration
+
+  // TODO: move plugin system into here
+
+  constructor(
+    public calendar: Calendar,
+    public theme: Theme,
+    public dateEnv: DateEnv,
+    public options: any,
+    public view?: View
+  ) {
+    this.isRtl = options.dir === 'rtl'
+    this.eventOrderSpecs = parseFieldSpecs(options.eventOrder)
+    this.nextDayThreshold = createDuration(options.nextDayThreshold)
+  }
+
+  extend(options?: any, view?: View) {
+    return new ComponentContext(
+      this.calendar,
+      this.theme,
+      this.dateEnv,
+      options || this.options,
+      view || this.view
+    )
+  }
+
+}

+ 1 - 1
packages/core/src/component/date-rendering.ts

@@ -1,7 +1,7 @@
 import { htmlEscape, attrsToStr } from '../util/html'
 import { DateMarker, startOfDay, addDays, DAY_IDS } from '../datelib/marker'
 import { rangeContainsMarker } from '../datelib/date-range'
-import { ComponentContext } from '../component/Component'
+import ComponentContext from '../component/ComponentContext'
 import { DateProfile } from '../DateProfileGenerator'
 import { DateEnv } from '../datelib/env'
 

+ 1 - 1
packages/core/src/component/event-rendering.ts

@@ -7,7 +7,7 @@ import { Seg } from './DateComponent'
 import EventApi from '../api/EventApi'
 import { EventUi, EventUiHash, combineEventUis } from './event-ui'
 import { mapHash } from '../util/object'
-import { ComponentContext } from './Component'
+import ComponentContext from './ComponentContext'
 
 export interface EventRenderRange extends EventTuple {
   ui: EventUi

+ 1 - 1
packages/core/src/component/renderers/FgEventRenderer.ts

@@ -5,7 +5,7 @@ import { compareByFieldSpecs } from '../../util/misc'
 import { EventUi } from '../event-ui'
 import { EventRenderRange, filterSegsViaEls, triggerRenderedSegs, triggerWillRemoveSegs } from '../event-rendering'
 import { Seg } from '../DateComponent'
-import { ComponentContext } from '../Component'
+import ComponentContext from '../ComponentContext'
 
 
 export default abstract class FgEventRenderer {

+ 1 - 1
packages/core/src/component/renderers/FillRenderer.ts

@@ -2,7 +2,7 @@ import { cssToStr } from '../../util/html'
 import { htmlToElements, removeElement, elementMatches } from '../../util/dom-manip'
 import { Seg } from '../DateComponent'
 import { filterSegsViaEls, triggerRenderedSegs, triggerWillRemoveSegs } from '../event-rendering'
-import { ComponentContext } from '../Component'
+import ComponentContext from '../ComponentContext'
 
 /*
 TODO: when refactoring this class, make a new FillRenderer instance for each `type`

+ 2 - 1
packages/core/src/main.ts

@@ -101,7 +101,8 @@ export { default as PositionCache } from './common/PositionCache'
 export { default as ScrollComponent, ScrollbarWidths } from './common/ScrollComponent'
 export { ScrollController, ElementScrollController, WindowScrollController } from './common/scroll-controller'
 export { default as Theme } from './theme/Theme'
-export { default as Component, ComponentContext } from './component/Component'
+export { default as Component } from './component/Component'
+export { default as ComponentContext } from './component/ComponentContext'
 export { default as DateComponent, Seg, EventSegUiInteractionState } from './component/DateComponent'
 export { default as Calendar, DatePointTransform, DateSpanTransform, DateSelectionApi } from './Calendar'
 export { default as View, ViewProps } from './View'