@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
package/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Sunsama
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,105 @@
1
+ # Event Calendar
2
+
3
+ ## Overview
4
+ The Sunsama Event Calendar library is a React Native component designed to display and manage calendar events. It supports multiple calendars, real-time updates, and intuitive gestures for a seamless user experience.
5
+
6
+ We use this library in the Sunsama mobile app to display and manage events across multiple calendars. It is designed to be highly customizable and easy to integrate into any React Native project.
7
+
8
+ ## Features
9
+ - Displays events in a day-view layout.
10
+ - Supports multiple calendars.
11
+ - Gesture-based event interactions.
12
+ - Animated UI with **react-native-reanimated**.
13
+ - Compatible with **react-native-gesture-handler**.
14
+ - Customizable event styling.
15
+ - Editable events with restrictions.
16
+ - Timezone support.
17
+ - Zoom and drag interactions.
18
+ - Supports Expo Go and bare React Native projects.
19
+
20
+ ## Screenshots
21
+
22
+ <div style="display: flex; justify-content: space-around;">
23
+ <div>
24
+ <h3>iOS</h3>
25
+ <img src="assets/screenshot-ios.png" alt="Event Calendar iOS" style="max-width: 45%; height: auto;">
26
+ </div>
27
+ <div>
28
+ <h3>Android</h3>
29
+ <img src="assets/screenshot-android.png" alt="Event Calendar Android" style="max-width: 45%; height: auto;">
30
+ </div>
31
+ </div>
32
+
33
+ ## Installation
34
+ To install the library, add it to your project using:
35
+
36
+ ```sh
37
+ npm install @sunsama/event-calendar
38
+ # or
39
+ yarn add @sunsama/event-calendar
40
+ ```
41
+
42
+ Ensure the following dependencies are also installed:
43
+
44
+ ```sh
45
+ npm install react-native-reanimated react-native-gesture-handler
46
+ ```
47
+
48
+ ## Usage
49
+ For a full implementation example, refer to the **example app** included in the repository.
50
+
51
+ ### Gestures
52
+
53
+ The Event Calendar component supports the following gestures:
54
+
55
+ - Double tap: Resets the zoom level to the initial value.
56
+ - Pinch: Zooms in and out of the calendar.
57
+ - Drag: Moves the calendar vertically.
58
+ - Tap event: Opens the event details view.
59
+ - Hold & Drag: Create a new event.
60
+
61
+ Edit mode:
62
+ - Hold & Drag event: Moves event to different times, starts edit mode.
63
+ - Hold & Drag event edges: When in edit mode, resizes event.
64
+ - Tap event: Stops edit mode.
65
+
66
+ ## Props
67
+ | Prop | Type | Required | Default | Description |
68
+ |-----------------------------|-------------------------|----------|---------|------------------------------------------------------------------------------------------------------------------------------------|
69
+ | `events` | `CalendarEvent[]` | Yes | | List of event objects. |
70
+ | `dayDate` | `String` | Yes | | The current date of the calendar in ISO string. |
71
+ | `renderEvent` | `Function` | Yes | | Custom renderer for event components. |
72
+ | `onCreateEvent` | `Function` | No | | Callback triggered when a new event is created. |
73
+ | `onPressEvent` | `Function` | No | | Callback triggered when an event is pressed. |
74
+ | `userCalendarId` | `String` | No | | The primary calendar ID for event sorting. |
75
+ | `timeFormat` | `String` | No | HH:mm | Defines the time format used in the calendar. See [moment.js](https://momentjs.com/docs/#/displaying/) documentation for examples. |
76
+ | `showTimeIndicator` | `Boolean` | No | False | Displays a line showing the current time. |
77
+ | `canCreateEvents` | `Boolean` | No | True | Allows users to create new events. |
78
+ | `canEditEvent` | `Function` or `Boolean` | No | True | Determines if an event is editable. You can supply a function to do this deterministically. |
79
+ | `maxAllDayEvents` | `Number` | No | 2 | Sets the maximum number of all-day events displayed before showing a 'show more' option. |
80
+ | `timezone` | `String` | No | UTC | Defines the timezone for event times. |
81
+ | `renderDragBars` | `Object` | No | | Custom drag handles for resizing events. |
82
+ | `onEventEdit` | `Function` | No | | Callback triggered when an event is edited. |
83
+ | `theme` | `Object` | No | | Allows overriding default calendar themes. |
84
+ | `initialZoomLevel` | `Number` | No | 0.8 | Defines the initial zoom level of the calendar. |
85
+ | `renderNewEventContainer` | `Function` | No | | Custom UI for new event creation. If none supplied it will show a semi-transparent bar you can theme. |
86
+ | `fiveMinuteInterval` | `Boolean` | No | False | Ensures event snapping to 5-minute increments. |
87
+ | `updateLocalStateAfterEdit` | `Boolean` | No | True | Optimistically updates local state after event editing. |
88
+ | `extraTimedComponents` | `Function` | No | | Allows rendering extra components in the calendar. These will be rendered before all the timed events. |
89
+ | `onZoomChange` | `Function` | No | | Callback triggered when the zoom level changes. |
90
+
91
+ ## Dependencies
92
+ Ensure you have the following dependencies installed for proper functionality:
93
+ - `react-native-reanimated`
94
+ - `react-native-gesture-handler`
95
+ - `react-native-safe-area-context`
96
+
97
+ ## Limitations
98
+
99
+ This library has been made specifically for the Sunsama mobile app and therefore it is very opinionated. This results in some limitations:
100
+ We only support features that are used in the Sunsama app. If you need a feature that is not supported, you can create a PR but we won't add new features unless it brings value to the Sunsama app.
101
+ We do fix bugs, however.
102
+
103
+ ## License
104
+ This project is licensed under the MIT License.
105
+
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _globals = require("src/utils/globals");
9
+ var _reactNative = require("react-native");
10
+ var _eventContainer = _interopRequireDefault(require("src/components/event-container"));
11
+ var _reactNativeGestureHandler = require("react-native-gesture-handler");
12
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ const AllDayEvents = /*#__PURE__*/(0, _react.memo)(() => {
18
+ const {
19
+ layout,
20
+ theme,
21
+ maxAllDayEvents
22
+ } = (0, _react.useContext)(_globals.ConfigProvider);
23
+ const [showAllDayEvents, setShowAllDayEvents] = (0, _react.useState)(false);
24
+ const measuredHeight = (0, _reactNativeReanimated.useSharedValue)(0);
25
+ const originalHeight = (0, _reactNativeReanimated.useSharedValue)(0);
26
+ const onPress = (0, _react.useCallback)(() => {
27
+ const newState = !showAllDayEvents;
28
+ if (!newState) {
29
+ measuredHeight.value = (0, _reactNativeReanimated.withTiming)(originalHeight.value, {
30
+ duration: 250
31
+ }, () => {
32
+ (0, _reactNativeReanimated.runOnJS)(setShowAllDayEvents)(newState);
33
+ });
34
+ } else {
35
+ setShowAllDayEvents(newState);
36
+ }
37
+ }, [measuredHeight, originalHeight, showAllDayEvents]);
38
+ const allDayEvents = showAllDayEvents ? layout.allDayEventsLayout : layout.allDayEventsLayout.slice(0, maxAllDayEvents);
39
+ const restEventAmount = layout.allDayEventsLayout.length - allDayEvents.length;
40
+
41
+ // Called whenever the content inside changes layout
42
+ const onContentLayout = (0, _react.useCallback)(e => {
43
+ const {
44
+ height
45
+ } = e.nativeEvent.layout;
46
+ if (!originalHeight.value) {
47
+ originalHeight.value = height;
48
+ measuredHeight.value = height;
49
+ return;
50
+ }
51
+
52
+ // Animate from the old height to the new height
53
+ measuredHeight.value = (0, _reactNativeReanimated.withTiming)(height, {
54
+ duration: 250
55
+ });
56
+ }, [measuredHeight, originalHeight]);
57
+
58
+ // Apply the animated height to the wrapping container
59
+ const animatedStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
60
+ return {
61
+ // This ensures the container’s height animates smoothly
62
+ height: measuredHeight.value
63
+ };
64
+ });
65
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
66
+ style: [styles.container, theme?.allDayContainer],
67
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
68
+ style: [styles.eventContainer, theme?.allDayEventContainer],
69
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
70
+ style: [animatedStyle, {
71
+ overflow: "hidden",
72
+ // so children get clipped during animation
73
+ backgroundColor: "lightgrey",
74
+ minHeight: 1
75
+ }],
76
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
77
+ onLayout: onContentLayout,
78
+ children: allDayEvents.map(allDayLayout => /*#__PURE__*/(0, _jsxRuntime.jsx)(_eventContainer.default, {
79
+ layout: allDayLayout
80
+ }, allDayLayout.event.id))
81
+ })
82
+ }), layout.allDayEventsLayout.length > maxAllDayEvents ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.Pressable, {
83
+ onPress: onPress,
84
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
85
+ style: [styles.moreContainer, theme?.allDayShowMoreContainer],
86
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
87
+ style: [styles.moreContainerText, theme?.allDayShowMoreText],
88
+ children: restEventAmount ? `${restEventAmount} more` : "Show less"
89
+ })
90
+ })
91
+ }) : null]
92
+ })
93
+ });
94
+ }, () => true);
95
+ var _default = exports.default = AllDayEvents;
96
+ const styles = _reactNative.StyleSheet.create({
97
+ container: {
98
+ borderBottomWidth: _reactNative.StyleSheet.hairlineWidth,
99
+ borderColor: "black",
100
+ overflow: "hidden"
101
+ },
102
+ eventContainer: {
103
+ marginLeft: 50,
104
+ marginRight: 10,
105
+ borderLeftWidth: _reactNative.StyleSheet.hairlineWidth,
106
+ borderColor: "black"
107
+ },
108
+ moreContainer: {
109
+ padding: 5
110
+ },
111
+ moreContainerText: {
112
+ fontSize: 12,
113
+ fontWeight: "bold",
114
+ color: "grey"
115
+ }
116
+ });
117
+ //# sourceMappingURL=all-day-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_globals","_reactNative","_eventContainer","_interopRequireDefault","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireWildcard","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AllDayEvents","memo","layout","theme","maxAllDayEvents","useContext","ConfigProvider","showAllDayEvents","setShowAllDayEvents","useState","measuredHeight","useSharedValue","originalHeight","onPress","useCallback","newState","value","withTiming","duration","runOnJS","allDayEvents","allDayEventsLayout","slice","restEventAmount","length","onContentLayout","height","nativeEvent","animatedStyle","useAnimatedStyle","jsx","View","style","styles","container","allDayContainer","children","jsxs","eventContainer","allDayEventContainer","overflow","backgroundColor","minHeight","onLayout","map","allDayLayout","event","id","Pressable","moreContainer","allDayShowMoreContainer","Text","moreContainerText","allDayShowMoreText","_default","exports","StyleSheet","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,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
9
+ var _reactNative = require("react-native");
10
+ var _globals = require("src/utils/globals");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ const BackgroundHoursContent = /*#__PURE__*/(0, _react.memo)(({
15
+ hours
16
+ }) => {
17
+ const {
18
+ theme,
19
+ zoomLevel
20
+ } = (0, _react.useContext)(_globals.ConfigProvider);
21
+ const styleHourSize = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
22
+ return {
23
+ height: zoomLevel.value * 60
24
+ };
25
+ }, []);
26
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
27
+ children: hours.map(hour => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
28
+ style: [styles.hourContainer, hour === hours[hours.length - 1] ? styles.bottomBorder : undefined, theme?.backgroundHoursLayoutContainer, styleHourSize]
29
+ }, hour.increment))
30
+ });
31
+ }, () => true);
32
+ const styles = _reactNative.StyleSheet.create({
33
+ hourContainer: {
34
+ borderTopWidth: _reactNative.StyleSheet.hairlineWidth,
35
+ marginRight: -20,
36
+ borderColor: "black"
37
+ },
38
+ bottomBorder: {
39
+ borderBottomWidth: _reactNative.StyleSheet.hairlineWidth
40
+ }
41
+ });
42
+ var _default = exports.default = BackgroundHoursContent;
43
+ //# sourceMappingURL=background-hours-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNativeReanimated","_interopRequireWildcard","_reactNative","_globals","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","BackgroundHoursContent","memo","hours","theme","zoomLevel","useContext","ConfigProvider","styleHourSize","useAnimatedStyle","height","value","jsx","Fragment","children","map","hour","View","style","styles","hourContainer","length","bottomBorder","undefined","backgroundHoursLayoutContainer","increment","StyleSheet","create","borderTopWidth","hairlineWidth","marginRight","borderColor","borderBottomWidth","_default","exports"],"sourceRoot":"../../../src","sources":["components/background-hours-content.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
9
+ var _reactNative = require("react-native");
10
+ var _globals = require("src/utils/globals");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ const BackgroundHoursLayout = /*#__PURE__*/(0, _react.memo)(({
15
+ hours
16
+ }) => {
17
+ const {
18
+ theme,
19
+ zoomLevel
20
+ } = (0, _react.useContext)(_globals.ConfigProvider);
21
+ const styleHourSize = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
22
+ return {
23
+ height: zoomLevel.value * 60
24
+ };
25
+ }, []);
26
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
27
+ style: [styles.hourContainer, theme?.backgroundHoursContainer],
28
+ children: hours.map(hour => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
29
+ style: [styles.hourInnerContainer, theme?.backgroundHoursInnerContainer, styleHourSize],
30
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
31
+ style: [styles.hourText, theme?.backgroundHoursText],
32
+ children: hour.hourFormatted
33
+ })
34
+ }, hour.increment))
35
+ });
36
+ }, () => true);
37
+ const styles = _reactNative.StyleSheet.create({
38
+ hourContainer: {
39
+ flexDirection: "column",
40
+ flexGrow: 0,
41
+ flexShrink: 0,
42
+ flexBasis: 50,
43
+ paddingRight: 6
44
+ },
45
+ hourInnerContainer: {
46
+ marginTop: -12,
47
+ marginBottom: 12,
48
+ marginRight: 0
49
+ },
50
+ hourText: {
51
+ textAlign: "right",
52
+ color: "black",
53
+ fontSize: 10
54
+ }
55
+ });
56
+ var _default = exports.default = BackgroundHoursLayout;
57
+ //# sourceMappingURL=background-hours-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNativeReanimated","_interopRequireWildcard","_reactNative","_globals","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","BackgroundHoursLayout","memo","hours","theme","zoomLevel","useContext","ConfigProvider","styleHourSize","useAnimatedStyle","height","value","jsx","View","style","styles","hourContainer","backgroundHoursContainer","children","map","hour","hourInnerContainer","backgroundHoursInnerContainer","Text","hourText","backgroundHoursText","hourFormatted","increment","StyleSheet","create","flexDirection","flexGrow","flexShrink","flexBasis","paddingRight","marginTop","marginBottom","marginRight","textAlign","color","fontSize","_default","exports"],"sourceRoot":"../../../src","sources":["components/background-hours-layout.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
8
+ var _react = require("react");
9
+ var _reactNativeGestureHandler = require("react-native-gesture-handler");
10
+ var _reactNative = require("react-native");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ const DragBar = ({
15
+ top,
16
+ height,
17
+ render,
18
+ refMainContainer,
19
+ fiveMinuteInterval,
20
+ zoomLevel,
21
+ maximumHour
22
+ }) => {
23
+ const startY = (0, _reactNativeReanimated.useSharedValue)(0);
24
+ const gesturePan = _reactNativeGestureHandler.Gesture.Pan().blocksExternalGesture(refMainContainer).onStart(() => {
25
+ startY.value = top ? top.value : height.value;
26
+ }).onUpdate(({
27
+ translationY
28
+ }) => {
29
+ if (top) {
30
+ const originalY = top.value;
31
+ let freshUpdatedStartTime;
32
+ if (fiveMinuteInterval) {
33
+ // Set the updated time in 15 minute increments but make sure we never go lower
34
+ // than the first minute of the day
35
+ freshUpdatedStartTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value / 5) * (zoomLevel.value * 5));
36
+ } else {
37
+ // Set the updated time in 1 minute increments but make sure we never go lower
38
+ // than the first minute of the day
39
+ freshUpdatedStartTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value) * zoomLevel.value);
40
+ }
41
+
42
+ // Make sure the event does not span after midnight, and if so make sure it
43
+ // is limited to exactly midnight
44
+ if (freshUpdatedStartTime > maximumHour.value - height.value) {
45
+ freshUpdatedStartTime = maximumHour.value - height.value;
46
+ }
47
+ top.value = freshUpdatedStartTime;
48
+ height.value = height.value + (originalY - top.value);
49
+ return;
50
+ }
51
+ let freshUpdatedEndTime;
52
+ if (fiveMinuteInterval) {
53
+ // Set the updated time in 15 minute increments but make sure we never go lower
54
+ // than the first minute of the day
55
+ freshUpdatedEndTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value / 5) * (zoomLevel.value * 5));
56
+ } else {
57
+ // Set the updated time in 1 minute increments but make sure we never go lower
58
+ // than the first minute of the day
59
+ freshUpdatedEndTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value) * zoomLevel.value);
60
+ }
61
+ height.value = freshUpdatedEndTime;
62
+ });
63
+ const styleDragBar = (0, _react.useMemo)(() => ({
64
+ bottom: !top ? 0 : undefined,
65
+ top: top ? 0 : undefined
66
+ }), [top]);
67
+ const renderedComponent = (0, _react.useMemo)(render, [render]);
68
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector, {
69
+ gesture: gesturePan,
70
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
71
+ style: [styles.dragBar, styleDragBar],
72
+ children: renderedComponent
73
+ })
74
+ });
75
+ };
76
+ var _default = exports.default = DragBar;
77
+ const styles = _reactNative.StyleSheet.create({
78
+ dragBar: {
79
+ position: "absolute",
80
+ left: 0,
81
+ right: 0
82
+ }
83
+ });
84
+ //# sourceMappingURL=drag-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeReanimated","_interopRequireWildcard","require","_react","_reactNativeGestureHandler","_reactNative","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","DragBar","top","height","render","refMainContainer","fiveMinuteInterval","zoomLevel","maximumHour","startY","useSharedValue","gesturePan","Gesture","Pan","blocksExternalGesture","onStart","value","onUpdate","translationY","originalY","freshUpdatedStartTime","Math","max","floor","freshUpdatedEndTime","styleDragBar","useMemo","bottom","undefined","renderedComponent","jsx","GestureDetector","gesture","children","View","style","styles","dragBar","_default","exports","StyleSheet","create","position","left","right"],"sourceRoot":"../../../src","sources":["components/drag-bar.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _useIsEditing = require("src/hooks/use-is-editing");
9
+ var _globals = require("src/utils/globals");
10
+ var _reactNativeGestureHandler = require("react-native-gesture-handler");
11
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
12
+ var _types = require("src/types");
13
+ var _panEditEventGesture = _interopRequireDefault(require("src/utils/pan-edit-event-gesture"));
14
+ var _dragBar = _interopRequireDefault(require("src/components/drag-bar"));
15
+ var _reactNative = require("react-native");
16
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
+ const EditEventContainer = /*#__PURE__*/(0, _react.memo)(({
22
+ refNewEvent
23
+ }) => {
24
+ const {
25
+ currentY,
26
+ isEditing: editingEvent,
27
+ setIsEditing
28
+ } = (0, _useIsEditing.useIsEditing)();
29
+ const {
30
+ maximumHour,
31
+ fiveMinuteInterval,
32
+ renderDragBars,
33
+ zoomLevel,
34
+ renderEvent,
35
+ timezone,
36
+ dayDate
37
+ } = (0, _react.useContext)(_globals.ConfigProvider);
38
+ const height = (0, _reactNativeReanimated.useSharedValue)(0);
39
+ (0, _react.useEffect)(() => {
40
+ if (editingEvent) {
41
+ height.value = editingEvent.position.height * zoomLevel.value;
42
+ currentY.value = editingEvent.position.top * zoomLevel.value;
43
+ }
44
+ }, [height, editingEvent, currentY, zoomLevel]);
45
+ (0, _reactNativeReanimated.useAnimatedReaction)(() => zoomLevel.value, zoom => {
46
+ if (editingEvent) {
47
+ height.value = editingEvent.position.height * zoom;
48
+ currentY.value = editingEvent.position.top * zoom;
49
+ }
50
+ }, [height, currentY, zoomLevel, editingEvent]);
51
+ const styleAnimatedPosition = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
52
+ if (!editingEvent) {
53
+ return {
54
+ opacity: 0
55
+ };
56
+ }
57
+ return {
58
+ marginLeft: _reactNative.StyleSheet.hairlineWidth,
59
+ position: "absolute",
60
+ height: height.value,
61
+ top: currentY.value,
62
+ opacity: 1,
63
+ width: "100%"
64
+ };
65
+ }, [editingEvent]);
66
+ const startY = (0, _reactNativeReanimated.useSharedValue)(0);
67
+ const updatedStart = (0, _reactNativeReanimated.useDerivedValue)(() => {
68
+ return currentY.value / zoomLevel.value;
69
+ }, []);
70
+ const updatedEnd = (0, _reactNativeReanimated.useDerivedValue)(() => {
71
+ return (currentY.value + height.value) / zoomLevel.value;
72
+ }, []);
73
+ const endEventEditing = (0, _react.useCallback)((newStart, newEnd) => {
74
+ // Format the new start and end times
75
+ setIsEditing(null, {
76
+ updatedStart: _momentTimezone.default.tz(dayDate, timezone).minutes(newStart).format(),
77
+ updatedEnd: _momentTimezone.default.tz(dayDate, timezone).minutes(newEnd).format()
78
+ });
79
+ }, [dayDate, setIsEditing, timezone]);
80
+ const gestureTap = _reactNativeGestureHandler.Gesture.Tap().numberOfTaps(1).onStart(() => {
81
+ (0, _reactNativeReanimated.runOnJS)(endEventEditing)(updatedStart.value, updatedEnd.value);
82
+ });
83
+ const refMainContainer = (0, _react.useRef)();
84
+ if (!editingEvent) {
85
+ return null;
86
+ }
87
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector, {
88
+ gesture: _reactNativeGestureHandler.Gesture.Simultaneous(gestureTap, (0, _panEditEventGesture.default)(startY, currentY, currentY, zoomLevel, maximumHour, height, refNewEvent, fiveMinuteInterval).withRef(refMainContainer)),
89
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeReanimated.default.View, {
90
+ style: styleAnimatedPosition,
91
+ children: [renderEvent(editingEvent.event, _types.EventExtend.None, height, {
92
+ updatedEnd,
93
+ updatedStart
94
+ }), renderDragBars?.top ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_dragBar.default, {
95
+ top: currentY,
96
+ height: height,
97
+ render: renderDragBars.top,
98
+ refMainContainer: refMainContainer,
99
+ zoomLevel: zoomLevel,
100
+ maximumHour: maximumHour,
101
+ fiveMinuteInterval: fiveMinuteInterval
102
+ }) : null, renderDragBars?.bottom ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_dragBar.default, {
103
+ height: height,
104
+ render: renderDragBars.bottom,
105
+ refMainContainer: refMainContainer,
106
+ zoomLevel: zoomLevel,
107
+ maximumHour: maximumHour,
108
+ fiveMinuteInterval: fiveMinuteInterval
109
+ }) : null]
110
+ })
111
+ });
112
+ }, () => true);
113
+ var _default = exports.default = EditEventContainer;
114
+ //# sourceMappingURL=edit-event-container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_useIsEditing","_globals","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireWildcard","_types","_panEditEventGesture","_interopRequireDefault","_dragBar","_reactNative","_momentTimezone","_jsxRuntime","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","EditEventContainer","memo","refNewEvent","currentY","isEditing","editingEvent","setIsEditing","useIsEditing","maximumHour","fiveMinuteInterval","renderDragBars","zoomLevel","renderEvent","timezone","dayDate","useContext","ConfigProvider","height","useSharedValue","useEffect","value","position","top","useAnimatedReaction","zoom","styleAnimatedPosition","useAnimatedStyle","opacity","marginLeft","StyleSheet","hairlineWidth","width","startY","updatedStart","useDerivedValue","updatedEnd","endEventEditing","useCallback","newStart","newEnd","moment","tz","minutes","format","gestureTap","Gesture","Tap","numberOfTaps","onStart","runOnJS","refMainContainer","useRef","jsx","GestureDetector","gesture","Simultaneous","gesturePan","withRef","children","jsxs","View","style","event","EventExtend","None","render","bottom","_default","exports"],"sourceRoot":"../../../src","sources":["components/edit-event-container.tsx"],"mappings":"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","ignoreList":[]}