@sunsama/event-calendar 0.2.3 → 0.2.5

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 (44) hide show
  1. package/lib/commonjs/hooks/use-events.js +79 -0
  2. package/lib/commonjs/hooks/use-events.js.map +1 -0
  3. package/lib/commonjs/hooks/use-is-editing.js +6 -3
  4. package/lib/commonjs/hooks/use-is-editing.js.map +1 -1
  5. package/lib/commonjs/index.js +65 -35
  6. package/lib/commonjs/index.js.map +1 -1
  7. package/lib/module/hooks/use-events.js +72 -0
  8. package/lib/module/hooks/use-events.js.map +1 -0
  9. package/lib/module/hooks/use-is-editing.js +5 -2
  10. package/lib/module/hooks/use-is-editing.js.map +1 -1
  11. package/lib/module/index.js +65 -35
  12. package/lib/module/index.js.map +1 -1
  13. package/lib/typescript/commonjs/hooks/use-events.d.ts +31 -0
  14. package/lib/typescript/commonjs/hooks/use-events.d.ts.map +1 -0
  15. package/lib/typescript/commonjs/hooks/use-is-editing.d.ts.map +1 -1
  16. package/lib/typescript/commonjs/index.d.ts +4 -1
  17. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  18. package/lib/typescript/module/hooks/use-events.d.ts +31 -0
  19. package/lib/typescript/module/hooks/use-events.d.ts.map +1 -0
  20. package/lib/typescript/module/hooks/use-is-editing.d.ts.map +1 -1
  21. package/lib/typescript/module/index.d.ts +4 -1
  22. package/lib/typescript/module/index.d.ts.map +1 -1
  23. package/package.json +1 -1
  24. package/src/hooks/use-events.tsx +112 -0
  25. package/src/hooks/use-is-editing.tsx +9 -2
  26. package/src/index.tsx +92 -44
  27. package/lib/commonjs/hooks/use-cloned-events.js +0 -25
  28. package/lib/commonjs/hooks/use-cloned-events.js.map +0 -1
  29. package/lib/commonjs/hooks/use-events-layout.js +0 -34
  30. package/lib/commonjs/hooks/use-events-layout.js.map +0 -1
  31. package/lib/module/hooks/use-cloned-events.js +0 -21
  32. package/lib/module/hooks/use-cloned-events.js.map +0 -1
  33. package/lib/module/hooks/use-events-layout.js +0 -29
  34. package/lib/module/hooks/use-events-layout.js.map +0 -1
  35. package/lib/typescript/commonjs/hooks/use-cloned-events.d.ts +0 -11
  36. package/lib/typescript/commonjs/hooks/use-cloned-events.d.ts.map +0 -1
  37. package/lib/typescript/commonjs/hooks/use-events-layout.d.ts +0 -13
  38. package/lib/typescript/commonjs/hooks/use-events-layout.d.ts.map +0 -1
  39. package/lib/typescript/module/hooks/use-cloned-events.d.ts +0 -11
  40. package/lib/typescript/module/hooks/use-cloned-events.d.ts.map +0 -1
  41. package/lib/typescript/module/hooks/use-events-layout.d.ts +0 -13
  42. package/lib/typescript/module/hooks/use-events-layout.d.ts.map +0 -1
  43. package/src/hooks/use-cloned-events.ts +0 -26
  44. package/src/hooks/use-events-layout.ts +0 -55
@@ -0,0 +1,31 @@
1
+ import { type Dispatch, type SetStateAction } from "react";
2
+ import { CalendarEvent, CalendarViewIntervalType, FullCalendarEventLayout } from "../types";
3
+ export type UpdateEvent = {
4
+ events: CalendarEvent[];
5
+ userCalendarId: string;
6
+ timezone: string;
7
+ startCalendarDate: string;
8
+ endCalendarDate: string;
9
+ startDayOfWeekOffset?: number;
10
+ calendarViewInterval?: CalendarViewIntervalType;
11
+ };
12
+ type EventsContextType = {
13
+ clonedEvents: CalendarEvent[];
14
+ updateClonedEvents: Dispatch<SetStateAction<CalendarEvent[]>>;
15
+ eventsLayout: FullCalendarEventLayout;
16
+ updateEventsLayout: (props: UpdateEvent) => void;
17
+ };
18
+ /**
19
+ * Provider that manages both cloned events & event layouts independently.
20
+ */
21
+ export declare const EventsProvider: ({ children, initialProps, updateLocalStateAfterEdit, }: {
22
+ children: React.ReactNode;
23
+ initialProps: UpdateEvent;
24
+ updateLocalStateAfterEdit?: boolean;
25
+ }) => import("react").JSX.Element;
26
+ /**
27
+ * Hook to access cloned events and event layouts.
28
+ */
29
+ export declare const useEvents: () => EventsContextType;
30
+ export {};
31
+ //# sourceMappingURL=use-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-events.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-events.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,cAAc,EAKpB,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;CACjD,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,kBAAkB,EAAE,QAAQ,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC9D,YAAY,EAAE,uBAAuB,CAAC;IACtC,kBAAkB,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CAClD,CAAC;AAKF;;GAEG;AACH,eAAO,MAAM,cAAc,2DAIxB;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,EAAE,WAAW,CAAC;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC,gCAoDA,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,yBAMrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-is-editing.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-is-editing.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,SAAS,EAIV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAkB,MAAM,yBAAyB,CAAC;AAItE,OAAO,EAAc,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAE9D,UAAU,aAAa;IACrB,SAAS,EAAE,IAAI,GAAG,sBAAsB,CAAC;IACzC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAY,EAAE,CACZ,QAAQ,EAAE,sBAAsB,GAAG,IAAI,EACvC,YAAY,CAAC,EAAE;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,KACE,IAAI,CAAC;CACX;AAID,eAAO,MAAM,YAAY,qBAOxB,CAAC;AAGF,eAAO,MAAM,iBAAiB,iBAAkB;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,sBAuEtE,CAAC"}
1
+ {"version":3,"file":"use-is-editing.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-is-editing.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,SAAS,EAIV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAkB,MAAM,yBAAyB,CAAC;AAGtE,OAAO,EAAc,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAG9D,UAAU,aAAa;IACrB,SAAS,EAAE,IAAI,GAAG,sBAAsB,CAAC;IACzC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAY,EAAE,CACZ,QAAQ,EAAE,sBAAsB,GAAG,IAAI,EACvC,YAAY,CAAC,EAAE;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,KACE,IAAI,CAAC;CACX;AAID,eAAO,MAAM,YAAY,qBAOxB,CAAC;AAGF,eAAO,MAAM,iBAAiB,iBAAkB;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,sBA8EtE,CAAC"}
@@ -23,6 +23,9 @@ type EventCalenderProps = {
23
23
  extraTimedComponents?: Config["extraTimedComponents"];
24
24
  onZoomChange?: Config["onZoomChange"];
25
25
  };
26
- declare const EventCalendar: ({ events, timeFormat, dayDate, theme, initialZoomLevel, onCreateEvent, timezone, renderEvent, onPressEvent, userCalendarId, showTimeIndicator, maxAllDayEvents, canCreateEvents, renderNewEventContainer, fiveMinuteInterval, canEditEvent, onEventEdit, renderDragBars, updateLocalStateAfterEdit, extraTimedComponents, onZoomChange, }: EventCalenderProps) => import("react").JSX.Element;
26
+ /**
27
+ * Wraps `EventCalendarContent` inside `ClonedEventsProvider` to manage cloned events independently.
28
+ */
29
+ declare const EventCalendar: ({ timeFormat, dayDate, events, initialZoomLevel, timezone, userCalendarId, maxAllDayEvents, updateLocalStateAfterEdit, canCreateEvents, canEditEvent, ...props }: EventCalenderProps) => import("react").JSX.Element;
27
30
  export default EventCalendar;
28
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEhF,cAAc,SAAS,CAAC;AAExB,KAAK,kBAAkB,GAAG;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACnC,uBAAuB,CAAC,EAAE,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;CACvC,CAAC;AAEF,QAAA,MAAM,aAAa,8UAsBhB,kBAAkB,gCAwEpB,CAAC;AA0BF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEhF,cAAc,SAAS,CAAC;AAExB,KAAK,kBAAkB,GAAG;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACnC,uBAAuB,CAAC,EAAE,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;CACvC,CAAC;AAkGF;;GAEG;AACH,QAAA,MAAM,aAAa,qKAYhB,kBAAkB,gCAgCpB,CAAC;AA0BF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { type Dispatch, type SetStateAction } from "react";
2
+ import { CalendarEvent, CalendarViewIntervalType, FullCalendarEventLayout } from "../types";
3
+ export type UpdateEvent = {
4
+ events: CalendarEvent[];
5
+ userCalendarId: string;
6
+ timezone: string;
7
+ startCalendarDate: string;
8
+ endCalendarDate: string;
9
+ startDayOfWeekOffset?: number;
10
+ calendarViewInterval?: CalendarViewIntervalType;
11
+ };
12
+ type EventsContextType = {
13
+ clonedEvents: CalendarEvent[];
14
+ updateClonedEvents: Dispatch<SetStateAction<CalendarEvent[]>>;
15
+ eventsLayout: FullCalendarEventLayout;
16
+ updateEventsLayout: (props: UpdateEvent) => void;
17
+ };
18
+ /**
19
+ * Provider that manages both cloned events & event layouts independently.
20
+ */
21
+ export declare const EventsProvider: ({ children, initialProps, updateLocalStateAfterEdit, }: {
22
+ children: React.ReactNode;
23
+ initialProps: UpdateEvent;
24
+ updateLocalStateAfterEdit?: boolean;
25
+ }) => import("react").JSX.Element;
26
+ /**
27
+ * Hook to access cloned events and event layouts.
28
+ */
29
+ export declare const useEvents: () => EventsContextType;
30
+ export {};
31
+ //# sourceMappingURL=use-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-events.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-events.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,cAAc,EAKpB,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;CACjD,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,kBAAkB,EAAE,QAAQ,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC9D,YAAY,EAAE,uBAAuB,CAAC;IACtC,kBAAkB,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CAClD,CAAC;AAKF;;GAEG;AACH,eAAO,MAAM,cAAc,2DAIxB;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,EAAE,WAAW,CAAC;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC,gCAoDA,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,yBAMrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-is-editing.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-is-editing.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,SAAS,EAIV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAkB,MAAM,yBAAyB,CAAC;AAItE,OAAO,EAAc,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAE9D,UAAU,aAAa;IACrB,SAAS,EAAE,IAAI,GAAG,sBAAsB,CAAC;IACzC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAY,EAAE,CACZ,QAAQ,EAAE,sBAAsB,GAAG,IAAI,EACvC,YAAY,CAAC,EAAE;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,KACE,IAAI,CAAC;CACX;AAID,eAAO,MAAM,YAAY,qBAOxB,CAAC;AAGF,eAAO,MAAM,iBAAiB,iBAAkB;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,sBAuEtE,CAAC"}
1
+ {"version":3,"file":"use-is-editing.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-is-editing.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,SAAS,EAIV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAkB,MAAM,yBAAyB,CAAC;AAGtE,OAAO,EAAc,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAG9D,UAAU,aAAa;IACrB,SAAS,EAAE,IAAI,GAAG,sBAAsB,CAAC;IACzC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAY,EAAE,CACZ,QAAQ,EAAE,sBAAsB,GAAG,IAAI,EACvC,YAAY,CAAC,EAAE;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,KACE,IAAI,CAAC;CACX;AAID,eAAO,MAAM,YAAY,qBAOxB,CAAC;AAGF,eAAO,MAAM,iBAAiB,iBAAkB;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,sBA8EtE,CAAC"}
@@ -23,6 +23,9 @@ type EventCalenderProps = {
23
23
  extraTimedComponents?: Config["extraTimedComponents"];
24
24
  onZoomChange?: Config["onZoomChange"];
25
25
  };
26
- declare const EventCalendar: ({ events, timeFormat, dayDate, theme, initialZoomLevel, onCreateEvent, timezone, renderEvent, onPressEvent, userCalendarId, showTimeIndicator, maxAllDayEvents, canCreateEvents, renderNewEventContainer, fiveMinuteInterval, canEditEvent, onEventEdit, renderDragBars, updateLocalStateAfterEdit, extraTimedComponents, onZoomChange, }: EventCalenderProps) => import("react").JSX.Element;
26
+ /**
27
+ * Wraps `EventCalendarContent` inside `ClonedEventsProvider` to manage cloned events independently.
28
+ */
29
+ declare const EventCalendar: ({ timeFormat, dayDate, events, initialZoomLevel, timezone, userCalendarId, maxAllDayEvents, updateLocalStateAfterEdit, canCreateEvents, canEditEvent, ...props }: EventCalenderProps) => import("react").JSX.Element;
27
30
  export default EventCalendar;
28
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEhF,cAAc,SAAS,CAAC;AAExB,KAAK,kBAAkB,GAAG;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACnC,uBAAuB,CAAC,EAAE,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;CACvC,CAAC;AAEF,QAAA,MAAM,aAAa,8UAsBhB,kBAAkB,gCAwEpB,CAAC;AA0BF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEhF,cAAc,SAAS,CAAC;AAExB,KAAK,kBAAkB,GAAG;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACnC,uBAAuB,CAAC,EAAE,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;CACvC,CAAC;AAkGF;;GAEG;AACH,QAAA,MAAM,aAAa,qKAYhB,kBAAkB,gCAgCpB,CAAC;AA0BF,eAAe,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sunsama/event-calendar",
3
- "version": "0.2.3",
3
+ "version": "0.2.5",
4
4
  "description": "Event calendar.",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",
@@ -0,0 +1,112 @@
1
+ import {
2
+ createContext,
3
+ type Dispatch,
4
+ type SetStateAction,
5
+ useCallback,
6
+ useContext,
7
+ useEffect,
8
+ useState,
9
+ } from "react";
10
+ import { cloneDeep } from "lodash";
11
+ import generateEventLayouts from "../utils/generate-event-layouts";
12
+ import {
13
+ CalendarEvent,
14
+ CalendarViewIntervalType,
15
+ FullCalendarEventLayout,
16
+ } from "../types";
17
+
18
+ export type UpdateEvent = {
19
+ events: CalendarEvent[];
20
+ userCalendarId: string;
21
+ timezone: string;
22
+ startCalendarDate: string;
23
+ endCalendarDate: string;
24
+ startDayOfWeekOffset?: number;
25
+ calendarViewInterval?: CalendarViewIntervalType;
26
+ };
27
+
28
+ type EventsContextType = {
29
+ clonedEvents: CalendarEvent[];
30
+ updateClonedEvents: Dispatch<SetStateAction<CalendarEvent[]>>;
31
+ eventsLayout: FullCalendarEventLayout;
32
+ updateEventsLayout: (props: UpdateEvent) => void;
33
+ };
34
+
35
+ // Context to store both cloned events & event layouts
36
+ const EventsContext = createContext<EventsContextType | null>(null);
37
+
38
+ /**
39
+ * Provider that manages both cloned events & event layouts independently.
40
+ */
41
+ export const EventsProvider = ({
42
+ children,
43
+ initialProps,
44
+ updateLocalStateAfterEdit = true,
45
+ }: {
46
+ children: React.ReactNode;
47
+ initialProps: UpdateEvent;
48
+ updateLocalStateAfterEdit?: boolean;
49
+ }) => {
50
+ // Cloned Events State
51
+ const [clonedEvents, setClonedEvents] = useState<CalendarEvent[]>(
52
+ initialProps.events
53
+ );
54
+
55
+ // Event Layouts State
56
+ const [eventsLayout, setEventsLayout] = useState<FullCalendarEventLayout>({
57
+ allDayEventsLayout: [],
58
+ partDayEventsLayout: [],
59
+ });
60
+
61
+ // Function to update cloned events
62
+ const updateClonedEvents = useCallback(
63
+ (events: CalendarEvent[]) => {
64
+ setClonedEvents(updateLocalStateAfterEdit ? cloneDeep(events) : events);
65
+ },
66
+ [updateLocalStateAfterEdit]
67
+ );
68
+
69
+ // Function to update event layouts
70
+ const updateEventsLayout = (props: UpdateEvent) => {
71
+ setEventsLayout(
72
+ generateEventLayouts(props)[props.startCalendarDate] || {
73
+ partDayEventsLayout: [],
74
+ allDayEventsLayout: [],
75
+ }
76
+ );
77
+ };
78
+
79
+ // Update both states when initialProps change
80
+ useEffect(() => {
81
+ updateClonedEvents(initialProps.events);
82
+ updateEventsLayout(initialProps);
83
+ }, [initialProps, updateClonedEvents]);
84
+
85
+ useEffect(() => {
86
+ updateEventsLayout({ ...initialProps, events: clonedEvents });
87
+ }, [initialProps, clonedEvents]);
88
+
89
+ return (
90
+ <EventsContext.Provider
91
+ value={{
92
+ clonedEvents,
93
+ updateClonedEvents: setClonedEvents,
94
+ eventsLayout,
95
+ updateEventsLayout,
96
+ }}
97
+ >
98
+ {children}
99
+ </EventsContext.Provider>
100
+ );
101
+ };
102
+
103
+ /**
104
+ * Hook to access cloned events and event layouts.
105
+ */
106
+ export const useEvents = () => {
107
+ const context = useContext(EventsContext);
108
+ if (!context) {
109
+ throw new Error("useEvents must be used within an EventsProvider");
110
+ }
111
+ return context;
112
+ };
@@ -8,8 +8,8 @@ import React, {
8
8
  import { SharedValue, useSharedValue } from "react-native-reanimated";
9
9
  import { ConfigProvider } from "../utils/globals";
10
10
  import { isFunction } from "lodash";
11
- import { updateClonedEvents } from "../hooks/use-cloned-events";
12
11
  import { EditStatus, PartDayEventLayoutType } from "../types";
12
+ import { useEvents } from "./use-events";
13
13
 
14
14
  interface IsEditingType {
15
15
  isEditing: null | PartDayEventLayoutType;
@@ -38,6 +38,7 @@ export const useIsEditing = () => {
38
38
  export const IsEditingProvider = ({ children }: { children: ReactNode }) => {
39
39
  const { canEditEvent, onEventEdit, updateLocalStateAfterEdit } =
40
40
  useContext(ConfigProvider);
41
+ const { updateClonedEvents } = useEvents();
41
42
  const [isEditing, baseSetIsEditing] = useState<null | PartDayEventLayoutType>(
42
43
  null
43
44
  );
@@ -98,7 +99,13 @@ export const IsEditingProvider = ({ children }: { children: ReactNode }) => {
98
99
 
99
100
  baseSetIsEditing(newValue);
100
101
  },
101
- [canEditEvent, isEditing, onEventEdit, updateLocalStateAfterEdit]
102
+ [
103
+ canEditEvent,
104
+ isEditing,
105
+ onEventEdit,
106
+ updateClonedEvents,
107
+ updateLocalStateAfterEdit,
108
+ ]
102
109
  );
103
110
 
104
111
  return (
package/src/index.tsx CHANGED
@@ -4,13 +4,12 @@ import { ScrollView } from "react-native-gesture-handler";
4
4
  import { useSharedValue } from "react-native-reanimated";
5
5
  import ZoomProvider from "./components/zoom-provider";
6
6
  import TimedEvents from "./components/timed-events";
7
- import useEventsLayout, { UpdateEvent } from "./hooks/use-events-layout";
8
7
  import { ConfigProvider, DEFAULT_MINUTE_HEIGHT } from "./utils/globals";
9
- import moment from "moment-timezone";
8
+ import moment, { type Moment } from "moment-timezone";
10
9
  import { useMemo, useRef } from "react";
11
10
  import { GestureRef } from "react-native-gesture-handler/lib/typescript/handlers/gestures/gesture";
12
11
  import { IsEditingProvider } from "./hooks/use-is-editing";
13
- import useClonedEvents from "./hooks/use-cloned-events";
12
+ import { EventsProvider, useEvents } from "./hooks/use-events";
14
13
  import type { CalendarEvent, Config, onCreateEvent, ThemeStyle } from "./types";
15
14
 
16
15
  export * from "./types";
@@ -39,63 +38,63 @@ type EventCalenderProps = {
39
38
  onZoomChange?: Config["onZoomChange"];
40
39
  };
41
40
 
42
- const EventCalendar = ({
43
- events,
44
- timeFormat = "HH:mm",
45
- dayDate,
46
- theme,
47
- initialZoomLevel = DEFAULT_MINUTE_HEIGHT,
48
- onCreateEvent,
49
- timezone = "UTC",
50
- renderEvent,
51
- onPressEvent,
52
- userCalendarId = "",
53
- showTimeIndicator,
54
- maxAllDayEvents = 2,
55
- canCreateEvents = true,
56
- renderNewEventContainer,
41
+ type EventCalenderContentProps = {
42
+ canCreateEvents: boolean;
43
+ canEditEvent: Config["canEditEvent"];
44
+ startCalendarDate: Moment;
45
+ fiveMinuteInterval?: boolean;
46
+ initialZoomLevel: number;
47
+ maxAllDayEvents: number;
48
+ onCreateEvent?: onCreateEvent;
49
+ onEventEdit?: Config["onEventEdit"];
50
+ onPressEvent?: Config["onPressEvent"];
51
+ renderDragBars?: Config["renderDragBars"];
52
+ renderEvent: Config["renderEvent"];
53
+ renderNewEventContainer?: Config["renderNewEventContainer"];
54
+ showTimeIndicator?: boolean;
55
+ theme?: ThemeStyle;
56
+ timeFormat: string;
57
+ timezone: string;
58
+ updateLocalStateAfterEdit: boolean;
59
+ extraTimedComponents?: Config["extraTimedComponents"];
60
+ onZoomChange?: Config["onZoomChange"];
61
+ };
62
+ const EventCalendarContent = ({
63
+ canCreateEvents,
64
+ canEditEvent,
57
65
  fiveMinuteInterval,
58
- canEditEvent = true,
66
+ initialZoomLevel,
67
+ maxAllDayEvents,
68
+ onCreateEvent,
59
69
  onEventEdit,
70
+ onPressEvent,
60
71
  renderDragBars,
61
- updateLocalStateAfterEdit = true,
72
+ renderEvent,
73
+ renderNewEventContainer,
74
+ showTimeIndicator,
75
+ theme,
76
+ timeFormat,
77
+ timezone,
78
+ updateLocalStateAfterEdit,
62
79
  extraTimedComponents,
63
80
  onZoomChange,
64
- }: EventCalenderProps) => {
65
- const startCalendarDate = useMemo(
66
- () => moment.tz(dayDate, timezone).startOf("day"),
67
- [dayDate, timezone]
68
- );
69
-
70
- const clonedEvents = useClonedEvents(events, updateLocalStateAfterEdit);
71
-
72
- const memoizedProps = useMemo<UpdateEvent>(
73
- () => ({
74
- startCalendarDate: startCalendarDate.format("YYYY-MM-DD"),
75
- calendarViewInterval: "1day",
76
- endCalendarDate: startCalendarDate.format("YYYY-MM-DD"),
77
- userCalendarId,
78
- timezone,
79
- startDayOfWeekOffset: 0,
80
- events: clonedEvents,
81
- }),
82
- [startCalendarDate, userCalendarId, timezone, clonedEvents]
83
- );
84
-
85
- const layout = useEventsLayout(memoizedProps);
81
+ startCalendarDate,
82
+ }: EventCalenderContentProps) => {
86
83
  const zoomLevel = useSharedValue(initialZoomLevel);
87
84
  const createY = useSharedValue(-1);
88
85
  const maximumHour = useSharedValue(0);
89
86
 
90
87
  const refNewEvent = useRef<GestureRef>(null);
91
88
 
89
+ const { eventsLayout } = useEvents();
90
+
92
91
  return (
93
92
  <View style={[styles.container, theme?.container]}>
94
93
  <ConfigProvider.Provider
95
94
  value={{
96
95
  dayDate: startCalendarDate,
97
96
  timeFormat,
98
- layout,
97
+ layout: eventsLayout,
99
98
  zoomLevel,
100
99
  createY,
101
100
  initialZoomLevel,
@@ -112,9 +111,9 @@ const EventCalendar = ({
112
111
  onEventEdit,
113
112
  renderDragBars,
114
113
  maximumHour,
115
- updateLocalStateAfterEdit,
116
114
  extraTimedComponents,
117
115
  onZoomChange,
116
+ updateLocalStateAfterEdit,
118
117
  }}
119
118
  >
120
119
  <AllDayEvents />
@@ -135,6 +134,55 @@ const EventCalendar = ({
135
134
  );
136
135
  };
137
136
 
137
+ /**
138
+ * Wraps `EventCalendarContent` inside `ClonedEventsProvider` to manage cloned events independently.
139
+ */
140
+ const EventCalendar = ({
141
+ timeFormat = "HH:mm",
142
+ dayDate,
143
+ events,
144
+ initialZoomLevel = DEFAULT_MINUTE_HEIGHT,
145
+ timezone = "UTC",
146
+ userCalendarId = "",
147
+ maxAllDayEvents = 2,
148
+ updateLocalStateAfterEdit = true,
149
+ canCreateEvents = true,
150
+ canEditEvent = true,
151
+ ...props
152
+ }: EventCalenderProps) => {
153
+ const startCalendarDate = useMemo(
154
+ () => moment.tz(dayDate, timezone).startOf("day"),
155
+ [dayDate, timezone]
156
+ );
157
+
158
+ return (
159
+ <EventsProvider
160
+ initialProps={{
161
+ startCalendarDate: startCalendarDate.format("YYYY-MM-DD"),
162
+ calendarViewInterval: "1day",
163
+ endCalendarDate: startCalendarDate.format("YYYY-MM-DD"),
164
+ userCalendarId,
165
+ timezone,
166
+ startDayOfWeekOffset: 0,
167
+ events,
168
+ }}
169
+ updateLocalStateAfterEdit={!!updateLocalStateAfterEdit}
170
+ >
171
+ <EventCalendarContent
172
+ {...props}
173
+ timeFormat={timeFormat}
174
+ initialZoomLevel={initialZoomLevel}
175
+ timezone={timezone}
176
+ maxAllDayEvents={maxAllDayEvents}
177
+ updateLocalStateAfterEdit={updateLocalStateAfterEdit}
178
+ startCalendarDate={startCalendarDate}
179
+ canCreateEvents={canCreateEvents}
180
+ canEditEvent={canEditEvent}
181
+ />
182
+ </EventsProvider>
183
+ );
184
+ };
185
+
138
186
  const styles = StyleSheet.create({
139
187
  container: {
140
188
  flex: 1,
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.updateClonedEvents = exports.default = void 0;
7
- var _react = require("react");
8
- var _lodash = require("lodash");
9
- let updateClonedEvents = exports.updateClonedEvents = void 0;
10
-
11
- /**
12
- * Returns a cloned version of the events array if the updateLocalStateAfterEdit is set to true.
13
- * We do this to make local state updates faster and more responsive. If the updateLocalStateAfterEdit is set to false,
14
- * we return the original events array and don't clone it.
15
- */
16
- const useClonedEvents = (events, updateLocalStateAfterEdit) => {
17
- const [clonedEvents, setClonedEvents] = (0, _react.useState)(events);
18
- (0, _react.useEffect)(() => {
19
- setClonedEvents(updateLocalStateAfterEdit ? (0, _lodash.cloneDeep)(events) : events);
20
- exports.updateClonedEvents = updateClonedEvents = setClonedEvents;
21
- }, [events, updateLocalStateAfterEdit]);
22
- return clonedEvents;
23
- };
24
- var _default = exports.default = useClonedEvents;
25
- //# sourceMappingURL=use-cloned-events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","require","_lodash","updateClonedEvents","exports","useClonedEvents","events","updateLocalStateAfterEdit","clonedEvents","setClonedEvents","useState","useEffect","cloneDeep","_default","default"],"sourceRoot":"../../../src","sources":["hooks/use-cloned-events.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAGO,IAAIE,kBAA6D,GAAAC,OAAA,CAAAD,kBAAA;;AAExE;AACA;AACA;AACA;AACA;AACA,MAAME,eAAe,GAAGA,CACtBC,MAAuB,EACvBC,yBAAkC,KAC/B;EACH,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAG,IAAAC,eAAQ,EAACJ,MAAM,CAAC;EAExD,IAAAK,gBAAS,EAAC,MAAM;IACdF,eAAe,CAACF,yBAAyB,GAAG,IAAAK,iBAAS,EAACN,MAAM,CAAC,GAAGA,MAAM,CAAC;IACvEF,OAAA,CAAAD,kBAAA,GAAAA,kBAAkB,GAAGM,eAAe;EACtC,CAAC,EAAE,CAACH,MAAM,EAAEC,yBAAyB,CAAC,CAAC;EAEvC,OAAOC,YAAY;AACrB,CAAC;AAAC,IAAAK,QAAA,GAAAT,OAAA,CAAAU,OAAA,GAEaT,eAAe","ignoreList":[]}
@@ -1,34 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _zustand = require("zustand");
8
- var _immer = require("zustand/middleware/immer");
9
- var _generateEventLayouts = _interopRequireDefault(require("../utils/generate-event-layouts.js"));
10
- var _react = require("react");
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
- const useEventsLayoutStore = (0, _zustand.create)()((0, _immer.immer)(set => ({
13
- events: {
14
- allDayEventsLayout: [],
15
- partDayEventsLayout: []
16
- },
17
- updateEvents: props => set(state => {
18
- state.events = (0, _generateEventLayouts.default)(props)[props.startCalendarDate] || {
19
- partDayEventsLayout: [],
20
- allDayEventsLayout: []
21
- };
22
- })
23
- })));
24
- const useEventsLayout = props => {
25
- const {
26
- events: layoutEvents
27
- } = useEventsLayoutStore();
28
- (0, _react.useEffect)(() => {
29
- useEventsLayoutStore.getState().updateEvents(props);
30
- }, [props]);
31
- return layoutEvents;
32
- };
33
- var _default = exports.default = useEventsLayout;
34
- //# sourceMappingURL=use-events-layout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_zustand","require","_immer","_generateEventLayouts","_interopRequireDefault","_react","e","__esModule","default","useEventsLayoutStore","create","immer","set","events","allDayEventsLayout","partDayEventsLayout","updateEvents","props","state","generateEventLayouts","startCalendarDate","useEventsLayout","layoutEvents","useEffect","getState","_default","exports"],"sourceRoot":"../../../src","sources":["hooks/use-events-layout.ts"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAAkC,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAyBlC,MAAMG,oBAAoB,GAAG,IAAAC,eAAM,EAAkB,CAAC,CACpD,IAAAC,YAAK,EAAEC,GAAG,KAAM;EACdC,MAAM,EAAE;IACNC,kBAAkB,EAAE,EAAE;IACtBC,mBAAmB,EAAE;EACvB,CAAC;EACDC,YAAY,EAAGC,KAAkB,IAC/BL,GAAG,CAAEM,KAAK,IAAK;IACbA,KAAK,CAACL,MAAM,GAAG,IAAAM,6BAAoB,EAACF,KAAK,CAAC,CAACA,KAAK,CAACG,iBAAiB,CAAC,IAAI;MACrEL,mBAAmB,EAAE,EAAE;MACvBD,kBAAkB,EAAE;IACtB,CAAC;EACH,CAAC;AACL,CAAC,CAAC,CACJ,CAAC;AAED,MAAMO,eAAe,GAAIJ,KAAkB,IAAK;EAC9C,MAAM;IAAEJ,MAAM,EAAES;EAAa,CAAC,GAAGb,oBAAoB,CAAC,CAAC;EAEvD,IAAAc,gBAAS,EAAC,MAAM;IACdd,oBAAoB,CAACe,QAAQ,CAAC,CAAC,CAACR,YAAY,CAACC,KAAK,CAAC;EACrD,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEX,OAAOK,YAAY;AACrB,CAAC;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAAlB,OAAA,GAEaa,eAAe","ignoreList":[]}
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- import { useEffect, useState } from "react";
4
- import { cloneDeep } from "lodash";
5
- export let updateClonedEvents;
6
-
7
- /**
8
- * Returns a cloned version of the events array if the updateLocalStateAfterEdit is set to true.
9
- * We do this to make local state updates faster and more responsive. If the updateLocalStateAfterEdit is set to false,
10
- * we return the original events array and don't clone it.
11
- */
12
- const useClonedEvents = (events, updateLocalStateAfterEdit) => {
13
- const [clonedEvents, setClonedEvents] = useState(events);
14
- useEffect(() => {
15
- setClonedEvents(updateLocalStateAfterEdit ? cloneDeep(events) : events);
16
- updateClonedEvents = setClonedEvents;
17
- }, [events, updateLocalStateAfterEdit]);
18
- return clonedEvents;
19
- };
20
- export default useClonedEvents;
21
- //# sourceMappingURL=use-cloned-events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useEffect","useState","cloneDeep","updateClonedEvents","useClonedEvents","events","updateLocalStateAfterEdit","clonedEvents","setClonedEvents"],"sourceRoot":"../../../src","sources":["hooks/use-cloned-events.ts"],"mappings":";;AAAA,SAAmCA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AACrE,SAASC,SAAS,QAAQ,QAAQ;AAGlC,OAAO,IAAIC,kBAA6D;;AAExE;AACA;AACA;AACA;AACA;AACA,MAAMC,eAAe,GAAGA,CACtBC,MAAuB,EACvBC,yBAAkC,KAC/B;EACH,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGP,QAAQ,CAACI,MAAM,CAAC;EAExDL,SAAS,CAAC,MAAM;IACdQ,eAAe,CAACF,yBAAyB,GAAGJ,SAAS,CAACG,MAAM,CAAC,GAAGA,MAAM,CAAC;IACvEF,kBAAkB,GAAGK,eAAe;EACtC,CAAC,EAAE,CAACH,MAAM,EAAEC,yBAAyB,CAAC,CAAC;EAEvC,OAAOC,YAAY;AACrB,CAAC;AAED,eAAeH,eAAe","ignoreList":[]}
@@ -1,29 +0,0 @@
1
- "use strict";
2
-
3
- import { create } from "zustand";
4
- import { immer } from "zustand/middleware/immer";
5
- import generateEventLayouts from "../utils/generate-event-layouts.js";
6
- import { useEffect } from "react";
7
- const useEventsLayoutStore = create()(immer(set => ({
8
- events: {
9
- allDayEventsLayout: [],
10
- partDayEventsLayout: []
11
- },
12
- updateEvents: props => set(state => {
13
- state.events = generateEventLayouts(props)[props.startCalendarDate] || {
14
- partDayEventsLayout: [],
15
- allDayEventsLayout: []
16
- };
17
- })
18
- })));
19
- const useEventsLayout = props => {
20
- const {
21
- events: layoutEvents
22
- } = useEventsLayoutStore();
23
- useEffect(() => {
24
- useEventsLayoutStore.getState().updateEvents(props);
25
- }, [props]);
26
- return layoutEvents;
27
- };
28
- export default useEventsLayout;
29
- //# sourceMappingURL=use-events-layout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["create","immer","generateEventLayouts","useEffect","useEventsLayoutStore","set","events","allDayEventsLayout","partDayEventsLayout","updateEvents","props","state","startCalendarDate","useEventsLayout","layoutEvents","getState"],"sourceRoot":"../../../src","sources":["hooks/use-events-layout.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,SAAS;AAChC,SAASC,KAAK,QAAQ,0BAA0B;AAChD,OAAOC,oBAAoB,MAAM,oCAAiC;AAClE,SAASC,SAAS,QAAQ,OAAO;AAyBjC,MAAMC,oBAAoB,GAAGJ,MAAM,CAAkB,CAAC,CACpDC,KAAK,CAAEI,GAAG,KAAM;EACdC,MAAM,EAAE;IACNC,kBAAkB,EAAE,EAAE;IACtBC,mBAAmB,EAAE;EACvB,CAAC;EACDC,YAAY,EAAGC,KAAkB,IAC/BL,GAAG,CAAEM,KAAK,IAAK;IACbA,KAAK,CAACL,MAAM,GAAGJ,oBAAoB,CAACQ,KAAK,CAAC,CAACA,KAAK,CAACE,iBAAiB,CAAC,IAAI;MACrEJ,mBAAmB,EAAE,EAAE;MACvBD,kBAAkB,EAAE;IACtB,CAAC;EACH,CAAC;AACL,CAAC,CAAC,CACJ,CAAC;AAED,MAAMM,eAAe,GAAIH,KAAkB,IAAK;EAC9C,MAAM;IAAEJ,MAAM,EAAEQ;EAAa,CAAC,GAAGV,oBAAoB,CAAC,CAAC;EAEvDD,SAAS,CAAC,MAAM;IACdC,oBAAoB,CAACW,QAAQ,CAAC,CAAC,CAACN,YAAY,CAACC,KAAK,CAAC;EACrD,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEX,OAAOI,YAAY;AACrB,CAAC;AAED,eAAeD,eAAe","ignoreList":[]}
@@ -1,11 +0,0 @@
1
- import { Dispatch, SetStateAction } from "react";
2
- import { CalendarEvent } from "../types";
3
- export declare let updateClonedEvents: Dispatch<SetStateAction<CalendarEvent[]>>;
4
- /**
5
- * Returns a cloned version of the events array if the updateLocalStateAfterEdit is set to true.
6
- * We do this to make local state updates faster and more responsive. If the updateLocalStateAfterEdit is set to false,
7
- * we return the original events array and don't clone it.
8
- */
9
- declare const useClonedEvents: (events: CalendarEvent[], updateLocalStateAfterEdit: boolean) => CalendarEvent[];
10
- export default useClonedEvents;
11
- //# sourceMappingURL=use-cloned-events.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-cloned-events.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-cloned-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAuB,MAAM,OAAO,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,IAAI,kBAAkB,EAAE,QAAQ,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AAEzE;;;;GAIG;AACH,QAAA,MAAM,eAAe,WACX,aAAa,EAAE,6BACI,OAAO,oBAUnC,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,13 +0,0 @@
1
- import { CalendarEvent, CalendarViewIntervalType, FullCalendarEventLayout } from "../types";
2
- export type UpdateEvent = {
3
- events: CalendarEvent[];
4
- userCalendarId: string;
5
- timezone: string;
6
- startCalendarDate: string;
7
- endCalendarDate: string;
8
- startDayOfWeekOffset?: number;
9
- calendarViewInterval?: CalendarViewIntervalType;
10
- };
11
- declare const useEventsLayout: (props: UpdateEvent) => FullCalendarEventLayout;
12
- export default useEventsLayout;
13
- //# sourceMappingURL=use-events-layout.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-events-layout.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-events-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAUlB,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;CACjD,CAAC;AAkBF,QAAA,MAAM,eAAe,UAAW,WAAW,4BAQ1C,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,11 +0,0 @@
1
- import { Dispatch, SetStateAction } from "react";
2
- import { CalendarEvent } from "../types";
3
- export declare let updateClonedEvents: Dispatch<SetStateAction<CalendarEvent[]>>;
4
- /**
5
- * Returns a cloned version of the events array if the updateLocalStateAfterEdit is set to true.
6
- * We do this to make local state updates faster and more responsive. If the updateLocalStateAfterEdit is set to false,
7
- * we return the original events array and don't clone it.
8
- */
9
- declare const useClonedEvents: (events: CalendarEvent[], updateLocalStateAfterEdit: boolean) => CalendarEvent[];
10
- export default useClonedEvents;
11
- //# sourceMappingURL=use-cloned-events.d.ts.map