@sunsama/event-calendar 0.2.0

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 (236) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +105 -0
  3. package/lib/commonjs/components/all-day-events.js +117 -0
  4. package/lib/commonjs/components/all-day-events.js.map +1 -0
  5. package/lib/commonjs/components/background-hours-content.js +43 -0
  6. package/lib/commonjs/components/background-hours-content.js.map +1 -0
  7. package/lib/commonjs/components/background-hours-layout.js +57 -0
  8. package/lib/commonjs/components/background-hours-layout.js.map +1 -0
  9. package/lib/commonjs/components/drag-bar.js +84 -0
  10. package/lib/commonjs/components/drag-bar.js.map +1 -0
  11. package/lib/commonjs/components/edit-event-container.js +114 -0
  12. package/lib/commonjs/components/edit-event-container.js.map +1 -0
  13. package/lib/commonjs/components/event-container.js +37 -0
  14. package/lib/commonjs/components/event-container.js.map +1 -0
  15. package/lib/commonjs/components/new-event-container.js +73 -0
  16. package/lib/commonjs/components/new-event-container.js.map +1 -0
  17. package/lib/commonjs/components/time-indicator.js +64 -0
  18. package/lib/commonjs/components/time-indicator.js.map +1 -0
  19. package/lib/commonjs/components/timed-event-container.js +91 -0
  20. package/lib/commonjs/components/timed-event-container.js.map +1 -0
  21. package/lib/commonjs/components/timed-events.js +68 -0
  22. package/lib/commonjs/components/timed-events.js.map +1 -0
  23. package/lib/commonjs/components/zoom-provider.js +109 -0
  24. package/lib/commonjs/components/zoom-provider.js.map +1 -0
  25. package/lib/commonjs/enums.js +2 -0
  26. package/lib/commonjs/enums.js.map +1 -0
  27. package/lib/commonjs/hooks/use-cloned-events.js +25 -0
  28. package/lib/commonjs/hooks/use-cloned-events.js.map +1 -0
  29. package/lib/commonjs/hooks/use-events-layout.js +34 -0
  30. package/lib/commonjs/hooks/use-events-layout.js.map +1 -0
  31. package/lib/commonjs/hooks/use-is-editing.js +83 -0
  32. package/lib/commonjs/hooks/use-is-editing.js.map +1 -0
  33. package/lib/commonjs/index.js +129 -0
  34. package/lib/commonjs/index.js.map +1 -0
  35. package/lib/commonjs/types.js +24 -0
  36. package/lib/commonjs/types.js.map +1 -0
  37. package/lib/commonjs/utils/calendar-layout.js +113 -0
  38. package/lib/commonjs/utils/calendar-layout.js.map +1 -0
  39. package/lib/commonjs/utils/compute-positioning.js +33 -0
  40. package/lib/commonjs/utils/compute-positioning.js.map +1 -0
  41. package/lib/commonjs/utils/date-utils.js +152 -0
  42. package/lib/commonjs/utils/date-utils.js.map +1 -0
  43. package/lib/commonjs/utils/double-tap-reset-zoom-gesture.js +19 -0
  44. package/lib/commonjs/utils/double-tap-reset-zoom-gesture.js.map +1 -0
  45. package/lib/commonjs/utils/generate-event-layouts.js +198 -0
  46. package/lib/commonjs/utils/generate-event-layouts.js.map +1 -0
  47. package/lib/commonjs/utils/globals.js +11 -0
  48. package/lib/commonjs/utils/globals.js.map +1 -0
  49. package/lib/commonjs/utils/pan-edit-event-gesture.js +41 -0
  50. package/lib/commonjs/utils/pan-edit-event-gesture.js.map +1 -0
  51. package/lib/module/components/all-day-events.js +110 -0
  52. package/lib/module/components/all-day-events.js.map +1 -0
  53. package/lib/module/components/background-hours-content.js +37 -0
  54. package/lib/module/components/background-hours-content.js.map +1 -0
  55. package/lib/module/components/background-hours-layout.js +51 -0
  56. package/lib/module/components/background-hours-layout.js.map +1 -0
  57. package/lib/module/components/drag-bar.js +78 -0
  58. package/lib/module/components/drag-bar.js.map +1 -0
  59. package/lib/module/components/edit-event-container.js +107 -0
  60. package/lib/module/components/edit-event-container.js.map +1 -0
  61. package/lib/module/components/event-container.js +33 -0
  62. package/lib/module/components/event-container.js.map +1 -0
  63. package/lib/module/components/new-event-container.js +67 -0
  64. package/lib/module/components/new-event-container.js.map +1 -0
  65. package/lib/module/components/time-indicator.js +57 -0
  66. package/lib/module/components/time-indicator.js.map +1 -0
  67. package/lib/module/components/timed-event-container.js +84 -0
  68. package/lib/module/components/timed-event-container.js.map +1 -0
  69. package/lib/module/components/timed-events.js +63 -0
  70. package/lib/module/components/timed-events.js.map +1 -0
  71. package/lib/module/components/zoom-provider.js +102 -0
  72. package/lib/module/components/zoom-provider.js.map +1 -0
  73. package/lib/module/enums.js +2 -0
  74. package/lib/module/enums.js.map +1 -0
  75. package/lib/module/hooks/use-cloned-events.js +21 -0
  76. package/lib/module/hooks/use-cloned-events.js.map +1 -0
  77. package/lib/module/hooks/use-events-layout.js +29 -0
  78. package/lib/module/hooks/use-events-layout.js.map +1 -0
  79. package/lib/module/hooks/use-is-editing.js +75 -0
  80. package/lib/module/hooks/use-is-editing.js.map +1 -0
  81. package/lib/module/index.js +124 -0
  82. package/lib/module/index.js.map +1 -0
  83. package/lib/module/types.js +20 -0
  84. package/lib/module/types.js.map +1 -0
  85. package/lib/module/utils/calendar-layout.js +108 -0
  86. package/lib/module/utils/calendar-layout.js.map +1 -0
  87. package/lib/module/utils/compute-positioning.js +28 -0
  88. package/lib/module/utils/compute-positioning.js.map +1 -0
  89. package/lib/module/utils/date-utils.js +139 -0
  90. package/lib/module/utils/date-utils.js.map +1 -0
  91. package/lib/module/utils/double-tap-reset-zoom-gesture.js +15 -0
  92. package/lib/module/utils/double-tap-reset-zoom-gesture.js.map +1 -0
  93. package/lib/module/utils/generate-event-layouts.js +192 -0
  94. package/lib/module/utils/generate-event-layouts.js.map +1 -0
  95. package/lib/module/utils/globals.js +7 -0
  96. package/lib/module/utils/globals.js.map +1 -0
  97. package/lib/module/utils/pan-edit-event-gesture.js +37 -0
  98. package/lib/module/utils/pan-edit-event-gesture.js.map +1 -0
  99. package/lib/typescript/commonjs/components/all-day-events.d.ts +3 -0
  100. package/lib/typescript/commonjs/components/all-day-events.d.ts.map +1 -0
  101. package/lib/typescript/commonjs/components/background-hours-content.d.ts +7 -0
  102. package/lib/typescript/commonjs/components/background-hours-content.d.ts.map +1 -0
  103. package/lib/typescript/commonjs/components/background-hours-layout.d.ts +7 -0
  104. package/lib/typescript/commonjs/components/background-hours-layout.d.ts.map +1 -0
  105. package/lib/typescript/commonjs/components/drag-bar.d.ts +14 -0
  106. package/lib/typescript/commonjs/components/drag-bar.d.ts.map +1 -0
  107. package/lib/typescript/commonjs/components/edit-event-container.d.ts +7 -0
  108. package/lib/typescript/commonjs/components/edit-event-container.d.ts.map +1 -0
  109. package/lib/typescript/commonjs/components/event-container.d.ts +7 -0
  110. package/lib/typescript/commonjs/components/event-container.d.ts.map +1 -0
  111. package/lib/typescript/commonjs/components/new-event-container.d.ts +3 -0
  112. package/lib/typescript/commonjs/components/new-event-container.d.ts.map +1 -0
  113. package/lib/typescript/commonjs/components/time-indicator.d.ts +3 -0
  114. package/lib/typescript/commonjs/components/time-indicator.d.ts.map +1 -0
  115. package/lib/typescript/commonjs/components/timed-event-container.d.ts +9 -0
  116. package/lib/typescript/commonjs/components/timed-event-container.d.ts.map +1 -0
  117. package/lib/typescript/commonjs/components/timed-events.d.ts +7 -0
  118. package/lib/typescript/commonjs/components/timed-events.d.ts.map +1 -0
  119. package/lib/typescript/commonjs/components/zoom-provider.d.ts +7 -0
  120. package/lib/typescript/commonjs/components/zoom-provider.d.ts.map +1 -0
  121. package/lib/typescript/commonjs/enums.d.ts +2 -0
  122. package/lib/typescript/commonjs/enums.d.ts.map +1 -0
  123. package/lib/typescript/commonjs/hooks/use-cloned-events.d.ts +11 -0
  124. package/lib/typescript/commonjs/hooks/use-cloned-events.d.ts.map +1 -0
  125. package/lib/typescript/commonjs/hooks/use-events-layout.d.ts +13 -0
  126. package/lib/typescript/commonjs/hooks/use-events-layout.d.ts.map +1 -0
  127. package/lib/typescript/commonjs/hooks/use-is-editing.d.ts +17 -0
  128. package/lib/typescript/commonjs/hooks/use-is-editing.d.ts.map +1 -0
  129. package/lib/typescript/commonjs/index.d.ts +27 -0
  130. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/package.json +1 -0
  132. package/lib/typescript/commonjs/types.d.ts +128 -0
  133. package/lib/typescript/commonjs/types.d.ts.map +1 -0
  134. package/lib/typescript/commonjs/utils/__tests___/compute-positioning.test.d.ts +2 -0
  135. package/lib/typescript/commonjs/utils/__tests___/compute-positioning.test.d.ts.map +1 -0
  136. package/lib/typescript/commonjs/utils/__tests___/date-utils.test.d.ts +2 -0
  137. package/lib/typescript/commonjs/utils/__tests___/date-utils.test.d.ts.map +1 -0
  138. package/lib/typescript/commonjs/utils/__tests___/generate-event-layout.test.d.ts +2 -0
  139. package/lib/typescript/commonjs/utils/__tests___/generate-event-layout.test.d.ts.map +1 -0
  140. package/lib/typescript/commonjs/utils/calendar-layout.d.ts +36 -0
  141. package/lib/typescript/commonjs/utils/calendar-layout.d.ts.map +1 -0
  142. package/lib/typescript/commonjs/utils/compute-positioning.d.ts +10 -0
  143. package/lib/typescript/commonjs/utils/compute-positioning.d.ts.map +1 -0
  144. package/lib/typescript/commonjs/utils/date-utils.d.ts +30 -0
  145. package/lib/typescript/commonjs/utils/date-utils.d.ts.map +1 -0
  146. package/lib/typescript/commonjs/utils/double-tap-reset-zoom-gesture.d.ts +5 -0
  147. package/lib/typescript/commonjs/utils/double-tap-reset-zoom-gesture.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/utils/generate-event-layouts.d.ts +15 -0
  149. package/lib/typescript/commonjs/utils/generate-event-layouts.d.ts.map +1 -0
  150. package/lib/typescript/commonjs/utils/globals.d.ts +5 -0
  151. package/lib/typescript/commonjs/utils/globals.d.ts.map +1 -0
  152. package/lib/typescript/commonjs/utils/pan-edit-event-gesture.d.ts +6 -0
  153. package/lib/typescript/commonjs/utils/pan-edit-event-gesture.d.ts.map +1 -0
  154. package/lib/typescript/module/components/all-day-events.d.ts +3 -0
  155. package/lib/typescript/module/components/all-day-events.d.ts.map +1 -0
  156. package/lib/typescript/module/components/background-hours-content.d.ts +7 -0
  157. package/lib/typescript/module/components/background-hours-content.d.ts.map +1 -0
  158. package/lib/typescript/module/components/background-hours-layout.d.ts +7 -0
  159. package/lib/typescript/module/components/background-hours-layout.d.ts.map +1 -0
  160. package/lib/typescript/module/components/drag-bar.d.ts +14 -0
  161. package/lib/typescript/module/components/drag-bar.d.ts.map +1 -0
  162. package/lib/typescript/module/components/edit-event-container.d.ts +7 -0
  163. package/lib/typescript/module/components/edit-event-container.d.ts.map +1 -0
  164. package/lib/typescript/module/components/event-container.d.ts +7 -0
  165. package/lib/typescript/module/components/event-container.d.ts.map +1 -0
  166. package/lib/typescript/module/components/new-event-container.d.ts +3 -0
  167. package/lib/typescript/module/components/new-event-container.d.ts.map +1 -0
  168. package/lib/typescript/module/components/time-indicator.d.ts +3 -0
  169. package/lib/typescript/module/components/time-indicator.d.ts.map +1 -0
  170. package/lib/typescript/module/components/timed-event-container.d.ts +9 -0
  171. package/lib/typescript/module/components/timed-event-container.d.ts.map +1 -0
  172. package/lib/typescript/module/components/timed-events.d.ts +7 -0
  173. package/lib/typescript/module/components/timed-events.d.ts.map +1 -0
  174. package/lib/typescript/module/components/zoom-provider.d.ts +7 -0
  175. package/lib/typescript/module/components/zoom-provider.d.ts.map +1 -0
  176. package/lib/typescript/module/enums.d.ts +2 -0
  177. package/lib/typescript/module/enums.d.ts.map +1 -0
  178. package/lib/typescript/module/hooks/use-cloned-events.d.ts +11 -0
  179. package/lib/typescript/module/hooks/use-cloned-events.d.ts.map +1 -0
  180. package/lib/typescript/module/hooks/use-events-layout.d.ts +13 -0
  181. package/lib/typescript/module/hooks/use-events-layout.d.ts.map +1 -0
  182. package/lib/typescript/module/hooks/use-is-editing.d.ts +17 -0
  183. package/lib/typescript/module/hooks/use-is-editing.d.ts.map +1 -0
  184. package/lib/typescript/module/index.d.ts +27 -0
  185. package/lib/typescript/module/index.d.ts.map +1 -0
  186. package/lib/typescript/module/package.json +1 -0
  187. package/lib/typescript/module/types.d.ts +128 -0
  188. package/lib/typescript/module/types.d.ts.map +1 -0
  189. package/lib/typescript/module/utils/__tests___/compute-positioning.test.d.ts +2 -0
  190. package/lib/typescript/module/utils/__tests___/compute-positioning.test.d.ts.map +1 -0
  191. package/lib/typescript/module/utils/__tests___/date-utils.test.d.ts +2 -0
  192. package/lib/typescript/module/utils/__tests___/date-utils.test.d.ts.map +1 -0
  193. package/lib/typescript/module/utils/__tests___/generate-event-layout.test.d.ts +2 -0
  194. package/lib/typescript/module/utils/__tests___/generate-event-layout.test.d.ts.map +1 -0
  195. package/lib/typescript/module/utils/calendar-layout.d.ts +36 -0
  196. package/lib/typescript/module/utils/calendar-layout.d.ts.map +1 -0
  197. package/lib/typescript/module/utils/compute-positioning.d.ts +10 -0
  198. package/lib/typescript/module/utils/compute-positioning.d.ts.map +1 -0
  199. package/lib/typescript/module/utils/date-utils.d.ts +30 -0
  200. package/lib/typescript/module/utils/date-utils.d.ts.map +1 -0
  201. package/lib/typescript/module/utils/double-tap-reset-zoom-gesture.d.ts +5 -0
  202. package/lib/typescript/module/utils/double-tap-reset-zoom-gesture.d.ts.map +1 -0
  203. package/lib/typescript/module/utils/generate-event-layouts.d.ts +15 -0
  204. package/lib/typescript/module/utils/generate-event-layouts.d.ts.map +1 -0
  205. package/lib/typescript/module/utils/globals.d.ts +5 -0
  206. package/lib/typescript/module/utils/globals.d.ts.map +1 -0
  207. package/lib/typescript/module/utils/pan-edit-event-gesture.d.ts +6 -0
  208. package/lib/typescript/module/utils/pan-edit-event-gesture.d.ts.map +1 -0
  209. package/package.json +195 -0
  210. package/src/components/all-day-events.tsx +134 -0
  211. package/src/components/background-hours-content.tsx +51 -0
  212. package/src/components/background-hours-layout.tsx +61 -0
  213. package/src/components/drag-bar.tsx +120 -0
  214. package/src/components/edit-event-container.tsx +158 -0
  215. package/src/components/event-container.tsx +44 -0
  216. package/src/components/new-event-container.tsx +90 -0
  217. package/src/components/time-indicator.tsx +72 -0
  218. package/src/components/timed-event-container.tsx +124 -0
  219. package/src/components/timed-events.tsx +72 -0
  220. package/src/components/zoom-provider.tsx +146 -0
  221. package/src/enums.ts +0 -0
  222. package/src/hooks/use-cloned-events.ts +26 -0
  223. package/src/hooks/use-events-layout.ts +55 -0
  224. package/src/hooks/use-is-editing.tsx +109 -0
  225. package/src/index.tsx +165 -0
  226. package/src/types.ts +163 -0
  227. package/src/utils/__tests___/compute-positioning.test.ts +255 -0
  228. package/src/utils/__tests___/date-utils.test.ts +41 -0
  229. package/src/utils/__tests___/generate-event-layout.test.ts +277 -0
  230. package/src/utils/calendar-layout.ts +139 -0
  231. package/src/utils/compute-positioning.ts +44 -0
  232. package/src/utils/date-utils.ts +238 -0
  233. package/src/utils/double-tap-reset-zoom-gesture.ts +23 -0
  234. package/src/utils/generate-event-layouts.ts +314 -0
  235. package/src/utils/globals.ts +8 -0
  236. package/src/utils/pan-edit-event-gesture.ts +64 -0
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateEventLayouts = exports.default = void 0;
7
+ var _partition2 = _interopRequireDefault(require("lodash/partition"));
8
+ var _reduce2 = _interopRequireDefault(require("lodash/reduce"));
9
+ var _sortBy2 = _interopRequireDefault(require("lodash/sortBy"));
10
+ var _reverse2 = _interopRequireDefault(require("lodash/reverse"));
11
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
12
+ var _calendarLayout = require("src/utils/calendar-layout");
13
+ var _dateUtils = require("src/utils/date-utils");
14
+ var _computePositioning = _interopRequireDefault(require("src/utils/compute-positioning"));
15
+ var _types = require("src/types");
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ const generateEventLayouts = ({
18
+ events,
19
+ startCalendarDate,
20
+ endCalendarDate,
21
+ userCalendarId,
22
+ calendarViewInterval = "1day",
23
+ startDayOfWeekOffset = 0,
24
+ timezone
25
+ }) => {
26
+ // Calculate spacial layout for CalendarViewDay events
27
+ // in month view, midnight-spanning part-day events are rendered as all-day multi-day
28
+ const [allDayEvents, partDayEvents] = (0, _partition2.default)([...events], event => (0, _dateUtils.isAllDayOrSpansMidnight)(event, timezone));
29
+
30
+ // lowest priority sort by ID for consistent ordering of otherwise equal events
31
+ let allDayEventsSorted = (0, _sortBy2.default)(allDayEvents, event => event.id);
32
+
33
+ // secondary sort by length descending
34
+ allDayEventsSorted = (0, _sortBy2.default)(allDayEventsSorted, event => (0, _dateUtils.getDurationInDays)(event, timezone));
35
+ allDayEventsSorted = (0, _reverse2.default)(allDayEventsSorted);
36
+
37
+ // primary sort by start ascending
38
+ allDayEventsSorted = (0, _sortBy2.default)(allDayEventsSorted, event => new Date(event.start).valueOf());
39
+
40
+ // lowest priority sort by ID for consistent ordering of otherwise equal events
41
+ let partDayEventsSorted = (0, _sortBy2.default)(partDayEvents, event => event.id);
42
+ partDayEventsSorted = (0, _sortBy2.default)(partDayEventsSorted, event => (0, _dateUtils.getDuration)(event)); // secondary sort by duration ascending
43
+ partDayEventsSorted = (0, _sortBy2.default)(partDayEventsSorted, event => new Date(event.start).valueOf()); // primary sort by start ascending
44
+ const calendarViewDayEvents = [...allDayEventsSorted, ...(calendarViewInterval === "month" ? partDayEventsSorted : [])];
45
+ const visibleDayCount = _momentTimezone.default.tz(endCalendarDate, timezone).diff(_momentTimezone.default.tz(startCalendarDate, timezone), "days");
46
+ const visibleDays = [];
47
+ for (let dayCount = 0; dayCount <= visibleDayCount; dayCount++) {
48
+ visibleDays.push(_momentTimezone.default.tz(startCalendarDate, timezone).add(dayCount, "day").format("YYYY-MM-DD"));
49
+ }
50
+ const calendarViewDateRanges = visibleDays.map(visibleDay => {
51
+ return (0, _dateUtils.computeCalendarDateRange)(visibleDay, timezone, calendarViewInterval, startDayOfWeekOffset);
52
+ });
53
+ const result = {};
54
+ calendarViewDateRanges.forEach(date => {
55
+ const calendarLayoutOptions = {
56
+ visibleX: date.dayIndexes,
57
+ enableWeekBreaks: calendarViewInterval === "month",
58
+ startOfWeekXOffset: _momentTimezone.default.tz(date.basisDate, timezone).diff((0, _dateUtils.startOfUserWeek)(startDayOfWeekOffset, date.basisDate, timezone), "days")
59
+ };
60
+ const calendarViewDayLayout = (0, _reduce2.default)(calendarViewDayEvents, (calendarLayout, event) => {
61
+ const eventStartIndex = _momentTimezone.default.tz(event.start, timezone).startOf("day").diff(_momentTimezone.default.tz(date.basisDate, timezone), "days");
62
+ const eventDurationDays = (0, _dateUtils.getDurationInDays)(event, timezone);
63
+ calendarLayout.findFitAndInsert(eventStartIndex, eventDurationDays, event);
64
+ return calendarLayout;
65
+ }, new _calendarLayout.CalendarLayout(calendarLayoutOptions));
66
+ const calendarViewDayRowHeight = calendarViewDayLayout.height();
67
+
68
+ // set the calendar layout for each day
69
+ const calendarDates = date.calendarDates || [];
70
+ calendarDates.forEach(calendarDate => {
71
+ const currentDayDate = _momentTimezone.default.tz(calendarDate, timezone).startOf("day");
72
+ const startDate = currentDayDate.toDate();
73
+ const endDate = _momentTimezone.default.tz(startDate, timezone).endOf("day").toDate();
74
+ const showHours = !["month"].includes(calendarViewInterval);
75
+ const dayId = calendarDate;
76
+ const allDayEventsLayout = [];
77
+ let partDayEventsLayout = [];
78
+ const x = (0, _momentTimezone.default)(startDate).diff(_momentTimezone.default.tz(date.basisDate, timezone), "days");
79
+ for (let y = 0; y < calendarViewDayRowHeight; ++y) {
80
+ const {
81
+ event,
82
+ visibleWidthDays,
83
+ extend = _types.EventExtend.None,
84
+ isPrimaryRendered
85
+ } = calendarViewDayLayout.getViewAt(x, y);
86
+ if (event) {
87
+ allDayEventsLayout.push({
88
+ event,
89
+ rowIndex: y,
90
+ // @ts-ignore we know visibleWidthDays will be set for all day events if an event is returned
91
+ visibleWidthDays,
92
+ extend,
93
+ isPrimaryRendered
94
+ });
95
+ }
96
+ }
97
+
98
+ // Handle part day events according to view type
99
+ if (showHours) {
100
+ // Bucket, partition, sort, and handle collisions
101
+ partDayEventsLayout = partDayEventsLayout.concat(handleCollisions(events.filter(event => !(0, _dateUtils.isAllDayOrSpansMidnight)(event, timezone) && (0, _dateUtils.dateRangeIntersect)({
102
+ startDate: new Date(event.start),
103
+ endDate: new Date(event.end)
104
+ }, {
105
+ startDate,
106
+ endDate
107
+ })), userCalendarId, currentDayDate, timezone));
108
+ }
109
+ result[dayId] = {
110
+ allDayEventsLayout,
111
+ partDayEventsLayout
112
+ };
113
+ });
114
+ });
115
+ return result;
116
+ };
117
+ exports.generateEventLayouts = generateEventLayouts;
118
+ const combineEventPosition = (dayDate, timezone, collisionObject) => {
119
+ const position = (0, _computePositioning.default)({
120
+ timezone,
121
+ collisionObject: collisionObject,
122
+ startOfDayMoment: dayDate
123
+ });
124
+ return {
125
+ ...collisionObject,
126
+ position
127
+ };
128
+ };
129
+ const handleCollisions = (allEvents, userCalendarId, dayDate, timezone) => {
130
+ let stackableEvents = (0, _sortBy2.default)(allEvents, event => event.id);
131
+ stackableEvents = (0, _sortBy2.default)(stackableEvents, event => {
132
+ // current user's primary calendar should always be leftmost option
133
+ return event.calendarId && !event.calendarId.includes(userCalendarId);
134
+ });
135
+ stackableEvents = (0, _sortBy2.default)(stackableEvents, event => new Date(event.start).valueOf());
136
+ // calculate overlap stack properties
137
+ const stackedEvtsByPos = {};
138
+ let curStack = [];
139
+ for (const evt of stackableEvents) {
140
+ // already sorted by startDate
141
+ for (let idx = 0; idx < curStack.length; idx++) {
142
+ const stackEvt = curStack[idx];
143
+ if (stackEvt) {
144
+ const stackEvtEnd = new Date(stackEvt.event.end).valueOf();
145
+ const stackEvtStart = new Date(stackEvt.event.start).valueOf();
146
+ const eventStart = new Date(evt.start).valueOf();
147
+
148
+ // events shorter than 15 minutes behave as if they had 15 minute duration.
149
+ // matches behavior in calendar view, where the shortest 'height' an event is given matches the height of a 15 minute event.
150
+ const duration = (stackEvtEnd - stackEvtStart) / (1000 * 60);
151
+ const endDate = duration < 15 ? stackEvtStart + 15 * 60 * 1000 : stackEvtEnd;
152
+ if (endDate <= eventStart) {
153
+ // null out this event's position in stack
154
+ curStack[idx] = null;
155
+ if (curStack.length > 1) {
156
+ stackEvt.collisions = {
157
+ total: curStack.length,
158
+ order: idx
159
+ };
160
+ }
161
+ stackedEvtsByPos[idx] ? stackedEvtsByPos[idx].push(combineEventPosition(dayDate, timezone, stackEvt)) : stackedEvtsByPos[idx] = [combineEventPosition(dayDate, timezone, stackEvt)];
162
+ if (!curStack.some(el => el)) {
163
+ curStack = [];
164
+ }
165
+ }
166
+ }
167
+ }
168
+
169
+ // plop evt into first null placeholder we find, or just push if we don't have any.
170
+ const spliceIdx = curStack.findIndex(stackEvt => !stackEvt);
171
+ spliceIdx > -1 ? curStack.splice(spliceIdx, 1, {
172
+ event: evt
173
+ }) : curStack.splice(curStack.length, 0, {
174
+ event: evt
175
+ });
176
+ }
177
+
178
+ // clean up stack if we've exhausted allEvents and it's unpopped.
179
+ for (let idx = 0; idx < curStack.length; idx++) {
180
+ const stackEvt = curStack[idx];
181
+ if (stackEvt) {
182
+ if (curStack.length > 1) {
183
+ stackEvt.collisions = {
184
+ total: curStack.length,
185
+ order: idx
186
+ };
187
+ }
188
+ stackedEvtsByPos[idx] ? stackedEvtsByPos[idx].push(combineEventPosition(dayDate, timezone, stackEvt)) : stackedEvtsByPos[idx] = [combineEventPosition(dayDate, timezone, stackEvt)];
189
+ }
190
+ }
191
+
192
+ // always draw position 0 stack elements first.
193
+ let stackedEvents = [];
194
+ Object.keys(stackedEvtsByPos).forEach(pos => stackedEvents = stackedEvents.concat(stackedEvtsByPos[pos]));
195
+ return [...stackedEvents];
196
+ };
197
+ var _default = exports.default = generateEventLayouts;
198
+ //# sourceMappingURL=generate-event-layouts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_partition2","_interopRequireDefault","require","_reduce2","_sortBy2","_reverse2","_momentTimezone","_calendarLayout","_dateUtils","_computePositioning","_types","e","__esModule","default","generateEventLayouts","events","startCalendarDate","endCalendarDate","userCalendarId","calendarViewInterval","startDayOfWeekOffset","timezone","allDayEvents","partDayEvents","_partition","event","isAllDayOrSpansMidnight","allDayEventsSorted","_sortBy","id","getDurationInDays","_reverse","Date","start","valueOf","partDayEventsSorted","getDuration","calendarViewDayEvents","visibleDayCount","moment","tz","diff","visibleDays","dayCount","push","add","format","calendarViewDateRanges","map","visibleDay","computeCalendarDateRange","result","forEach","date","calendarLayoutOptions","visibleX","dayIndexes","enableWeekBreaks","startOfWeekXOffset","basisDate","startOfUserWeek","calendarViewDayLayout","_reduce","calendarLayout","eventStartIndex","startOf","eventDurationDays","findFitAndInsert","CalendarLayout","calendarViewDayRowHeight","height","calendarDates","calendarDate","currentDayDate","startDate","toDate","endDate","endOf","showHours","includes","dayId","allDayEventsLayout","partDayEventsLayout","x","y","visibleWidthDays","extend","EventExtend","None","isPrimaryRendered","getViewAt","rowIndex","concat","handleCollisions","filter","dateRangeIntersect","end","exports","combineEventPosition","dayDate","collisionObject","position","computePositioning","startOfDayMoment","allEvents","stackableEvents","calendarId","stackedEvtsByPos","curStack","evt","idx","length","stackEvt","stackEvtEnd","stackEvtStart","eventStart","duration","collisions","total","order","some","el","spliceIdx","findIndex","splice","stackedEvents","Object","keys","pos","_default"],"sourceRoot":"../../../src","sources":["utils/generate-event-layouts.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TOP_MARGIN_PIXEL_OFFSET = exports.DEFAULT_MINUTE_HEIGHT = exports.ConfigProvider = void 0;
7
+ var _react = require("react");
8
+ const ConfigProvider = exports.ConfigProvider = /*#__PURE__*/(0, _react.createContext)(undefined);
9
+ const DEFAULT_MINUTE_HEIGHT = exports.DEFAULT_MINUTE_HEIGHT = 0.8;
10
+ const TOP_MARGIN_PIXEL_OFFSET = exports.TOP_MARGIN_PIXEL_OFFSET = 5;
11
+ //# sourceMappingURL=globals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","ConfigProvider","exports","createContext","undefined","DEFAULT_MINUTE_HEIGHT","TOP_MARGIN_PIXEL_OFFSET"],"sourceRoot":"../../../src","sources":["utils/globals.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGO,MAAMC,cAAc,GAAAC,OAAA,CAAAD,cAAA,gBAAG,IAAAE,oBAAa,EAASC,SAAkB,CAAC;AAEhE,MAAMC,qBAAqB,GAAAH,OAAA,CAAAG,qBAAA,GAAG,GAAG;AAEjC,MAAMC,uBAAuB,GAAAJ,OAAA,CAAAI,uBAAA,GAAG,CAAC","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNativeGestureHandler = require("react-native-gesture-handler");
8
+ var _reactNativeReanimated = require("react-native-reanimated");
9
+ const gesturePan = (startY, top, currentY, zoomLevel, maximumHour, height, refNewEvent, fiveMinuteInterval, isEditing, startEditing) => _reactNativeGestureHandler.Gesture.Pan().blocksExternalGesture(refNewEvent).onStart(() => {
10
+ if (startEditing) {
11
+ if (isEditing) {
12
+ return;
13
+ }
14
+ if (!isEditing) {
15
+ (0, _reactNativeReanimated.runOnJS)(startEditing)();
16
+ }
17
+ }
18
+ startY.value = top.value;
19
+ }).onUpdate(({
20
+ translationY
21
+ }) => {
22
+ let freshUpdatedStartTime;
23
+ if (fiveMinuteInterval) {
24
+ // Set the updated time in 15 minute increments but make sure we never go lower
25
+ // than the first minute of the day
26
+ freshUpdatedStartTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value / 5) * (zoomLevel.value * 5));
27
+ } else {
28
+ // Set the updated time in 1 minute increments but make sure we never go lower
29
+ // than the first minute of the day
30
+ freshUpdatedStartTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value) * zoomLevel.value);
31
+ }
32
+
33
+ // Make sure the event does not span after midnight, and if so make sure it
34
+ // is limited to exactly midnight
35
+ if (freshUpdatedStartTime > maximumHour.value - height.value) {
36
+ freshUpdatedStartTime = maximumHour.value - height.value;
37
+ }
38
+ currentY.value = freshUpdatedStartTime;
39
+ });
40
+ var _default = exports.default = gesturePan;
41
+ //# sourceMappingURL=pan-edit-event-gesture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeGestureHandler","require","_reactNativeReanimated","gesturePan","startY","top","currentY","zoomLevel","maximumHour","height","refNewEvent","fiveMinuteInterval","isEditing","startEditing","Gesture","Pan","blocksExternalGesture","onStart","runOnJS","value","onUpdate","translationY","freshUpdatedStartTime","Math","max","floor","_default","exports","default"],"sourceRoot":"../../../src","sources":["utils/pan-edit-event-gesture.ts"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AAIA,MAAME,UAAU,GAAGA,CACjBC,MAA2B,EAC3BC,GAAwB,EACxBC,QAA6B,EAC7BC,SAA8B,EAC9BC,WAAgC,EAChCC,MAA2B,EAC3BC,WAA2B,EAC3BC,kBAA4B,EAC5BC,SAAyC,EACzCC,YAAyB,KAEzBC,kCAAO,CAACC,GAAG,CAAC,CAAC,CACVC,qBAAqB,CAACN,WAAW,CAAC,CAClCO,OAAO,CAAC,MAAM;EACb,IAAIJ,YAAY,EAAE;IAChB,IAAID,SAAS,EAAE;MACb;IACF;IAEA,IAAI,CAACA,SAAS,EAAE;MACd,IAAAM,8BAAO,EAACL,YAAY,CAAC,CAAC,CAAC;IACzB;EACF;EAEAT,MAAM,CAACe,KAAK,GAAGd,GAAG,CAACc,KAAK;AAC1B,CAAC,CAAC,CACDC,QAAQ,CAAC,CAAC;EAAEC;AAAa,CAAC,KAAK;EAC9B,IAAIC,qBAAqB;EAEzB,IAAIX,kBAAkB,EAAE;IACtB;IACA;IACAW,qBAAqB,GAAGC,IAAI,CAACC,GAAG,CAC9B,CAAC,EACDpB,MAAM,CAACe,KAAK,GACVI,IAAI,CAACE,KAAK,CAACJ,YAAY,GAAGd,SAAS,CAACY,KAAK,GAAG,CAAC,CAAC,IAC3CZ,SAAS,CAACY,KAAK,GAAG,CAAC,CAC1B,CAAC;EACH,CAAC,MAAM;IACL;IACA;IACAG,qBAAqB,GAAGC,IAAI,CAACC,GAAG,CAC9B,CAAC,EACDpB,MAAM,CAACe,KAAK,GACVI,IAAI,CAACE,KAAK,CAACJ,YAAY,GAAGd,SAAS,CAACY,KAAK,CAAC,GAAGZ,SAAS,CAACY,KAC3D,CAAC;EACH;;EAEA;EACA;EACA,IAAIG,qBAAqB,GAAGd,WAAW,CAACW,KAAK,GAAGV,MAAM,CAACU,KAAK,EAAE;IAC5DG,qBAAqB,GAAGd,WAAW,CAACW,KAAK,GAAGV,MAAM,CAACU,KAAK;EAC1D;EAEAb,QAAQ,CAACa,KAAK,GAAGG,qBAAqB;AACxC,CAAC,CAAC;AAAC,IAAAI,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEQzB,UAAU","ignoreList":[]}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ import { memo, useCallback, useContext, useState } from "react";
4
+ import { ConfigProvider } from "src/utils/globals";
5
+ import { StyleSheet, Text, View } from "react-native";
6
+ import EventContainer from "src/components/event-container";
7
+ import { Pressable } from "react-native-gesture-handler";
8
+ import Animated, { runOnJS, useAnimatedStyle, useSharedValue, withTiming } from "react-native-reanimated";
9
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
+ const AllDayEvents = /*#__PURE__*/memo(() => {
11
+ const {
12
+ layout,
13
+ theme,
14
+ maxAllDayEvents
15
+ } = useContext(ConfigProvider);
16
+ const [showAllDayEvents, setShowAllDayEvents] = useState(false);
17
+ const measuredHeight = useSharedValue(0);
18
+ const originalHeight = useSharedValue(0);
19
+ const onPress = useCallback(() => {
20
+ const newState = !showAllDayEvents;
21
+ if (!newState) {
22
+ measuredHeight.value = withTiming(originalHeight.value, {
23
+ duration: 250
24
+ }, () => {
25
+ runOnJS(setShowAllDayEvents)(newState);
26
+ });
27
+ } else {
28
+ setShowAllDayEvents(newState);
29
+ }
30
+ }, [measuredHeight, originalHeight, showAllDayEvents]);
31
+ const allDayEvents = showAllDayEvents ? layout.allDayEventsLayout : layout.allDayEventsLayout.slice(0, maxAllDayEvents);
32
+ const restEventAmount = layout.allDayEventsLayout.length - allDayEvents.length;
33
+
34
+ // Called whenever the content inside changes layout
35
+ const onContentLayout = useCallback(e => {
36
+ const {
37
+ height
38
+ } = e.nativeEvent.layout;
39
+ if (!originalHeight.value) {
40
+ originalHeight.value = height;
41
+ measuredHeight.value = height;
42
+ return;
43
+ }
44
+
45
+ // Animate from the old height to the new height
46
+ measuredHeight.value = withTiming(height, {
47
+ duration: 250
48
+ });
49
+ }, [measuredHeight, originalHeight]);
50
+
51
+ // Apply the animated height to the wrapping container
52
+ const animatedStyle = useAnimatedStyle(() => {
53
+ return {
54
+ // This ensures the container’s height animates smoothly
55
+ height: measuredHeight.value
56
+ };
57
+ });
58
+ return /*#__PURE__*/_jsx(View, {
59
+ style: [styles.container, theme?.allDayContainer],
60
+ children: /*#__PURE__*/_jsxs(View, {
61
+ style: [styles.eventContainer, theme?.allDayEventContainer],
62
+ children: [/*#__PURE__*/_jsx(Animated.View, {
63
+ style: [animatedStyle, {
64
+ overflow: "hidden",
65
+ // so children get clipped during animation
66
+ backgroundColor: "lightgrey",
67
+ minHeight: 1
68
+ }],
69
+ children: /*#__PURE__*/_jsx(View, {
70
+ onLayout: onContentLayout,
71
+ children: allDayEvents.map(allDayLayout => /*#__PURE__*/_jsx(EventContainer, {
72
+ layout: allDayLayout
73
+ }, allDayLayout.event.id))
74
+ })
75
+ }), layout.allDayEventsLayout.length > maxAllDayEvents ? /*#__PURE__*/_jsx(Pressable, {
76
+ onPress: onPress,
77
+ children: /*#__PURE__*/_jsx(View, {
78
+ style: [styles.moreContainer, theme?.allDayShowMoreContainer],
79
+ children: /*#__PURE__*/_jsx(Text, {
80
+ style: [styles.moreContainerText, theme?.allDayShowMoreText],
81
+ children: restEventAmount ? `${restEventAmount} more` : "Show less"
82
+ })
83
+ })
84
+ }) : null]
85
+ })
86
+ });
87
+ }, () => true);
88
+ export default AllDayEvents;
89
+ const styles = StyleSheet.create({
90
+ container: {
91
+ borderBottomWidth: StyleSheet.hairlineWidth,
92
+ borderColor: "black",
93
+ overflow: "hidden"
94
+ },
95
+ eventContainer: {
96
+ marginLeft: 50,
97
+ marginRight: 10,
98
+ borderLeftWidth: StyleSheet.hairlineWidth,
99
+ borderColor: "black"
100
+ },
101
+ moreContainer: {
102
+ padding: 5
103
+ },
104
+ moreContainerText: {
105
+ fontSize: 12,
106
+ fontWeight: "bold",
107
+ color: "grey"
108
+ }
109
+ });
110
+ //# sourceMappingURL=all-day-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","useContext","useState","ConfigProvider","StyleSheet","Text","View","EventContainer","Pressable","Animated","runOnJS","useAnimatedStyle","useSharedValue","withTiming","jsx","_jsx","jsxs","_jsxs","AllDayEvents","layout","theme","maxAllDayEvents","showAllDayEvents","setShowAllDayEvents","measuredHeight","originalHeight","onPress","newState","value","duration","allDayEvents","allDayEventsLayout","slice","restEventAmount","length","onContentLayout","e","height","nativeEvent","animatedStyle","style","styles","container","allDayContainer","children","eventContainer","allDayEventContainer","overflow","backgroundColor","minHeight","onLayout","map","allDayLayout","event","id","moreContainer","allDayShowMoreContainer","moreContainerText","allDayShowMoreText","create","borderBottomWidth","hairlineWidth","borderColor","marginLeft","marginRight","borderLeftWidth","padding","fontSize","fontWeight","color"],"sourceRoot":"../../../src","sources":["components/all-day-events.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ import { memo, useContext } from "react";
4
+ import Animated, { useAnimatedStyle } from "react-native-reanimated";
5
+ import { StyleSheet } from "react-native";
6
+ import { ConfigProvider } from "src/utils/globals";
7
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
8
+ const BackgroundHoursContent = /*#__PURE__*/memo(({
9
+ hours
10
+ }) => {
11
+ const {
12
+ theme,
13
+ zoomLevel
14
+ } = useContext(ConfigProvider);
15
+ const styleHourSize = useAnimatedStyle(() => {
16
+ return {
17
+ height: zoomLevel.value * 60
18
+ };
19
+ }, []);
20
+ return /*#__PURE__*/_jsx(_Fragment, {
21
+ children: hours.map(hour => /*#__PURE__*/_jsx(Animated.View, {
22
+ style: [styles.hourContainer, hour === hours[hours.length - 1] ? styles.bottomBorder : undefined, theme?.backgroundHoursLayoutContainer, styleHourSize]
23
+ }, hour.increment))
24
+ });
25
+ }, () => true);
26
+ const styles = StyleSheet.create({
27
+ hourContainer: {
28
+ borderTopWidth: StyleSheet.hairlineWidth,
29
+ marginRight: -20,
30
+ borderColor: "black"
31
+ },
32
+ bottomBorder: {
33
+ borderBottomWidth: StyleSheet.hairlineWidth
34
+ }
35
+ });
36
+ export default BackgroundHoursContent;
37
+ //# sourceMappingURL=background-hours-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useContext","Animated","useAnimatedStyle","StyleSheet","ConfigProvider","jsx","_jsx","Fragment","_Fragment","BackgroundHoursContent","hours","theme","zoomLevel","styleHourSize","height","value","children","map","hour","View","style","styles","hourContainer","length","bottomBorder","undefined","backgroundHoursLayoutContainer","increment","create","borderTopWidth","hairlineWidth","marginRight","borderColor","borderBottomWidth"],"sourceRoot":"../../../src","sources":["components/background-hours-content.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,UAAU,QAAQ,OAAO;AACxC,OAAOC,QAAQ,IAAIC,gBAAgB,QAAQ,yBAAyB;AACpE,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,cAAc,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA;AAOnD,MAAMC,sBAAsB,gBAAGV,IAAI,CACjC,CAAC;EAAEW;AAAmC,CAAC,KAAK;EAC1C,MAAM;IAAEC,KAAK;IAAEC;EAAU,CAAC,GAAGZ,UAAU,CAACI,cAAc,CAAC;EAEvD,MAAMS,aAAa,GAAGX,gBAAgB,CAAC,MAAM;IAC3C,OAAO;MAAEY,MAAM,EAAEF,SAAS,CAACG,KAAK,GAAG;IAAG,CAAC;EACzC,CAAC,EAAE,EAAE,CAAC;EAEN,oBACET,IAAA,CAAAE,SAAA;IAAAQ,QAAA,EACGN,KAAK,CAACO,GAAG,CAAEC,IAAI,iBACdZ,IAAA,CAACL,QAAQ,CAACkB,IAAI;MACZC,KAAK,EAAE,CACLC,MAAM,CAACC,aAAa,EACpBJ,IAAI,KAAKR,KAAK,CAACA,KAAK,CAACa,MAAM,GAAG,CAAC,CAAC,GAC5BF,MAAM,CAACG,YAAY,GACnBC,SAAS,EACbd,KAAK,EAAEe,8BAA8B,EACrCb,aAAa;IACb,GACGK,IAAI,CAACS,SACX,CACF;EAAC,CACF,CAAC;AAEP,CAAC,EACD,MAAM,IACR,CAAC;AAED,MAAMN,MAAM,GAAGlB,UAAU,CAACyB,MAAM,CAAC;EAC/BN,aAAa,EAAE;IACbO,cAAc,EAAE1B,UAAU,CAAC2B,aAAa;IACxCC,WAAW,EAAE,CAAC,EAAE;IAChBC,WAAW,EAAE;EACf,CAAC;EACDR,YAAY,EAAE;IACZS,iBAAiB,EAAE9B,UAAU,CAAC2B;EAChC;AACF,CAAC,CAAC;AAEF,eAAerB,sBAAsB","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ import { memo, useContext } from "react";
4
+ import Animated, { useAnimatedStyle } from "react-native-reanimated";
5
+ import { StyleSheet, Text, View } from "react-native";
6
+ import { ConfigProvider } from "src/utils/globals";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const BackgroundHoursLayout = /*#__PURE__*/memo(({
9
+ hours
10
+ }) => {
11
+ const {
12
+ theme,
13
+ zoomLevel
14
+ } = useContext(ConfigProvider);
15
+ const styleHourSize = useAnimatedStyle(() => {
16
+ return {
17
+ height: zoomLevel.value * 60
18
+ };
19
+ }, []);
20
+ return /*#__PURE__*/_jsx(View, {
21
+ style: [styles.hourContainer, theme?.backgroundHoursContainer],
22
+ children: hours.map(hour => /*#__PURE__*/_jsx(Animated.View, {
23
+ style: [styles.hourInnerContainer, theme?.backgroundHoursInnerContainer, styleHourSize],
24
+ children: /*#__PURE__*/_jsx(Text, {
25
+ style: [styles.hourText, theme?.backgroundHoursText],
26
+ children: hour.hourFormatted
27
+ })
28
+ }, hour.increment))
29
+ });
30
+ }, () => true);
31
+ const styles = StyleSheet.create({
32
+ hourContainer: {
33
+ flexDirection: "column",
34
+ flexGrow: 0,
35
+ flexShrink: 0,
36
+ flexBasis: 50,
37
+ paddingRight: 6
38
+ },
39
+ hourInnerContainer: {
40
+ marginTop: -12,
41
+ marginBottom: 12,
42
+ marginRight: 0
43
+ },
44
+ hourText: {
45
+ textAlign: "right",
46
+ color: "black",
47
+ fontSize: 10
48
+ }
49
+ });
50
+ export default BackgroundHoursLayout;
51
+ //# sourceMappingURL=background-hours-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useContext","Animated","useAnimatedStyle","StyleSheet","Text","View","ConfigProvider","jsx","_jsx","BackgroundHoursLayout","hours","theme","zoomLevel","styleHourSize","height","value","style","styles","hourContainer","backgroundHoursContainer","children","map","hour","hourInnerContainer","backgroundHoursInnerContainer","hourText","backgroundHoursText","hourFormatted","increment","create","flexDirection","flexGrow","flexShrink","flexBasis","paddingRight","marginTop","marginBottom","marginRight","textAlign","color","fontSize"],"sourceRoot":"../../../src","sources":["components/background-hours-layout.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,UAAU,QAAQ,OAAO;AACxC,OAAOC,QAAQ,IAAIC,gBAAgB,QAAQ,yBAAyB;AACpE,SAASC,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACrD,SAASC,cAAc,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOnD,MAAMC,qBAAqB,gBAAGV,IAAI,CAChC,CAAC;EAAEW;AAAkC,CAAC,KAAK;EACzC,MAAM;IAAEC,KAAK;IAAEC;EAAU,CAAC,GAAGZ,UAAU,CAACM,cAAc,CAAC;EAEvD,MAAMO,aAAa,GAAGX,gBAAgB,CAAC,MAAM;IAC3C,OAAO;MAAEY,MAAM,EAAEF,SAAS,CAACG,KAAK,GAAG;IAAG,CAAC;EACzC,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEP,IAAA,CAACH,IAAI;IAACW,KAAK,EAAE,CAACC,MAAM,CAACC,aAAa,EAAEP,KAAK,EAAEQ,wBAAwB,CAAE;IAAAC,QAAA,EAClEV,KAAK,CAACW,GAAG,CAAEC,IAAI,iBACdd,IAAA,CAACP,QAAQ,CAACI,IAAI;MACZW,KAAK,EAAE,CACLC,MAAM,CAACM,kBAAkB,EACzBZ,KAAK,EAAEa,6BAA6B,EACpCX,aAAa,CACb;MAAAO,QAAA,eAGFZ,IAAA,CAACJ,IAAI;QAACY,KAAK,EAAE,CAACC,MAAM,CAACQ,QAAQ,EAAEd,KAAK,EAAEe,mBAAmB,CAAE;QAAAN,QAAA,EACxDE,IAAI,CAACK;MAAa,CACf;IAAC,GAJFL,IAAI,CAACM,SAKG,CAChB;EAAC,CACE,CAAC;AAEX,CAAC,EACD,MAAM,IACR,CAAC;AAED,MAAMX,MAAM,GAAGd,UAAU,CAAC0B,MAAM,CAAC;EAC/BX,aAAa,EAAE;IACbY,aAAa,EAAE,QAAQ;IACvBC,QAAQ,EAAE,CAAC;IACXC,UAAU,EAAE,CAAC;IACbC,SAAS,EAAE,EAAE;IACbC,YAAY,EAAE;EAChB,CAAC;EACDX,kBAAkB,EAAE;IAClBY,SAAS,EAAE,CAAC,EAAE;IACdC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE;EACf,CAAC;EACDZ,QAAQ,EAAE;IACRa,SAAS,EAAE,OAAO;IAClBC,KAAK,EAAE,OAAO;IACdC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,eAAe/B,qBAAqB","ignoreList":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ import Animated, { useSharedValue } from "react-native-reanimated";
4
+ import { useMemo } from "react";
5
+ import { Gesture, GestureDetector } from "react-native-gesture-handler";
6
+ import { StyleSheet } from "react-native";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const DragBar = ({
9
+ top,
10
+ height,
11
+ render,
12
+ refMainContainer,
13
+ fiveMinuteInterval,
14
+ zoomLevel,
15
+ maximumHour
16
+ }) => {
17
+ const startY = useSharedValue(0);
18
+ const gesturePan = Gesture.Pan().blocksExternalGesture(refMainContainer).onStart(() => {
19
+ startY.value = top ? top.value : height.value;
20
+ }).onUpdate(({
21
+ translationY
22
+ }) => {
23
+ if (top) {
24
+ const originalY = top.value;
25
+ let freshUpdatedStartTime;
26
+ if (fiveMinuteInterval) {
27
+ // Set the updated time in 15 minute increments but make sure we never go lower
28
+ // than the first minute of the day
29
+ freshUpdatedStartTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value / 5) * (zoomLevel.value * 5));
30
+ } else {
31
+ // Set the updated time in 1 minute increments but make sure we never go lower
32
+ // than the first minute of the day
33
+ freshUpdatedStartTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value) * zoomLevel.value);
34
+ }
35
+
36
+ // Make sure the event does not span after midnight, and if so make sure it
37
+ // is limited to exactly midnight
38
+ if (freshUpdatedStartTime > maximumHour.value - height.value) {
39
+ freshUpdatedStartTime = maximumHour.value - height.value;
40
+ }
41
+ top.value = freshUpdatedStartTime;
42
+ height.value = height.value + (originalY - top.value);
43
+ return;
44
+ }
45
+ let freshUpdatedEndTime;
46
+ if (fiveMinuteInterval) {
47
+ // Set the updated time in 15 minute increments but make sure we never go lower
48
+ // than the first minute of the day
49
+ freshUpdatedEndTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value / 5) * (zoomLevel.value * 5));
50
+ } else {
51
+ // Set the updated time in 1 minute increments but make sure we never go lower
52
+ // than the first minute of the day
53
+ freshUpdatedEndTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value) * zoomLevel.value);
54
+ }
55
+ height.value = freshUpdatedEndTime;
56
+ });
57
+ const styleDragBar = useMemo(() => ({
58
+ bottom: !top ? 0 : undefined,
59
+ top: top ? 0 : undefined
60
+ }), [top]);
61
+ const renderedComponent = useMemo(render, [render]);
62
+ return /*#__PURE__*/_jsx(GestureDetector, {
63
+ gesture: gesturePan,
64
+ children: /*#__PURE__*/_jsx(Animated.View, {
65
+ style: [styles.dragBar, styleDragBar],
66
+ children: renderedComponent
67
+ })
68
+ });
69
+ };
70
+ export default DragBar;
71
+ const styles = StyleSheet.create({
72
+ dragBar: {
73
+ position: "absolute",
74
+ left: 0,
75
+ right: 0
76
+ }
77
+ });
78
+ //# sourceMappingURL=drag-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Animated","useSharedValue","useMemo","Gesture","GestureDetector","StyleSheet","jsx","_jsx","DragBar","top","height","render","refMainContainer","fiveMinuteInterval","zoomLevel","maximumHour","startY","gesturePan","Pan","blocksExternalGesture","onStart","value","onUpdate","translationY","originalY","freshUpdatedStartTime","Math","max","floor","freshUpdatedEndTime","styleDragBar","bottom","undefined","renderedComponent","gesture","children","View","style","styles","dragBar","create","position","left","right"],"sourceRoot":"../../../src","sources":["components/drag-bar.tsx"],"mappings":"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","ignoreList":[]}