@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,107 @@
1
+ "use strict";
2
+
3
+ import { memo, useCallback, useContext, useEffect, useRef } from "react";
4
+ import { useIsEditing } from "src/hooks/use-is-editing";
5
+ import { ConfigProvider } from "src/utils/globals";
6
+ import { Gesture, GestureDetector } from "react-native-gesture-handler";
7
+ import Animated, { runOnJS, useAnimatedReaction, useAnimatedStyle, useDerivedValue, useSharedValue } from "react-native-reanimated";
8
+ import { EventExtend } from "src/types";
9
+ import gesturePan from "src/utils/pan-edit-event-gesture";
10
+ import DragBar from "src/components/drag-bar";
11
+ import { StyleSheet } from "react-native";
12
+ import moment from "moment-timezone";
13
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
+ const EditEventContainer = /*#__PURE__*/memo(({
15
+ refNewEvent
16
+ }) => {
17
+ const {
18
+ currentY,
19
+ isEditing: editingEvent,
20
+ setIsEditing
21
+ } = useIsEditing();
22
+ const {
23
+ maximumHour,
24
+ fiveMinuteInterval,
25
+ renderDragBars,
26
+ zoomLevel,
27
+ renderEvent,
28
+ timezone,
29
+ dayDate
30
+ } = useContext(ConfigProvider);
31
+ const height = useSharedValue(0);
32
+ useEffect(() => {
33
+ if (editingEvent) {
34
+ height.value = editingEvent.position.height * zoomLevel.value;
35
+ currentY.value = editingEvent.position.top * zoomLevel.value;
36
+ }
37
+ }, [height, editingEvent, currentY, zoomLevel]);
38
+ useAnimatedReaction(() => zoomLevel.value, zoom => {
39
+ if (editingEvent) {
40
+ height.value = editingEvent.position.height * zoom;
41
+ currentY.value = editingEvent.position.top * zoom;
42
+ }
43
+ }, [height, currentY, zoomLevel, editingEvent]);
44
+ const styleAnimatedPosition = useAnimatedStyle(() => {
45
+ if (!editingEvent) {
46
+ return {
47
+ opacity: 0
48
+ };
49
+ }
50
+ return {
51
+ marginLeft: StyleSheet.hairlineWidth,
52
+ position: "absolute",
53
+ height: height.value,
54
+ top: currentY.value,
55
+ opacity: 1,
56
+ width: "100%"
57
+ };
58
+ }, [editingEvent]);
59
+ const startY = useSharedValue(0);
60
+ const updatedStart = useDerivedValue(() => {
61
+ return currentY.value / zoomLevel.value;
62
+ }, []);
63
+ const updatedEnd = useDerivedValue(() => {
64
+ return (currentY.value + height.value) / zoomLevel.value;
65
+ }, []);
66
+ const endEventEditing = useCallback((newStart, newEnd) => {
67
+ // Format the new start and end times
68
+ setIsEditing(null, {
69
+ updatedStart: moment.tz(dayDate, timezone).minutes(newStart).format(),
70
+ updatedEnd: moment.tz(dayDate, timezone).minutes(newEnd).format()
71
+ });
72
+ }, [dayDate, setIsEditing, timezone]);
73
+ const gestureTap = Gesture.Tap().numberOfTaps(1).onStart(() => {
74
+ runOnJS(endEventEditing)(updatedStart.value, updatedEnd.value);
75
+ });
76
+ const refMainContainer = useRef();
77
+ if (!editingEvent) {
78
+ return null;
79
+ }
80
+ return /*#__PURE__*/_jsx(GestureDetector, {
81
+ gesture: Gesture.Simultaneous(gestureTap, gesturePan(startY, currentY, currentY, zoomLevel, maximumHour, height, refNewEvent, fiveMinuteInterval).withRef(refMainContainer)),
82
+ children: /*#__PURE__*/_jsxs(Animated.View, {
83
+ style: styleAnimatedPosition,
84
+ children: [renderEvent(editingEvent.event, EventExtend.None, height, {
85
+ updatedEnd,
86
+ updatedStart
87
+ }), renderDragBars?.top ? /*#__PURE__*/_jsx(DragBar, {
88
+ top: currentY,
89
+ height: height,
90
+ render: renderDragBars.top,
91
+ refMainContainer: refMainContainer,
92
+ zoomLevel: zoomLevel,
93
+ maximumHour: maximumHour,
94
+ fiveMinuteInterval: fiveMinuteInterval
95
+ }) : null, renderDragBars?.bottom ? /*#__PURE__*/_jsx(DragBar, {
96
+ height: height,
97
+ render: renderDragBars.bottom,
98
+ refMainContainer: refMainContainer,
99
+ zoomLevel: zoomLevel,
100
+ maximumHour: maximumHour,
101
+ fiveMinuteInterval: fiveMinuteInterval
102
+ }) : null]
103
+ })
104
+ });
105
+ }, () => true);
106
+ export default EditEventContainer;
107
+ //# sourceMappingURL=edit-event-container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","useContext","useEffect","useRef","useIsEditing","ConfigProvider","Gesture","GestureDetector","Animated","runOnJS","useAnimatedReaction","useAnimatedStyle","useDerivedValue","useSharedValue","EventExtend","gesturePan","DragBar","StyleSheet","moment","jsx","_jsx","jsxs","_jsxs","EditEventContainer","refNewEvent","currentY","isEditing","editingEvent","setIsEditing","maximumHour","fiveMinuteInterval","renderDragBars","zoomLevel","renderEvent","timezone","dayDate","height","value","position","top","zoom","styleAnimatedPosition","opacity","marginLeft","hairlineWidth","width","startY","updatedStart","updatedEnd","endEventEditing","newStart","newEnd","tz","minutes","format","gestureTap","Tap","numberOfTaps","onStart","refMainContainer","gesture","Simultaneous","withRef","children","View","style","event","None","render","bottom"],"sourceRoot":"../../../src","sources":["components/edit-event-container.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ import { ConfigProvider } from "src/utils/globals";
4
+ import { useCallback, useContext, useMemo } from "react";
5
+ import { Pressable } from "react-native-gesture-handler";
6
+ import { View } from "react-native";
7
+ import { EventExtend } from "src/types";
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const EventContainer = ({
10
+ layout
11
+ }) => {
12
+ const {
13
+ onPressEvent,
14
+ renderEvent,
15
+ initialZoomLevel
16
+ } = useContext(ConfigProvider);
17
+ const render = useMemo(() => renderEvent(layout.event, layout.extend ? layout.extend : EventExtend.None), [layout, renderEvent]);
18
+ const stylePosition = useMemo(() => ({
19
+ height: Math.max(28, 24 * initialZoomLevel)
20
+ }), [initialZoomLevel]);
21
+ const onPress = useCallback(() => {
22
+ onPressEvent && onPressEvent(layout.event);
23
+ }, [layout.event, onPressEvent]);
24
+ return /*#__PURE__*/_jsx(Pressable, {
25
+ onPress: onPress,
26
+ children: /*#__PURE__*/_jsx(View, {
27
+ style: stylePosition,
28
+ children: render
29
+ })
30
+ });
31
+ };
32
+ export default EventContainer;
33
+ //# sourceMappingURL=event-container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ConfigProvider","useCallback","useContext","useMemo","Pressable","View","EventExtend","jsx","_jsx","EventContainer","layout","onPressEvent","renderEvent","initialZoomLevel","render","event","extend","None","stylePosition","height","Math","max","onPress","children","style"],"sourceRoot":"../../../src","sources":["components/event-container.tsx"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,mBAAmB;AAClD,SAASC,WAAW,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AACxD,SAASC,SAAS,QAAQ,8BAA8B;AACxD,SAASC,IAAI,QAAQ,cAAc;AACnC,SAAgCC,WAAW,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAM/D,MAAMC,cAAc,GAAGA,CAAC;EAAEC;AAA4B,CAAC,KAAK;EAC1D,MAAM;IAAEC,YAAY;IAAEC,WAAW;IAAEC;EAAiB,CAAC,GACnDX,UAAU,CAACF,cAAc,CAAC;EAE5B,MAAMc,MAAM,GAAGX,OAAO,CACpB,MACES,WAAW,CACTF,MAAM,CAACK,KAAK,EACXL,MAAM,CAA2BM,MAAM,GACnCN,MAAM,CAA2BM,MAAM,GACxCV,WAAW,CAACW,IAClB,CAAC,EACH,CAACP,MAAM,EAAEE,WAAW,CACtB,CAAC;EAED,MAAMM,aAAa,GAAGf,OAAO,CAC3B,OAAO;IACLgB,MAAM,EAAEC,IAAI,CAACC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAGR,gBAAgB;EAC5C,CAAC,CAAC,EACF,CAACA,gBAAgB,CACnB,CAAC;EAED,MAAMS,OAAO,GAAGrB,WAAW,CAAC,MAAM;IAChCU,YAAY,IAAIA,YAAY,CAACD,MAAM,CAACK,KAAK,CAAC;EAC5C,CAAC,EAAE,CAACL,MAAM,CAACK,KAAK,EAAEJ,YAAY,CAAC,CAAC;EAEhC,oBACEH,IAAA,CAACJ,SAAS;IAACkB,OAAO,EAAEA,OAAQ;IAAAC,QAAA,eAC1Bf,IAAA,CAACH,IAAI;MAACmB,KAAK,EAAEN,aAAc;MAAAK,QAAA,EAAET;IAAM,CAAO;EAAC,CAClC,CAAC;AAEhB,CAAC;AAED,eAAeL,cAAc","ignoreList":[]}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ import { memo, useContext, useMemo, useState } from "react";
4
+ import { ConfigProvider, TOP_MARGIN_PIXEL_OFFSET } from "src/utils/globals";
5
+ import Animated, { runOnJS, useAnimatedReaction, useAnimatedStyle } from "react-native-reanimated";
6
+ import { StyleSheet, View } from "react-native";
7
+ import { useIsEditing } from "src/hooks/use-is-editing";
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const NewEventContainer = /*#__PURE__*/memo(() => {
10
+ const {
11
+ fiveMinuteInterval,
12
+ renderNewEventContainer,
13
+ zoomLevel,
14
+ createY,
15
+ theme
16
+ } = useContext(ConfigProvider);
17
+ const {
18
+ isEditing
19
+ } = useIsEditing();
20
+ const styleVisible = useAnimatedStyle(() => {
21
+ return {
22
+ opacity: !isEditing && createY.value >= 0 ? 1 : 0,
23
+ transform: [{
24
+ translateY: createY.value - TOP_MARGIN_PIXEL_OFFSET
25
+ }],
26
+ height: zoomLevel.value * 60
27
+ };
28
+ }, [isEditing]);
29
+ const [[hour, minute], setTime] = useState([0, 0]);
30
+ const hasRenderEvent = useMemo(() => !!renderNewEventContainer, [renderNewEventContainer]);
31
+ useAnimatedReaction(() => ({
32
+ zoomLevel: zoomLevel.value,
33
+ createY: createY.value
34
+ }), state => {
35
+ if (!hasRenderEvent) {
36
+ return;
37
+ }
38
+ const freshTime = Math.floor(state.createY / state.zoomLevel);
39
+ const freshHour = Math.floor(freshTime / 60);
40
+ const freshMinute = !fiveMinuteInterval ? freshTime - freshHour * 60 : Math.round(freshTime / 5) * 5 - freshHour * 60;
41
+ runOnJS(setTime)([freshHour, freshMinute]);
42
+ }, []);
43
+ return /*#__PURE__*/_jsx(Animated.View, {
44
+ style: [styles.container, styleVisible],
45
+ children: renderNewEventContainer ? renderNewEventContainer(hour, minute) : /*#__PURE__*/_jsx(View, {
46
+ style: [styles.defaultContainer, theme?.newEventContainer]
47
+ })
48
+ });
49
+ }, () => true);
50
+ export default NewEventContainer;
51
+ const styles = StyleSheet.create({
52
+ container: {
53
+ position: "absolute",
54
+ top: 0,
55
+ left: 51,
56
+ right: 10,
57
+ height: 50
58
+ },
59
+ defaultContainer: {
60
+ flex: 1,
61
+ borderRadius: 3,
62
+ padding: 5,
63
+ backgroundColor: "pink",
64
+ opacity: 0.8
65
+ }
66
+ });
67
+ //# sourceMappingURL=new-event-container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useContext","useMemo","useState","ConfigProvider","TOP_MARGIN_PIXEL_OFFSET","Animated","runOnJS","useAnimatedReaction","useAnimatedStyle","StyleSheet","View","useIsEditing","jsx","_jsx","NewEventContainer","fiveMinuteInterval","renderNewEventContainer","zoomLevel","createY","theme","isEditing","styleVisible","opacity","value","transform","translateY","height","hour","minute","setTime","hasRenderEvent","state","freshTime","Math","floor","freshHour","freshMinute","round","style","styles","container","children","defaultContainer","newEventContainer","create","position","top","left","right","flex","borderRadius","padding","backgroundColor"],"sourceRoot":"../../../src","sources":["components/new-event-container.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ import { memo, useCallback, useContext, useEffect } from "react";
4
+ import Animated, { useAnimatedStyle, useSharedValue } from "react-native-reanimated";
5
+ import { ConfigProvider } from "src/utils/globals";
6
+ import moment from "moment-timezone";
7
+ import { AppState, StyleSheet } from "react-native";
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const TimeIndicator = /*#__PURE__*/memo(() => {
10
+ const {
11
+ zoomLevel,
12
+ timezone,
13
+ theme
14
+ } = useContext(ConfigProvider);
15
+ const currentMinutes = useCallback(() => {
16
+ const time = moment.tz(timezone);
17
+ return time.minutes() + time.hours() * 60;
18
+ }, [timezone]);
19
+ const currentMoment = useSharedValue(currentMinutes());
20
+ useEffect(() => {
21
+ let interval = setInterval(() => {
22
+ currentMoment.value = currentMinutes();
23
+ }, 20000);
24
+ const subscription = AppState.addEventListener("change", appState => {
25
+ clearInterval(interval);
26
+ if (appState === "active") {
27
+ interval = setInterval(() => {
28
+ currentMoment.value = currentMinutes();
29
+ }, 20000);
30
+ }
31
+ });
32
+ return () => {
33
+ clearInterval(interval);
34
+ subscription.remove();
35
+ };
36
+ }, [currentMinutes, currentMoment]);
37
+ const style = useAnimatedStyle(() => ({
38
+ top: zoomLevel.value * currentMoment.value
39
+ }));
40
+ return /*#__PURE__*/_jsx(Animated.View, {
41
+ style: [styles.timeIndicator, style, theme?.timeIndicator]
42
+ });
43
+ }, () => true);
44
+ export default TimeIndicator;
45
+ const styles = StyleSheet.create({
46
+ timeIndicator: {
47
+ position: "absolute",
48
+ left: 0,
49
+ width: "110%",
50
+ borderTopWidth: 2,
51
+ borderTopColor: "#f25a43",
52
+ zIndex: 2,
53
+ elevation: 2,
54
+ opacity: 0.6
55
+ }
56
+ });
57
+ //# sourceMappingURL=time-indicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","useContext","useEffect","Animated","useAnimatedStyle","useSharedValue","ConfigProvider","moment","AppState","StyleSheet","jsx","_jsx","TimeIndicator","zoomLevel","timezone","theme","currentMinutes","time","tz","minutes","hours","currentMoment","interval","setInterval","value","subscription","addEventListener","appState","clearInterval","remove","style","top","View","styles","timeIndicator","create","position","left","width","borderTopWidth","borderTopColor","zIndex","elevation","opacity"],"sourceRoot":"../../../src","sources":["components/time-indicator.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,WAAW,EAAEC,UAAU,EAAEC,SAAS,QAAQ,OAAO;AAChE,OAAOC,QAAQ,IACbC,gBAAgB,EAChBC,cAAc,QACT,yBAAyB;AAChC,SAASC,cAAc,QAAQ,mBAAmB;AAClD,OAAOC,MAAM,MAAM,iBAAiB;AACpC,SAASC,QAAQ,EAAEC,UAAU,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEpD,MAAMC,aAAa,gBAAGb,IAAI,CACxB,MAAM;EACJ,MAAM;IAAEc,SAAS;IAAEC,QAAQ;IAAEC;EAAM,CAAC,GAAGd,UAAU,CAACK,cAAc,CAAC;EAEjE,MAAMU,cAAc,GAAGhB,WAAW,CAAC,MAAM;IACvC,MAAMiB,IAAI,GAAGV,MAAM,CAACW,EAAE,CAACJ,QAAQ,CAAC;IAEhC,OAAOG,IAAI,CAACE,OAAO,CAAC,CAAC,GAAGF,IAAI,CAACG,KAAK,CAAC,CAAC,GAAG,EAAE;EAC3C,CAAC,EAAE,CAACN,QAAQ,CAAC,CAAC;EAEd,MAAMO,aAAa,GAAGhB,cAAc,CAASW,cAAc,CAAC,CAAC,CAAC;EAE9Dd,SAAS,CAAC,MAAM;IACd,IAAIoB,QAAQ,GAAGC,WAAW,CAAC,MAAM;MAC/BF,aAAa,CAACG,KAAK,GAAGR,cAAc,CAAC,CAAC;IACxC,CAAC,EAAE,KAAK,CAAC;IAET,MAAMS,YAAY,GAAGjB,QAAQ,CAACkB,gBAAgB,CAC5C,QAAQ,EACPC,QAAgB,IAAK;MACpBC,aAAa,CAACN,QAAQ,CAAC;MAEvB,IAAIK,QAAQ,KAAK,QAAQ,EAAE;QACzBL,QAAQ,GAAGC,WAAW,CAAC,MAAM;UAC3BF,aAAa,CAACG,KAAK,GAAGR,cAAc,CAAC,CAAC;QACxC,CAAC,EAAE,KAAK,CAAC;MACX;IACF,CACF,CAAC;IAED,OAAO,MAAM;MACXY,aAAa,CAACN,QAAQ,CAAC;MACvBG,YAAY,CAACI,MAAM,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACb,cAAc,EAAEK,aAAa,CAAC,CAAC;EAEnC,MAAMS,KAAK,GAAG1B,gBAAgB,CAAC,OAAO;IACpC2B,GAAG,EAAElB,SAAS,CAACW,KAAK,GAAGH,aAAa,CAACG;EACvC,CAAC,CAAC,CAAC;EAEH,oBACEb,IAAA,CAACR,QAAQ,CAAC6B,IAAI;IACZF,KAAK,EAAE,CAACG,MAAM,CAACC,aAAa,EAAEJ,KAAK,EAAEf,KAAK,EAAEmB,aAAa;EAAE,CAC5D,CAAC;AAEN,CAAC,EACD,MAAM,IACR,CAAC;AAED,eAAetB,aAAa;AAE5B,MAAMqB,MAAM,GAAGxB,UAAU,CAAC0B,MAAM,CAAC;EAC/BD,aAAa,EAAE;IACbE,QAAQ,EAAE,UAAU;IACpBC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,MAAM;IACbC,cAAc,EAAE,CAAC;IACjBC,cAAc,EAAE,SAAS;IACzBC,MAAM,EAAE,CAAC;IACTC,SAAS,EAAE,CAAC;IACZC,OAAO,EAAE;EACX;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ import Animated, { runOnJS, useAnimatedReaction, useAnimatedStyle, useSharedValue } from "react-native-reanimated";
4
+ import { ConfigProvider } from "src/utils/globals";
5
+ import { useCallback, useContext, useMemo } from "react";
6
+ import { Gesture, GestureDetector } from "react-native-gesture-handler";
7
+ import { StyleSheet, View } from "react-native";
8
+ import { useIsEditing } from "src/hooks/use-is-editing";
9
+ import gesturePan from "src/utils/pan-edit-event-gesture";
10
+ import doubleTapGesture from "src/utils/double-tap-reset-zoom-gesture";
11
+ import { EventExtend } from "src/types";
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ const TimedEventContainer = ({
14
+ layout,
15
+ refNewEvent
16
+ }) => {
17
+ const {
18
+ currentY,
19
+ setIsEditing,
20
+ isEditing
21
+ } = useIsEditing();
22
+ const {
23
+ onPressEvent,
24
+ maximumHour,
25
+ fiveMinuteInterval,
26
+ zoomLevel,
27
+ renderEvent,
28
+ initialZoomLevel,
29
+ onZoomChange
30
+ } = useContext(ConfigProvider);
31
+ const height = useSharedValue(0);
32
+ const top = useSharedValue(0);
33
+ const startEditing = useCallback(() => {
34
+ setIsEditing(layout);
35
+ }, [layout, setIsEditing]);
36
+ const gestureTap = Gesture.Tap().enabled(!isEditing).onStart(() => {
37
+ if (onPressEvent) {
38
+ runOnJS(onPressEvent)(layout.event);
39
+ }
40
+ });
41
+ const startY = useSharedValue(0);
42
+ const gestures = Gesture.Exclusive(doubleTapGesture(zoomLevel, initialZoomLevel, onZoomChange), gestureTap, gesturePan(startY, top, currentY, zoomLevel, maximumHour, height, refNewEvent, fiveMinuteInterval, isEditing, startEditing).activateAfterLongPress(500));
43
+ useAnimatedReaction(() => zoomLevel.value, newZoomLevel => {
44
+ height.value = newZoomLevel * layout.position.height;
45
+ }, [layout.position.height]);
46
+ useAnimatedReaction(() => zoomLevel.value, newZoomLevel => {
47
+ top.value = newZoomLevel * layout.position.top;
48
+ }, [layout.position.top]);
49
+ const render = useMemo(() => renderEvent(layout.event, EventExtend.None, height), [height, layout.event, renderEvent]);
50
+ const stylePosition = useAnimatedStyle(() => {
51
+ const basePosition = {
52
+ position: "absolute",
53
+ height: height.value,
54
+ top: top.value,
55
+ opacity: 1,
56
+ width: layout.position.width,
57
+ marginLeft: layout.position.marginLeft,
58
+ // This is to prevent the event from being clickable while editing
59
+ pointerEvents: isEditing ? "none" : "auto"
60
+ };
61
+ if (isEditing?.event.id === layout.event.id) {
62
+ basePosition.opacity = 0.5;
63
+ }
64
+ return basePosition;
65
+ }, [layout, isEditing]);
66
+ return /*#__PURE__*/_jsx(GestureDetector, {
67
+ gesture: gestures,
68
+ children: /*#__PURE__*/_jsx(Animated.View, {
69
+ style: stylePosition,
70
+ children: /*#__PURE__*/_jsx(View, {
71
+ style: styles.hairline,
72
+ children: render
73
+ })
74
+ })
75
+ });
76
+ };
77
+ const styles = StyleSheet.create({
78
+ hairline: {
79
+ marginHorizontal: StyleSheet.hairlineWidth,
80
+ flex: 1
81
+ }
82
+ });
83
+ export default TimedEventContainer;
84
+ //# sourceMappingURL=timed-event-container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Animated","runOnJS","useAnimatedReaction","useAnimatedStyle","useSharedValue","ConfigProvider","useCallback","useContext","useMemo","Gesture","GestureDetector","StyleSheet","View","useIsEditing","gesturePan","doubleTapGesture","EventExtend","jsx","_jsx","TimedEventContainer","layout","refNewEvent","currentY","setIsEditing","isEditing","onPressEvent","maximumHour","fiveMinuteInterval","zoomLevel","renderEvent","initialZoomLevel","onZoomChange","height","top","startEditing","gestureTap","Tap","enabled","onStart","event","startY","gestures","Exclusive","activateAfterLongPress","value","newZoomLevel","position","render","None","stylePosition","basePosition","opacity","width","marginLeft","pointerEvents","id","gesture","children","style","styles","hairline","create","marginHorizontal","hairlineWidth","flex"],"sourceRoot":"../../../src","sources":["components/timed-event-container.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ import { StyleSheet, View } from "react-native";
4
+ import { useContext, useMemo } from "react";
5
+ import { ConfigProvider, TOP_MARGIN_PIXEL_OFFSET } from "src/utils/globals";
6
+ import BackgroundHoursLayout from "src/components/background-hours-layout";
7
+ import { generatePrefabHours } from "src/utils/date-utils";
8
+ import BackgroundHoursContent from "src/components/background-hours-content";
9
+ import TimedEventContainer from "src/components/timed-event-container";
10
+ import TimeIndicator from "src/components/time-indicator";
11
+ import NewEventContainer from "src/components/new-event-container";
12
+ import EditEventContainer from "src/components/edit-event-container";
13
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
+ const TimedEvents = ({
15
+ refNewEvent
16
+ }) => {
17
+ const {
18
+ theme,
19
+ canCreateEvents,
20
+ canEditEvent,
21
+ timeFormat,
22
+ layout,
23
+ showTimeIndicator,
24
+ extraTimedComponents,
25
+ zoomLevel
26
+ } = useContext(ConfigProvider);
27
+ const hours = useMemo(() => generatePrefabHours(timeFormat), [timeFormat]);
28
+ const extraRender = useMemo(() => extraTimedComponents?.(zoomLevel) || null, [extraTimedComponents, zoomLevel]);
29
+ return /*#__PURE__*/_jsxs(View, {
30
+ style: [styles.container, theme?.timedEventsContainer],
31
+ children: [/*#__PURE__*/_jsx(BackgroundHoursLayout, {
32
+ hours: hours
33
+ }), /*#__PURE__*/_jsxs(View, {
34
+ style: styles.backgroundContainer,
35
+ children: [/*#__PURE__*/_jsx(BackgroundHoursContent, {
36
+ hours: hours
37
+ }), extraRender, layout.partDayEventsLayout.map(partDayLayout => /*#__PURE__*/_jsx(TimedEventContainer, {
38
+ layout: partDayLayout,
39
+ refNewEvent: refNewEvent
40
+ }, partDayLayout.event.id)), showTimeIndicator ? /*#__PURE__*/_jsx(TimeIndicator, {}) : null, canEditEvent ? /*#__PURE__*/_jsx(EditEventContainer, {
41
+ refNewEvent: refNewEvent
42
+ }) : null]
43
+ }), canCreateEvents ? /*#__PURE__*/_jsx(NewEventContainer, {}) : null]
44
+ });
45
+ };
46
+ export default TimedEvents;
47
+ const styles = StyleSheet.create({
48
+ container: {
49
+ flex: 1,
50
+ flexDirection: "row",
51
+ marginBottom: 30,
52
+ marginTop: 10
53
+ },
54
+ backgroundContainer: {
55
+ position: "relative",
56
+ marginTop: -TOP_MARGIN_PIXEL_OFFSET,
57
+ flexDirection: "column",
58
+ flex: 1,
59
+ paddingRight: 10,
60
+ overflow: "hidden"
61
+ }
62
+ });
63
+ //# sourceMappingURL=timed-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StyleSheet","View","useContext","useMemo","ConfigProvider","TOP_MARGIN_PIXEL_OFFSET","BackgroundHoursLayout","generatePrefabHours","BackgroundHoursContent","TimedEventContainer","TimeIndicator","NewEventContainer","EditEventContainer","jsx","_jsx","jsxs","_jsxs","TimedEvents","refNewEvent","theme","canCreateEvents","canEditEvent","timeFormat","layout","showTimeIndicator","extraTimedComponents","zoomLevel","hours","extraRender","style","styles","container","timedEventsContainer","children","backgroundContainer","partDayEventsLayout","map","partDayLayout","event","id","create","flex","flexDirection","marginBottom","marginTop","position","paddingRight","overflow"],"sourceRoot":"../../../src","sources":["components/timed-events.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAAoBC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AACtD,SAASC,cAAc,EAAEC,uBAAuB,QAAQ,mBAAmB;AAC3E,OAAOC,qBAAqB,MAAM,wCAAwC;AAC1E,SAASC,mBAAmB,QAAQ,sBAAsB;AAC1D,OAAOC,sBAAsB,MAAM,yCAAyC;AAC5E,OAAOC,mBAAmB,MAAM,sCAAsC;AACtE,OAAOC,aAAa,MAAM,+BAA+B;AACzD,OAAOC,iBAAiB,MAAM,oCAAoC;AAClE,OAAOC,kBAAkB,MAAM,qCAAqC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAMrE,MAAMC,WAAW,GAAGA,CAAC;EAAEC;AAA8B,CAAC,KAAK;EACzD,MAAM;IACJC,KAAK;IACLC,eAAe;IACfC,YAAY;IACZC,UAAU;IACVC,MAAM;IACNC,iBAAiB;IACjBC,oBAAoB;IACpBC;EACF,CAAC,GAAGxB,UAAU,CAACE,cAAc,CAAC;EAC9B,MAAMuB,KAAK,GAAGxB,OAAO,CAAC,MAAMI,mBAAmB,CAACe,UAAU,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAE1E,MAAMM,WAAW,GAAGzB,OAAO,CACzB,MAAMsB,oBAAoB,GAAGC,SAAS,CAAC,IAAI,IAAI,EAC/C,CAACD,oBAAoB,EAAEC,SAAS,CAClC,CAAC;EAED,oBACEV,KAAA,CAACf,IAAI;IAAC4B,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAEZ,KAAK,EAAEa,oBAAoB,CAAE;IAAAC,QAAA,gBAC3DnB,IAAA,CAACR,qBAAqB;MAACqB,KAAK,EAAEA;IAAM,CAAE,CAAC,eACvCX,KAAA,CAACf,IAAI;MAAC4B,KAAK,EAAEC,MAAM,CAACI,mBAAoB;MAAAD,QAAA,gBACtCnB,IAAA,CAACN,sBAAsB;QAACmB,KAAK,EAAEA;MAAM,CAAE,CAAC,EACvCC,WAAW,EACXL,MAAM,CAACY,mBAAmB,CAACC,GAAG,CAAEC,aAAa,iBAC5CvB,IAAA,CAACL,mBAAmB;QAElBc,MAAM,EAAEc,aAAc;QACtBnB,WAAW,EAAEA;MAAY,GAFpBmB,aAAa,CAACC,KAAK,CAACC,EAG1B,CACF,CAAC,EACDf,iBAAiB,gBAAGV,IAAA,CAACJ,aAAa,IAAE,CAAC,GAAG,IAAI,EAC5CW,YAAY,gBAAGP,IAAA,CAACF,kBAAkB;QAACM,WAAW,EAAEA;MAAY,CAAE,CAAC,GAAG,IAAI;IAAA,CACnE,CAAC,EACNE,eAAe,gBAAGN,IAAA,CAACH,iBAAiB,IAAE,CAAC,GAAG,IAAI;EAAA,CAC3C,CAAC;AAEX,CAAC;AAED,eAAeM,WAAW;AAE1B,MAAMa,MAAM,GAAG9B,UAAU,CAACwC,MAAM,CAAC;EAC/BT,SAAS,EAAE;IACTU,IAAI,EAAE,CAAC;IACPC,aAAa,EAAE,KAAK;IACpBC,YAAY,EAAE,EAAE;IAChBC,SAAS,EAAE;EACb,CAAC;EACDV,mBAAmB,EAAE;IACnBW,QAAQ,EAAE,UAAU;IACpBD,SAAS,EAAE,CAACvC,uBAAuB;IACnCqC,aAAa,EAAE,QAAQ;IACvBD,IAAI,EAAE,CAAC;IACPK,YAAY,EAAE,EAAE;IAChBC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ import Animated, { runOnJS, useAnimatedReaction, useSharedValue } from "react-native-reanimated";
4
+ import { Gesture, GestureDetector } from "react-native-gesture-handler";
5
+ import { forwardRef, useContext, useEffect } from "react";
6
+ import { ConfigProvider, TOP_MARGIN_PIXEL_OFFSET } from "src/utils/globals";
7
+ import { StyleSheet } from "react-native";
8
+ import { useIsEditing } from "src/hooks/use-is-editing";
9
+ import doubleTapGesture from "src/utils/double-tap-reset-zoom-gesture";
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ // This fraction determines how quickly zoom grows
12
+ const fraction = 0.1;
13
+ const ZoomProvider = /*#__PURE__*/forwardRef(({
14
+ children
15
+ }, refNewEvent) => {
16
+ const {
17
+ canCreateEvents,
18
+ zoomLevel,
19
+ initialZoomLevel,
20
+ createY,
21
+ onCreateEvent,
22
+ maximumHour,
23
+ onZoomChange
24
+ } = useContext(ConfigProvider);
25
+ const previewScale = useSharedValue(-1);
26
+ useEffect(() => {
27
+ previewScale.value = zoomLevel.get();
28
+ }, [zoomLevel, previewScale]);
29
+ const pinchGesture = Gesture.Pinch().onUpdate(event => {
30
+ "worklet";
31
+
32
+ const newScale = previewScale.value * (1 + fraction * (event.scale - 1));
33
+ zoomLevel.value = Math.min(3, Math.max(0.54, newScale));
34
+ previewScale.value = zoomLevel.value;
35
+ }).onEnd(() => {
36
+ if (onZoomChange) {
37
+ runOnJS(onZoomChange)(zoomLevel.value);
38
+ }
39
+ });
40
+ const yPosition = useSharedValue(-1);
41
+ const {
42
+ isEditing
43
+ } = useIsEditing();
44
+ const isDragging = useSharedValue(false);
45
+ useAnimatedReaction(() => zoomLevel.value, zoom => {
46
+ maximumHour.value = 1440 * zoom;
47
+ }, [maximumHour]);
48
+ const longPressGesture = Gesture.LongPress().enabled(canCreateEvents && !isEditing).withRef(refNewEvent).numberOfPointers(1).minDuration(250).maxDistance(10000).onStart(event => {
49
+ "worklet";
50
+
51
+ isDragging.value = true;
52
+ createY.value = Math.max(0, event.y - TOP_MARGIN_PIXEL_OFFSET - zoomLevel.value * 60 / 2);
53
+ }).onTouchesMove(event => {
54
+ "worklet";
55
+
56
+ if (!isDragging.value) {
57
+ return;
58
+ }
59
+ createY.value = Math.max(0, event.allTouches[0].y - TOP_MARGIN_PIXEL_OFFSET - zoomLevel.value * 60 / 2);
60
+ }).onEnd((event, success) => {
61
+ "worklet";
62
+
63
+ if (!isDragging.value) {
64
+ return;
65
+ }
66
+
67
+ // Make sure it doesn't show the new event component anymore
68
+ createY.value = -1;
69
+ yPosition.value = -1;
70
+ isDragging.value = false;
71
+ if (!success) {
72
+ return;
73
+ }
74
+
75
+ // Determine the hour that was clicked and trigger the event creation
76
+ const normalizedY = event.y - TOP_MARGIN_PIXEL_OFFSET - zoomLevel.value * 60 / 2;
77
+ const time = Math.floor(normalizedY / zoomLevel.value);
78
+ const hour = Math.floor(time / 60);
79
+ const minute = time - hour * 60;
80
+ if (onCreateEvent) {
81
+ runOnJS(onCreateEvent)({
82
+ hour,
83
+ minute
84
+ });
85
+ }
86
+ });
87
+ const combinedGesture = Gesture.Simultaneous(pinchGesture, longPressGesture, doubleTapGesture(zoomLevel, initialZoomLevel, onZoomChange));
88
+ return /*#__PURE__*/_jsx(GestureDetector, {
89
+ gesture: combinedGesture,
90
+ children: /*#__PURE__*/_jsx(Animated.View, {
91
+ style: styles.container,
92
+ children: children
93
+ })
94
+ });
95
+ });
96
+ const styles = StyleSheet.create({
97
+ container: {
98
+ flex: 1
99
+ }
100
+ });
101
+ export default ZoomProvider;
102
+ //# sourceMappingURL=zoom-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Animated","runOnJS","useAnimatedReaction","useSharedValue","Gesture","GestureDetector","forwardRef","useContext","useEffect","ConfigProvider","TOP_MARGIN_PIXEL_OFFSET","StyleSheet","useIsEditing","doubleTapGesture","jsx","_jsx","fraction","ZoomProvider","children","refNewEvent","canCreateEvents","zoomLevel","initialZoomLevel","createY","onCreateEvent","maximumHour","onZoomChange","previewScale","value","get","pinchGesture","Pinch","onUpdate","event","newScale","scale","Math","min","max","onEnd","yPosition","isEditing","isDragging","zoom","longPressGesture","LongPress","enabled","withRef","numberOfPointers","minDuration","maxDistance","onStart","y","onTouchesMove","allTouches","success","normalizedY","time","floor","hour","minute","combinedGesture","Simultaneous","gesture","View","style","styles","container","create","flex"],"sourceRoot":"../../../src","sources":["components/zoom-provider.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["enums.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,21 @@
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
@@ -0,0 +1 @@
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":[]}
@@ -0,0 +1,29 @@
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
@@ -0,0 +1 @@
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":[]}