@sunsama/event-calendar 0.2.5 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/lib/commonjs/components/all-day-events.js +5 -6
  2. package/lib/commonjs/components/all-day-events.js.map +1 -1
  3. package/lib/commonjs/components/event-container.js.map +1 -1
  4. package/lib/commonjs/components/timed-event-container.js.map +1 -1
  5. package/lib/commonjs/hooks/use-events.js +4 -4
  6. package/lib/commonjs/hooks/use-events.js.map +1 -1
  7. package/lib/commonjs/hooks/use-is-editing.js.map +1 -1
  8. package/lib/commonjs/index.js +2 -1
  9. package/lib/commonjs/index.js.map +1 -1
  10. package/lib/commonjs/types.js.map +1 -1
  11. package/lib/commonjs/utils/compute-positioning.js.map +1 -1
  12. package/lib/commonjs/utils/double-tap-reset-zoom-gesture.js.map +1 -1
  13. package/lib/commonjs/utils/generate-event-layouts.js.map +1 -1
  14. package/lib/commonjs/utils/globals.js.map +1 -1
  15. package/lib/commonjs/utils/pan-edit-event-gesture.js.map +1 -1
  16. package/lib/module/components/all-day-events.js +5 -6
  17. package/lib/module/components/all-day-events.js.map +1 -1
  18. package/lib/module/components/event-container.js.map +1 -1
  19. package/lib/module/components/timed-event-container.js.map +1 -1
  20. package/lib/module/hooks/use-events.js +4 -4
  21. package/lib/module/hooks/use-events.js.map +1 -1
  22. package/lib/module/hooks/use-is-editing.js.map +1 -1
  23. package/lib/module/index.js +2 -1
  24. package/lib/module/index.js.map +1 -1
  25. package/lib/module/types.js.map +1 -1
  26. package/lib/module/utils/compute-positioning.js.map +1 -1
  27. package/lib/module/utils/double-tap-reset-zoom-gesture.js.map +1 -1
  28. package/lib/module/utils/generate-event-layouts.js.map +1 -1
  29. package/lib/module/utils/globals.js.map +1 -1
  30. package/lib/module/utils/pan-edit-event-gesture.js.map +1 -1
  31. package/lib/typescript/commonjs/components/all-day-events.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/components/event-container.d.ts +4 -4
  33. package/lib/typescript/commonjs/components/event-container.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/components/timed-event-container.d.ts +4 -4
  35. package/lib/typescript/commonjs/components/timed-event-container.d.ts.map +1 -1
  36. package/lib/typescript/commonjs/hooks/use-events.d.ts +12 -12
  37. package/lib/typescript/commonjs/hooks/use-events.d.ts.map +1 -1
  38. package/lib/typescript/commonjs/hooks/use-is-editing.d.ts +6 -6
  39. package/lib/typescript/commonjs/hooks/use-is-editing.d.ts.map +1 -1
  40. package/lib/typescript/commonjs/index.d.ts +11 -11
  41. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  42. package/lib/typescript/commonjs/types.d.ts +15 -18
  43. package/lib/typescript/commonjs/types.d.ts.map +1 -1
  44. package/lib/typescript/commonjs/utils/compute-positioning.d.ts +4 -4
  45. package/lib/typescript/commonjs/utils/compute-positioning.d.ts.map +1 -1
  46. package/lib/typescript/commonjs/utils/double-tap-reset-zoom-gesture.d.ts +2 -2
  47. package/lib/typescript/commonjs/utils/double-tap-reset-zoom-gesture.d.ts.map +1 -1
  48. package/lib/typescript/commonjs/utils/generate-event-layouts.d.ts +4 -4
  49. package/lib/typescript/commonjs/utils/generate-event-layouts.d.ts.map +1 -1
  50. package/lib/typescript/commonjs/utils/globals.d.ts +1 -1
  51. package/lib/typescript/commonjs/utils/globals.d.ts.map +1 -1
  52. package/lib/typescript/commonjs/utils/pan-edit-event-gesture.d.ts +2 -2
  53. package/lib/typescript/commonjs/utils/pan-edit-event-gesture.d.ts.map +1 -1
  54. package/lib/typescript/module/components/all-day-events.d.ts.map +1 -1
  55. package/lib/typescript/module/components/event-container.d.ts +4 -4
  56. package/lib/typescript/module/components/event-container.d.ts.map +1 -1
  57. package/lib/typescript/module/components/timed-event-container.d.ts +4 -4
  58. package/lib/typescript/module/components/timed-event-container.d.ts.map +1 -1
  59. package/lib/typescript/module/hooks/use-events.d.ts +12 -12
  60. package/lib/typescript/module/hooks/use-events.d.ts.map +1 -1
  61. package/lib/typescript/module/hooks/use-is-editing.d.ts +6 -6
  62. package/lib/typescript/module/hooks/use-is-editing.d.ts.map +1 -1
  63. package/lib/typescript/module/index.d.ts +11 -11
  64. package/lib/typescript/module/index.d.ts.map +1 -1
  65. package/lib/typescript/module/types.d.ts +15 -18
  66. package/lib/typescript/module/types.d.ts.map +1 -1
  67. package/lib/typescript/module/utils/compute-positioning.d.ts +4 -4
  68. package/lib/typescript/module/utils/compute-positioning.d.ts.map +1 -1
  69. package/lib/typescript/module/utils/double-tap-reset-zoom-gesture.d.ts +2 -2
  70. package/lib/typescript/module/utils/double-tap-reset-zoom-gesture.d.ts.map +1 -1
  71. package/lib/typescript/module/utils/generate-event-layouts.d.ts +4 -4
  72. package/lib/typescript/module/utils/generate-event-layouts.d.ts.map +1 -1
  73. package/lib/typescript/module/utils/globals.d.ts +1 -1
  74. package/lib/typescript/module/utils/globals.d.ts.map +1 -1
  75. package/lib/typescript/module/utils/pan-edit-event-gesture.d.ts +2 -2
  76. package/lib/typescript/module/utils/pan-edit-event-gesture.d.ts.map +1 -1
  77. package/package.json +2 -3
  78. package/src/components/all-day-events.tsx +7 -11
  79. package/src/components/event-container.tsx +12 -6
  80. package/src/components/timed-event-container.tsx +10 -6
  81. package/src/hooks/use-events.tsx +20 -21
  82. package/src/hooks/use-is-editing.tsx +17 -10
  83. package/src/index.tsx +24 -23
  84. package/src/types.ts +15 -21
  85. package/src/utils/__tests___/compute-positioning.test.ts +1 -1
  86. package/src/utils/compute-positioning.ts +5 -5
  87. package/src/utils/double-tap-reset-zoom-gesture.ts +3 -3
  88. package/src/utils/generate-event-layouts.ts +17 -17
  89. package/src/utils/globals.ts +1 -1
  90. package/src/utils/pan-edit-event-gesture.ts +3 -3
package/src/index.tsx CHANGED
@@ -14,52 +14,52 @@ import type { CalendarEvent, Config, onCreateEvent, ThemeStyle } from "./types";
14
14
 
15
15
  export * from "./types";
16
16
 
17
- type EventCalenderProps = {
17
+ type EventCalenderProps<T extends CalendarEvent> = {
18
18
  canCreateEvents?: boolean;
19
- canEditEvent?: Config["canEditEvent"];
19
+ canEditEvent?: Config<T>["canEditEvent"];
20
20
  dayDate: string;
21
- events: CalendarEvent[];
21
+ events: T[];
22
22
  fiveMinuteInterval?: boolean;
23
23
  initialZoomLevel?: number;
24
24
  maxAllDayEvents?: number;
25
25
  onCreateEvent?: onCreateEvent;
26
- onEventEdit?: Config["onEventEdit"];
27
- onPressEvent?: Config["onPressEvent"];
28
- renderDragBars?: Config["renderDragBars"];
29
- renderEvent: Config["renderEvent"];
30
- renderNewEventContainer?: Config["renderNewEventContainer"];
26
+ onEventEdit?: Config<T>["onEventEdit"];
27
+ onPressEvent?: Config<T>["onPressEvent"];
28
+ renderDragBars?: Config<T>["renderDragBars"];
29
+ renderEvent: Config<T>["renderEvent"];
30
+ renderNewEventContainer?: Config<T>["renderNewEventContainer"];
31
31
  showTimeIndicator?: boolean;
32
32
  theme?: ThemeStyle;
33
33
  timeFormat?: string;
34
34
  timezone?: string;
35
35
  updateLocalStateAfterEdit?: boolean;
36
36
  userCalendarId?: string;
37
- extraTimedComponents?: Config["extraTimedComponents"];
38
- onZoomChange?: Config["onZoomChange"];
37
+ extraTimedComponents?: Config<T>["extraTimedComponents"];
38
+ onZoomChange?: Config<T>["onZoomChange"];
39
39
  };
40
40
 
41
- type EventCalenderContentProps = {
41
+ type EventCalenderContentProps<T extends CalendarEvent> = {
42
42
  canCreateEvents: boolean;
43
- canEditEvent: Config["canEditEvent"];
43
+ canEditEvent: Config<T>["canEditEvent"];
44
44
  startCalendarDate: Moment;
45
45
  fiveMinuteInterval?: boolean;
46
46
  initialZoomLevel: number;
47
47
  maxAllDayEvents: number;
48
48
  onCreateEvent?: onCreateEvent;
49
- onEventEdit?: Config["onEventEdit"];
50
- onPressEvent?: Config["onPressEvent"];
51
- renderDragBars?: Config["renderDragBars"];
52
- renderEvent: Config["renderEvent"];
53
- renderNewEventContainer?: Config["renderNewEventContainer"];
49
+ onEventEdit?: Config<T>["onEventEdit"];
50
+ onPressEvent?: Config<T>["onPressEvent"];
51
+ renderDragBars?: Config<T>["renderDragBars"];
52
+ renderEvent: Config<T>["renderEvent"];
53
+ renderNewEventContainer?: Config<T>["renderNewEventContainer"];
54
54
  showTimeIndicator?: boolean;
55
55
  theme?: ThemeStyle;
56
56
  timeFormat: string;
57
57
  timezone: string;
58
58
  updateLocalStateAfterEdit: boolean;
59
- extraTimedComponents?: Config["extraTimedComponents"];
60
- onZoomChange?: Config["onZoomChange"];
59
+ extraTimedComponents?: Config<T>["extraTimedComponents"];
60
+ onZoomChange?: Config<T>["onZoomChange"];
61
61
  };
62
- const EventCalendarContent = ({
62
+ const EventCalendarContent = <T extends CalendarEvent>({
63
63
  canCreateEvents,
64
64
  canEditEvent,
65
65
  fiveMinuteInterval,
@@ -79,7 +79,7 @@ const EventCalendarContent = ({
79
79
  extraTimedComponents,
80
80
  onZoomChange,
81
81
  startCalendarDate,
82
- }: EventCalenderContentProps) => {
82
+ }: EventCalenderContentProps<T>) => {
83
83
  const zoomLevel = useSharedValue(initialZoomLevel);
84
84
  const createY = useSharedValue(-1);
85
85
  const maximumHour = useSharedValue(0);
@@ -114,6 +114,7 @@ const EventCalendarContent = ({
114
114
  extraTimedComponents,
115
115
  onZoomChange,
116
116
  updateLocalStateAfterEdit,
117
+ theme,
117
118
  }}
118
119
  >
119
120
  <AllDayEvents />
@@ -137,7 +138,7 @@ const EventCalendarContent = ({
137
138
  /**
138
139
  * Wraps `EventCalendarContent` inside `ClonedEventsProvider` to manage cloned events independently.
139
140
  */
140
- const EventCalendar = ({
141
+ const EventCalendar = <T extends CalendarEvent>({
141
142
  timeFormat = "HH:mm",
142
143
  dayDate,
143
144
  events,
@@ -149,7 +150,7 @@ const EventCalendar = ({
149
150
  canCreateEvents = true,
150
151
  canEditEvent = true,
151
152
  ...props
152
- }: EventCalenderProps) => {
153
+ }: EventCalenderProps<T>) => {
153
154
  const startCalendarDate = useMemo(
154
155
  () => moment.tz(dayDate, timezone).startOf("day"),
155
156
  [dayDate, timezone]
package/src/types.ts CHANGED
@@ -12,16 +12,16 @@ export type CalendarEvent = {
12
12
  isAllDay?: boolean;
13
13
  };
14
14
 
15
- export type AllDayEventLayoutType = {
16
- event: CalendarEvent;
15
+ export type AllDayEventLayoutType<T extends CalendarEvent> = {
16
+ event: T;
17
17
  rowIndex?: number;
18
18
  visibleWidthDays?: number;
19
19
  extend: EventExtend;
20
20
  isPrimaryRendered?: boolean;
21
21
  };
22
22
 
23
- export type PartDayEventLayoutType = {
24
- event: CalendarEvent;
23
+ export type PartDayEventLayoutType<T extends CalendarEvent> = {
24
+ event: T;
25
25
  collisions?: {
26
26
  total: number;
27
27
  order: number;
@@ -29,8 +29,8 @@ export type PartDayEventLayoutType = {
29
29
  position: EventPosition;
30
30
  };
31
31
 
32
- export interface CollisionObject {
33
- event: CalendarEvent;
32
+ export interface CollisionObject<T extends CalendarEvent> {
33
+ event: T;
34
34
  collisions?: { total: number; order: number };
35
35
  }
36
36
 
@@ -41,9 +41,9 @@ export type EventPosition = {
41
41
  marginLeft: string;
42
42
  };
43
43
 
44
- export type FullCalendarEventLayout = {
45
- allDayEventsLayout: AllDayEventLayoutType[];
46
- partDayEventsLayout: PartDayEventLayoutType[];
44
+ export type FullCalendarEventLayout<T extends CalendarEvent> = {
45
+ allDayEventsLayout: AllDayEventLayoutType<T>[];
46
+ partDayEventsLayout: PartDayEventLayoutType<T>[];
47
47
  };
48
48
 
49
49
  export type ThemeStyle = {
@@ -65,12 +65,6 @@ export type ThemeStyle = {
65
65
  backgroundHoursLayoutContainer?: ViewStyle;
66
66
  // New event inner container, if you don't want to use the `renderNewEventContainer` prop
67
67
  newEventContainer?: ViewStyle;
68
- // Event container title
69
- eventTitle?: TextStyle;
70
- // Event container subtitle
71
- eventSubtitle?: TextStyle;
72
- // Event container main container
73
- eventContainer?: ViewStyle;
74
68
  // Style the time indicator
75
69
  timeIndicator?: ViewStyle;
76
70
  // All day main container
@@ -91,19 +85,19 @@ export type OnCreateEventProps = {
91
85
 
92
86
  export type onCreateEvent = (arg: OnCreateEventProps) => void;
93
87
 
94
- export type Config = {
88
+ export type Config<T extends CalendarEvent> = {
95
89
  timezone: string;
96
90
  timeFormat: string;
97
91
  dayDate: Moment;
98
92
  theme?: ThemeStyle;
99
93
  zoomLevel: SharedValue<number>;
100
- layout: FullCalendarEventLayout;
94
+ layout: FullCalendarEventLayout<T>;
101
95
  createY: SharedValue<number>;
102
96
  maximumHour: SharedValue<number>;
103
97
  onCreateEvent?: onCreateEvent;
104
98
  initialZoomLevel: number;
105
99
  renderEvent: (
106
- event: CalendarEvent,
100
+ event: T,
107
101
  extended: EventExtend,
108
102
  eventHeight?: SharedValue<number>,
109
103
  updatedTimes?: {
@@ -112,18 +106,18 @@ export type Config = {
112
106
  }
113
107
  ) => ReactNode;
114
108
  onEventEdit?: (params: {
115
- event: CalendarEvent;
109
+ event: T;
116
110
  status: EditStatus;
117
111
  updatedTimes?: {
118
112
  updatedStart: string;
119
113
  updatedEnd: string;
120
114
  };
121
115
  }) => void;
122
- onPressEvent?: (event: CalendarEvent) => void;
116
+ onPressEvent?: (event: T) => void;
123
117
  showTimeIndicator?: boolean;
124
118
  maxAllDayEvents: number;
125
119
  canCreateEvents: boolean;
126
- canEditEvent: boolean | ((event: CalendarEvent) => boolean);
120
+ canEditEvent: boolean | ((event: T) => boolean);
127
121
  renderNewEventContainer?: (hour: number, minute: number) => ReactNode;
128
122
  fiveMinuteInterval?: boolean;
129
123
  renderDragBars?: { top?: () => ReactNode; bottom?: () => ReactNode };
@@ -4,7 +4,7 @@ import { PartDayEventLayoutType } from "../../types";
4
4
 
5
5
  describe("computePositioning", () => {
6
6
  it("should compute positioning correctly without collisions", () => {
7
- const layout: PartDayEventLayoutType = {
7
+ const layout: PartDayEventLayoutType<any> = {
8
8
  event: {
9
9
  start: "2023-10-01T09:00:00Z",
10
10
  end: "2023-10-01T10:00:00Z",
@@ -1,18 +1,18 @@
1
1
  import moment, { Moment } from "moment-timezone";
2
- import { CollisionObject, EventPosition } from "../types";
2
+ import { type CalendarEvent, CollisionObject, EventPosition } from "../types";
3
3
 
4
- type ComputePositioning = {
4
+ type ComputePositioning<T extends CalendarEvent> = {
5
5
  // We only need the collisions part of this type
6
- collisionObject: CollisionObject;
6
+ collisionObject: CollisionObject<T>;
7
7
  startOfDayMoment: Moment;
8
8
  timezone: string;
9
9
  };
10
10
 
11
- const computePositioning = ({
11
+ const computePositioning = <T extends CalendarEvent>({
12
12
  collisionObject,
13
13
  startOfDayMoment,
14
14
  timezone,
15
- }: ComputePositioning): EventPosition => {
15
+ }: ComputePositioning<T>): EventPosition => {
16
16
  const startDateMoment = moment.tz(collisionObject.event.start, timezone);
17
17
  const durationMinutes = moment
18
18
  .tz(collisionObject.event.end, timezone)
@@ -1,11 +1,11 @@
1
1
  import { Gesture } from "react-native-gesture-handler";
2
2
  import { runOnJS, SharedValue } from "react-native-reanimated";
3
- import { Config } from "../types";
3
+ import { type CalendarEvent, Config } from "../types";
4
4
 
5
- const doubleTapGesture = (
5
+ const doubleTapGesture = <T extends CalendarEvent>(
6
6
  zoomLevel: SharedValue<number>,
7
7
  initialZoomLevel: number,
8
- onZoomChange?: Config["onZoomChange"]
8
+ onZoomChange?: Config<T>["onZoomChange"]
9
9
  ) =>
10
10
  Gesture.Tap()
11
11
  .numberOfTaps(2)
@@ -23,8 +23,8 @@ import {
23
23
  PartDayEventLayoutType,
24
24
  } from "../types";
25
25
 
26
- interface GenerateEventLayouts {
27
- events: CalendarEvent[];
26
+ interface GenerateEventLayouts<T extends CalendarEvent> {
27
+ events: T[];
28
28
  userCalendarId: string;
29
29
  timezone: string;
30
30
  startCalendarDate: string;
@@ -33,7 +33,7 @@ interface GenerateEventLayouts {
33
33
  calendarViewInterval?: CalendarViewIntervalType;
34
34
  }
35
35
 
36
- export const generateEventLayouts = ({
36
+ export const generateEventLayouts = <T extends CalendarEvent>({
37
37
  events,
38
38
  startCalendarDate,
39
39
  endCalendarDate,
@@ -41,7 +41,7 @@ export const generateEventLayouts = ({
41
41
  calendarViewInterval = "1day",
42
42
  startDayOfWeekOffset = 0,
43
43
  timezone,
44
- }: GenerateEventLayouts) => {
44
+ }: GenerateEventLayouts<T>) => {
45
45
  // Calculate spacial layout for CalendarViewDay events
46
46
  // in month view, midnight-spanning part-day events are rendered as all-day multi-day
47
47
  const [allDayEvents, partDayEvents] = _partition([...events], (event) =>
@@ -99,7 +99,7 @@ export const generateEventLayouts = ({
99
99
  });
100
100
 
101
101
  const result: {
102
- [day: string]: FullCalendarEventLayout;
102
+ [day: string]: FullCalendarEventLayout<T>;
103
103
  } = {};
104
104
 
105
105
  calendarViewDateRanges.forEach((date) => {
@@ -142,8 +142,8 @@ export const generateEventLayouts = ({
142
142
  const endDate = moment.tz(startDate, timezone).endOf("day").toDate();
143
143
  const showHours = !["month"].includes(calendarViewInterval);
144
144
  const dayId = calendarDate;
145
- const allDayEventsLayout: AllDayEventLayoutType[] = [];
146
- let partDayEventsLayout: PartDayEventLayoutType[] = [];
145
+ const allDayEventsLayout: AllDayEventLayoutType<T>[] = [];
146
+ let partDayEventsLayout: PartDayEventLayoutType<T>[] = [];
147
147
 
148
148
  const x = moment(startDate).diff(
149
149
  moment.tz(date.basisDate, timezone),
@@ -174,7 +174,7 @@ export const generateEventLayouts = ({
174
174
  partDayEventsLayout = partDayEventsLayout.concat(
175
175
  handleCollisions(
176
176
  events.filter(
177
- (event) =>
177
+ (event: T) =>
178
178
  !isAllDayOrSpansMidnight(event, timezone) &&
179
179
  dateRangeIntersect(
180
180
  {
@@ -201,11 +201,11 @@ export const generateEventLayouts = ({
201
201
  return result;
202
202
  };
203
203
 
204
- const combineEventPosition = (
204
+ const combineEventPosition = <T extends CalendarEvent>(
205
205
  dayDate: Moment,
206
206
  timezone: string,
207
- collisionObject: CollisionObject
208
- ): PartDayEventLayoutType => {
207
+ collisionObject: CollisionObject<T>
208
+ ): PartDayEventLayoutType<T> => {
209
209
  const position = computePositioning({
210
210
  timezone,
211
211
  collisionObject: collisionObject,
@@ -218,12 +218,12 @@ const combineEventPosition = (
218
218
  };
219
219
  };
220
220
 
221
- const handleCollisions = (
222
- allEvents: CalendarEvent[],
221
+ const handleCollisions = <T extends CalendarEvent>(
222
+ allEvents: T[],
223
223
  userCalendarId: string,
224
224
  dayDate: Moment,
225
225
  timezone: string
226
- ): PartDayEventLayoutType[] => {
226
+ ): PartDayEventLayoutType<T>[] => {
227
227
  let stackableEvents = _sortBy(allEvents, (event) => event.id);
228
228
  stackableEvents = _sortBy(stackableEvents, (event) => {
229
229
  // current user's primary calendar should always be leftmost option
@@ -233,8 +233,8 @@ const handleCollisions = (
233
233
  new Date(event.start).valueOf()
234
234
  );
235
235
  // calculate overlap stack properties
236
- const stackedEvtsByPos: Record<string, PartDayEventLayoutType[]> = {};
237
- let curStack: (CollisionObject | null)[] = [];
236
+ const stackedEvtsByPos: Record<string, PartDayEventLayoutType<T>[]> = {};
237
+ let curStack: (CollisionObject<T> | null)[] = [];
238
238
 
239
239
  for (const evt of stackableEvents) {
240
240
  // already sorted by startDate
@@ -302,7 +302,7 @@ const handleCollisions = (
302
302
  }
303
303
 
304
304
  // always draw position 0 stack elements first.
305
- let stackedEvents: PartDayEventLayoutType[] = [];
305
+ let stackedEvents: PartDayEventLayoutType<T>[] = [];
306
306
 
307
307
  Object.keys(stackedEvtsByPos).forEach(
308
308
  (pos) => (stackedEvents = stackedEvents.concat(stackedEvtsByPos[pos]))
@@ -1,7 +1,7 @@
1
1
  import { createContext } from "react";
2
2
  import { Config } from "../types";
3
3
 
4
- export const ConfigProvider = createContext<Config>(undefined as never);
4
+ export const ConfigProvider = createContext<Config<any>>(undefined as never);
5
5
 
6
6
  export const DEFAULT_MINUTE_HEIGHT = 0.8;
7
7
 
@@ -1,9 +1,9 @@
1
1
  import { Gesture } from "react-native-gesture-handler";
2
2
  import { runOnJS, SharedValue } from "react-native-reanimated";
3
3
  import { RefObject } from "react";
4
- import { PartDayEventLayoutType } from "../types";
4
+ import { type CalendarEvent, PartDayEventLayoutType } from "../types";
5
5
 
6
- const gesturePan = (
6
+ const gesturePan = <T extends CalendarEvent>(
7
7
  startY: SharedValue<number>,
8
8
  top: SharedValue<number>,
9
9
  currentY: SharedValue<number>,
@@ -12,7 +12,7 @@ const gesturePan = (
12
12
  height: SharedValue<number>,
13
13
  refNewEvent: RefObject<any>,
14
14
  fiveMinuteInterval?: boolean,
15
- isEditing?: null | PartDayEventLayoutType,
15
+ isEditing?: null | PartDayEventLayoutType<T>,
16
16
  startEditing?: () => void
17
17
  ) =>
18
18
  Gesture.Pan()