Skip to content

Commit

Permalink
move interaction into own plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
arshaw committed Jan 28, 2019
1 parent 2d8a23b commit 4266879
Show file tree
Hide file tree
Showing 43 changed files with 158 additions and 129 deletions.
1 change: 1 addition & 0 deletions demos/agenda-views.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<link href='../dist/timegrid/main.css' rel='stylesheet' />
<link href='../dist/list/main.css' rel='stylesheet' />
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script src='../dist/timegrid/main.js'></script>
<script src='../dist/list/main.js'></script>
Expand Down
1 change: 1 addition & 0 deletions demos/background-events.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<link href='../dist/timegrid/main.css' rel='stylesheet' />
<link href='../dist/list/main.css' rel='stylesheet' />
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script src='../dist/timegrid/main.js'></script>
<script src='../dist/list/main.js'></script>
Expand Down
1 change: 1 addition & 0 deletions demos/basic-views.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<link href='../dist/core/main.css' rel='stylesheet' />
<link href='../dist/daygrid/main.css' rel='stylesheet' />
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script>

Expand Down
1 change: 1 addition & 0 deletions demos/default.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<link href='../dist/core/main.css' rel='stylesheet' />
<link href='../dist/daygrid/main.css' rel='stylesheet' />
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script>

Expand Down
1 change: 1 addition & 0 deletions demos/external-dragging-2cals.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<link href='../dist/core/main.css' rel='stylesheet' />
<link href='../dist/daygrid/main.css' rel='stylesheet' />
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script>

Expand Down
1 change: 1 addition & 0 deletions demos/external-dragging-builtin.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<link href='../dist/timegrid/main.css' rel='stylesheet' />
<link href='../dist/list/main.css' rel='stylesheet' />
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script src='../dist/timegrid/main.js'></script>
<script src='../dist/list/main.js'></script>
Expand Down
1 change: 1 addition & 0 deletions demos/full-height.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<link href='../dist/timegrid/main.css' rel='stylesheet' />
<link href='../dist/list/main.css' rel='stylesheet' />
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script src='../dist/timegrid/main.js'></script>
<script src='../dist/list/main.js'></script>
Expand Down
1 change: 1 addition & 0 deletions demos/gcal.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<link href='../dist/list/main.css' rel='stylesheet' />
<script src='../node_modules/superagent/superagent.js'></script>
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script src='../dist/list/main.js'></script>
<script src='../dist/gcal/main.js'></script>
Expand Down
1 change: 1 addition & 0 deletions demos/json.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<link href='../dist/list/main.css' rel='stylesheet' />
<script src='../node_modules/superagent/superagent.js'></script>
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script src='../dist/timegrid/main.js'></script>
<script src='../dist/list/main.js'></script>
Expand Down
1 change: 1 addition & 0 deletions demos/list-views.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<link href='../dist/core/main.css' rel='stylesheet' />
<link href='../dist/list/main.css' rel='stylesheet' />
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/list/main.js'></script>
<script>

Expand Down
1 change: 1 addition & 0 deletions demos/locales.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<link href='../dist/list/main.css' rel='stylesheet' />
<script src='../dist/core/main.js'></script>
<script src='../dist/core/locales-all.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script src='../dist/timegrid/main.js'></script>
<script src='../dist/list/main.js'></script>
Expand Down
1 change: 1 addition & 0 deletions demos/rrule.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<link href='../dist/list/main.css' rel='stylesheet' />
<script src='../node_modules/rrule/dist/es5/rrule.js'></script>
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script src='../dist/timegrid/main.js'></script>
<script src='../dist/list/main.js'></script>
Expand Down
1 change: 1 addition & 0 deletions demos/selectable.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
<link href='../dist/daygrid/main.css' rel='stylesheet' />
<link href='../dist/timegrid/main.css' rel='stylesheet' />
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script src='../dist/timegrid/main.js'></script>
<script>
Expand Down
1 change: 1 addition & 0 deletions demos/themes.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<link href='../dist/daygrid/main.css' rel='stylesheet' />
<link href='../dist/list/main.css' rel='stylesheet' />
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script src='../dist/timegrid/main.js'></script>
<script src='../dist/list/main.js'></script>
Expand Down
1 change: 1 addition & 0 deletions demos/time-zones.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<link href='../dist/list/main.css' rel='stylesheet' />
<script src='../node_modules/superagent/superagent.js'></script>
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script src='../dist/timegrid/main.js'></script>
<script src='../dist/list/main.js'></script>
Expand Down
1 change: 1 addition & 0 deletions demos/week-numbers.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<link href='../dist/timegrid/main.css' rel='stylesheet' />
<link href='../dist/list/main.css' rel='stylesheet' />
<script src='../dist/core/main.js'></script>
<script src='../dist/interaction/main.js'></script>
<script src='../dist/daygrid/main.js'></script>
<script src='../dist/timegrid/main.js'></script>
<script src='../dist/list/main.js'></script>
Expand Down
1 change: 1 addition & 0 deletions karma.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ module.exports = function(config) {
// core and plugin files (ordering matters because of dependencies)
'dist/core/main.+(js|css)',
'dist/core/locales-all.js',
'dist/interaction/main.+(js|css)',
'dist/daygrid/main.+(js|css)',
'dist/timegrid/main.+(js|css)',
'dist/list/main.+(js|css)',
Expand Down
25 changes: 5 additions & 20 deletions src/core/Calendar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,6 @@ import { PointerDragEvent } from './interactions/pointer'
import { InteractionSettingsInput, parseInteractionSettings, Interaction, interactionSettingsStore, InteractionClass } from './interactions/interaction'
import EventClicking from './interactions/EventClicking'
import EventHovering from './interactions/EventHovering'
import DateClicking from './interactions/DateClicking'
import DateSelecting from './interactions/DateSelecting'
import EventDragging from './interactions/EventDragging'
import EventResizing from './interactions/EventResizing'
import UnselectAuto from './interactions/UnselectAuto'

export interface DateClickApi extends DatePointApi {
dayEl: HTMLElement
Expand Down Expand Up @@ -92,7 +87,6 @@ export default class Calendar {

calendarInteractions: CalendarInteraction[]
interactionsStore: { [componentUid: string]: Interaction[] } = {}
unselectAuto: UnselectAuto // TODO: kill
removeNavLinkListener: any

windowResizeProxy: any
Expand Down Expand Up @@ -137,15 +131,10 @@ export default class Calendar {
this.publiclyTrigger('_init') // for tests
this.hydrate()

let DEFAULT_CALENDAR_INTERACTION_CLASSES: CalendarInteractionClass[] = [
UnselectAuto
]
let calendarInteractionClasses = DEFAULT_CALENDAR_INTERACTION_CLASSES.concat(
this.pluginSystem.hooks.calendarInteractions
)
this.calendarInteractions = calendarInteractionClasses.map((calendarInteractionClass) => {
return new calendarInteractionClass(this)
})
this.calendarInteractions = this.pluginSystem.hooks.calendarInteractions
.map((calendarInteractionClass) => {
return new calendarInteractionClass(this)
})
}


Expand Down Expand Up @@ -863,11 +852,7 @@ export default class Calendar {
let settings = parseInteractionSettings(component, settingsInput)
let DEFAULT_INTERACTIONS: InteractionClass[] = [
EventClicking,
EventHovering,
EventDragging,
EventResizing,
DateClicking,
DateSelecting
EventHovering
]
let interactionClasses: InteractionClass[] = DEFAULT_INTERACTIONS.concat(
this.pluginSystem.hooks.componentInteractions
Expand Down
2 changes: 1 addition & 1 deletion src/core/interactions/external-element-dragging.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { DateSpan } from '../structs/date-span';
import { DateSpan } from '../structs/date-span'
import { DragMeta } from '../structs/drag-meta'

export type ExternalDefTransform = (dateSpan: DateSpan, dragMeta: DragMeta) => any
2 changes: 1 addition & 1 deletion src/core/interactions/interaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export interface InteractionSettings {
useEventCenter: boolean
}

export type InteractionSettingsStore = { [componenUid: string]: InteractionSettings }
export type InteractionSettingsStore = { [componenUid: string]: InteractionSettings }

export function parseInteractionSettings(component: DateComponent<any>, input: InteractionSettingsInput): InteractionSettings {
return {
Expand Down
42 changes: 25 additions & 17 deletions src/core/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@ export const version = '<%= version %>'

// types
export { OptionsInput } from './types/input-types'
export { EventInput, EventDef, EventDefHash, EventInstance, EventInstanceHash } from './structs/event'
export {
EventInput, EventDef, EventDefHash, EventInstance, EventInstanceHash,
parseEventDef, createEventInstance, EventTuple
} from './structs/event'
export { BusinessHoursInput, parseBusinessHours } from './structs/business-hours'

export {
Expand All @@ -33,7 +36,10 @@ export {
matchCellWidths, uncompensateScroll, compensateScroll, subtractInnerElHeight,
isMultiDayRange,
distributeHeight,
undistributeHeight
undistributeHeight,
preventSelection, allowSelection, preventContextMenu, allowContextMenu,
compareNumbers, enableCursor, disableCursor,
diffDates
} from './util/misc'

export {
Expand All @@ -51,7 +57,9 @@ export { memoizeRendering, MemoizedRendering } from './component/memoized-render

export {
intersectRects,
Rect, pointInsideRect
Rect, pointInsideRect,
constrainPoint,
getRectCenter, diffPoints, Point
} from './util/geom'

export { isPropsEqual, mapHash, filterHash } from './util/object'
Expand All @@ -68,10 +76,11 @@ export {
applyStyle,
applyStyleProp,
elementMatches,
elementClosest,
forceClassName
} from './util/dom-manip'

export { EventStore, filterEventStoreDefs, createEmptyEventStore, mergeEventStores } from './structs/event-store'
export { EventStore, filterEventStoreDefs, createEmptyEventStore, mergeEventStores, getRelevantEvents, eventTupleToStore } from './structs/event-store'
export { EventUiHash, EventUi, processScopedUiProps, combineEventUis } from './component/event-ui'
export { default as Splitter, SplittableProps } from './component/event-splitting'
export { buildGotoAnchorHtml, getAllDayHtml, getDayClasses } from './component/date-rendering'
Expand All @@ -94,23 +103,24 @@ export {
export { unpromisify } from './util/promise'

export { default as EmitterMixin, EmitterInterface } from './common/EmitterMixin'
export { DateRange, rangeContainsMarker, intersectRanges, rangesEqual, rangesIntersect } from './datelib/date-range'
export { DateRange, rangeContainsMarker, intersectRanges, rangesEqual, rangesIntersect, rangeContainsRange } from './datelib/date-range'
export { defineThemeSystem } from './theme/ThemeRegistry'
export { default as Mixin } from './common/Mixin'
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 DateComponent, Seg, EventSegUiInteractionState } from './component/DateComponent'
export { default as Calendar, DatePointTransform, DateSpanTransform } from './Calendar'
export { default as Calendar, DatePointTransform, DateSpanTransform, DateSelectionApi } from './Calendar'
export { default as View, ViewProps } from './View'
export { default as FgEventRenderer, buildSegCompareObj } from './component/renderers/FgEventRenderer'
export { default as FillRenderer } from './component/renderers/FillRenderer'

export { default as DateProfileGenerator, DateProfile } from './DateProfileGenerator'
export { ViewDef } from './structs/view-def'
export { ViewSpec, ViewSpecTransformer } from './structs/view-spec'
export { DateSpan, DateSpanApi, DatePointApi } from './structs/date-span'
export { DateSpan, DateSpanApi, DatePointApi, isDateSpansEqual } from './structs/date-span'

export { DateMarker, addDays, startOfDay, addMs, addWeeks, diffWeeks, diffWholeWeeks, diffWholeDays, diffDayAndTime, diffDays, isValidDate } from './datelib/marker'
export {
Expand All @@ -133,39 +143,37 @@ export { parse as parseMarker } from './datelib/parsing'

export { registerEventSourceDef, EventSource, EventSourceHash } from './structs/event-source'

export { Interaction, InteractionSettings, interactionSettingsToStore, interactionSettingsStore, InteractionSettingsStore } from './interactions/interaction'
export { PointerDragEvent } from './interactions/pointer'
export { default as PointerDragging } from './dnd/PointerDragging'
export { default as ElementDragging } from './dnd/ElementDragging'
export { default as Draggable } from './interactions-external/ExternalDraggable'
export { default as ThirdPartyDraggable } from './interactions-external/ThirdPartyDraggable'

export { Hit } from './interactions/hit'
export { dateSelectionJoinTransformer } from './interactions/date-selecting'
export { eventDragMutationMassager } from './interactions/event-dragging'
export { EventResizeJoinTransforms } from './interactions/event-resizing'

export { formatDate, formatRange } from './formatting-api'

export { globalDefaults, globalHooks } from './options'

export { registerRecurringType, ParsedRecurring } from './structs/recurring-event'

export { DragMetaInput, DragMeta, parseDragMeta } from './structs/drag-meta'

export { createPlugin, PluginDef, PluginDefInput, ViewPropsTransformer, ViewContainerModifier } from './plugin-system'
export { reducerFunc, Action, CalendarState } from './reducers/types'
export { CalendarComponentProps } from './CalendarComponent'

export { default as DayHeader } from './common/DayHeader'
export { computeFallbackHeaderFormat, renderDateCell } from './common/table-utils'

export { default as OffsetTracker } from './common/OffsetTracker'

export { default as DaySeries } from './common/DaySeries'

export { EventInteractionState } from './interactions/event-interaction-state'
export { EventRenderRange, sliceEventStore, hasBgRendering } from './component/event-rendering'
export { EventRenderRange, sliceEventStore, hasBgRendering, getElSeg } from './component/event-rendering'

export { default as DayTable, DayTableSeg, DayTableCell } from './common/DayTable'

export { default as Slicer, SlicedProps } from './common/slicing-utils'

export { EventMutation } from './structs/event-mutation'
export { Constraint, ConstraintInput, AllowFunc, isPropsValid } from './validation'
export { EventMutation, applyMutationToEventStore } from './structs/event-mutation'
export { Constraint, ConstraintInput, AllowFunc, isPropsValid, isInteractionValid } from './validation'
export { default as EventApi } from './api/EventApi'
3 changes: 1 addition & 2 deletions src/core/plugin-system.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { reducerFunc } from './reducers/types'
import { eventDefParserFunc } from './structs/event'
import { eventDefMutationApplier } from './structs/event-mutation'
import Calendar, { DatePointTransform, DateSpanTransform } from './Calendar'
import Calendar, { DatePointTransform, DateSpanTransform, CalendarInteractionClass } from './Calendar'
import { ViewConfigInputHash } from './structs/view-config'
import { ViewSpecTransformer, ViewSpec } from './structs/view-spec'
import View, { ViewProps } from './View'
Expand All @@ -12,7 +12,6 @@ import { dateSelectionJoinTransformer } from './interactions/date-selecting'
import { EventResizeJoinTransforms } from './interactions/event-resizing'
import { ExternalDefTransform } from './interactions/external-element-dragging'
import { InteractionClass } from './interactions/interaction'
import { CalendarInteractionClass } from './Calendar'

// TODO: easier way to add new hooks? need to update a million things

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { getClippingParents, computeRect } from '../util/dom-geom'
import { pointInsideRect, Rect } from '../util/geom'
import { ElementScrollGeomCache } from '../common/scroll-geom-cache'
import {
getClippingParents, computeRect,
pointInsideRect, Rect
} from '@fullcalendar/core'
import { ElementScrollGeomCache } from './scroll-geom-cache'

/*
When this class is instantiated, it records the offset of an element (relative to the document topleft),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ScrollGeomCache, ElementScrollGeomCache, WindowScrollGeomCache } from '../common/scroll-geom-cache'
import { ScrollGeomCache, ElementScrollGeomCache, WindowScrollGeomCache } from '../scroll-geom-cache'

interface Edge {
scrollCache: ScrollGeomCache
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import EmitterMixin from '../common/EmitterMixin'
import { EmitterMixin } from '@fullcalendar/core'

/*
An abstraction for a dragging interaction originating on an event.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import { removeElement, applyStyle } from '../util/dom-manip'
import { whenTransitionDone } from '../util/dom-event'
import { Rect } from '../util/geom'
import { removeElement, applyStyle, whenTransitionDone, Rect } from '@fullcalendar/core'

/*
An effect in which an element follows the movement of a pointer across the screen.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { PointerDragEvent } from '../interactions/pointer'
import { PointerDragEvent, preventSelection, allowSelection, preventContextMenu, allowContextMenu } from '@fullcalendar/core'
import PointerDragging from './PointerDragging'
import { preventSelection, allowSelection, preventContextMenu, allowContextMenu } from '../util/misc'
import ElementMirror from './ElementMirror'
import ElementDragging from './ElementDragging'
import AutoScroller from './AutoScroller'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import { globalHooks } from '../options'
import { elementClosest } from '../util/dom-manip'
import { default as EmitterMixin } from '../common/EmitterMixin'
import { PointerDragEvent } from '../interactions/pointer'
import { globalHooks, elementClosest, EmitterMixin, PointerDragEvent } from '@fullcalendar/core'

globalHooks.touchMouseIgnoreWait = 500

Expand Down

0 comments on commit 4266879

Please sign in to comment.